Aptitude: Paket nicht entfernen, wenn Abhängigkeit verletzt
Aptitude: Paket nicht entfernen, wenn Abhängigkeit verletzt
Hallo,
ich nutze nun schon seit einigen Jahren debian und stehe mit dem Paketsystem immer noch auf Kriegsfuss....
Wie muss ich ein Paket mit kaputten Abhängigkeiten in aptitude markieren, damit aptitude es nicht mehr automatisch entfernen will? Es geht um ein Fremdpaket, dass das pseudo-Paket 'kdelibs' erwartet, welches bei meinem wheezy/sid aber offenbar nicht mehr gibt. Habe mir dpkg einfach die Abhängigkeiten ignoriert und das Programm läuft einwandfrei. Aptitude will es jedoch ständig wegen der verletzten Abhängigkeiten entfernen. Diese Funktion von Aptitude mag ja innerhalb des debian-repository sinnvoll sein. Aber von Fremdpaketen soll es bitte die Finger lassen.
Also kann ich die Pakete irgendwie in aptitude gesondert markieren, dass sie nicht mehr entfernt werden sollen?
Danke im voraus,
Kermit
ich nutze nun schon seit einigen Jahren debian und stehe mit dem Paketsystem immer noch auf Kriegsfuss....
Wie muss ich ein Paket mit kaputten Abhängigkeiten in aptitude markieren, damit aptitude es nicht mehr automatisch entfernen will? Es geht um ein Fremdpaket, dass das pseudo-Paket 'kdelibs' erwartet, welches bei meinem wheezy/sid aber offenbar nicht mehr gibt. Habe mir dpkg einfach die Abhängigkeiten ignoriert und das Programm läuft einwandfrei. Aptitude will es jedoch ständig wegen der verletzten Abhängigkeiten entfernen. Diese Funktion von Aptitude mag ja innerhalb des debian-repository sinnvoll sein. Aber von Fremdpaketen soll es bitte die Finger lassen.
Also kann ich die Pakete irgendwie in aptitude gesondert markieren, dass sie nicht mehr entfernt werden sollen?
Danke im voraus,
Kermit
Re: Aptitude: Paket nicht entfernen, wenn Abhängigkeit verle
Sehr viel Ahnung von der Paketverwaltung habe ich auch nicht. Du könntest aber selbst ein Pseudopaket "kdelibs" erstellen, welches dann selbst keine Abhängigkeiten mehr hat. Alternativ könntest du natürlich auch das Fremdpaket (Deb-File) auseinandernehmen, die Abhängigkeit in der CONTROL-Datei rauswerfen und das Zeug wieder zusammenbauen. Leider weiß ich ncht wie das geht, vielleicht mit "dpkg-deb". Auch kannst du vielleicht in /var/lib/apt/lists eine Volltextsuche nach "kdelibs" durchführen und mal manuell etwas verändern. Mit etwas Pech fehlt jedoch der Eintrag, da es vielleicht keine wirkliche Paketliste ist oder wenn doch wird die Datei vielleicht wieder überschrieben. Auch weiß ich nicht ob auf der Ebene vielleicht noch Prüfsummen dir dann die Paketverwaltung endgültig zerlegen. Aber ein Versuch wäre es vielleicht wert.
Nachtrag:
Laut
http://debianforum.de/forum/viewtopic.php?t=123254
könnte es vielleicht auch mit Apt-Pinning gehen wobei dein Fall etwas anders gelagert ist, da das Paket ja gar nicht existiert.
Nachtrag:
Laut
http://debianforum.de/forum/viewtopic.php?t=123254
könnte es vielleicht auch mit Apt-Pinning gehen wobei dein Fall etwas anders gelagert ist, da das Paket ja gar nicht existiert.
Re: Aptitude: Paket nicht entfernen, wenn Abhängigkeit verle
Es gibt
kdelibs in Squeeze. Falls das Paket keine Konflikte mit Wheezy-Paketen hat (ich fürchte das hat es) dann kannst du einfach das Squeeze-Paket in Wheezy installieren.
Falls das, wie vermutet, nicht klappt musst du an den Abhängigkeiten rumschrauben. Dazu hast du im Wesentlichen zwei Möglichkeiten:
1. Entferne die kdelibs-Abhängigkeit aus deinem Fremdpaket:
Dazu entpackst du dein Fremdpaket mit dem Entpacker deiner Wahl, entpackst dort das control.tar.gz, editierst die Datei control und schmeißt aus der Depends-Zeile das kdelibs-Paket raus.
Danach baust du das ganze Paket wieder mit dpkg-deb -b zusammen.
Diesen Weg würde ich gehen wenn sich dein Fremdpaket so gut wie nicht verändert.
2. Erstelle ein virtuelles Paket das nichts weiter macht als diese Abhängigkeit bereitzustellen:
Das habe ich auch noch nicht gemacht. Was dazu wirklich nötig ist kann ich dir aus dem Stehgreif daher nicht sagen. Was du auf jeden Fall machen musst ist in der control-Datei das anzugeben:
Bei den Abhängigkeiten und Architekturen solltest du möglichst großzügig sein, denn hier bringen Einschränkungen nichts. Das ganze data.tar.gz-Unterarchiv brauchst du hier nicht.
Diesen Weg würde ich wählen wenn sich das Fremdpaket häufig ändert.
![Debian](/pics/debianpackage.png)
Falls das, wie vermutet, nicht klappt musst du an den Abhängigkeiten rumschrauben. Dazu hast du im Wesentlichen zwei Möglichkeiten:
1. Entferne die kdelibs-Abhängigkeit aus deinem Fremdpaket:
Dazu entpackst du dein Fremdpaket mit dem Entpacker deiner Wahl, entpackst dort das control.tar.gz, editierst die Datei control und schmeißt aus der Depends-Zeile das kdelibs-Paket raus.
Danach baust du das ganze Paket wieder mit dpkg-deb -b zusammen.
Diesen Weg würde ich gehen wenn sich dein Fremdpaket so gut wie nicht verändert.
2. Erstelle ein virtuelles Paket das nichts weiter macht als diese Abhängigkeit bereitzustellen:
Das habe ich auch noch nicht gemacht. Was dazu wirklich nötig ist kann ich dir aus dem Stehgreif daher nicht sagen. Was du auf jeden Fall machen musst ist in der control-Datei das anzugeben:
Code: Alles auswählen
Provides: kdelibs
Diesen Weg würde ich wählen wenn sich das Fremdpaket häufig ändert.
Re: Aptitude: Paket nicht entfernen, wenn Abhängigkeit verle
hi,
equivs, das ist ein Bausatz mit Schritt-für-Schritt-Anleitung (siehe /usr/share/doc/equivs und man equivs-build). Eine Beispiel-Control-Datei sieht z.B. so aus:
für den Zweck gibt eshikaru hat geschrieben:2. Erstelle ein virtuelles Paket das nichts weiter macht als diese Abhängigkeit bereitzustellen:
![Debian](/pics/debianpackage.png)
Code: Alles auswählen
Section: web
Package: webserver-dummy
Provides: httpd
Description: Webserver dummy package
This package provides dpkg with the information that
there is a local webserver installed.
.
Installing dwww, man2html etc. won't bug you to
install apache any more
Beware of programmers who carry screwdrivers.
- r900
- Beiträge: 1053
- Registriert: 09.10.2011 20:06:11
- Lizenz eigener Beiträge: GNU Free Documentation License
- Wohnort: Stockholm
Re: Aptitude: Paket nicht entfernen, wenn Abhängigkeit verle
So ein dummy-Paket zu erstellen ist nicht besonders schwierig. Du erstellst zuerst mal eine Datei 'control' mit folgendem Inhalt:
Und dann:
Und das war's auch schon. Ich würde aber eher empfehlen die Abhängigkeiten des Fremdpaketes zu ändern.
Was die einzelnen Kommandos jeweils bewirken kannst du ja über man erfahren, Aber so ist es am schnellsten beschrieben ohne langwierige Erklärungen. Falls du vim nicht kennst kannst du natürlich auch einen beliebigen text-editor verwenden um den Eintrag kdelibs in der control-Datei zu entfernen.
Code: Alles auswählen
Package: kdelibs-dummy
Version: 1.0
Maintainer: root@localhost
Architecture: all
Provides: kdelibs
Conflicts: kdelibs
Description: Dummy package
Code: Alles auswählen
$ mkdir -p kdelibs-dummy/DEBIAN
$ mv control kdelibs-dummy/DEBIAN/
$ cd kdelibs-dummy
$ dpkg-deb -b . ../kdelibs-dummy.deb
Code: Alles auswählen
$ ar x <paket.deb> control.tar.gz
$ mkdir DEBIAN
$ cd DEBIAN
$ tar xzf ../control.tar.gz
$ vim control
$ tar czf ../control.tar.gz .
$ cd ..
$ ar r <paket.deb> control.tar.gz
Re: Aptitude: Paket nicht entfernen, wenn Abhängigkeit verle
Hallo,
erst mal danke für die Antworten. Ich habe das kdelibs-dummy Paket installiert mit kleinen Anpassunge:
1. Musste noch die Version-Zeile in der config-Datei anpassen, dass er >=4:3.5.5 in der Abhängigkeit verlangt hat
2. In der config-Datei muss statt "Package: kdelibs-dummy" "Package: kdelibs" stehen. Sonst bekomme ich immer noch den Abhängigkeitsfehler.
Das zweite Fremdpaket verlangt als Abhängigkeit kdelibs4. Das als Pseudo-Paket zu erzeugen klappt aber leider nicht so wie beschrieben mit kdelibs. Wenn ich das mache und installieren möchte bekomme ich die Meldung:
Das Paket kdelibs4 gibt es leider auch nicht mehr in wheezy/sid:
Wieso scheren sich die Entwickler so wenig um Abwärtskompatibilität. Die alten Programme laufen noch alle, lassen sich aber wegen dem besch... Paketsystem einfach nicht mehr installieren.
erst mal danke für die Antworten. Ich habe das kdelibs-dummy Paket installiert mit kleinen Anpassunge:
1. Musste noch die Version-Zeile in der config-Datei anpassen, dass er >=4:3.5.5 in der Abhängigkeit verlangt hat
2. In der config-Datei muss statt "Package: kdelibs-dummy" "Package: kdelibs" stehen. Sonst bekomme ich immer noch den Abhängigkeitsfehler.
Das zweite Fremdpaket verlangt als Abhängigkeit kdelibs4. Das als Pseudo-Paket zu erzeugen klappt aber leider nicht so wie beschrieben mit kdelibs. Wenn ich das mache und installieren möchte bekomme ich die Meldung:
Code: Alles auswählen
`--# dpkg -i kdelibs4.deb
dpkg: Betreffend kdelibs4.deb, welches kdelibs4 enthält:
kdelibs-data kollidiert mit kdelibs4
kdelibs4 (Version 4:3.5.5) soll installiert werden.
kdelibs4 liefert kdelibs4 und wird installiert.
dpkg: Fehler beim Bearbeiten von kdelibs4.deb (--install):
Kollidierende Pakete - kdelibs4 wird nicht installiert
Fehler traten auf beim Bearbeiten von:
kdelibs4.deb
Code: Alles auswählen
Keine Kandidatsversion für »kdelibs4« gefunden
Es werden keine Pakete installiert, aktualisiert oder entfernt.
0 Pakete aktualisiert, 0 zusätzlich installiert, 0 werden entfernt und 1442 nicht aktualisiert.
Muss 0 B an Archiven herunterladen. Nach dem Entpacken werden 0 B zusätzlich belegt sein.
Die folgenden Pakete haben verletzte Abhängigkeiten:
pikloops: Hängt ab von: kdelibs4 (>= 4:3.2.3-3.sarge.1), welches ein virtuelles Paket ist.
Hängt ab von: libqt3c102-mt (>= 3:3.3.3), welches ein virtuelles Paket ist.
Die folgenden Aktionen werden diese Abhängigkeiten auflösen:
Entferne die folgenden Pakete:
1) pikloops
- r900
- Beiträge: 1053
- Registriert: 09.10.2011 20:06:11
- Lizenz eigener Beiträge: GNU Free Documentation License
- Wohnort: Stockholm
Re: Aptitude: Paket nicht entfernen, wenn Abhängigkeit verle
Ich wundere mich aber auch über die Zeile "kdelibs-data kollidiert mit kdelibs4".. kdelibs-data gibt es laut packages.debian.org auch nicht in wheezy. Hast du das aus squeeze installiert?
Wenn ein Paket eine bestimmte Version eines anderen Paketes verlangt werden virtuelle Pakete ignoriert. Deshalb funktionierte die Variante mit "Provides: kdelibs" wohl nicht.
Ich zitiere mich mal ausnahmsweise selbst.
Die Fremdpakete zu ändern halte ich generell für die sauberste Lösung.
Wenn ein Paket eine bestimmte Version eines anderen Paketes verlangt werden virtuelle Pakete ignoriert. Deshalb funktionierte die Variante mit "Provides: kdelibs" wohl nicht.
Ich zitiere mich mal ausnahmsweise selbst.
Siehst ja selbst dass diese Sache mit virtuellen Paketen Probleme machen kann. Die Paketverwaltung versucht halt das System sauber zu halten und deine Bestrebungen gehen dem irgendwie entgegenr900 hat geschrieben: Ich würde aber eher empfehlen die Abhängigkeiten des Fremdpaketes zu ändern.
![Wink :wink:](./images/smilies/icon_wink.gif)
Die Fremdpakete zu ändern halte ich generell für die sauberste Lösung.