apt / không giám sát-nâng cấp quầy hàng tắt máy


13

Khi unattended-upgradesđược cài đặt, 9 trong số 10 lần tắt / khởi động lại bị treo trong khi "bắt đầu tắt nâng cấp không giám sát". Hang này ngăn chặn quá trình tắt máy trong 5-10 phút.

Nếu tôi vô hiệu hóa các nâng cấp không giám sát thông qua /etc/apt/apt.conf.d/20auto-upgrades and/or 50unattended-upgrades, các vấn đề sẽ xảy ra.

Nếu tôi chấm dứt dịch vụ trước khi tắt / khởi động lại ( sudo service unattended-upgrades stop) thì sự cố vẫn xảy ra.

Nếu tôi loại bỏ gói ( sudo apt remove unattended-upgrades) thì vấn đề không còn xảy ra nữa.

Điều này xảy ra trên phiên bản mới được cài đặt Ubuntu Server 16.04.1(cả hai unattended-upgradesđược cài đặt qua GUI cài đặt hoặc cài đặt thủ công các bản nâng cấp không giám sát)

Cả hai đều Kern.log & syslogkhông hiển thị quá trình tắt máy (tôi tin vì các hệ thống tập tin đã được ngắt kết nối)

Có ai khác nhìn thấy hoặc khắc phục vấn đề này? Phát điên cố gắng khắc phục sự cố nó.


Không thể sao chép trong máy ảo thử nghiệm 16.04.1. Tắt máy không bị trì hoãn ở đây.
dùng535733

Nó có thể dựa trên phần cứng? Tôi không hoàn toàn chắc chắn những gì xảy ra unattended-upgradestrong khi tắt máy.
garullon245136

Tôi đang tự hỏi tại sao uu luôn chạy vào thời điểm tắt máy: uu không phải là daemon; nó chỉ đơn thuần là một kịch bản chạy nhanh một lần mỗi ngày và sau đó chấm dứt.
dùng535733

Có vẻ như quá trình tắt máy cố gắng chạy uu trong giai đoạn mà tất cả các hệ thống tập tin đang bị gỡ bỏ. Điều này dường như không được kiểm soát bởi các liên kết /etc/rc6.d/ hoặc /etc/rc0.d/ như Tôi đã xóa tất cả các liên kết và quá trình vẫn chạy trong khi tắt máy.
garullon245136

1
Hãy xem trong /etc/apt/apt/conf.d/50unattends-upgrades để biết tùy chọn 'chạy uu khi tắt máy' (khoảng dòng 25). Đảm bảo nó là 'sai' hoặc nhận xét.
dùng535733

Câu trả lời:


14

Nhìn xung quanh để đến gần hơn với nguyên nhân gốc rễ

Vấn đề dường như là kịch bản chạy khi tắt máy.

Tôi xác định tệp tương ứng với:

find /etc/systemd -name *unattended*

mà gaves tôi kịch bản systemd liên quan:

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

Sau đó cho tôi biết đoạn script được thực thi khi tắt máy:

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

Điều tra sâu hơn để tìm ra nguyên nhân gốc rễ

trong tập lệnh này có một phần trong dòng 120 liên quan đến phần trong /etc/apt/apt.conf.d/50unattends-upgrades -> Unattends-Nâng cấp :: InstallOnShutdown

Dòng 120 của / usr / chia sẻ / không giám sát nâng cấp / không giám sát-nâng cấp-tắt máy:

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

Vấn đề: nó mong đợi từ khóa "Sai" trong khi trong apt conf chúng ta nên thêm "false" (so sánh chuỗi chính xác)!

Giải pháp

Tôi đã có thể khắc phục / khắc phục sự cố tắt máy theo 3 cách khác nhau:

Cách giải quyết

  • viết "Sai" thay vì "sai" trong /etc/apt/apt.conf.d/50unattends-upgrades

Cài đặt này được nâng cấp an toàn cho đến khi sửa lỗi thực sự được cung cấp vì tệp chúng tôi thay đổi ở đây không bị ghi đè bởi bản cập nhật nâng cấp không giám sát. Vấn đề: Khi nguyên nhân gốc được khắc phục, điều này sẽ dẫn đến tắt máy một lần nữa vì vậy tôi đề nghị kết hợp điều này với Workaround B.

HOẶC: Giải pháp B

  • giảm thời gian chờ trong /etc/systemd/system/shutdown.target.wants/unattends-upgrades.service từ mặc định xuống còn 15 giây:

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

[Dịch vụ]
Loại = oneshot
ExecStart = / usr / share / unattends-nâng cấp / không giám sát-nâng cấp-tắt máy
Thời gian chờStartSec = 15

Cài đặt này KHÔNG nâng cấp an toàn vì tệp chúng tôi thay đổi ở đây có thể bị ghi đè bởi bản cập nhật nâng cấp không giám sát. Bên cạnh đó, việc sửa chữa một cái gì đó thực sự rất xa nhưng nó sẽ đảm bảo rằng hệ thống của bạn sẽ không phải chờ vài phút khi tắt máy. Hãy nhớ rằng sau khi nâng cấp các nâng cấp không giám sát, bạn có thể phải thiết lập lại điều này!

HOẶC: Khắc phục C (phải được báo cáo ngược dòng)

  • sửa chữa / usr / chia sẻ / không giám sát-nâng cấp / không giám sát-nâng cấp-tắt máy để mong đợi "sai" thay vì "Sai"

vá / usr / chia sẻ / không giám sát nâng cấp / không giám sát-nâng cấp-tắt máy:

--- / tmp / không giám sát-nâng cấp-tắt máy 2017/02/03 14: 53: 03.238103238 +0100
+++ / tmp / không giám sát-nâng cấp-shutdown_fix 2017/02/03 14: 53: 17,685589001 +0100
@@ - 117,7 + 117,7 @@
     # chạy nó
     p = Không
     apt_pkg.init_config ()
- if apt_pkg.config.find_b ("Không giám sát-Nâng cấp :: InstallOnShutdown", Sai):
+ if apt_pkg.config.find_b ("Không giám sát-Nâng cấp :: InstallOnShutdown", sai):
         env = copy.copy (os.envir)
         env ["UNATTENDED_UPGRADES_FORCE_INSTALL_ON_SHUTDOWN"] = "1"
         log.debug ("bắt đầu nâng cấp không giám sát trong chế độ tắt máy")

Phần kết luận

Chỉ có một cái cuối cùng là một sửa chữa thực sự. cả hai tùy chọn khác chỉ là cách giải quyết cho đến khi sửa chữa thực sự sẽ được thực hiện.

Điều này phải được thực hiện ngược dòng và vì điều này ảnh hưởng đến cả Debian (được thử nghiệm trên Debian Stretch) và Ubuntu (được thử nghiệm trên Ubuntu 16.04.1) cho cả hai bản phân phối.

Tôi đã mở một báo cáo lỗi tại đây: https://bugs.launchpad.net/ubfox/+source/unattends-upgrades/+orms/1661611


2
apt_pkg.config.find_b () trả về một boolean không phải là một chuỗi. "find_b (key [, default = false]) → bool Trả về giá trị boolean được lưu trữ tại khóa hoặc giá trị được cung cấp bởi đối tượng bool mặc định nếu tùy chọn được yêu cầu không được đặt." apt.alioth.debian.org/python-apt-doc/l Library / So Vì vậy, đó không phải là một lỗi trong việc tắt nâng cấp-không giám sát vì kiểm tra Sai là chính xác.
Brian Murray

Như bất kỳ ai theo dõi liên kết báo cáo lỗi Launchpad ở trên sẽ thấy, vấn đề này thực tế không phải do so sánh chuỗi thất bại, mà thay vào đó là do lỗi trình tự hệ thống đã được sửa chữa .
sampablokuper

1

Như một cách giải quyết, tôi sử dụng tập lệnh này để sửa nó:

#!/usr/bin/env bash

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

exit

Hy vọng nó sẽ sớm được đưa lên thượng nguồn.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.