Wie vermeidet man, beschädigte Pakete zu reparieren?

Wie vermeidet man, beschädigte Pakete zu reparieren?

Ich verwende eine Version von Rubygems, die zum Ausführen einer der Anwendungen auf meinem Server erforderlich ist und folgendermaßen installiert ist:

dpkg --install /tmp/rubygems1.8_1.3.7-2_all.deb

Bei jeder Verwendung möchte Aptitude ein Rollback auf die alte Version von Rubygems (gespeichert in den Repositories) durchführen.

Wie kann ich Aptitude anweisen, dieses Problem zu ignorieren?

Ich hätte gerne eine Befehlszeilenlösung, da ich einen Server (Ubutun 10.04) verwende. Dies ist also kein Duplikat von:Sagen Sie Aptitude, dass defekte Pakete ignoriert werden sollen

Antwort1

Installieren Sie einfach die benötigte Gems-Version außerhalb von apt. Das ist eigentlichbesserauch, weil es in (Ding, das Sie installiert haben) sein wird /usr/local/binund nicht in /usr/bindem, was für die Distribution vorgesehen ist (Dinge, die im Repository erstellt wurden, aus dem Sie herunterladen). In diesem Fall versucht die Distribution offensichtlich, Ihre Version von Gems abzulehnen.

Darüber hinaus befinden sich die mit Ihrer Version von Ruby Gems installierten Elemente wahrscheinlich in einem anderen Verzeichnis weiter oben imInclude-Pfadwie /usr/local/sharestatt /usr/lib. Das bedeutet, dass es bei der Installation mit /usr/local/bin/geman einen speziellen Ort geht, wo es bei der /usr/bin/gemInstallation nicht stört.

Antwort2

Ich halte Pakete mit aptitude hold <package>. Ich bin nicht sicher, ob es auch zum Verhindern von Rollbacks funktioniert, aber einen Versuch ist es wert.

Sie können auch dpkg verwenden: echo “<package> hold” | dpkg --set-selections

Referenz

Antwort3

An Ihrer Stelle würde ich das Paket neu kompilieren (ändern), damit die Abhängigkeiten nicht unterbrochen werden.

Weil es meiner Meinung nach keine akzeptable Möglichkeit gibt, dpkg/apt mitzuteilen, dass sie mit nicht erfüllten/defekten Abhängigkeiten zufrieden sein sollen … denn genau dafür wurden sie erstellt.

Antwort4

Sie könnenequivsum Dummy-Pakete zu erstellen, die die fehlenden Pakete bereitstellen.

Dies funktioniert natürlich nur, wenn es keine Konflikte zwischen den installierten Paketen gibt.

verwandte Informationen