Abhängigkeiten lösen / Fehlermeldungen von apt

Aus Linupedia.org
Wechseln zu: Navigation, Suche

Nach einem apt install <paket> erhält man manchmal den folgenden Fehler:

Die folgenden Pakete besitzen unerfülte Abhängigkeiten: .... 

Beispiel:

apt-get install gaim 
Lese Paketlisten... Fertig 
Erzeuge Abhängigkeitsbaum... Fertig 
Einige Pakete konnten nicht installiert werden. Dies könnte bedeuten, 
dass Sie eine unmögliche Situation angefordert haben oder, falls Sie die 
instabile Distribution verwenden, dass einige benötigte Pakete noch nicht 
erzeugt oder aus 'Incoming' verschoben worden sind. 

Da Sie nur eine einzelne Operation angefordert haben, ist es extrem 
wahrscheinlich, dass das Paket schlichtweg nicht installierbar ist und 
ein Bugreport über dieses Paket eingereicht werden sollte. 
Die folgende Information könnte helfen die Sitation zu beheben: 

Die folgenden Pakete besitzen unerfülte Abhängigkeiten: 
gaim: Hängt ab von: gnutls0 aber es wird nicht installiert werden 
Hängt ab von: libgcrypt.so.7 
Hängt ab von: libgnutls.so.8 
Hängt ab von: libgnutls.so.8(GNUTLS_1_0) 
E: Fehlerhafte Pakete 

in so einem Fall muss die libgcrypt.so.7 und libgnutls.so.8 noch zusätzlich installiert werden. Aber wie findet man nun diese lib ??

1. Lösung:

apt install gaim libgcrypt.so.7 libgnutls.so.8 

d.h. apt kann sich den Paketnamen selbst ermitteln ...

2.) Lösung

mit dem Tool apt-iselect ( http://www.linux-club.de/viewtopic.php?t=14558 )

3.) Lösung

mit dem Tool kio-apt ( http://www.linux-club.de/viewtopic.php?t=14559 )


bei einem apt upgrade erhält man die folgende Meldung

Beispiel:

apt -s upgrade 
Reading Package Lists... Done 
Building Dependency Tree... Done 
The following packages have been kept back 
xmms 
0 upgraded, 0 newly installed, 0 removed and 1 not upgraded. 

Das bedeutet meist das an dem Paket (hier xmms) etwas verändert wurde, z.Bsp aufsplittung in mehrere Pakete, oder es wird ein anderes Paket zusätzlich gebraucht oder ein bereits installiertes Paket ist obsolet, da es jetzt in dem aktuellen Paket enthalten ist.

Lösung:

apt install xmms 
Reading Package Lists... Done 
Building Dependency Tree... Done 
The following extra packages will be installed: 
xmms-lib 
The following packages will be upgraded 
xmms 
The following NEW packages will be installed: 
xmms-lib 
1 upgraded, 1 newly installed, 0 removed and 0 not upgraded. 
Need to get 1764kB of archives. 
After unpacking 89.1kB disk space will be freed. 
Do you want to continue? [Y/n]

d.h apt will zusätzliche NEUE Pakete installieren oder andere entfernen. Damit wird die Abhängigkeit dann aufgelöst.

Vorsicht: wenn viele Pakete entfernt werden sollen, dann ist meist etwas falsch an der Konfiguration von apt oder das Paket ist falsch konfiguriert bzgl seiner Abhängigkeiten...


man erhält die folgene Fehlermeldung:

apt-get install kdelibs3-devel 
Lese Paketlisten... Fertig 
Erzeuge Abhängigkeitsbaum... Fertig 
Einige Pakete konnten nicht installiert werden. Dies könnte bedeuten, 
dass Sie eine unmögliche Situation angefordert haben oder, falls Sie die 
instabile Distribution verwenden, dass einige benötigte Pakete noch nicht 
erzeugt oder aus \'Incoming\' verschoben worden sind. 

Da Sie nur eine einzelne Operation angefordert haben, ist es extrem 
wahrscheinlich, dass das Paket schlichtweg nicht installierbar ist und 
ein Bugreport über dieses Paket eingereicht werden sollte. 
Die folgende Information könnte helfen die Sitation zu beheben: 

Die folgenden Pakete besitzen unerfülte Abhängigkeiten: 
kdelibs3-devel: Hängt ab von: libxslt-devel aber es wird nicht installiert werden 
Hängt ab von: libxml2-devel aber es wird nicht installiert werden

Lösung:

apt-get install kdelibs3-devel libxslt-devel libxml2-devel 

d.h. man nimmt diese Pakete einfach mit in die Liste auf, diese Pakete ziehen ggfls. weitere Pakete nach ..


Meldungen dieser Art

file /opt/kde3/share/services/irc.protocol from install of kdenetwork3-InstantMessenger-3.3.1-3 conflicts with file from package
konversation-0.14-3 

kommen immer wenn Dateien verschoben wurden innerhalb von Paketen.

Das heist eine Datei irc.protocol war ursprünglich im Paket konversation-0.14-3 ist aber jetzt im Paket kdenetwork3-InstantMessenger-3.3.1-3 enthalten.

Das kann mit der --force Option gelöst werden.

apt install --force kdenetwork3-InstantMessenger


bei einem apt update Aufruf erscheint folgende Meldung:

Err http://ftp.gwdg.de SuSE/9.1-i386/xfree86 pkglist 
404 Not Found 
... 
Fetched 2573B in 25s (100B/s) 
Failed to fetch http://ftp.gwdg.de/pub/linux/suse/apt/SuSE/9.1-i386/base/pkglist.xfree86 404 Not Found 
Reading Package Lists... Done 
Building Dependency Tree... Done 
W: Release file did not contain checksum information for http://ftp.gwdg.de/pub/linux/suse/apt/SuSE/9.1-i386/base/pkglist.xfree86 
W: Release file did not contain checksum information for http://ftp.gwdg.de/pub/linux/suse/apt/SuSE/9.1-i386/base/release.xfree86 
W: You may want to run apt-get update to correct these problems 
E: Some index files failed to download, they have been ignored, or old ones used instead.

diese WARNUNG(!!) bedeutet, das das Repository (hier xfree86) leer oder nicht vorhanden ist.

Wenn es kein Tippfehler in der sources.list ist, bietet sich als Lösung an dieses Repository zu deaktivieren in der sources.list, oder man ignoriert diese Meldung einfach.


Manchmal will apt ein Paket nicht updaten, obwohl man genau weiss, das es eine neue Version gibt.

Oder man will ein downgrade auf eine andere Version eines Paketes durchführen und will die Versionsnummer ermitteln.

Mit dem Befehl mit apt policy <paketname> kann man diese Information ganz einfach ermitteln:

apt policy gaim 
gaim: 
  Installed: (none) 
  Candidate: 0.77-7 
  Version Table: 
     0.77-7 0 
        500 http://ftp.gwdg.de SuSE/9.1-i386/gnome pkglist 
     0.77-2.1 0 
        500 http://ftp.gwdg.de SuSE/9.1-i386/suse-people pkglist 
     0.75-79.4 0 
        500 http://ftp.gwdg.de SuSE/9.1-i386/update pkglist 
     0.75-79.2 0 
        500 http://ftp.gwdg.de SuSE/9.1-i386/update pkglist 
     0.75-77 0 
        500 http://ftp.gwdg.de SuSE/9.1-i386/base pkglist

Wenn die gewünschte Version hier nicht angezeigt wird, dann fehlt etwas in der sources.list

Im Beispiel, Paket gaim liegt in 5 Versionen vor, im Repository gnome, suse-people, update(2x) und base. apt wird die 0.77-7 (Candidate) installieren wollen.

Wenn man eine andere haben will, erreicht man das mit:

apt install gaim=0.75-79.4


apt findet ein Paktet nicht, folgende Meldung erscheint:

apt install dvdrip 
Reading Package Lists... Done 
Building Dependency Tree... Done 
E: Couldn't find package dvdrip

dann liegt es meist am falschen Paketnamen. Probiert dann einfach:

apt search dvdrip 
Video-DVDRip - Video-DVDRip - perl frondend for transcode

eh, voila der korrekte Paketname lautet Video-DVDRip


Was tun bei unauflösbaren Abhängigkeiten?

apt install opera 
Reading Package Lists... Done 
Building Dependency Tree... Done 
Some packages could not be installed. This may mean that you have 
requested an impossible situation or if you are using the unstable 
distribution that some required packages have not yet been created 
or been moved out of Incoming. 

Since you only requested a single operation it is extremely likely that 
the package is simply not installable and a bug report against 
that package should be filed. 
The following information may help to resolve the situation: 

The following packages have unmet dependencies: 
opera: Depends: libXm.so.1 but it is not installable 
E: Broken packages

Das ist eine sehr schöne Fehlermeldung Sie besagt, zur Installation von opera wird die libXm.so.1 benötigt.

Wenn apt-cache search libXm.so.1 jetzt auch keinen Treffer liefert ... was tun? woher diese lib bekommen? Jetzt gibt es ein kleines Problem ... diese libXm.so.1 gibt es nicht. ==> Das RPM hat einen Fehler, eine falsche "require"-Anweisung im Bauplan.

Wie löst man dieses Problem jetzt?

a.) in der /etc/apt.conf.d/apt.conf eine fake-provide eintragen: in der Sektion

RPM 
{ 
... 
Fake-Provides { "libXm.so.1"; }; 
.. 
}

auf exakte Schreibweise und die vielen ";" achten

oder

b.) ein virtuelles RPM erstellen und installieren (siehe http://www.linux-club.de/viewtopic.php?t=13336)

und wer ganz besonders nett ist schreibt dem Packager des Paketes eine kleine email und bittet um Korrektur Der Packager kann mit dem Befehl

rpm -qip <paketname> 

ermittelt werden.

apt show opera 
Package: opera 
Section: Productivity/Networking/Web/Browsers 
Installed Size: 15000 
Maintainer: http://www.suse.de/feedback 
Version: 7.54-7.1 
Pre-Depends: rpmlib(PayloadFilesHavePrefix) (<= 4.0-1), rpmlib(CompressedFileNames) (<= 3.0.4-1), rpmlib(PayloadIsBzip2) (<= 3.0.5-1) 
Depends: libSM.so.6, libX11.so.6, libXext.so.6, libXm.so.1, libXm.so.2, libXm.so.3, libXt.so.6, libc.so.6, libc.so.6(GLIBC_2.0), 
libc.so.6(GLIBC_2.1), libdl.so.2,libdl.so.2(GLIBC_2.0), libdl.so.2(GLIBC_2.1), libm.so.6, libm.so.6(GLIBC_2.0), libpthread.so.0,
libpthread.so.0(GLIBC_2.0), libpthread.so.0(GLIBC_2.1) 
Provides: libnpp.so, libnpp.so(GCC.INTERNAL), libnpp.so(libnpp.so), opera (= 7.54-7.1) 
Architecture: i586 
Size: 5507960 
MD5Sum: 1bd70a2540cf14e5663ec34ff5b0a37e 
Filename: opera-7.54-7.1.i586.rpm 
Description: Fast Web Browser 
Opera is user-friendly, secure, and exceptionally fast. The browser is 
small, yet full-featured and functions well on systems with limited 
resources. Opera supports all common Web standards and implements them 
according to the official recommendations. 

...

in diesem Fall:

Maintainer: http://www.suse.de/feedback


oc2pus


Ergänzung zu fehlerhaften Abhängigkeiten:

hat ein Packet fehlerhafte Abhängigkeiten kann man es zur Installation zwingen (durch rpm -nodep; oder auch in yast). Der Haken: apt prüft die Abhängigkeiten immer neu und wird sich weigern weitere Packete zu installieren, auch wenn sie mit dem ersten nichts zu tun haben.

BSP:

Der Treiber von Lexmark (Packet: z600cups) benötigt cups mit der Version 1:1.1.15-10 oder höher. 1:1.1.15 ist vermutlich ein schreibfehler des Autors. Mit cups 1.1.20-108 läuft der Drucker wunderbar. Aber apt erkennt darin unerfüllte Abhängikeiten. Es gibt eine Fehlermeldung, auch wenn man z.B. Mplayer installiert oder ein upgrade durchführt.

Lese Paketlisten... Fertig 
Erzeuge Abhängigkeitsbaum... Fertig 
Sie werde `apt-get -f install' ausführen wollen um diese zu beheben. 
Die folgenden Pakete besitzen unerfülte Abhängigkeiten: 
  z600cups: Hängt ab von: cups (>= 1:1.1.15-10) aber 1.1.20-103 ist installiert 
E: Unerfüllte Abhängigkeiten. Versuche -f zu benutzen.

Bei der Option -f wie apt vorschlägt will er den Treiber löschen. Auch nicht der Sinn der Sache.

Lösung:

in der Datei

/etc/apt/apt.conf.d/apt.conf 

kann man mit ignore Packete aus der Abhängikeitsprüfung ausschließen:

RPM 
{ 
... 
Ignore {"gpg-pubkey";"z600cups"; }; 
... 
}

dann meckert apt nur, wenn man cups upgraden will. Aber sonst läuft apt wie gewohnt.


taki


wer diese Fehlermeldung erhält:

error: unpacking of archive failed: cpio: Bad magic

der sollte seine sources.list überprüfen. Wenn dort update-prpm oder security-prpm enthalten sind, diese entfernen und anschliessend apt update aufrufen.

Evtl bereits downgeloadete prpm RPMS aus dem cache löschen nicht vergessen! Der cache steht in /var/cache/apt/archives.

Danach sollte der Fehler nicht mehr auftauchen.

Diese prpm-RPMs sind sogennante patch-RPMs, damit kann apt nicht so gut.

Gleiches gilt übrigends auch für die *-dprm seit SuSE-9.2


oc2pus


Zurück zu "Immerwiederkehrende Fragen zum Thema APT"