Skip to content

checkrestart vs. needrestart - alte Prozesse nach Paketupdates erkennen

Wie sich Linux Systeme aktualisieren lassen war auf ITrig bereits zu lesen. Doch nur mit Aktualisieren ist es nicht getan, hin und wieder sollten Prozesse neu gestartet werden deren Installationspakete aktualisiert wurden. Dazu bietet Ubuntu neben dem neuen Kernel Live Patching verschiedene Möglichkeiten.

checkrestart

Um Systeme auf anstehende Neustarts zu kontrollieren gibt es verschiedene Tools, eines altbekanntes ist checkrestart. Dieses ist im debian-goodies Paket enthalten.

Das Programm macht Nichts anderes als nach veralteten Libraries bei noch aktiven Prozessen zu suchen.

Findet es welche schlägt es den Neustart mit dem dazugehörigen Befehl vor.

sudo apt-get install debian-goodies
sudo checkrestart
Found 7 processes using old versions of upgraded files
(7 distinct programs)
(5 distinct packages)

Of these, 5 seem to contain systemd service definitions or init scripts which can be used to restart them.
The following packages seem to have definitions that could be used
to restart their services:
lvm2:
        447     /sbin/lvmetad
openssh-server:
        1160    /usr/sbin/sshd
dbus:
        863     /usr/bin/dbus-daemon
accountsservice:
        945     /usr/lib/accountsservice/accounts-daemon
policykit-1:
        1001    /usr/lib/policykit-1/polkitd

These are the systemd services:
systemctl restart accounts-daemon.service
systemctl restart polkitd.service

These are the initd scripts:
service lvm2-lvmpolld restart
service lvm2 restart
service lvm2-lvmetad restart
service ssh restart
service dbus restart

checkrestart

check-enhancements

Ebenfalls praktischer Teil des debian-goodies Pakets ist check-enhancements.

Damit lassen sich Erweiterungen für bereits installierte Pakete finden.

 

check-enhancements postgresql
postgresql => check-postgres:     Installed: (none)       Candidate: 2.24.0-3.pgdg18.04+1
postgresql => pgpool2:    Installed: (none)       Candidate: 3.7.5-2.pgdg18.04+1
postgresql => pgtop:      Installed: (none)       Candidate: 3.7.0-18-gbbf1f12-2.pgdg18.04+1

needrestart

Das debian-goodies Paket hat schon ein paar Jahre auf dem Buckel, daher gibt es inzwischen neuere Varianten, um anstehende Neustarts zu prüfen. 

Eines davon ist needrestart, es funktioniert ähnlich wie checkrestart, wird aber aktiv weiterentwickelt und unterstützt Docker oder LXC. Zusätzlich ist es nicht an Debian gebunden, sondern auch für andere Distributionen verfügbar.

Needrestart wird von Thomas Liske entwickelt und aktuell in der Version 3.1.x ausgeliefert. Es hat eine Unterstützung für systemd an Bord, läuft aber auch unter System V init.

sudo apt install needrestart
sudo needrestart
Scanning processes...
Scanning processor microcode...
Scanning linux images...

Running kernel seems to be up-to-date.

The processor microcode seems to be up-to-date.

No services need to be restarted.

No containers need to be restarted.

No user sessions are running outdated binaries.

needrestart

Wie es sich für aktuelle Tools gehört, hat das Tool auch eine Nagios/CheckMK bzw. Icinga Ausgabe.

sudo needrestart -p -l
OK - Kernel: 4.15.0-36-generic, Microcode: CURRENT, Services: none, Containers: none, Sessions: none|Kernel=0;0;;0;2 Microcode=0;0;;0;1 Services=0;;0;0 Containers=0;;0;0 Sessions=0;0;;0

Konfiguration und Einstellungen können bei Bedarf unter /etc/needrestart/needrestart.conf vorgenommen werden.

Das Tool bietet ebenfalls einen interaktiven Modus. Nach einer Installation prüft das Tool nach jedem apt upgrade automatisch auf Neustarts von Prozessen und liestet diese auf, ohne sie neu zu starten.

needrestart-kernel


Bordmittel

Die einfachste Variante einen nötigen Neustart des Systems zu erkennen besteht im Auslesen des Wertes cat /var/run/reboot-required .

Den Wert *** System restart required *** zeigt Ubuntu im Loginprompt an, wenn ihr über einen SSH Konsole zugreift.

Werden auch die betroffenen Pakete benötigt kann in /var/run/reboot-required.pkgs geschaut werden

cat /var/run/reboot-required                                                                                                                                                                            *** System restart required ***
cat /var/run/reboot-required.pkgs


 

VMware ESXi Paketverwaltung - vib Pakete installieren, aktualisieren oder deinstallieren

Kurzer Tipp für ESXi Anwender.

Manchmal müssen installierte Pakete auch wieder deinstalliert werden. Dabei hilft die ESXi Konsole am besten.

Zunächst sollte allerdings der SSH Zugang aktiviert werden. Danach können folgende Befehle in der Kommandozeile zur Anwendung kommen.

 

Paket suchen

esxcli software vib list | grep HUAWEI


       hio                            2.0.0.42-1OEM.550.0.0.1331820          HUAWEI               VMwareCertified   2015-01-07

Paket entfernen

esxcli software vib remove -n hio

   Removal Result
       Message: The update completed successfully, but the system needs to be rebooted for the  changes to be effective.
       Reboot Required: true
       VIBs Installed:
       VIBs Removed: HUAWEI_bootbank_hio_2.0.0.42-1OEM.550.0.0.1331820
       VIBs Skipped:

Mehrere Pakete entfernen

Es lassen sich genauso auch mehrere Pakete auf einmal deinstallieren

esxcli software vib remove -n hio -n hio0 -n hio1

Paket aktualisieren

software vib update -n Paketname

Paket installieren

Um diese Beispiele vollständig zu machen, hier noch der Befehl für eine klassische Paketinstallation via ESXi Konsole

software vib install -n Paketname


Die ESXi Kommandozeile bietet natürlich noch einiges mehr, "software" ist hier nur ein Namespace von vielen.

So lassen sich mit system, network, storage oder license weitere praktische Befehle ausführen.

Übersicht aller Befehle

esxcli esxcli command list

 

Ubuntu - Welche der installierten Pakete erhalten eigentlich noch Updates?

Mit der Veröffentlichung von Bionic Beaver (18.04) hat Canonical eine neue Long Term Support (LTS) Version veröffentlicht, welche die bestehende 16.04 LTS Version ablösen soll.

Ein Update muss sicher nicht überstürzt werden, denn Ubuntu 16.04 LTS erhält noch Updates bis ins Jahr 2021. Irgendwann ist allerdings das "End of Life" erreicht.

eol-ubuntu

Wer ältere Versionen einsetzt, dem bietet Ubuntu selbst eine Abfrage an, ob und wie lange Pakete noch unterstützt werden.

Dazu muss nur der Befehl ubuntu-support-status aufgerufen werden.

Für eine ausführliche Ausgabe kann der Schalter "--show-unsupported" oder "--show-supported" verwendet werden.

g@ubuntu:~$ ubuntu-support-status --show-unsupported
Support status summary of 'ubuntu':

You have 1 packages (0.1%) supported until April 2019 (3y)
You have 11 packages (1.4%) supported until January 2023 (5y)
You have 689 packages (85.6%) supported until April 2021 (5y)

You have 1 packages (0.1%) that can not/no-longer be downloaded
You have 103 packages (12.8%) that are unsupported

No longer downloadable:
wkhtmltox

Unsupported:
auditd cgroupfs-mount comerr-dev composer containerd coturn docker
docker.io golang golang-1.6-race-detector-runtime golang-doc
golang-go golang-race-detector-runtime golang-src jsonlint
libapache2-mod-php7.1 libauparse0 libgd3 libhiredis0.13 libjbig-dev
libjbig0 libjpeg-dev libjpeg-turbo8-dev libjpeg8-dev libjs-excanvas
liblcms2-dev liblxc1 liblzma-dev libmagic-dev libpcre3 libpng12-dev
libseccomp2 libssl-dev libssl-doc libssl1.1 libwebp-dev libwebp5
libwebp6 libwebpdemux2 libwebpmux3 libxext-dev libxft-dev libxml2
libxml2-dev libxrender-dev libxss-dev libyaml-dev libzip5 lxc-common
lxcfs lxd lxd-client mercurial mercurial-common openssl
php-cli-prompt php-common php-composer-semver
php-composer-spdx-licenses php-json-schema php-mongo
php-symfony-console php-symfony-filesystem php-symfony-finder
php-symfony-process php5.6-cli php5.6-common php5.6-curl php5.6-fpm
php5.6-intl php5.6-json php5.6-opcache php5.6-readline php5.6-xml
php5.6-xsl php7.1 php7.1-bcmath php7.1-cgi php7.1-cli php7.1-common
php7.1-curl php7.1-fpm php7.1-intl php7.1-json php7.1-mbstring
php7.1-mysql php7.1-opcache php7.1-readline php7.1-zip
postgresql-server-dev-9.5 pybootchartgui python-pip python-pip-whl
python-software-properties python-wheel runc tcl8.6-dev tk8.6-dev
x11proto-render-dev x11proto-scrnsaver-dev x11proto-xext-dev xdelta3
xmlstarlet

 

Node.js - Sammlung aus über 300 Paketen, Modulen und Quellen zur Serverplattform

Die Serverplattform Node.js dürfte weitgehend bekannt sein. Auf ITrig hatte ich schon Artikel über die Lernplattform nodeschool.io oder npmgraph zu diesem Thema veröffentlicht. 

Weniger bekannt sind eventuell die Awesome Sammlungen auf GitHub. Dabei handelt es sich um Linksammlungen zu bestimmten Themengebieten rund um Programmierung, Plattformen, Entwicklung und Co. (Link).

Node.js

Unter dieser allgemeinen Übersicht befindet sich ebenfalls ein Sammlung zu Tools und Paketen für Node.js. Die Awesome Liste ist unterteilt in ca 40 Bereiche und beinhaltet einige sehr praktische Pakete und Utilities.

Alle Tools hier zu listen, würde den Rahmen sprengen, also schaut einfach selbst rein (Link Awesome Node.js).

Linux Befehl - Abhängigkeiten von Paketen ermitteln

In Zeiten von fertigen Paketinstallationen auf Linux Systemen wie Ubuntu, ElementaryOS, Mint oder auch CentOS sind Abhängigkeiten einzelner Pakete für viele sicherlich nicht mehr so relevant. Ein Blick darauf schadet dennoch nicht, besonders wenn einzelne Pakete selbst zusammen gestellt werden sollen.

Das Tool der Wahl ist hier zunächst apt-cache. Der benötigte Befehl verlangt immer die Angabe eines Paketnamens, in diesem Beispiel, das Paket "nano".

Abhängigkeiten eines Pakets abfragen

sudo apt-cache depends nano

Rückwärtsabhängigkeiten - Reverse Depends ausgeben 

sudo apt-cache rdepends nano

Es kann vorkommen das diese Ausgabe nicht ausagekräftig genug ist, darum kann bei reverse-dependencies alternativ auf ein extra Paket namen apt-rdepends zurückgegriffen werden:

sudo apt-get install apt-rdepends

sudo apt-rdepends nano