Jak mohu z příkazového řádku nainstalovat pouze aktualizace zabezpečení?

288

sudo apt-get upgrade nainstaluje všechny aktualizace, nejen aktualizace zabezpečení. Vím, že pomocí Správce aktualizací můžu vybrat pouze důležité bezpečnostní aktualizace, ale existuje způsob, jak to provést z příkazového řádku?

    
dané mac9416 29.07.2010 00:50

7 odpovědí

269

Součástí balení bezobslužné-upgrade poskytuje funkce pro automatickou instalaci aktualizací zabezpečení.

Můžete to použít, ale namísto konfigurace automatické části byste ji mohli volat ručně. V tomto případě by to měl udělat tiše:

sudo unattended-upgrade

nebo více verbose verze pro ovládání toho, jak to jde

sudo unattended-upgrade -d

POZNÁMKA: Když zavoláte bezobslužný upgrade, ponecháte "s" mimo konec.

Předpokládá se, že je balík nainstalován ve výchozím nastavení, což je pravděpodobně. Pokud tomu tak není, stačí:

sudo apt-get install unattended-upgrades

Viz také/usr/share/doc/unattended-upgrades/README.md.

    
odpověděl blueyed 29.07.2010 19:28
104

Několik tipů, jak spravovat aktualizace

Platí to jak pro Debian, tak pro Ubuntu, ale i další specifické pokyny pro Ubuntu.

  • Zobrazit pouze bezpečnostní aktualizace:

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

    nebo

    sudo unattended-upgrade --dry-run -d
    

    nebo

    /usr/lib/update-notifier/apt-check -p
    
  • Zobrazit všechny vylepšené balíčky

    apt-get -s dist-upgrade | grep "^Inst"
    
  • Nainstalujte pouze aktualizace zabezpečení

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

Poznámky:

  • Někdy Ubuntu zobrazuje aktualizace zabezpečení, jako kdyby pocházejí z repozitáře $ release-updates. Je to tak, řekli mi to, protože vývojáři Ubuntu prosazují bezpečnostní aktualizace do repozitáře $ release-updates i pro urychlení jejich dostupnosti.

    Pokud tomu tak je, můžete zobrazit následující bezpečnostní aktualizace:

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

    a

    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 '}
    
  • Zkontrolujte, jaké služby je třeba po upgradu balíčků restartovat. Zjistěte, jaké balíčky chcete předem upgradovat, a naplánujte své restartování / restartování. Problém je v tom, že pokud restartujete službu, může se ještě používat starší verze knihovny (nejčastější důvod), která byla načtena do paměti před instalací nového balíčku, který opravuje bezpečnostní chybu nebo cokoli jiného.

    checkrestart -v
    

    Mějte však na paměti, žecheckrestart může uvádět procesy, které by neměly být nutně restartovány. Služba PostgreSQL například může mít ve své paměti odkaz na již smazaný soubor xlog, což není platný důvod k restartování služby.

    Dalším spolehlivějším způsobem, jak to ověřit pomocí standardních utils, je následující malý skript bash, který jsem nehanebně ukradl ze Odkaz

    a>

    Kontroluje, zda spuštěné procesy v systému stále používají odstraněné knihovny kvůli uchování kopií těch, které jsou v aktivní paměti.

    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
    
odpověděl ILIV 16.11.2012 12:35
46

Nahraďte/etc/apt/preferences následujícím způsobem:

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

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

Zjednodušená verzeapt-get upgrade bude nyní pouze aktualizovat všechny aktualizace zabezpečení.

Proč (a jak) to funguje: Soubor předvoleb přiloží všechny balíky z distribuce Ubuntu na prioritu 50, což z nich činí méně žádoucí než již nainstalované balíčky. Soubory pocházející z úložiště zabezpečení mají výchozí (500) prioritu, takže jsou brány v úvahu pro instalaci. To znamená, že pouze balíčky, které jsou považovány za žádoucí než ty, které jsou aktuálně nainstalovány, jsou aktualizace zabezpečení. Další informace o připínání naleznete v mana stránce apt_preferences .

Můžete dočasně propagovat určitou distribuci pro aktualizace s volbou--target-release, která pracuje sapt-get aaptitude (přinejmenším), což vám umožní vylepšit určité verze tak, aby byly vhodné pro upgrade.

Chcete-li tento způsob použít pouze pro skripty a nečiníte pro systém výchozí, můžete pravidla umístit na jiné místo a použít místo toho:

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

Tím se bude apt hledat soubor preferencí z výchozího umístění.

Soubor předvolby, který je uveden jako příklad, se nevztahuje na repozitáře třetích stran. Pokud si chcete přichytit i ty, můžete použítapt-cache policy pro snadné určení požadovaných klíčů pro připnutí.

    
odpověděl Ressu 29.07.2010 06:12
9

Následující text je potvrzen v Ubuntu 14.04 LTS.

Použijte balíčekunattended-upgrade.

Podívejte se na soubor/etc/apt/apt.conf.d/50unattended-upgrades. V horní části by měla být část:

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

Všimněte si, jak byla nakonfigurována tak, aby ve výchozím nastavení povolovala pouze bezobslužné upgrady pro balíky zabezpečení.

Upravte soubor/etc/apt/apt.conf.d/10periodic podobný:

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

Spustí se automatické bezobslužné upgrady zabezpečení jednou za den.

Nyní spusťte ručně:sudo unattended-upgrade.

Testujte jako suché běhání, aniž byste něco udělali:sudo unattended-upgrade --dry-run.

Zdroj: Odkaz

    
odpověděl vcardillo 03.10.2016 19:18
5

I když je to docela ošklivé, můžete vypnout všechny repozitáře kromě úložiště zabezpečení a pak:

sudo apt-get update && sudo apt-get upgrade

Netestoval jsem to, teoreticky by však našel pouze aktualizace v bezpečnostní repo a použil je ...

    
odpověděl Stephen RC 29.07.2010 02:00
3

  • apt-get update: stačí přečíst položky v úložišti - podle existujícího seznamu. Potřebujete zkontrolovat, co je nového.
  • apt-get upgrade: všechny aktualizace pro nainstalované balíčky bez modulů jádra. Žádná aktualizace vydání.
  • apt-get dist-upgrade: všechny aktualizace pro nainstalované balíčky i s moduly jádra. Žádná aktualizace vydání.
  • apt-get s parametrem-s: pouze test, žádné změny provedeny.
odpověděl fuser 02.08.2013 11:49
0

Nenaleznu možnost v apt-get nebo aptitude, ale někdo měl stejná otázka v aplikaci SuperUser. Jedinou odpovědí je:

  

Zkontrolujte a upravte /etc/apt/apt.conf.d/50unattended-upgrade. Nahradili jste "karmické" kódovým jménem vašeho Ubuntu?

Nebyla odpověď na to, zda to fungovalo.

    
odpověděl Ross 29.07.2010 01:04