Apt-get update yapın ve otomatikleştirin ve gözetimsiz yükseltin


28

Yönettiğim yaklaşık 7 Debian sunucusu var ve onları otomatik olarak kendilerini güncellemelerini sağlamak istiyorum. Böylece, bir komut dosyası şöyle yarattım:

#!/bin/sh
apt-get update
apt-get upgrade

ve rootcrontab listesine yerleştirdi. Ne yazık ki, yükseltmek istediğimden emin olup olmadığımı sormak için her zaman Yükseltme bölümüne kilitlenir. Çünkü bu bir cron işi, başarısız olduğunu söyleyen e-postalarıma kadar çıktı göremiyorum. Bu istemi atlatmanın ve yükseltme işlemini otomatik olarak yapmanın bir yolu var mı?


3
... veya cron-apt.
derobert

Yanıtlar:


46

Sormamaya apt-get için -y seçeneğini kullanın. Kimden man apt-get:

   -y, --yes, --assume-yes
       Automatic yes to prompts; assume "yes" as answer to all prompts and
       run non-interactively. If an undesirable situation, such as
       changing a held package, trying to install a unauthenticated
       package or removing an essential package occurs then apt-get will
       abort. Configuration Item: APT::Get::Assume-Yes.

DEBIAN_FRONTEND env değişkenini de ayarlayabilirsiniz

DEBIAN_FRONTEND=noninteractive apt-get -y upgrade

1
Ne yapar DEBIAN_FRONTEND? Diğer işlemler için de kullanılıyor mu?
Kanadalı Luke MONICA'I

Bunu ev sunucumda deniyorum ve çalıştığı anda en iyi cevabı seçecek
Kanadalı Luke MONTAJI MONICA

1
@CanadianLuke bakınız burada için DEBIAN_FRONTEND. Yine de Debian'ımda söylenmiyor man debconf, bu yüzden bir Ubuntu olayı olabilir.
terdon

@ terdon debconf için -doc paketine sahip değilsiniz. Adamın 7 bölümünde man 7 debconf;)
Braiam

@Braiam ah, tamam, bunu gördüm ve denedim man 7 debconfama hiçbir şey alamadım . Şimdi nedenini biliyorum :)
terdon

27

Belki de yanlış aracı kullanıyorsunuzdur. unattended-upgradespaket, güvenlik yükseltmelerini günlük olarak yükler (yapılandırılabilir), yükseltmek veya yükseltmek için hangi paketleri yapılandırabilirsiniz, vb. kullanarak yüklenebilir:

sudo apt-get install unattended-upgrades

Kimden man unattended-upgrades:

Yapılandırma apt yapılandırma mekanizması ile yapılır. Varsayılan yapılandırma dosyası /etc/apt/apt.conf.d/50unattended-upgrades adresinde bulunabilir.


@CanadianLuke içindeki tüm yapılandırmaları okur, /etc/apt/apt.conf.d/ancak yalnızca Unattended-Upgrade::ayrıştırılanlarla başlar.
Braiam

İş yerinde sunuculardan birinde bu çalışıyorum ve ishal olan en kısa sürede en iyi cevabı seçecek
Kanadalı Luke eski haline MONICA

10

önceki cevaplar bilgilendirici olsa da, insani yardımların gerektirdiği girdi 'sorununu' atlatmazlar upgrade. bu nedenle, aşağıdakileri kullanıyorum:

export DEBIAN_FRONTEND=noninteractive
export DEBIAN_PRIORITY=critical
sudo -E apt-get -qy update
sudo -E apt-get -qy -o "Dpkg::Options::=--force-confdef" -o "Dpkg::Options::=--force-confold" upgrade
sudo -E apt-get -qy autoclean

Çekirdekler gibi 'dağıtım' yükseltmelerini eklemek için dist-upgradekomutu kullanın.

Lütfen bu parametreler hakkında derinlemesine bilgi edinmek için satış kılavuzunadpkg bakınız .

önemli not : parametre de sudodahil olmak üzere çağırmak -Egereklidir:

Indicates to the security policy that the user wishes to preserve their existing environment variables. The security policy may return an error if the user does not have permission to preserve the environment.

Aksi halde EXPORTifadeler çağrıları etkilemeyecektir apt-get!

Kredi Remy van Elst'e gidiyor ! Teşekkürler!


1
Neden apt-get upgrade için diğer seçenekleri eklediğinizi açıklayabilir misiniz?
FarO

1
Ayrıca, komut dosyası rott'un crontab'sından çalıştırıldığında "sudo -E" gerekli midir?
FarO

1
@FarO, cronjob'ın hangi ortamda / hangi bağlamda çalışmasını istediğinize bağlı olarak değişir. genellikle, bunlar tarafından çalıştırılır root- hiç kullanmanıza gerek kalmaz sudo. 'diğer seçenekler' her durumda katılımsız çalışmak üzere ayarlanmıştır. lütfen başvurulan mansayfaya bakınız .
jitter,

4

Bu tür bir şey için genel bir araçtır yes:

DESCRIPTION
       Repeatedly output a line with all specified STRING(s), or 'y'.

Yani, örneğin, yapabilirdi

yes | sudo apt-get upgrade 

Lütfen apt-get upgrade, @Braiam veya @ArthurUlfeldt tarafından önerilen seçeneklerin kullanılması durumunda daha iyi olduğunu unutmayın.


Manuel olarak yapmak istediğimde yapıştırdığım satır: apt-get update && yes | apt-get upgrade(sunucularımızın kullanması gerekmiyor sudo... Sorma ...)
Kanadalı Luke REINSTATE MONICA

Neden zaten sağlanan bir seçenek yerine bir numara kullanıyorsunuz? "-y" zaten apt-get konumunda.
FarO

3
Çünkü, cevabında dediğim gibi, bu, bu tür bir işlem için genel bir araçtır, bu yüzden bu cevap apt için değil, diğer durumlar içindir. Son paragrafı okumadın mı? Ya da ilk cümle?
terdon
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.