Ist eine Paketinstallation oder -deinstallation schief gegangen, kann es passieren, das man dann mit der Installation eines Paketes nicht mehr weiter kommt, da RPM dann beim installieren meint, es sei schon installiert und beim deinstallieren meint, es sei ja gar nicht installiert…
Das nennt man dann RPM-Hölle.
Dieses Problem ist sehr unangenehm, kann aber recht einfach gelöst werden.
Bei RedHat/Fedora geht das so:
# killall -9 rpm # rm -f /var/lib/rpm/__db.* # rpm --rebuilddb
# dpkg --configure -a # apt-get check # apt-get -f install # apt-get autoremove
Dieser Befehl liefert eine URL für alle zu installierenden Pakete.
In diesem Fall, um „gnome“ zu installieren:
# apt-get -q -y --print-uris install gnome | grep ^\' | awk '{print $1}' | tr -d "'" > wget.list
Leider gibt es unter Debian und Ubuntu auch diesen leidigen Zustand, der im RPM-Paketsystem berüchtigt ist.
Aber viel schlimmer ist die Tatsache, dass es hier nicht so leicht repariert werden kann.
Unter der URL http://ubuntuforums.org/showthread.php?t=474587 wird ein Script vorgestellt, mit dem man sich seine Paket-Datenbank, oder wie man es unter Debian nennen will, neu generieren kann.
Leider kann das Script die Datei /var/lib/dpkg/status nicht in vollem Umfang neu generieren, es fehlen die „Confiles“-Felder und ausserdem hat jedes Paket den Status „installed“, auch die deinstallierten Pakete!
#!/bin/bash
get_control_info ()
{
for i in /var/lib/apt/lists/*_Packages
do
sed '/Package: '"$1"'$/,/^$/!d' $i
done
}
for i in /var/lib/dpkg/info/*.list
do
package_name=`basename $i | sed 's/.list$//'`
get_control_info $package_name >> status-new
done
sed -i -e '/^Filename: .*/d' -e '/^MD5sum:/d' -e '/^SHA1:/d' -e '/^SHA256:/d' status-new
sed -i '/^Package: /a\Status: install ok installed' status-new
Das Feld „Confiles“ muss man aus der alten Datei von Hand rekonstruieren, ebenso wie der Status bei deinstallierten Paketen.
vi /etc/yum.conf
proxy=http://192.168.1.1:3128
Nicht in Anführungszeichen setzen!
vi /etc/apt/apt.conf
Acquire::http::Proxy "http://192.168.1.1:3128";
# yum clean all # yum makecache
# apt-get update # aptitude update
# yum safe-upgrade
# apt-get safe-upgrade # aptitude safe-upgrade
# yum install elinks
# apt-get install links # aptitude install links
# yum search elinks
aptitude search links
# yum remove elinks
# aptitude remove links
<gibts in dieser Form nicht>
# aptitude purge links # aptitude remove links_
Entweder „purge“ oder mit dem normalen „remove“ aber mit einem „_“ hinten an den Paketnamen angehängt.
# rpm -qa
# dpkg -l
# yum provides links # rpm -ql elinks
# dpkg -L links
# rpm -qf /usr/bin/links
# dpkg -S /usr/bin/links
# rpm -Uhv paket.rpm
# dpkg -i paket.deb
<gibts nicht in dieser Form>
# dpkg-reconfigure krb5-config
Fedora
<das geht, aber frag mich nicht wie; das brauchte ich noch nie>
# apt-cache depends -i mc
# aptitude update # aptitude autoclean