Während eines Systemupdate bei der Linuxdistri Frugalware kann es zu einem Problem kommen. Tritt dieses Problem ein können jegliche Aktionen mit dem Paketmanager nicht mehr ausgeführt werden. Es fehlen Dateien, die zum Manager "pacman" selbst gehören und somit ist zunächst jede Weiterarbeit mit "pacman" unmöglich. Frugalware hat sich sozusagen selbst in den Schwanz gebissen. Mein Bericht bezieht sich auf Frugalware 0.3 rc2.
Folgende Aktionen wurden durchgeführt:
root@www:/home# pacman -Syu
:: Synchronizing package databases...
frugalware-current [################] 100% 94K 101.4K/s 00:00:00
extra-current [################] 100% 108K 109.8K/s 00:00:00
:: pacman has detected a newer version of the "pacman" package.
:: It is recommended that you allow pacman to upgrade itself
:: first, then you can re-run the operation with the newer version.
::
:: Upgrade pacman first? [Y/n] y
Targets: pacman-2.9.7-13
Total Package Size: 0.5 MB
Proceed with upgrade? [Y/n] y
:: Retrieving packages from frugalware-current...
pacman-2.9.7-13-i686 [################] 100% 469K 167.6K/s 00:00:02
checking package integrity... done.
loading package data... pacman: syntax error in description file line 10
done.
cleaning up... done.
checking for file conflicts... done.
upgrading pacman... done.
Wenn man nun weiter machen will und mit
pacman -Su
den noch nicht abgeschlossenen Systemupdate durchführt, kann man folgenden Fehler bekommen:
pacman: error while loading shared libraries: libarchive.so.1: cannot open shared object file: No such file or directory
Da der Upgrade von "pacman" die einzige durchgeführte Aktion war, liegt es vermutlich an einem momentanen Fehler an dieser Stelle. Das pacman-Upgrade hat die Librarie "libarchive" gekillt. Ganz witzig: Vor diesem Upgrade von "pacman" auf eine neue hatte der installierte "pacman" bereits die angekündigte Version.
In vorliegenden Fall mit der fehlenden Librarie geht mit "pacman" oder den darauf aufsetzenden Tool's wie "gtkpacman" nun nichts mehr. Jeder Aufruf von "pacman" wird mit diesem Fehler abgebrochen. Ende Allende.
Um nun das Problem zu lösen, muss man das Paket "libarchive" von frugalware.org herunterladen und diese Datei, "libarchive-1.02.036-3-i686.fpm" bzw. die verfügbare Version, entpacken. Die Datei ist ein bz2-Archiv. Nach dem Entpacken befinden sich in einem Ordner "/yourfolder/usr/lib" die benötigten Dateien. Dieser Ordner ist NICHT der Systemordner "/usr/lib"! Denn genau in diesem Systemordner fehlen ja die Libraries.
Also die Dateien
libarchive.a
libarchive.la
libarchive.so
libarchive.so.1
libarchive.so.1.2.36
aus dem entpackten Ordner "/yourfolder/usr/lib" nach "/usr/lib" kopieren.
Ist das erledigt, arbeitet "pacman" wieder.
Wird nun ein Systemupdate durchgeführt, kann es zum nächsten Problem kommen.
checking for file conflicts... error:
the following file conflicts were found:
libarchive: /usr/lib/libarchive.la: exists in filesystem
libarchive: /usr/lib/libarchive.so: exists in filesystem
libarchive: /usr/lib/libarchive.so.1: exists in filesystem
libarchive: /usr/lib/libarchive.so.1.2.36: exists in filesystem
errors occurred, no packages were upgraded.
Was ist in diesem Falle passiert?
Bei dem angezeigten Konflikt handelt es sich um das Paket in der Version (oder auch einer höheren), das zuvor manuell nach "/usr/lib" kopiert wurde. Eine installierte gleiche oder höhere Version kann nicht aktualisiert werden
Werden keine weiteren Konflikte angezeigt, kann die Konflikt-Prüfung mit dem Parameter "f" deaktiviert werden
pacman -Suf
und das Update von Frugalware wird durchgeführt.
Dem bei diesem Update eventuell angezeigten Hinweis
/sbin/ldconfig: /usr/lib/libarchive.so.1 is not a symbolic link
sollte man nachgehen und die entsprechende Korrektur erforderlichenfalls vornehmen.