Tutoriel Linux

Blokkeer de update van een Debian-pakket en hef de hold op

Débutant3 min de lecture

U moet soms een specifieke versie van een Debian-pakket behouden, na een applicatie-incident of terwijl u een update op een testmachine controleert. apt-mark hold blokkeert automatische wijzigingen aan dit pakket. Het blokkeert ook de verwijdering ervan.

Gebruik het voor een geïdentificeerde uitzondering, met een reden en een datum voor herbeoordeling. Een beveiligingspakket maandenlang geblokkeerd laten kan uiteindelijk leiden tot een blinde vlek in de updates.

Tux met een geblokkeerd en vervolgens heractiveerd Debian-pakket
Blokkeer een versie terwijl u deze test, en verwijder de hold zodra de fix is gevalideerd.

Identificeer het pakket en de geïnstalleerde versie

Begin met het controleren van de exacte naam van het pakket. Een zoekopdracht in de repositories zegt niet altijd wat er daadwerkelijk op de server is geïnstalleerd.

dpkg-query -W -f='${Package} ${Version}n' naam-van-het-pakket
apt-cache policy naam-van-het-pakket

De eerste opdracht toont de lokale versie. De tweede vergelijkt deze versie met de kandidaten die door APT bekend zijn. Als het pakket is gekoppeld aan een service, noteer dan ook het symptoom en de versie die werkt voordat u het blokkeert.

Een hold vervangt geen begrip van een afhankelijkheid. Als u openssl, linux-image of een bibliotheek die door meerdere applicaties wordt gebruikt blokkeert, kijk dan naar wat de volgende update wilde aanpassen voordat u het pakket vergrendelt.

Blokkeer de update met apt-mark hold

De opdracht vraagt om beheerdersrechten. Vervang naam-van-het-pakket door de naam die u in de vorige stap hebt genoteerd.

sudo apt-mark hold naam-van-het-pakket
sudo apt-mark showhold

showhold moet het pakket weergeven. APT respecteert vervolgens deze markering tijdens de gebruikelijke updateoperaties. U kunt echter nog steeds controleren wat het zou doen voordat u een upgrade accepteert:

sudo apt update
apt list --upgradable
sudo apt-get -s upgrade

De optie -s simuleert de operatie. Het downloadt of installeert geen pakket. Controleer of het geblokkeerde pakket op de verwachte versie blijft en of afhankelijkheden APT niet naar een inconsistente situatie duwen.

Verwarr hold niet met handmatig geïnstalleerd pakket

apt-mark manual voorkomt vooral de automatische verwijdering van een afhankelijkheid. Het blokkeert de update niet. Omgekeerd wijzigt apt-mark hold de dpkg-selectie van het pakket om te voorkomen dat het automatisch wordt geïnstalleerd, geüpgraded of verwijderd.

U kunt deze selectie controleren met dpkg:

dpkg --get-selections naam-van-het-pakket
dpkg --get-selections | grep ' hold$'

Dit onderscheid voorkomt een vals gevoel van veiligheid. Een als manual gemarkeerd pakket kan gewoon overschakelen naar een nieuwe versie tijdens apt upgrade.

Verwijder de hold na de test

Wanneer de fix is gevalideerd op een testmachine, verwijdert u de blokkering en controleert u de lijst opnieuw. Voer geen globale upgrade uit alleen om één pakket te deblokkeren.

sudo apt-mark unhold naam-van-het-pakket
sudo apt-mark showhold
sudo apt install naam-van-het-pakket

De laatste opdracht richt zich alleen op het betreffende pakket. Lees de extra pakketten die door APT worden voorgesteld voordat u bevestigt. Voor een gevoelig pakket herstart u vervolgens de betrokken service en controleert u de logs. De handleiding apt-mark van Debian bevat ook details over de selecties hold, install, remove en purge.

Als de hold was gelegd na een mislukte update, houd dan in uw ticket of documentatie bij: het pakket, de vastgelegde versie, de reden, de testdatum en de voorwaarde die het deblokkeren toestaat. Deze registratie voorkomt dat een andere beheerder de hold verwijdert zonder te weten waarom deze er was.

Wanneer moet een pakket van de lijst worden verwijderd?

Kom terug op de holds bij elke onderhoudscyclus. Een tijdelijke blokkering kan gevaarlijk worden wanneer een update een kwetsbaarheid of afhankelijkheidsprobleem oplost. Controleer de Debian-aankondigingen of de software-uitgever, test de nieuwe versie buiten productie en gebruik apt-mark unhold zodra het oorspronkelijke probleem is opgelost.

Om een .deb lokaal pakket te installeren en de afhankelijkheden correct te herstellen, raadpleeg ook onze gids over dpkg en APT. Als u beveiligingsfixes automatiseert, legt het artikel over unattended-upgrades op Debian uit welke controles u moet behouden voordat u de taak alleen laat draaien.

sudo apt update && sudo apt upgrade