Temel nedene yaklaşmak için etrafa bakma
Sorun kapatma sırasında çalışan komut dosyası gibi görünüyor.
İlgili dosyayı şu şekilde tanımladım:
find /etc/systemd -name *unattended*
hangi bana ilgili systemd betiği verir:
/etc/systemd/system/shutdown.target.wants/unattended-upgrades.service
bu da bana kapatma sırasında çalıştırılan komut dosyasını söyledi:
/usr/share/unattended-upgrades/unattended-upgrade-shutdown
Temel nedeni bulmak için daha derinlemesine araştırma
Bu komut dosyasında 120 satırında /etc/apt/apt.conf.d/50unattended-upgrades -> Katılımsız Yükseltme :: InstallOnShutdown'daki bölümle ilgili bir bölüm vardır.
/ Usr / share / katılımsız yükseltmeler / katılımsız yükseltme-kapanış satırı 120:
if apt_pkg.config.find_b("Unattended-Upgrade::InstallOnShutdown", False):
Sorun: apt conf biz "yanlış" (tam dize karşılaştırması) eklemeliyken "False" anahtar kelimesini bekliyor!
Çözüm
Stalling kapatma 3 farklı şekilde düzeltmek / geçici çözüm başardı:
Geçici Çözüm A
- /etc/apt/apt.conf.d/50unattended-upgrades içinde "false" yerine "False" yazın
Bu ayar, gerçek bir düzeltme sağlanana kadar yükseltme güvenlidir, çünkü burada değiştirdiğimiz dosyanın katılımsız yükseltme güncellemesi tarafından üzerine yazılmaz. Sorun: Kök neden düzeltildiğinde, bu durum yine durmaya neden olacaktır, bu yüzden bunu Geçici Çözüm B ile birleştirmenizi öneririm.
VEYA: Geçici Çözüm B
- /etc/systemd/system/shutdown.target.wants/unattended-upgrades.service içindeki bekleme süresini varsayılandan 15 saniyeye düşürün:
vim /etc/systemd/system/shutdown.target.wants/unattended-upgrades.service
[Hizmet]
= Oneshot yazın
ExecStart = / usr / share / gözetimsiz-yükseltmeleri / gözetimsiz yükseltme-kapatma
TimeoutStartSec = 15
Burada değiştirdiğimiz dosyanın katılımsız yükseltme güncellemesi ile üzerine yazılabileceğinden bu ayar güvenli yükseltme DEĞİLDİR. Bunun yanı sıra, bir şeyi düzeltmekten çok uzaktır, ancak sisteminizin kapanırken birkaç dakika beklememesini sağlayacaktır. Gözetimsiz yükseltmelerin yükseltilmesinden sonra bunu tekrar ayarlamanız gerekebileceğini unutmayın!
VEYA: Düzeltme C (akış yukarı rapor edilmelidir)
- "False" yerine "false" olmasını beklemek için / usr / share / unattended-upgrade / unattended-upgradedes-shutdown düzeltmesi
yama / usr / share / katılımsız yükseltme / katılımsız yükseltme-kapatma:
--- / tmp / katılımsız yükseltme-kapatma 2017-02-03 14: 53: 03.238103238 +0100
+++ / tmp / katılımsız yükseltme-shutdown_fix 2017-02-03 14: 53: 17.685589001 +0100
@@ -117,7 +117,7 @@
# koş
p = Yok
apt_pkg.init_config ()
- apt_pkg.config.find_b ("Katılımsız Yükseltme :: InstallOnShutdown", Yanlış) ise:
+ apt_pkg.config.find_b ("Katılımsız Yükseltme :: InstallOnShutdown", yanlış) ise:
env = copy.copy (os.environ)
env ["UNATTENDED_UPGRADES_FORCE_INSTALL_ON_SHUTDOWN"] = "1"
logging.debug ("kapatma modunda katılımsız yükseltmeleri başlatma")
Sonuç
tbh sadece sonuncusu gerçek bir düzeltmedir. diğer her iki seçenek de gerçek düzeltme uygulanana kadar geçici çözümlerdir.
Bu akış yukarı yapılmalıdır ve bu her iki dağıtım için hem Debian'ı (Debian Stretch'te test edilmiştir) hem de Ubuntu'yu (Ubuntu 16.04.1'de test edilmiştir) etkiler.
Burada bir hata raporu açtım: https://bugs.launchpad.net/ubuntu/+source/unattended-upgrades/+bug/1661611