Vraag Hoe kan ik alleen beveiligingsupdates installeren vanaf de opdrachtregel?


sudo apt-get upgrade installeert alle updates, niet alleen beveiligingsupdates. Ik weet dat ik Update Manager kan gebruiken om alleen belangrijke beveiligingsupdates te selecteren, maar is er een manier om dit vanaf de opdrachtregel te doen?


286
2017-07-28 22:50


oorsprong


Ik denk het niet. dist-upgrade brengt het hele systeem naar een nieuwe release. Ik heb het over dagelijkse updates, zoals die worden weergegeven in Update Manager. - mac9416
Oh, ik begrijp wat je nu zegt. Heh, ik draai apt-get update zo vaak, typ ik het zonder na te denken. Bedankt voor de heads-up! - mac9416
U wilt "apt-get dist-upgrade", niet "apt-get-upgrade". "dist-upgrade" is niet bedoeld voor nieuwe releases (dat is "do-release-upgrade", een afzonderlijke opdracht). Het gebruik van "dist-upgrade" betekent dat het omgaan met veranderende afhankelijkheden van de nieuwe pakketten. Dit kan belangrijk zijn. - Kees Cook
dist-upgrade is de normale bewerking die wordt uitgevoerd door de GUI van Update Manager. Voor pakketten zoals de kernel waar er een is linux-image-generic pakket, afhankelijk van het huidige beeld, bijvoorbeeld linux-image-3.x.y-zz-generic (elke versie hiervan is een aparte pakketnaam), dist-upgrade (waarmee nieuwe pakketten kunnen worden geïnstalleerd om te voldoen aan afhankelijkheden) voert deze upgrade uit, terwijl een upgrade het kernelpakket als terughoudend zal tonen. - chronitis
Verrassend dat er geen goede dingen zijn apt-get gebaseerde antwoorden hiervoor, rekening houdend met hoe prominent het op elke server wordt vermeld - Karthik T


antwoorden:


Het pakket onbewaakt-upgrades biedt functionaliteit om beveiligingsupdates automatisch te installeren.

Je zou dit kunnen gebruiken, maar in plaats van het automatische deel te configureren zou je het handmatig kunnen noemen. In dit geval moet het volgende het rustig doen:

sudo unattended-upgrade

of meer uitgebreide versie, om te bepalen hoe het gaat

sudo unattended-upgrade -d

OPMERKING: wanneer u onbeheerde upgrade belt, laat u de "s" van het einde.

Hierbij wordt ervan uitgegaan dat het pakket standaard is geïnstalleerd, wat waarschijnlijk het geval is. Zo niet, doe dan gewoon:

sudo apt-get install unattended-upgrades

Zie ook /usr/share/doc/unattended-upgrades/README.md.


267
2017-07-29 17:28



Voor het uitschakelen van de automatische uitvoering van unattended-upgrade u moet waarschijnlijk wijzigen /etc/cron.daily/apt, maar niet zeker of het "correct" is om dit te doen - Jaime Hablutzel
kanttekening: voor Ubuntu 12.04.5 LTS-server, unattended-upgrades is niet standaard geïnstalleerd. - Raptor
Aangezien u dit vanaf de opdrachtregel doet, gebruikt u -v voor infoboodschappen of -d voor debug-berichten. Anders zal het hulpprogramma zeer stil zijn, in welk geval u de logboeken zou moeten controleren /var/log/unattended-upgrades. Je kan ook gebruiken --dry-run om iets te simuleren maar niet echt te upgraden. Gebruik voor meer info en andere opties --help om het helpbericht te krijgen. - ADTC
ik heb er een paar dingen over geleerd unattended-upgrades vandaag. bedankt! - the0ther
"voor het monitoren van hoe het gaat", het is gewoon debuggen niet-interactieve berichten toch? - Aquarius Power


Een paar tips voor het beheren van updates

Dit geldt zowel voor Debian als Ubuntu, maar er volgen meer specifieke instructies voor Ubuntu.

  • Alleen beveiligingsupdates weergeven:

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

    of

    sudo unattended-upgrade --dry-run -d
    

    of

    /usr/lib/update-notifier/apt-check -p
    
  • Toon alle uitbreidbare pakketten

    apt-get -s dist-upgrade | grep "^Inst"
    
  • Installeer alleen beveiligingsupdates

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

Opmerkingen: 

  • Soms toont Ubuntu beveiligingsupdates alsof ze afkomstig zijn van de $ release-updates repository. Dit is zo, zo werd mij verteld, omdat ontwikkelaars van Ubuntu beveiligingsupdates ook naar de repository met $ release-updates pushen om hun beschikbaarheid te bespoedigen.

    Als dat het geval is, kunt u het volgende doen om alleen beveiligingsupdates weer te geven:

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

    en

    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'}
    
  • Controleer welke services na pakketupgrades opnieuw moeten worden opgestart. Zoek uit welke pakketten u van tevoren gaat upgraden en plan uw herstart / reboots. Het probleem hier is dat tenzij u een service opnieuw start, deze nog steeds een oudere versie van een bibliotheek (de meest voorkomende reden) gebruikt die in het geheugen is geladen voordat u een nieuw pakket hebt geïnstalleerd dat een beveiligingsprobleem of iets dergelijks verhelpt.

    checkrestart -v
    

    Houd daar echter rekening mee checkrestart kan een lijst maken van processen die niet noodzakelijkerwijs opnieuw moeten worden gestart. De PostgreSQL-service bewaart bijvoorbeeld mogelijk de geheugenreferentie naar een reeds verwijderd xlog-bestand, wat geen geldige reden is om de service opnieuw te starten.

    Daarom is een andere, meer betrouwbare, manier om dit te controleren met behulp van standaard utils het volgende kleine bash-script dat ik schaamteloos heb gestolen van https://locallost.net/?p=233

    Het controleert of actieve processen in een systeem nog steeds gebruikmaken van verwijderde bibliotheken op grond van het bewaren van kopieën van die in het actieve geheugen.

    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
    

104
2017-11-16 11:35



Ik merk dit nu pas op. Het is extreem precies. Heel erg bedankt (+1) - Danduk82
waar komt 'checkrestart' vandaan? Ik kan het niet vinden in Ubuntu Trusty. Ik heb "needrestart" gevonden, die eruit ziet alsof hij in uw instructies zou passen? - Ben XO
Het is te vinden in debian-goodies-pakket: packages.debian.org/wheezy/debian-goodies. Er is ook needrestart. U kunt beide op Xenial vinden door te draaien: $ apt-cache search checkrestart - ILIV
Ik krijg "E: Kon lock-bestand niet openen / var / lib / dpkg / lock - open (13: toestemming geweigerd)" zelfs met sudo. Is dit iets specifieks voor een van de updates of de geboden opdrachten? - Nathan Hornby
Hoogstwaarschijnlijk gaat het om een ​​onjuiste / abnormale beëindiging van dpkg waardoor een vergrendelingsbestand niet is gewist. Gebeurt niet normaal tot, bijvoorbeeld, installatie van een pakket wordt niet voltooid (volledige schijf, enz.) U kunt waarschijnlijk niet andere apt-get en dpkg-opdrachten uitvoeren, of wel? - ILIV


vervangen /etc/apt/preferences met het volgende:

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

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

nu een eenvoudig apt-get upgrade zal alleen alle beveiligingsupdates upgraden.

Waarom (en hoe) dit werkt: het voorkeurenbestand pint alle pakketten van Ubuntu-distributie naar prioriteit 50, waardoor ze minder wenselijk zijn dan reeds geïnstalleerde pakketten. Bestanden die afkomstig zijn van de beveiligingsrepository krijgen de standaardprioriteit (500) zodat ze in aanmerking komen voor installatie. Dit betekent dat alleen pakketten die als wenselijker worden beschouwd dan de momenteel geïnstalleerde, beveiligingsupdates zijn. Meer informatie over pinning in de apt_preferences manpage.

U kunt tijdelijk een bepaalde distributie voor updates promoten met de --target-release optie die werkt apt-get en aptitude (tenminste) waarmee je bepaalde releases vast kunt pinnen zodat ze in aanmerking komen voor een upgrade.

Als u dit alleen voor scripts wilt gebruiken en niet als standaard voor het systeem wilt gebruiken, kunt u de regels op een andere locatie plaatsen en dit in plaats daarvan gebruiken:

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

Hiermee wordt apt naar het bestand met voorkeuren op een niet-standaardlocatie gezocht.

Het voorkeurenbestand dat als voorbeeld wordt gegeven, is niet van toepassing op externe opslagplaatsen, als u ook die wilt vastleggen die u kunt gebruiken apt-cache policy om gemakkelijk de vereiste sleutels te bepalen voor pinning.


46
2017-07-29 04:12



Bedankt dat je tijd hebt genomen voor een grondig antwoord. ik denken Ik begrijp hoe het werkt. Maar wanneer ik het bestand / etc / apt / preferences maak en apt-get-upgrade uitvoert, wil het alle pakketten upgraden, niet alleen beveiligingsupdates. De lijst-upgrade voor en na is precies hetzelfde, behalve met / etc / apt / preferences wil het Leafpad niet upgraden, dat ik van de bron heb gebouwd en "met de hand" heb geïnstalleerd met dpkg. Het is heel vreemd voor mij, maar kan iets voor jou betekenen. - mac9416
U kunt zien wat er gebeurt met apt-cache policy-opdracht. Kies een van de pakketten die geen beveiligingsoplossing krijgen en uitvoeren apt-cache policy packagename. Hierin worden de prioriteiten voor verschillende versies vermeld. Je zou verschillende lijnen en verschillende prioriteiten moeten zien. Als er geen regels zijn met prioriteit 50, heeft het vastpinnen om welke reden dan ook geen effect op de pakketten in kwestie. - Ressu
Ik had dit antwoord in het verleden gevolgd. Vandaag kwam ik erachter dat als gevolg van dit antwoord, 68 beveiligingsupdatepakketten NIET op mijn server waren geïnstalleerd en niet als mogelijke installatiekandidaten opdoken. Dit is GEEN GOED ANTWOORD! - Shade


Het volgende wordt bevestigd in Ubuntu 14.04 LTS.

Gebruik de unattended-upgrade pakket.

Kijk naar het bestand /etc/apt/apt.conf.d/50unattended-upgrades. Er moet bovenaan een sectie zijn die:

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

Merk op hoe het is geconfigureerd om standaard onbewaakte upgrades voor beveiligingspakketten toe te staan.

Wijzig het bestand /etc/apt/apt.conf.d/10periodic gelijkwaardig aan:

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

Hiermee worden automatisch onbeheerde beveiligingsupgrades uitgevoerd, eenmaal per dag.

Nu handmatig uitvoeren: sudo unattended-upgrade.

Om te testen als een droogloop, zonder iets te doen: sudo unattended-upgrade --dry-run.

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


9
2017-10-03 17:18



Is er een manier om dit een maandelijks schema te maken? - mike.b93
@ mike.b93, ik geloof instelling APT::Periodic::Unattended-Upgrade "30"; Zou dit doen - elke 30 dagen. - vcardillo


Hoewel het vrij lelijk is, kun je alle opslagplaatsen uitschakelen, behalve de beveiligingsrepository en dan:

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

Ik heb het niet getest, maar in theorie zou het alleen updates in de beveiligingsreplicatie vinden en ze toepassen ...


5
2017-07-29 00:00



Ja, dat is een mogelijkheid. Ik zal er naar kijken. Ik ben niet goed in BASH, maar ik kan proberen een script te maken om het te doen. - mac9416
OK, ik heb alle Ubuntu beveiligingsreposities uitgeschakeld en een a sudo apt-get update && sudo apt-get upgrade (annuleren voordat er upgrades werden gedaan). Daarna heb ik al mijn repos opnieuw ingeschakeld, uitgevoerd sudo apt-get updateeen heeft Update Manager geopend. De pakketten gemarkeerd als beveiligingsupdates waren niet precies wat apt-get upgrade gevonden, maar ze waren heel dichtbij - dichtbij genoeg voor mij. Ik zou nog steeds willen dat ik precies wist hoe Update Manager het doet en hoe hetzelfde te doen vanaf de opdrachtregel, maar dit zal het doen. Bedankt! - mac9416


  • apt-get update: lees gewoon de ingangen in de repository - volgens bestaande lijst. Nodig om te controleren wat er nieuw is.
  • apt-get upgrade: alle updates voor geïnstalleerde pakketten zonder kernelmodules. Geen release-update.
  • apt-get dist-upgrade: alle updates voor geïnstalleerde pakketten ook met kernelmodules. Geen release-update.
  • apt-get met parameter -s: test alleen, geen wijzigingen uitgevoerd.

3
2017-08-02 09:49





Ik kan geen optie vinden in apt-get of aptitude, maar iemand had de zelfde vraag op SuperUser. Het enige antwoord is:

Controleer /etc/apt/apt.conf.d/50unattended-upgrade. Heb je 'karmic' vervangen door de codenaam van je Ubuntu?

Geen antwoord over de vraag of dat wel werkte.


0
2017-07-28 23:04



Het lijkt erop dat de methode die wordt beschreven in die wiki-pagina afhankelijk is van het instellen van aptitude's --target-release-argument in <release> -beveiliging. Net als het OP van die vraag installeert die methode alle upgrades, niet alleen beveiligingsupgrades. Als ik de apt-get en aptitude man-pagina's lees, denk ik niet dat het argument -target-release zelfs bedoeld is om upgrades naar alleen beveiliging te beperken, hoewel ik niet zeker weet wat het precies is. is voor. - mac9416