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