사용자 개입없이 APT로 패키지를 설치하는 방법은 무엇입니까?


9

데비안 스퀴즈에서 커널 헤더를 다운로드하고 대체하는 스크립트가 있습니다.

function fixHeaders(){
    #Replace the kernel headers from OVH with standard kernel headers...
    aptitude -y install linux-image-2.6.32-5-amd64  
    sed s/'GRUB_DEFAULT=0'/'GRUB_DEFAULT=1'/g
    update-grub
    echo "Rebooting the machine. Run this script again after reboot and choose option 2."
    sleep 1
    reboot  
}

내가 겪고있는 문제는 적성이 패키지를 다운로드 한 후 스크립트를 텍스트 GUI에 던지고 사용자에게 많은 질문을한다는 것입니다. 모든 답변에 대해 "확인"을 선택하기 위해 이것을 건너 뛰거나 적절한 시간에 탭 / 엔터를 보내는 방법이 있습니까?


1
귀하의 경우에는 효과가 있는지 확실하지 않지만 DEBIAN_FRONTEND = noninteractivedebian / ubuntu 릴리스 업그레이드 에서는 설정이 작동합니다.
다니엘 t.

답변:


9

Daniel t의 의견을 바탕으로 나는 이것을 할 수있었습니다. DEBIAN_FRONTEND=noninteractive

DEBIAN_FRONTEND=noninteractive /usr/bin/apt-get install -y -q --force-yes linux-image-2.6.32-5-amd64 

1
패키지 사전 설정 도 조사해야 합니다. 이를 통해 질문을 받기 전에 질문에 대답 할 수 있습니다.
Zoredache

4

내가 인용 한이 답변 은 모든 대화를 제거 하지는 않지만 여전히 APT / DPKG가 중요 하다고 생각하는 것을 표시합니다 . 아마도 두 번째 옵션 + readline프론트 엔드를 사용하여 debconf응답 파일을 준비하고 실험하는 것이 가장 좋습니다 .

자매 사이트 에서 인용 :

이것은 당신이 요구 한 것을해야합니다. 나중에 설정 질문하기 :

$ DEBIAN_PRIORITY=critical
$ export DEBIAN_PRIORITY
$ apt-get upgrade
# Wait a long time.   Should be almost entirely noninteractive.
$ dpkg-reconfigure --default-priority=medium --unseen-only

또는 전에 모든 구성 질문을 시도 할 수 있습니다.

$ apt-get clean
$ cat >> /etc/apt/apt.conf <<EOF
// Pre-configure all packages before
// they are installed.
DPkg::Pre-Install-Pkgs {
    "dpkg-preconfigure --apt --priority=low";
};
EOF
$ apt-get upgrade

내 상황에서는 apt-get upgrade가 작동하지 않습니다. 커널을 새 버전으로 업그레이드하지 않고 다른 버전을 선택하여 커널 헤더를 교체하고 있습니다.
에이 바

나는 대답을 그대로 인용했다. 이것은 어느 쪽이든 호출 될 apt-get install뿐만 아니라 작동합니다 dpkg-configure.
fuero

그래도 사용자에게 질문에 대답하라는 메시지가 표시됩니다. 스크립트의 일부가 함수 내에서 실행될 때 보이지 않습니다. 변경 할 수는 있지만 스크립트를 실행하는 사람 (나가 아닌 사람)은 이해할 수 없습니다. 정말 자동화 된 솔루션을 찾고있었습니다.
에이 바

0

expect"적절한 시간"(입력이 변경되지 않기 때문에)을 식별 할 수 있다면 도구로 원하는 것을 보낼 수 있습니다 .


"확인"을 누르는 횟수는 기계 및 구성에 따라 다릅니다.
에이 바

질문 (또는 질문의 끝)을 정확하게 인식 할 수있는 한 이것만으로는 문제가되지 않을 것입니다.
Hauke ​​Laging
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.