Abhängigkeiten in einem Debian Paket ändern

Wenn man Softwarepakete installieren möchte welche man nicht per apt-get aus den offiziellen Repositorys ziehen kann, kann es vorkommen, dass diese Pakete Abhängigkeiten haben, welche man nicht erfüllen kann.

So ist es mir geschehen, als ich das Spiel UFOAI ausprobieren wollte. Die einzigen Pakete die ich zum damaligen Zeitpunkt fand waren Ubuntu Pakete, welche eine Abhängigkeit zum NVidia Treiber beinhalteten. Nun habe ich in meinen Rechner zwar eine NVidia Karte, aber nicht besagtes Treiberpaket installiert. Dieses Paket gibt es für Debian gar nicht!

Man kann bei der Installation zwar angeben, dass dpkg fehlende Abhängigkeiten ignorieren soll, aber dies bringt dann weitere Probleme mit sich. Jedesmal wenn man danach etwas installieren oder updaten möchte, meckert er die Abhängigkeit an und versucht das Paket zu deinstallieren. Die beste Lösung ist es daher, die Abhängigkeit komplett zu entfernen.

# funktioniert temporär, macht aber viele Probleme
dpkg - i --ignore-depends=<paket.to.ignore> package.deb

Um die Abhängigkeit zu entfernen müssen wir uns das Paket selbst neu bauen. Dazu erstmal das Paket selbst entpacken und um an die Steuerdatei zu kommen auch die Paketinformationen dazu.

mkdir tmp
dpkg-deb -x package.deb tmp
dpkg-deb --control package.deb tmp/DEBIAN

Danach öffnen wir die Steuerdatei „control“ mit einem Editor unserer Wahl, und ändern den Abschnitt „Depends“ nach unseren Wünschen.

vi tmp/DEBIAN/control
# Abhängigkeiten sind im Abschnitt "Depends" definiert
Depends: libc6 (>= 2.11), libcurl3 (>= 7.16.2-1), libsdl1.2debian (>= 1.2.10-1), .....

Nachdem die Datei angepasst und gespeichert ist wird das Paket wieder zusammengepackt, und kann danach ganz normal mit dpkg installiert werden.

dpkg -b tmp new-package.deb
dpkg -i new-package.deb

Dieses neue Paket lässt sich jetzt ohne die beschriebenen Probleme normal installieren. 😉

Antwort auf Abhängigkeiten in einem Debian Paket ändern

  1. Stefan sagt:

    Hi,
    herzlichen dank für der Artikel endlich vertragen sich mein Ubuntu 12.04 und tsclient wieder.
    Dank dir.

  2. Bachsau sagt:

    Diese Paketverwaltung ist echt der letzte Schrott.

    • Sven sagt:

      Dann scheinst du sie nicht verstanden zu haben. Nichts wird bei meinen Systemen an apt vorbei installiert, somit habe ich immer die volle Kontrolle über die installierten Pakete und Dateien.

  3. Müller sagt:

    Danke für das Tutorial, jetzt verträgt sich die dkms Erweiterung mit VirtualBox 5.0 😉

  4. Ubuntu-Nutzer sagt:

    Ich habe Ubuntu 14.04 mit der Gnome Classic Oberfläche (3.10.4)

    Diese Datenermittlungsprogramm Zeitgeist habe ich mir vom Rechner entfernt. Dabei gab es aber u.a. Konflikte mit dem Editor gedit, genauer mit den beiden Dateien gedit_3.10.4-0ubuntu4_amd64.deb und gedit-plugins_3.10.1-1ubuntu2_amd64.deb.

    Leider haben mir die obigen Tipps nicht geholfen.

    Mit dem Befehl „dpkg-deb –extract “ werden alle zu installierenden Dateien in das Auspack-Verzeichnis in usr-Unterverzeichnisse entpackt. Aber dabei ist keine control-Datei. Erst dachte ich das läge daran, dass die beiden deb-Dateien noch root gehörten. Aber dem war nicht so.

    Die Lösung war dann die Verwendung der „-e“- bzw. „–control“-Option des dpkg-deb-Befehls:

    dpkg-deb -e

    Nach dem Befehl sind dann die folgenden Dateien im Auspack-Verzeichnis:

    control md5sums postinst postrm prerm shlibs

    Also ich denke dass das jetzt die Richtigen Dateien sind.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.