을 할 수있는 방법이 apt-get dist-upgrade
모든 질문에뿐만 아니라 자동으로 “예”라고 대답하는 것이 데비안에서뿐만 아니라, 팝업 다양한 대화 형 대화 상자를 필요로하는 정교한 충분히 질문에 대한 답변으로 합리적인 기본값을 사용? 업그레이드 할 때 표시되는 키 맵 libc6
과 커널 이미지 선택에 대해 생각하고 있습니다 .
목표는 dist-upgrade
끔찍하게, 비참 하게 잘못 되지 않는 한, 시간이 크게 뒤처진 기계조차도 원격으로 다소 크게 시작할 수 있고 전혀 보모 할 필요가 없다는 것입니다.
확실히 이것이 가능합니까?
미리 감사드립니다!
답변
DEBIAN_FRONTEND=noninteractive
debconf 프롬프트가 나타나지 않도록 설정 force-confold
하고 파일 force-confdef
을 추가 하고 /etc/dpkg/dpkg.cfg
파일에 추가 하면 완전히 대화식이 아닌 패키지 설치 경험이 있어야합니다. 여전히 정보를 요구하는 모든 패키지에는 릴리스에 치명적인 버그가 있습니다 (자동화 중독자 와 데비안 개발자 모두에게 말합니다 ).
답변
Florian Lohoff 는 wo 블이 제안한 것을 단일 명령으로 얻는 방법을 게시 했습니다.
DEBIAN_FRONTEND=noninteractive \
apt-get \
-o Dpkg::Options::="--force-confnew" \
--force-yes \
-fuy \
dist-upgrade
물론 dpkg 매뉴얼 페이지 에서 -o Dpkg::Options::="--force-confnew --force-confdef"
검색 할 수도 있습니다 . 나는 어떤 경우에 이것이 변화를 가져올 지 확신하지 못한다. 바닐라 이미지를 최신 상태로 유지하려면 개인적으로 비 대화식 업그레이드가 필요합니다 .--force-confdef
답변
위의 womble의 대답은 일반적으로 좋지만 나에게는 효과가 없었으며 100 % 무인 상태가 되려면 추가 연구를해야했습니다. 나는 미래 방문자들을 위해 더 간단하게 만들기 위해 결과를 간결하게 공유 할 것이라고 생각했다.
다음은 데비안 8 릴리스 노트 업그레이드 권장 사항 (대부분)에 따라 실행되는 플래그 및 환경 변수에 따라 실행되는 스크립트입니다. ( echo
s는 디버깅을위한 것이며 제거 할 수 있습니다-스크립트가 붙어 있으면 어디에서나 알 수 있도록 유지하는 것이 좋습니다)
#!/bin/bash
apt-get remove apt-listchanges --assume-yes --force-yes &&
#using export is important since some of the commands in the script will fire in a subshell
export DEBIAN_FRONTEND=noninteractive &&
export APT_LISTCHANGES_FRONTEND=none &&
#lib6c was an issue for me as it ignored the DEBIAN_FRONTEND environment variable and fired a prompt anyway. This should fix it
echo 'libc6 libraries/restart-without-asking boolean true' | debconf-set-selections &&
echo "executing wheezy to jessie" &&
find /etc/apt -name "*.list" | xargs sed -i '/^deb/s/wheezy/jessie/g' &&
echo "executing autoremove" &&
apt-get -fuy --force-yes autoremove &&
echo "executing clean" &&
apt-get --force-yes clean &&
echo "executing update" &&
apt-get update &&
echo "executing upgrade" &&
apt-get --force-yes -o Dpkg::Options::="--force-confold" --force-yes -o Dpkg::Options::="--force-confdef" -fuy upgrade &&
echo "executing dist-upgrade" &&
apt-get --force-yes -o Dpkg::Options::="--force-confold" --force-yes -o Dpkg::Options::="--force-confdef" -fuy dist-upgrade
답변
> = 아파트 1.1
당신이 1.1 이상 아파트 사용하는 경우, --force-yes
사용되지 않습니다 당신이 시작하는 옵션을 사용했습니다, 그래서 --allow
예를 들어, 대신 --allow-downgrades
, --allow-remove-essential
, --allow-change-held-packages
.
따라서 명령은 다음과 같습니다.
DEBIAN_FRONTEND=noninteractive \
apt-get \
-o Dpkg::Options::=--force-confold \
-o Dpkg::Options::=--force-confdef \
-y --allow-downgrades --allow-remove-essential --allow-change-held-packages \
dist-upgrade
참고 : 사용 --force-confold
된 유지하고, --force-confnew
새로운 CONFIGS을 유지.
출처 : CFE-2360 : apt_get 패키지 모듈 버전을 인식하십시오 .
관련 :
답변
로부터 apt-get(8)
매뉴얼 페이지
-y, --yes, --assume-yes
Automatic yes to prompts; assume "yes" as answer to all prompts
run non-interactively. If an undesirable situation, such as
changing a held package, trying to install a unauthenticated
package or removing an essential package occurs then apt-get will
abort. Configuration Item: APT::Get::Assume-Yes.
참고로 -y
옵션도 작동 yum(8)
합니다.