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
Debian Dependencies aushebeln
-
- Beiträge: 2951
- Registriert: 24.12.2010 16:50:59
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Rheinland
Re: Debian Dependencies aushebeln
"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
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
Re: Debian Dependencies aushebeln
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
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
Re: Debian Dependencies aushebeln
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. wesnoth-1.8 und wesnoth-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)
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. wesnoth-1.8 und wesnoth-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)