Herhangi bir havuz için sessiz otomatik güncelleştirmeler nasıl etkinleştirilir?


43

Google Chrome için sessiz otomatik güncellemelerin nasıl etkinleştirileceğini buradan okudum . Bununla birlikte, sessiz güncellemeleri etkinleştirmek istediğim spotify, docky ve diğerleri gibi başka depolarım da var.

Bunu Ubuntu 10.04 sistemimde yapmaya çalışıyorum. Ancak bu soru tüm Ubuntu sürümleri için geçerlidir. Ben gözetimsiz-yükseltmeler pakete yüklü.

Bunu nasıl yapabilirim?


Sessiz güvenlik güncellemeleri istiyor musunuz? veya TÜM güncellemeler müdahale olmadan yüklenmiş? Neden?
david6

1
Kullanıcı depoları dahil hemen hemen tüm güncellemeler.
nik90

Yanıtlar:


66

İlk önce, kurun gksu:

sudo apt-get install gksu

Sisteminiz için katılımsız güncellemeleri etkinleştirmenin en kolay yolu, 50unattended-upgradesiçindeki dosyayı /etc/apt/apt.conf.d/en sevdiğiniz metin düzenleyicinizle düzenlemektir, örneğin:

gksu gedit /etc/apt/apt.conf.d/50unattended-upgrades

İçinde İzin Verilen Kaynaklar bloğunun yorumlanmış bölümlerini yorumlamanız gerekir

Değişiklik

Unattended-Upgrade::Allowed-Origins {
        "${distro_id} ${distro_codename}-security";
//      "${distro_id} ${distro_codename}-updates";
//      "${distro_id} ${distro_codename}-proposed";
//      "${distro_id} ${distro_codename}-backports";
};

için

Unattended-Upgrade::Allowed-Origins {
        "${distro_id} ${distro_codename}-security";
        "${distro_id} ${distro_codename}-updates";
//      "${distro_id} ${distro_codename}-proposed";
//      "${distro_id} ${distro_codename}-backports";
};

Güncellemek istediğiniz Ubuntu depolarında bulunmayan yazılımlar için, dosyaya bir başlangıç ​​noktası ve arşiv eklemeniz gerekir . Bunların PPA'larınız için ne olduğunu bulmak için klasörü açın /var/lib/apt/lists/, bu her paket kaynağının durum bilgisi için depolama alanıdır. Aradığın şey , adında Release ile biten dosyalar .

Birini metin editörünüzle açın, yani Google Chrome için:

gedit /var/lib/apt/lists/dl.google.com_linux_chrome_deb_dists_stable_Release

Origin: Google, Inc.
Label: Google
Suite: stable
Codename: stable
Version: 1.0
Date: Thu, 17 Nov 2011 19:09:01 +0000
Architectures: i386 amd64
Components: main
Description: Google chrome-linux repository.

Menşei bellidir ( Origin: Google, Inc.) ve arşiv Suite ( Suite: stable) satırının altında ne olursa olsun olacaktır .

Ya Originda Suiteeksikse boş dize olacaktır. Ancak, her ikisinin de eksik olması durumunda , muhtemelen aynı konuyla diğer kaynakları dahil etmeden bu kaynağı katılımsız yükseltmelerle kullanmanın mümkün olmayacağına dikkat edin .

Bu 2 satırı kaydettikten sonra 50unattended-upgradesdosyayı düzenlemeniz ve "<origin>:<archive>";bu örnekler için bu formatı kullanarak satırları eklemeniz gerekir "Google\, Inc.:stable";.

Google Chrome'un kökeni biraz zor, çünkü bir boşluk ve bir virgül içeriyor, ancak çoğu Sürüm dosyasının okunması kolay olacak.

Başka bir örnek olarak, Düğüm JS kaynağı bir kökeni ( Node Source) belirtir, ancak bir arşiv değildir; Böylece eşleştirebilirsiniz "Node Source:";.

İzin Verilen Kökenler , kabuk tarzı joker karakterler kullanılarak eşleştirilir (daha özel olarak Python's fnmatch () ile ). Eğer birbiriyle çelişen kaynakları eklemeyecek kadar dikkatli olursanız, bunun gibi şeyler yazmak mümkündür "Node *:*";.


50unattended-upgradesDosyanızı düzenlemeden önce yedeklemeyi unutmayın , bunu yapın sudo cp /etc/apt/apt.conf.d/50unattended-upgrades /etc/apt/apt.conf.d/50unattended-upgrades.bak.

Kullanabileceğiniz dosya üzerinde yapılan değişiklikleri test etmek sudo unattended-upgradesparametrelerle --dry-runve --debug.

--dry-run Katılımsız bir yükseltme döngüsü gerçekleştirecek, ancak yükseltmeleri gerçekten yüklemeyecek, yalnızca her şeyin yolunda olduğunu kontrol edip doğrulayın.

--debug ayrıntılı modunu etkinleştirir.

Günlükleri her zaman için unattended-upgradesadresinden kontrol edebilirsiniz /var/log/unattended-upgrades/unattended-upgrades.log.


Katılımsız yükseltmelerin yapılandırmasını dosyayı düzenleyerek değiştirebilirsiniz, yapılandırma /etc/apt/apt.conf.d/10periodicseçenekleri /etc/cron.daily/aptkomut başlığındadır. Katılımsız yükseltme sıklığını yapılandırmak için bunları okuyun.


2
Teşekkürler ... Çok detaylı! Google’a neden \ koyduğunu sorabilir miyim?
nik90

Kaynaktaki özel karakterler nedeniyle, virgül için bir kaçış karakteridir. Bulduğun birçok köken buna sahip olmayacak.
Bruno Pereira

1
@jos Hayır, bu şekilde çalışır, --dry-rungüncellenen listelerde herhangi bir güncelleme olup olmadığını kontrol eder ve bunları size çıkarır , listeleriniz yapılandırmanız ne olursa olsun, /etc/cron.daily/aptgüncellemeleri manuel olarak çalıştırdığımı düşünüyorum listeleri listeler.
Bruno Pereira

1
Karşılık gelen Yayın dosyası bir Suite listelemediğinde, arşiv adı olarak ne girmeliyim?
hsivonen

2
Lütfen buradan otomatik yaklaşımı da kontrol edin: askubuntu.com/a/792621/417607
Abhishek Bhatia

14

@Bruno Pereira'nın cevabı için otomatik yaklaşım: (Cevabı yararlı bulursanız, lütfen github repo'yu oynamayı düşünün.)

Kod Bağlantısı: https://github.com/abhigenie92/unattended_upgrades_repos

  • Eklemek için depoları kontrol edin:

    $ python automatic_upgrade.py 
    Add repos:
    "Ubuntu:xenial";
    "LP-PPA-kubuntu-ppa-backports:xenial";
    "LP-PPA-tuxonice:xenial";
    "LP-PPA-webupd8team-sublime-text-3:xenial";
    
    Skipping files due to not present origin or suite. Or origin being a url.:
    packagecloud.io_slacktechnologies_slack_debian_dists_jessie_InRelease
    tiliado.eu_nuvolaplayer_repository_deb_dists_xenial_InRelease
    
  • Şimdi /etc/apt/apt.conf.d/50unattended-upgradesbunları dahil etmek için düzenleyin :

    // Automatically upgrade packages from these (origin:archive) pairs
    Unattended-Upgrade::Allowed-Origins {
        "${distro_id}:${distro_codename}-security";
        "${distro_id}:${distro_codename}-updates";
        "${distro_id}:${distro_codename}-proposed";
        "${distro_id}:${distro_codename}-backports";
      "Ubuntu:xenial";
      "LP-PPA-kubuntu-ppa-backports:xenial";
      "LP-PPA-tuxonice:xenial";
      "LP-PPA-webupd8team-sublime-text-3:xenial";
    };
    ....
    ....
    
  • Dahil olup olmadığını görmek için kontrol edin:

    $ sudo unattended-upgrade --dry-run --debug
    Initial blacklisted packages: 
    Initial whitelisted packages: 
    Starting unattended upgrades script
    Allowed origins are: ['o=Ubuntu,a=xenial-security', 'o=Ubuntu,a=xenial-updates', 'o=Ubuntu,a=xenial-proposed', 'o=Ubuntu,a=xenial-backports', 'o=Ubuntu,a=xenial', 'o=LP-PPA-kubuntu-ppa-backports,a=xenial', 'o=LP-PPA-tuxonice,a=xenial', 'o=LP-PPA-webupd8team-sublime-text-3,a=xenial']
    pkgs that look like they should be upgraded: 
    Fetched 0 B in 0s (0 B/s)                                                                                  
    fetch.run() result: 0
    blacklist: []
    whitelist: []
    No packages found that can be upgraded unattended and no pending auto-removals
    

@ andy.holmes hoş geldiniz, lütfen mümkünse github deposunun başını düşünün. Link- github.com/abhigenie92/unattended_upgrades_repos
Abhishek Bhatia


Bu python betiği mükemmel, ancak ben Raspberry Pi çalışan streç için 50 katılımsız yükseltme için README.md'nin önerdiği şeyi değiştirmek zorunda kaldım. İzin verilen kökeni, örneğin "Raspberry:stable";işe yaramadı olarak belirlemek . Bunun yerine, örneğin,"o=Raspberry, a=stable";
cfogelberg

5

Düzenleme /etc/apt/apt.conf.d/50unattended-upgrades, aşağıdakileri ekleyin:

Unattended-Upgrade::Origins-Pattern {
        "origin=*";
};

Bu, tüm paketler için katılımsız yükseltme olanağı sağlayacaktır.


Evet, net ve özlü cevap için teşekkürler. Fakat origin:''örneğin datadog-agent'dan gelen paketler var site:'apt.datadoghq.com'. Bu durumda "origin=";, boş kökenli paketleri atlamamaya da eklemeniz gerekir. Ama sonra "site=*";yerine sadece kullanmak daha iyidir "origin=*";.
Paul Tobias,

Kendi havuzumu bir dosyaya ekledim /etc/apt/sources.list.d/my_repo.list, ancak paketi yükseltmiyor. El ile çalışır sudo apt update. Herhangi bir ipucu nasıl?
Sander

Bu manuel güncelleme ile aynı kaynakları kullanıyor mu, yani engelli kaynakları görmezden geliyor mu?
Silicomancer

3

Aşağıdaki bağlantıda cronun otomatik güncellemeyi başlatmasını sağlamak için tekrar çalıştırmaya zorlama yönergeleri vardır . Cron durdurmak için prosedür budur

sudo service anacron stop
sudo service cron stop
sudo rm -rf /var/run/unattend* /var/run/cron* /var/run/anacron*
sudo rm -rf /var/lib/apt/periodic/*

ve otomatik güncellemeyi şimdi yapmak için cron'u yeniden başlatmak (veya en azından birkaç dakika içinde)

sudo service cron start
sudo anacron -fn

Nasıl çalışır

Birkaç şey onu çalıştırmak için tetikleyecektir.

  • Özellikle /etc/cron.dailycron tarafından çalıştırılmaktan çıkarılır /etc/cron.daily/apt. Cron 6.25'te çalışır /etc/cron.daily(bkz. /etc/crontab)

  • Anacron başlangıçtan mı çalışıyor? ve /etc/cron.daily5 dakikalık çalışma süresinden sonra ateşlenecek (bkz. /etc/anacrontab)

    Not APT::Periodic::RandomSleepayarlanabilir /etc/apt/apt.conf.d/10periodic, ancak varsayılan olarak 1800s (30 dak /etc/cron.daily/apt.

Giriş

İşe yararsa, işler bu klasöre girilmelidir /var/log/unattended-upgrades.


Benim sanal barındırma sağlayıcı kaldırmak için iyi bir fikir olacağını düşündüm gibi bu benim için özellikle yararlı oldu /etc/cron.daily/aptvarsayılan Ubuntu 12.04 kurulum dan -. Bu yüzden otomatik APT güncellemeler :-( gerçekleşiyor değildi ServerFault cevap serverfault.com/a/568329/ 95570 , bu dosyanın yeniden oluşturulmasına ilişkin detaylı bilgi verdi
Alex Dupuy
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.