적절한 / 무인 업그레이드 중단


13

unattended-upgrades설치 되면 "자동 업그레이드 종료 시작"중에 10 개 중 9 개의 종료 / 재부팅이 중단됩니다. 이 정지는 5-10 분 동안 종료 프로세스를 중단합니다.

를 통해 무인 업그레이드를 비활성화 /etc/apt/apt.conf.d/20auto-upgrades and/or 50unattended-upgrades하면 문제가 발생합니다.

종료 / 재부팅 ( sudo service unattended-upgrades stop) 전에 서비스를 종료해도 문제가 계속 발생합니다.

패키지 ( sudo apt remove unattended-upgrades)를 제거해 도 더 이상 문제가 발생하지 않습니다.

새로 설치 한 버전 Ubuntu Server 16.04.1( unattended-upgrades설치 GUI 또는 무인 업그레이드 수동 설치를 통해 설치)에서 발생합니다.

둘 다 Kern.log & syslog종료 프로세스를 표시하지 않습니다 (파일 시스템이 이미 마운트 해제되어 있기 때문에 믿습니다)

다른 사람이이 문제를 보거나 고쳤습니까? 문제를 해결하려고 미쳤다.


16.04.1 테스트 VM에서 재생할 수 없습니다. 여기서 종료가 지연되지 않습니다.
user535733

하드웨어 기반 일 수 있습니까? unattended-upgrades종료 하는 동안 어떤 일이 발생하는지 확실하지 않습니다 .
garullon245136

종료시 uu가 항상 실행되는 이유가 궁금합니다. uu는 데몬이 아닙니다. 그것은 단지 매일 한 번 짧게 실행했다가 종료되는 스크립트 일뿐입니다.
user535733

모든 파일 시스템이 마운트 해제되는 단계에서 종료 프로세스가 uu 실행을 시도하는 것처럼 보입니다. /etc/rc6.d/ 또는 /etc/rc0.d/ 링크는 모든 링크를 제거했으며 종료 중에 프로세스가 계속 실행됩니다.
garullon245136

1
/etc/apt/apt/conf.d/50unttended-upgrades에서 'run uu at shutdown'옵션 (약 25 행)을 찾으십시오. '거짓'이거나 주석 처리되어 있는지 확인하십시오.
user535733

답변:


14

근본 원인에 더 가까이 다가 가기

문제는 종료시 실행되는 스크립트 인 것 같습니다.

해당 파일을 다음과 같이 식별했습니다.

find /etc/systemd -name *unattended*

나에게 관련 시스템 스크립트를 제공합니다 :

/etc/systemd/system/shutdown.target.wants/unattended-upgrades.service

그런 다음 종료시 스크립트가 실행되었다고 알려줍니다.

/usr/share/unattended-upgrades/unattended-upgrade-shutdown

근본 원인을 찾기 위해 더 깊이 조사

이 스크립트에는 /etc/apt/apt.conf.d/50unattended-upgrades-> Unattended-Upgrade :: InstallOnShutdown의 섹션과 관련된 섹션이 120 행에 있습니다.

/ usr / share / 무인 업그레이드 / 무인 업그레이드 셧다운 라인 120 :

if apt_pkg.config.find_b("Unattended-Upgrade::InstallOnShutdown", False):

문제 : 키워드 "False"가 필요하지만 apt conf에는 "false"(정확한 문자열 비교)를 추가해야합니다!

해결책

스톨 링 셧다운을 3 가지 방법으로 수정 / 해결 할 수있었습니다.

해결 방법 A

  • /etc/apt/apt.conf.d/50에 "false"대신 "False"를 쓰십시오.

이 설정은 여기서 수정 한 파일이 무인 업그레이드로 덮어 쓰지 않기 때문에 실제 수정 사항이 제공 될 때까지 안전하게 업그레이드됩니다. 문제 : 근본 원인이 해결되면 다시 멈춤 종료가 발생하므로 해결 방법 B와 함께 사용하는 것이 좋습니다.

또는 : 대안 B

  • /etc/systemd/system/shutdown.target.wants/unattended-upgrades.service의 대기 시간을 기본값에서 15 초로 줄이십시오.

vim /etc/systemd/system/shutdown.target.wants/unattended-upgrades.service

[서비스]
타입 = 원샷
ExecStart = / usr / share / 무인 업그레이드 / 무인 업그레이드 셧다운
TimeoutStartSec = 15

이 설정은 여기서 변경 한 파일이 무인 업그레이드로 덮어 쓰기 될 수 있으므로 업그레이드에 안전하지 않습니다. 이 외에도 실제로 무언가를 고치는 것과는 거리가 멀지 만 시스템을 종료 할 때 시스템이 몇 분 동안 기다리지 않도록합니다. 무인 업그레이드로 업그레이드 한 후에는 다시 설정해야 할 수도 있습니다.

OR : 수정 C (업스트림에보고되어야 함)

  • "거짓"대신 "거짓"을 예상하도록 / usr / share / 무인 업그레이드 / 무인 업그레이드 종료를 수정

패치 / usr / share / 무인 업그레이드 / 무인 업그레이드 셧다운 :

--- / tmp / unttended-upgrade-shutdown 2017-02-03 14 : 53 : 03.238103238 +0100
+++ / tmp / unttended-upgrade-shutdown_fix 2017-02-03 14 : 53 : 17.685589001 +0100
@@ -117,7 +117,7 @@
     # 그것을 실행
     p = 없음
     apt_pkg.init_config ()
-apt_pkg.config.find_b ( "Unattended-Upgrade :: InstallOnShutdown", False) 인 경우 :
+ apt_pkg.config.find_b ( "무인 업그레이드 :: InstallOnShutdown", false) 인 경우 :
         env = copy.copy (os.environ)
         env [ "UNATTENDED_UPGRADES_FORCE_INSTALL_ON_SHUTDOWN"] = "1"
         logging.debug ( "종료 모드에서 무인 업그레이드 시작")

결론

마지막 하나만 실제 수정입니다. 다른 두 가지 옵션은 실제 수정 사항이 구현 될 때까지 해결 방법입니다.

이것은 업스트림에서 수행되어야하며 이는 두 배포판 모두 데비안 (Debian Stretch에서 테스트)과 우분투 (Ubuntu 16.04.1에서 테스트) 모두에 영향을 미칩니다.

https://bugs.launchpad.net/ubuntu/+source/unattended-upgrades/+bug/1661611 에서 버그 보고서를 열었습니다.


2
apt_pkg.config.find_b ()는 문자열이 아닌 부울을 반환합니다. "find_b (key [, default = False]) → bool 키에 저장된 부울 값 또는 요청 된 옵션이 설정되어 있지 않은 경우 bool 객체 기본값에서 제공 한 값을 반환합니다." apt.alioth.debian.org/python-apt-doc/library/… False를 확인하는 것이 무인 업그레이드 종료의 버그가 아닙니다.
Brian Murray

런치 패드 버그 리포트 링크 위에 다음 사람이 볼 때,이 문제는 실패 문자열 비교에 의한 사실은 아니었지만, 대신 때문 systemd 있다 시퀀싱 버그 소문에 의하면 지금은 수정되었습니다 .
sampablokuper

1

해결 방법으로이 스크립트를 사용하여 문제를 해결합니다.

#!/usr/bin/env bash

sed -i '/if apt_pkg.config.find_b/s/False/false/' /usr/share/unattended-upgrades/unattended-upgrade-shutdown

exit

잘만되면 그것은 곧 상류에 올 것이다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.