Abhängigkeiten lösen / Fehlermeldungen von apt: Unterschied zwischen den Versionen
K (Kategorie hinzugefügt) |
K (Kategorie angepasst da nun die Kategorie Paketmanager mit Unterkategorien existiert) |
||
Zeile 323: | Zeile 323: | ||
oc2pus | oc2pus | ||
− | [[Category:APT | + | [[Category:APT]] |
Version vom 30. Januar 2007, 15:19 Uhr
Inhaltsverzeichnis
- 1 Nach einem apt install <paket> erhält man manchmal den folgenden Fehler:
- 2 bei einem apt upgrade erhält man die folgende Meldung
- 3 man erhält die folgene Fehlermeldung:
- 4 Meldungen dieser Art
- 5 bei einem apt update Aufruf erscheint folgende Meldung:
- 6 Manchmal will apt ein Paket nicht updaten, obwohl man genau weiss, das es eine neue Version gibt.
- 7 apt findet ein Paktet nicht, folgende Meldung erscheint:
- 8 Was tun bei unauflösbaren Abhängigkeiten?
- 9 Ergänzung zu fehlerhaften Abhängigkeiten:
- 10 wer diese Fehlermeldung erhält:
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 selber 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