it-swarm-tr.com

Yalnızca güvenlik güncelleştirmelerini komut satırından nasıl yükleyebilirim?

Sudo apt-get upgrade sadece güvenlik güncellemelerini değil tüm güncellemeleri yükler. Update Manager'ı yalnızca önemli güvenlik güncellemelerini seçmek için kullanabileceğimi biliyorum, ancak bunu komut satırından yapmanın bir yolu var mı?

330
Michael Crenshaw

katılımsız yükseltme paketi, güvenlik güncelleştirmelerini otomatik olarak yükleme işlevselliği sağlar.

Bunu kullanabilirsiniz, ancak otomatik kısmı yapılandırmak yerine manuel olarak çağırabilirsiniz:

Sudo unattended-upgrade -d --dry-run
Sudo unattended-upgrade -d

Bunun yerine sessizce çalıştırmak istiyorsanız:

Sudo unattended-upgrade

NOT: Katılımsız yükseltme çağrıldığında "s" harflerini sonlandırın.

Bu, paketin muhtemelen olduğu gibi varsayılan olarak yüklendiğini varsayar. Değilse, sadece yapın:

Sudo apt-get install unattended-upgrades

Ayrıca bakınız /usr/share/doc/unattended-upgrades/README.md.

307
blueyed

Güncelleştirmeleri Yönetme Konusunda Birkaç Püf Nokta

Bu, hem Debian hem de Ubuntu için geçerlidir, ancak Ubuntu'nun izleyeceği daha özel talimatlar.

  • Yalnızca güvenlik güncellemelerini göster:

    apt-get -s dist-upgrade |grep "^Inst" |grep -i securi 
    

    veya

    Sudo unattended-upgrade --dry-run -d
    

    veya

    /usr/lib/update-notifier/apt-check -p
    
  • Tüm yükseltilebilir paketleri göster

    apt-get -s dist-upgrade | grep "^Inst"
    
  • Yalnızca güvenlik güncelleştirmelerini yükle

    apt-get -s dist-upgrade | grep "^Inst" | 
        grep -i securi | awk -F " " {'print $2'} | 
        xargs apt-get install
    

Notlar:

  • Bazen Ubuntu güvenlik güncellemelerini $ release-updates deposundan geliyor gibi gösterir. Öyle olduğunu söyledim, çünkü Ubuntu geliştiricileri Kullanılabilirliklerini hızlandırmak için $ release-update deposuna güvenlik güncellemeleri gönder.

    Bu durumda, yalnızca güvenlik güncellemelerini göstermek için aşağıdakileri yapabilirsiniz:

    Sudo sh -c 'grep ^deb /etc/apt/sources.list | 
        grep security > /etc/apt/sources.security.only.list'
    

    ve

    apt-get -s dist-upgrade -o Dir::Etc::SourceList=/etc/apt/sources.security.only.list -o Dir::Etc::SourceParts=/dev/null  | 
        grep "^Inst" | awk -F " " {'print $2'}
    
  • Paket yükseltmelerinden sonra hangi hizmetlerin yeniden başlatılması gerektiğini kontrol edin. Hangi paketleri önceden yükselteceğinize karar verin ve yeniden başlatma/yeniden başlatma işlemlerinizi zamanlayın. Buradaki sorun, bir hizmeti yeniden başlatmadığınız sürece, bir güvenlik açığını veya başka bir şeyi düzelten yeni bir paket yüklemeden önce, belleğe yüklenen bir kitaplığın daha eski bir sürümünü kullanıyor olabilir.

    checkrestart -v
    

    Ancak, checkrestart öğesinin yeniden başlatılması gerekmeyen işlemleri listeleyebileceğini unutmayın. Örneğin, PostgreSQL servisi hafızasında, silinmiş bir xlog dosyasına gönderme yapıyor olabilir; bu da servisi yeniden başlatmak için geçerli bir neden değil.

    Bu nedenle, standart utils kullanarak bunu kontrol etmenin başka bir daha güvenilir yolu, utanmadan çaldığım aşağıdaki küçük bash betiğidir https://locallost.net/?p=2

    Bir sistem üzerinde çalışan işlemlerin, kopyalarını etkin bellekte tutmaları nedeniyle hala silinmiş kütüphaneleri kullanıp kullanmadığını kontrol eder.

    ps xh -o pid |
    while read PROCID; do
           grep 'so.* (deleted)$' /proc/$PROCID/maps 2> /dev/null
           if [ $? -eq 0 ]; then
                   CMDLINE=$(sed -e 's/\x00/ /g' < /proc/$PROCID/cmdline)
                   echo -e "\tPID $PROCID $CMDLINE\n"
           fi
    done
    
114
ILIV

/etc/apt/preferences işlevini aşağıdaki ile değiştirin:

Package: *
Pin: release a=lucid-security
Pin-Priority: 500

Package: *
Pin: release o=Ubuntu
Pin-Priority: 50

şimdi basit bir apt-get upgrade sadece tüm güvenlik güncellemelerini yükseltecek.

Bu neden (ve nasıl) işe yarıyor: Tercihler dosyası, Ubuntu dağıtımından öncelikli 50'ye kadar tüm paketleri sabitleyecektir; Güvenlik havuzundan gelen dosyalara varsayılan (500) öncelik verilir, bu nedenle kurulum için kabul edilirler. Bu, yalnızca şu anda yüklü olanlardan daha fazla istenen paketlerin güvenlik güncelleştirmeleri olduğu anlamına gelir. İğnelenme hakkında daha fazla bilgi apt_preferences manpage .

--target-release ve aptitude (en azından) ile çalışan apt-get seçeneğiyle güncelleştirmeler için belirli bir dağıtımı geçici olarak yükseltebilirsiniz;.

Bunu sadece komut dosyaları için kullanmak ve sistem için varsayılan yapmak istemiyorsanız, kuralları başka bir yere yerleştirebilir ve bunun yerine kullanabilirsiniz:

apt-get -o Dir::Etc::Preferences=/path/to/preferences_file upgrade

Bu, tercihler dosyasını varsayılan olmayan bir konumdan apt arayacak.

Örnek olarak verilen tercihler dosyası üçüncü şahıs depolarına uygulanmaz, eğer bunları da pinlemek isterseniz, pinleme için gerekli anahtarları kolayca belirlemek için apt-cache policy kullanabilirsiniz.

46
Ressu

Aşağıdakiler Ubuntu 14.04 LTS'de onaylanmıştır.

unattended-upgrade paketini kullanın.

/etc/apt/apt.conf.d/50unattended-upgrades dosyasına bakın. En üstte bir bölüm olmalıdır:

// 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";
};

Varsayılan olarak, yalnızca güvenlik paketleri için katılımsız yükseltmelere izin verecek şekilde yapılandırıldığını unutmayın.

/etc/apt/apt.conf.d/10periodic dosyasını şu şekilde değiştirin:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";
APT::Periodic::Unattended-Upgrade "1";

Bu, günde bir kez, katılımsız güvenlik güncellemelerini otomatik olarak yürütür.

Şimdi manuel olarak çalıştırmak için: Sudo unattended-upgrade.

Kuru çalışma olarak herhangi bir şey yapmadan test etmek için: Sudo unattended-upgrade --dry-run.

Kaynak: https://help.ubuntu.com/14.04/serverguide/automatic-updates.html

12
vcardillo

Her ne kadar çirkin olsa da, güvenlik deposu dışındaki tüm depoları devre dışı bırakıp şunları yapabilirsiniz:

Sudo apt-get update && Sudo apt-get upgrade

Test etmedim, ancak teoride yalnızca güvenlik deposundaki güncellemeleri bulur ve uygular ...

5
Stephen RC
  • apt-get update: sadece depodaki girişleri oku - mevcut listeye göre. Nelerin yeni olduğunu kontrol etmek gerekiyordu.
  • apt-get upgrade: çekirdek modülleri olmayan kurulu paketler için tüm güncellemeler. Sürüm güncellemesi yok.
  • apt-get dist-upgrade: Çekirdek modülleriyle birlikte kurulu paketler için tüm güncellemeler. Sürüm güncellemesi yok.
  • apt-get parametresi -s ile: yalnızca test, hiçbir değişiklik yapılmadı.
3
fuser

İşte bunu birkaç farklı şekilde gerçekleştiren bir betik:

#!/usr/bin/env bash
set -e

# List upgradable packages
apt-get update
apt list --upgradable 2>/dev/null
# List security upgrades
test "$(apt-get upgrade -s -y)" && (apt-get upgrade -s -y)
# List upgradable apt packages then upgrade
apt-get update && apt-get upgrade -y  -V | grep '=>' | awk '{print$1}' && test "$(apt-get upgrade -y)"
0
Seth Bergman

Debians'da bu komutu sadece güvenlik güncellemelerini yapmak için kullanıyorum:

apt-get install -y --only-upgrade $( apt-get --just-print upgrade | awk 'tolower($4) ~ /.*security.*/ || tolower($5) ~ /.*security.*/ {print $2}' | sort | uniq )
0
keypress

Ben apt-get veya yetenek bir seçenek bulamıyorum, ancak birisi SuperUser üzerinde aynı sor vardı. Tek cevap:

Check and adjust /etc/apt/apt.conf.d/50unattended-upgrade. 
Did you replace 'karmic' with the code name of your Ubuntu?

Ancak bunun işe yarayıp yaramadığına dair bir cevap yok.

0
Ross