[server] 100 % 비 대화식 데비안 dist-upgrade

을 할 수있는 방법이 apt-get dist-upgrade모든 질문에뿐만 아니라 자동으로 “예”라고 대답하는 것이 데비안에서뿐만 아니라, 팝업 다양한 대화 형 대화 상자를 필요로하는 정교한 충분히 질문에 대한 답변으로 합리적인 기본값을 사용? 업그레이드 할 때 표시되는 키 맵 libc6과 커널 이미지 선택에 대해 생각하고 있습니다 .

목표는 dist-upgrade끔찍하게, 비참 하게 잘못 되지 않는 한, 시간이 크게 뒤처진 기계조차도 원격으로 다소 크게 시작할 수 있고 전혀 보모 할 필요가 없다는 것입니다.

확실히 이것이 가능합니까?

미리 감사드립니다!



답변

DEBIAN_FRONTEND=noninteractivedebconf 프롬프트가 나타나지 않도록 설정 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 릴리스 노트 업그레이드 권장 사항 (대부분)에 따라 실행되는 플래그 및 환경 변수에 따라 실행되는 스크립트입니다. ( echos는 디버깅을위한 것이며 제거 할 수 있습니다-스크립트가 붙어 있으면 어디에서나 알 수 있도록 유지하는 것이 좋습니다)

#!/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)합니다.


답변