Debian Dependencies aushebeln

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Generic1
Beiträge: 78
Registriert: 15.11.2012 13:41:28

Debian Dependencies aushebeln

Beitrag von Generic1 » 05.03.2013 13:22:13

Hallo,

ich hab noch eine ganz blöde Frage und zwar nutze ich "dpkg -R -i -E DIR" um meine Debian Packages zu installieren.
ich hab z.B. ein Debian- Package welches von einem anderen abhängt und auch von einer bestimmten Version (Depends: xy (>= 3.0))
Wenn xy < 3.0 ist, dann kann ich das nicht installieren -> das passt soweit.

Wenn das ganze jetzt richtig installiert ist (also mit xy >= 3.0) und ich jetzt NUR xy 2.0 installiere, dann klappt das auch und er sagt mir -> erfolgreich installiert.
Wie kann ich das verhindern bzw. warum ist das eigentlich so - da müssten die Abhängigkeiten ja neu aufgelöst werden oder?

Besten Dank,
lg
Generic1

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: Debian Dependencies aushebeln

Beitrag von syssi » 05.03.2013 13:31:43

"dpkg" besitzt keinen Mechanismus um Abhaengigkeiten aufzuloesen. Stattdessen uebergibst du eine Vielzahl an Paketen, welche der Reihe nach (so wie du sie uebergeben hast) installiert werden. Fehlen bei dieser Reihenfolge Abhaengigkeiten, so bricht dpkg irgendwann mit einem Fehler ab.

Zwei haessliche Ansaetze sind dpkg einfach zum weiter installieren zu zwingen, obwohl Abhaengigkeiten fehlen. Du musst in diesem Fall garantieren, dass wirklich alle Abhaengigkeiten erfuellt sind (in deinem Verzeichnis liegen). Alternativ kannst du deinen dpkg-Aufruf mehrere Male durchfuehren. Irgendwann waren dann alle Abhaengigkeiten vorhanden, so dass der Vorgang erfolgreich abgeschlossen werden kann.

Ich wuerde dir aber empfehlen von dpkg auf "apt-get" umzusteigen. Dabei legst du eine neue Quelle in der /etc/apt/sources.list.d/ an. Quellen koennen auch aus lokalen Verzeichnissen bestehen. In dieses Verzeichnis gehoert eine valide "Packages"-Datei. Anschliessend kannst du dieses Verzeichnis per "apt-get update" im System bekannt machen und *sauber* per "apt-get install anwendung" deine Anwendung (automatisch mit allen Abhaengigkeiten) installieren.

Gruss syssi

Generic1
Beiträge: 78
Registriert: 15.11.2012 13:41:28

Re: Debian Dependencies aushebeln

Beitrag von Generic1 » 05.03.2013 13:43:54

Vielen Dank für die Antwort,
An und für sich wäre "dpkg -R -i -E DIR" ja genau das was ich brauchen würde, ich lade mir mit wget alle debian- packages herunter, die liegen dann in einem Ordner und mit "dpkg -R -i -E DIR" installier ich dann das ganze - das würde für unseren Usecase gut passen.
Mit apt-get ist es doch eher komplizierter -> in sources.list was eintragen usw.
Ich mach mit "dpkg -R -i -E DIR" ja uach ein Rollback wenn das ganze nciht klappt - da hab ich einfach einen Folder mit "alten, funktionierenden" Debian Packages und installier das einfach drüber.
Gibt es nicht doch noch eine mögl. mit dpkg die Abhängigkeiten aufzulösen und wenns nicht passt, dass dann die dpkg- installation fehlschlägt - das würde mir reichen.
Besten Dank nochmal,
lg
Generic1

Benutzeravatar
hikaru
Moderator
Beiträge: 13909
Registriert: 09.04.2008 12:48:59

Re: Debian Dependencies aushebeln

Beitrag von hikaru » 05.03.2013 13:46:57

Wird denn bei der Installation von xy 2.0 xy 3.0 entfernt oder hast du dann beide auf dem System?
Falls es sich wirklich um zwei Versionen eines Pakets handelt wird (bei Verwendung von dpkg) das zuletzt installierte das zuerst installierte ersetzen, wobei ggf. Abhängigkeiten brechen und die abhängigen Pakete entfernt werden. Falls es aber zwei verschiedene Pakete mit ähnlichen Namen sind (z.B. Debianwesnoth-1.8 und Debianwesnoth-1.9) werden auch beide nebeneinander installiert. Willst du das verhindern so müssen beide in Konflikt zueinander stehen, üblicherweise indem das Neuere einen Eintrag dieser Form hat: Conflicts: xy (< 3.0)

Antworten