Forum: PC-Programmierung Linux Paketmanager Abhängigkeitsproblem


von chris_ (Gast)


Lesenswert?

Hallo Zusammen,

ich habe gerade ein Problem mit dem Paketmanager. Es scheint einer Art 
"zirkuläre Abhängigkeit" zu geben, die ich nicht lösen kann.

Ich will das Paket gr-iio entfernen und neu installieren. Es scheint 
aber verschiedene Versionen von libii0 zu geben, die sich irgendwie 
stören. Hat jemand einen Lösungsvorschlag?. Normalerweise verwende ich 
"synaptic". Das Paket libiio0 hatte ich aber irgendwann zuvor als *.deb 
Paket installiert.
1
chris:~$ sudo apt-get remove gr-iio
2
Paketlisten werden gelesen... Fertig
3
Abhängigkeitsbaum wird aufgebaut.       
4
Statusinformationen werden eingelesen.... Fertig
5
Probieren Sie »apt --fix-broken install«, um dies zu korrigieren.
6
Die folgenden Pakete haben unerfüllte Abhängigkeiten:
7
 libad9361-0 : Hängt ab von: libiio0 soll aber nicht installiert werden
8
 libgnuradio-iio1 : Hängt ab von: libiio0 (>= 0.18) soll aber nicht installiert werden
9
E: Unerfüllte Abhängigkeiten. Versuchen Sie »apt --fix-broken install« ohne Angabe eines Pakets (oder geben Sie eine Lösung an).

von Martin B. (martin_b97)


Lesenswert?

chris_ schrieb:
> apt --fix-broken install

Mal das probiert?

von Dieter D. (Firma: Hobbytheoretiker) (dieter_1234)


Lesenswert?

Vermutlich wirst Du da etwas tiefer in den Innereien recherchieren 
müssen:
https://itsfoss.com/check-dependencies-package-ubuntu/

Etwas mehr Infos bringt auch dieses Befehlsbeispiel zum Vorschein:
apt-cache policy libc6

von chris_ (Gast)


Lesenswert?

Martin B. (martin_b97)
>chris_ schrieb:
>> apt --fix-broken install
>Mal das probiert?

Ja, habe ich schon, aber er traut sich nicht, eine Library zu 
überschreiben:
1
christoph:~$ sudo apt --fix-broken install
2
 
3
Paketlisten werden gelesen... Fertig
4
Abhängigkeitsbaum wird aufgebaut.       
5
Statusinformationen werden eingelesen.... Fertig
6
Abhängigkeiten werden korrigiert ... Fertig
7
Die folgenden zusätzlichen Pakete werden installiert:
8
  libiio0
9
Die folgenden NEUEN Pakete werden installiert:
10
  libiio0
11
0 aktualisiert, 1 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
12
3 nicht vollständig installiert oder entfernt.
13
Es müssen noch 0 B von 45,5 kB an Archiven heruntergeladen werden.
14
Nach dieser Operation werden 138 kB Plattenplatz zusätzlich benutzt.
15
Möchten Sie fortfahren? [J/n] J
16
(Lese Datenbank ... 281632 Dateien und Verzeichnisse sind derzeit installiert.)
17
Vorbereitung zum Entpacken von .../libiio0_0.19-1_amd64.deb ...
18
Entpacken von libiio0:amd64 (0.19-1) ...
19
dpkg: Fehler beim Bearbeiten des Archivs /var/cache/apt/archives/libiio0_0.19-1_
20
amd64.deb (--unpack):
21
 Versuch, »/usr/lib/x86_64-linux-gnu/libiio.so.0« zu überschreiben, welches auch
22
 in Paket libiio 0.21.g565bf68 ist
23
Fehler traten auf beim Bearbeiten von:
24
 /var/cache/apt/archives/libiio0_0.19-1_amd64.deb
25
E: Sub-process /usr/bin/dpkg returned an error code (1)

von chris_ (Gast)


Lesenswert?

Dieter D. (Firma: Hobbytheoretiker)
>Etwas mehr Infos bringt auch dieses Befehlsbeispiel zum Vorschein:
>apt-cache policy libc6

Hmm, tja ... jetzt wäre die Frage, wie ich das interpretieren muss:
1
christoph:~$ apt-cache policy libiio0
2
libiio0:
3
  Installiert:           (keine)
4
  Installationskandidat: 0.19-1
5
  Versionstabelle:
6
     0.19-1 500
7
        500 http://de.archive.ubuntu.com/ubuntu focal/universe amd64 Packages

von Daniel A. (daniel-a)


Lesenswert?

Wie hast du gr-iio installiert, mit "dpkg -i <packetname>.deb"? 
Heutzutage stattdessen immer "apt-get install ./<packetname>.deb" 
nehmen, dann prüft es die Abhängigkeiten auch richtig.

Versuche mal, das halb installierte Zeugs auch zu deinstallieren:
1
sudo apt-get purge --autoremove gr-iio libad9361-0 libgnuradio-iio1 libiio0

von Egon D. (Gast)


Lesenswert?

Daniel A. schrieb:

> Wie hast du gr-iio installiert, mit "dpkg -i <packetname>.deb"?
> Heutzutage stattdessen immer "apt-get install ./<packetname>.deb"
> nehmen, dann prüft es die Abhängigkeiten auch richtig.

Hmm. Was soll denn DAS heißen?!

von Dieter D. (Firma: Hobbytheoretiker) (dieter_1234)


Lesenswert?

Wir gehen davon aus folgendes wurde vorher erledigt:
sudo apt-get update und
sudo apt-get upgrade

Was noch zu probieren wäre:
dpkg-reconfigure all

Ganz normale Ausgabe, wenn es nach dem Paketmanager nicht installiert 
sei:
apt-cache policy libiio0
libiio0:
  Installed: (none)
  Candidate: 0.16-1
  Version table:
     0.16-1 500
        500 http://raspbian.raspberrypi.org/raspbian buster/main armhf 
Packages

von Dieter D. (Firma: Hobbytheoretiker) (dieter_1234)


Lesenswert?

Weitere Infos zu holen wären über:
sudo dpkg --configure -a

Umfangreichere Fehlermeldungen:
LC_ALL=C sudo apt-get install

Da sind auch noch Tipps:
https://www.maketecheasier.com/fix-broken-packages-ubuntu/
http://www.iasptk.com/ubuntu-fix-broken-package-best-solution/
https://wiki.ubuntuusers.de/Archiv/apt/Problembehebung/

von Daniel A. (daniel-a)


Lesenswert?

Egon D. schrieb:
> Daniel A. schrieb:
>
>> Wie hast du gr-iio installiert, mit "dpkg -i <packetname>.deb"?
>> Heutzutage stattdessen immer "apt-get install ./<packetname>.deb"
>> nehmen, dann prüft es die Abhängigkeiten auch richtig.
>
> Hmm. Was soll denn DAS heißen?!

"dpkg -i" ist ganz low level, es installiert einfach die Pakete, die man 
ihm sagt, das es installieren soll, selbst wenn einige Abhängigkeiten 
fehlen.

"apt-get install" hingegen, geht über den Paketmanager. Es schaut also 
erst, welche anderen Pakete braucht es sonst noch, wovon ist es 
abhängig, downloaded was fehlt, und installiert das dann alles in der 
richtigen Reihenfolge (über dpkg -i). Das hilft zwar nicht um zu 
verhindern, das Nichtdistributionspakete später mal Probleme machen 
könnten, aber zumindest beim Installieren sollte danach erst mal alles 
"sauber" sein. Ich glaube apt konnte das nicht immer. Früher nutzte ich 
immer "dpkg -i", und dann "apt-get -f install" um das fehlende 
Nachzuinstallieren, und hoffte, dass ich nichts gröber zerschossen habe.

Wobei, im Fall des TO hätte das wohl auch nichts gebracht. Das mit den 
Dateien, die schon von einem anderen Paket bereitgestellt wird, prüft 
APT idiotischerweise nicht im vornherein, sondern erst wenn es sie 
erstellen will...

Deshalb würde ich all das zeug, das Probleme macht, einfach wieder weg 
hauen, sofern noch möglich...

von chris_ (Gast)


Angehängte Dateien:

Lesenswert?

Daniel
>Wie hast du gr-iio installiert, mit "dpkg -i <packetname>.deb"?
>Heutzutage stattdessen immer "apt-get install ./<packetname>.deb"
>nehmen, dann prüft es die Abhängigkeiten auch richtig.

Ich glaube, dass könnte das Problem sein: Ich habe es mit dpkg 
installiert und jetzt kommt es in Konflikt mit dem Paketmanager weil er 
es nicht richtig im Abhängigkeitsbaum hat.

>Versuche mal, das halb installierte Zeugs auch zu deinstallieren:
>sudo apt-get purge --autoremove gr-iio libad9361-0 libgnuradio-iio1 libiio0

Bei der Zeile wird kein Fehler gemeldet. Wenn ich dann aber wieder 
gr-iio installieren möchte, kommt die Fehlermeldung im Bild.

von chris_ (Gast)


Lesenswert?

Daniel
>Deshalb würde ich all das zeug, das Probleme macht, einfach wieder weg
>hauen, sofern noch möglich...

Die Frage ist, wie ich das Zeug weg kriege, sodass der Paketmanager 
nicht meint, es wäre immer noch da. Sollte ich einfach im Verzeichnis 
unten die Dateien manunell löschen?
1
christoph:/usr/lib/x86_64-linux-gnu$ ll libiio*
2
lrwxrwxrwx 1 root root     11 Jun 19  2020 libiio.so -> libiio.so.0
3
lrwxrwxrwx 1 root root     14 Jun 19  2020 libiio.so.0 -> libiio.so.0.21
4
-rw-r--r-- 1 root root 559664 Jun 19  2020 libiio.so.0.21

von Dieter D. (Firma: Hobbytheoretiker) (dieter_1234)


Lesenswert?

Schau mal nach, ob da etwas unter "Pinned packages" steht.

$ apt-cache policy
Package files:
 100 /var/lib/dpkg/status
     release a=now
 500 http://archive.raspberrypi.org/debian buster/main armhf Packages
...
Pinned packages:

Hier sind noch einige Tipps:
https://wiki.ubuntuusers.de/Paketverwaltung/Problembehebung/

Bei mir hatte ich mal alles so zerschossen, dass nur noch die harte Tour 
half indem alles aus den caches gelöscht werden mußte, so dass apt-get 
alle Abhängigkeiten erst wieder aufbauen mußte.

von Dieter D. (Firma: Hobbytheoretiker) (dieter_1234)


Lesenswert?

Was ist wirklich installiert?

dpkg --list | grep libiio

von Dieter D. (Firma: Hobbytheoretiker) (dieter_1234)


Lesenswert?

Ansonsten halt ab Kapitel 6.4.4 in den Tiefen die Details herausgraben.

https://book.dpmb.org/debian-paketmanagement.allinone.html

von Rolf M. (rmagnus)


Lesenswert?

chris_ schrieb:
> Daniel
>>Deshalb würde ich all das zeug, das Probleme macht, einfach wieder weg
>>hauen, sofern noch möglich...
>
> Die Frage ist, wie ich das Zeug weg kriege, sodass der Paketmanager
> nicht meint, es wäre immer noch da. Sollte ich einfach im Verzeichnis
> unten die Dateien manunell löschen?

Auf keinen Fall! Damit machst du deine Paketdatenbank noch mehr kaputt. 
Und das Paket gilt immer noch als installiert.
Was du entfernen musst, sagt er doch:

chris_ schrieb:
>  Versuch, »/usr/lib/x86_64-linux-gnu/libiio.so.0« zu überschreiben,
> welches auch in Paket libiio 0.21.g565bf68 ist
                        ^^^^^^

Du willst also das Paket libiio0 installieren, hast aber schon ein Paket 
libiio (man beachte: Ohne 0) installiert, das die gleiche Datei enthält. 
Also muss zuerst libiio (und ggf. das, was davon abhängig ist) 
deinstalliert werden.

: Bearbeitet durch User
von chris_ (Gast)


Lesenswert?

Dieter D.
>Was ist wirklich installiert?
>dpkg --list | grep libiio
1
christoph:/usr/lib/x86_64-linux-gnu$ dpkg --list | grep libiio
2
ii  libiio                                     0.21.g565bf68                         amd64        libiio built using CMake

von chris_ (Gast)


Lesenswert?

Rolf M. (rmagnus)
>Du willst also das Paket libiio0 installieren, hast aber schon ein Paket
>libiio (man beachte: Ohne 0) installiert, das die gleiche Datei enthält.
>Also muss zuerst libiio (und ggf. das, was davon abhängig ist)
>deinstalliert werden.

Danke für den Vorschlag. Das habe ich jetzt mal so gemacht
1
sudo dpkg -r libiio

und konnte es damit entfernen. Danach habe ich es mit "synaptic" mit der 
Version aus dem Ubuntu Paketmanager installiert.
Jetzt scheint alles konsistent zu sein.
Allerdings funktioniert trotzdem nichts, weil die Version aus Ubuntu 
20.04 die Version libiio 0.19 ist. Man scheint aber 0.21 zu brauchen.
Es scheint kein Ende zu nehmen: Das vorcompilierte *.deb file mit der 
Version 0.21 scheint sich mit den Ubuntu Versionen 0.19 gebissen zu 
haben.
Wenn ich es richtig verstehe, bleibt jetzt nur noch der Weg, alles mit 
dem Paketmanager zu deinstallieren und die neuen Version auf dem Rechner 
selbst zu kompilieren.

von Dieter D. (Firma: Hobbytheoretiker) (dieter_1234)


Lesenswert?

Da scheint beim Installieren ein Skript dabei gewesen zu sein das die 
Library compelierte und installierte. Somit wäre diese nicht im dpkg 
registriert.

Du könntest versuchen die 0.19er Version vielleicht so drüberzubügeln:
https://askubuntu.com/questions/138284/how-to-downgrade-a-package-via-apt-get

Oder versuchen das betreffende *.deb des Paketes im apt-cache 
Verzeichnis mit dpkg manuell zu installieren.

von Rolf M. (rmagnus)


Lesenswert?

chris_ schrieb:
> und konnte es damit entfernen. Danach habe ich es mit "synaptic" mit der
> Version aus dem Ubuntu Paketmanager installiert.
> Jetzt scheint alles konsistent zu sein.
> Allerdings funktioniert trotzdem nichts, weil die Version aus Ubuntu
> 20.04 die Version libiio 0.19 ist. Man scheint aber 0.21 zu brauchen.

Was ist "man"? Was scheint das zu brauchen, und wie hast du das 
installiert? Wo kommt es her?

> Es scheint kein Ende zu nehmen: Das vorcompilierte *.deb file mit der
> Version 0.21 scheint sich mit den Ubuntu Versionen 0.19 gebissen zu
> haben.

Ich habe den Überblick verloren. Du hast jetzt das aus dem Ubuntu-Repo 
installiert, obwohl das die falsche Version ist? Du hast ein Paket, das 
die richtige Version hast, und versuchst das nun gleichzeitig zu 
installieren?

> Wenn ich es richtig verstehe, bleibt jetzt nur noch der Weg, alles mit
> dem Paketmanager zu deinstallieren und die neuen Version auf dem Rechner
> selbst zu kompilieren.

Wo hast du die Pakete, die du zu installieren versucht hast, eigentlich 
her, und warum sind die nicht in einem Repository, wo die Abhängigkeiten 
automatisch aufgelöst werden?
In focal, also Ubuntu 20.04 LTS ist das Paket libiio0 in Version 0.19.
Ubuntu 21.04 hat übrigens schon Version 0.21.

von chris_ (Gast)


Lesenswert?

>Wo hast du die Pakete, die du zu installieren versucht hast, eigentlich
>her, und warum sind die nicht in einem Repository, wo die Abhängigkeiten
>automatisch aufgelöst werden?

Hier habe ich mal aufgeschrieben, was ich machen will:
Beitrag "Re: Adalm Pluto experiments"

von Dieter D. (Firma: Hobbytheoretiker) (dieter_1234)


Lesenswert?

Für Installation aus deb-Dateien mit apt, installiere Dir das Paket 
apt-file:

apt-file - search for files within Debian packages (command-line 
interface)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.