100 % 비 대화식 데비안 dist-upgrade


38

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

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

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

미리 감사드립니다!


Ubuntu에서 (dist-upgrade가 아닌) 업그레이드 만하려는 경우 무인 업그레이드 패키지를 사용해보십시오 .
— Jo Liss

답변:


42

DEBIAN_FRONTEND=noninteractivedebconf 프롬프트가 나타나지 않도록 설정 force-confold하고 파일 force-confdef을 추가 하고 /etc/dpkg/dpkg.cfg파일에 추가 하면 완전히 대화식이 아닌 패키지 설치 경험이 있어야합니다. 여전히 정보를 요구하는 모든 패키지에는 릴리스에 치명적인 버그가 있습니다 (자동화 중독자 와 데비안 개발자 모두에게 말합니다 ).


이것은 나를 위해 작동하지 않았습니다. apt-listchanges에 의해 개설되었습니다 less.
— 마그네틱

@ magnetar : apt가 아닌 apt-listchanges의 문제입니다. apt-listchanges를 제거하거나 적절하게 구성하십시오.
— 울림

1
시험해보십시오 : env APT_LISTCHANGES_FRONTEND = 아직 apt-get dist-upgrade -u -y
— H.-Dirk Schmitt

21

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


W: --force-yes is deprecated, use one of the options starting with --allow instead.
— Alex

3

위의 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
참고 : "--force-yes Force yes;이 옵션은 잠재적으로 유해한 작업을 수행 할 경우 메시지를 표시하지 않고 계속 사용할 수있는 위험한 옵션입니다. 매우 특별한 상황을 제외하고는 사용해서는 안됩니다. force-yes를 사용하면 잠재적으로 파괴 될 수 있습니다 구성 항목 : APT :: Get :: force-yes. 더 이상 사용되지 않으며 1.1에서 --allow-downgrades, --allow-remove-essential, --allow-change-held-packages로 대체되었습니다. "
— Alex

1

> = 아파트 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 패키지 모듈 버전을 인식하십시오 .

관련 :


-4

로부터 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)합니다.


5
나는 그것에 대해 알고 있습니다. 이 플래그를 사용하고 기존 구성 등을 덮어 쓰는 등의 표준 APT Y / N 질문에 '예'로 성공적으로 대답합니다. 내가 언급 한 질문이 아닙니다. apt-get -y dist-upgrade를 수행해도 여전히 키 티켓 변경, 키 맵 변경, libc6 관련 서비스 다시 시작 등과 같은 큰 티켓 항목을 고려할 수있는 몇 가지 '대화 상자'프롬프트가 표시됩니다. 이것도 끄십시오.
— Alex Balashov
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.