Auch unter auf Debian basierte Linux Distributionen können Paket Versionen zu Problemen führen. Insbesondere trifft es häufig auch externe Repositories. Die Software funktioniert nicht mehr wie gewohnt oder es treten Fehler auf, die sich auch dem Upgrade ableiten lassen. Dann hilft oft nur noch ein Rollback oder Downgrade des betroffenen Pakets. APT bietet hierfür eine intelligente Versionierung. Bei mir war es pufferpanel. Ein kleines Programm das Game-Server verwalten kann. Nach dem Update traten kleinere Probleme mit dem Login auf, die ich trotz anderweitiger Versuche nicht beheben konnte. Ein Downgrade mit APT war hier problemlos möglich. Wie ihr downgradetet Pakete für weitere Upgrades zurückhalten kann, beschreibe ich übrigens hier.
Welche Version habe ich überhaupt installiert?
Und welche Versionen gibt es überhaupt? Seid ihr dort nicht informiert und wisst, was ihr an Möglichkeiten habt, so helfen euch verschiedene Parameter von APT weiter.
apt list -a
Zum einen könnt ihr mit
apt list -a <paketname>
eine Liste der verfügbaren Versionen erlangen. Bei pufferpanel sah das so aus:
vmd12345:~# apt list -a pufferpanel
Listing... Done
pufferpanel/bullseye 2.6.2 amd64 [upgradable from: 2.5.2]
pufferpanel/bullseye 2.6.1 amd64
pufferpanel/bullseye 2.6.0 amd64
pufferpanel/bullseye,now 2.5.2 amd64 [installed,upgradable to: 2.6.2]
pufferpanel/bullseye 2.5.1 amd64
pufferpanel/bullseye 2.5.0 amd64
pufferpanel/bullseye 2.4.0 amd64
pufferpanel/bullseye 2.3.2 amd64
pufferpanel/bullseye 2.3.1 amd64
pufferpanel/bullseye 2.1.0 amd64
Die Version, die gerade installiert ist, wird gesondert markiert. Hier habe ich den Auszug gemacht, nachdem ich schon downgegraded habe.
Ebenfalls stehen hier alle verfügbaren Versionen, sowie ob die aktuellste von der installierten upgegradet werden kann.
apt policy
Neben apt list -a gibt es auch noch die Möglichkeit mit
apt policy <paketname>
Der Unterscheid wird bei der Ausgabe sichtbar. Wir erhalten auch die benötigten Informationen. Allerdings erzählt uns apt policy auch etwas über die Quelle/Sources woher ihr das Paket beziehen. Auch hier ist markiert welche Version installiert ist. Mit Candidate wird die Version markiert, die bei einem upgrade auch installiert wird.
vmd12345:~# apt policy pufferpanel
pufferpanel:
Installed: 2.5.2
Candidate: 2.6.2
Version table:
2.6.2 500
500 https://packagecloud.io/pufferpanel/pufferpanel/debian bullseye/main amd64 Packages
2.6.1 500
500 https://packagecloud.io/pufferpanel/pufferpanel/debian bullseye/main amd64 Packages
2.6.0 500
500 https://packagecloud.io/pufferpanel/pufferpanel/debian bullseye/main amd64 Packages
*** 2.5.2 500
500 https://packagecloud.io/pufferpanel/pufferpanel/debian bullseye/main amd64 Packages
100 /var/lib/dpkg/status
2.5.1 500
500 https://packagecloud.io/pufferpanel/pufferpanel/debian bullseye/main amd64 Packages
2.5.0 500
500 https://packagecloud.io/pufferpanel/pufferpanel/debian bullseye/main amd64 Packages
2.4.0 500
500 https://packagecloud.io/pufferpanel/pufferpanel/debian bullseye/main amd64 Packages
2.3.2 500
500 https://packagecloud.io/pufferpanel/pufferpanel/debian bullseye/main amd64 Packages
2.3.1 500
500 https://packagecloud.io/pufferpanel/pufferpanel/debian bullseye/main amd64 Packages
2.1.0 500
500 https://packagecloud.io/pufferpanel/pufferpanel/debian bullseye/main amd64 Packages
Downgrade mit apt
Das eigentliche Downgrade ist dagegen recht unspektakulär. Es wird einfach apt install benutzt mit einem zusätzlichen Versionshinweis. Solltet ihr ggf. angepasste Konfigurationsdateien haben, sichert diese ggf. vorher.
Das Downgrade mit apt sieht so aus:
apt install <paketname>=<version>
Bei Pufferpanel war es dann die Version 2.5.2 die ich haben wollte, da dort gewisse Änderungen noch nicht gemacht wurden. Das ging dann wie folgt:
vmd41186:~# apt install pufferpanel=2.5.2
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages will be DOWNGRADED:
pufferpanel
0 upgraded, 0 newly installed, 1 downgraded, 0 to remove and 0 not upgraded.
Need to get 20.1 MB of archives.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] Y
Get:1 https://packagecloud.io/pufferpanel/pufferpanel/debian bullseye/main amd64 pufferpanel amd64 2.5.2 [20.1 MB]
Fetched 20.1 MB in 4s (5,089 kB/s)
dpkg: warning: downgrading pufferpanel from 2.6.2 to 2.5.2
(Reading database ... 55180 files and directories currently installed.)
Preparing to unpack .../pufferpanel_2.5.2_amd64.deb ...
Unpacking pufferpanel (2.5.2) over (2.6.2) ...
Setting up pufferpanel (2.5.2) ...
Configuration file '/etc/pufferpanel/config.json'
==> Modified (by you or by a script) since installation.
==> Package distributor has shipped an updated version.
What would you like to do about it ? Your options are:
Y or I : install the package maintainer's version
N or O : keep your currently-installed version
D : show the differences between the versions
Z : start a shell to examine the situation
The default action is to keep your current version.
*** config.json (Y/I/N/O/D/Z) [default=N] ? Y
Installing new version of config file /etc/pufferpanel/config.json ...
Scanning processes...
Scanning candidates...
Scanning linux images...
Restarting services...
Bei pufferpanel wurde noch die Konfiguration überschrieben. Diese hatte ich zuvor gesichert. Mit dem Downgrade war mein Problem gelöst.
Vorsicht beim nächsten Update/Upgrade des Systems. Dort wird dann die Version verwendet, von der ihr downgegraded habt. Wie ihr das verhindert, schreibe ich in diesem Post.
Pingback: Pakete zurückstellen und freigeben - Linuxheld