Wie fälsche ich eine installierte Paketversion?

23

Als Early Adopter und mit 11.04 täglichen Builds stoße ich manchmal auf eine Situation, in der einige Pakete frühere Versionen anderer Pakete erfordern als die, die ich installiert habe. Normalerweise bieten neuere (aber abgelehnte) Versionen der benötigten Pakete die gesamte Funktionalität der älteren Versionen.

Wenn ich dpkg -i --force-depends-versionabhängige Pakete installiere, funktioniert alles einwandfrei. Ich habe noch nie ein Problem gesehen.

Anstatt jedes Paket manuell herunterzuladen und zu installieren, kann ich das System so tun, als wäre eine bestimmte Paketversion installiert, wenn es eine neuere gibt? Oder gibt es ein --force-depends-versionSchlüsseläquivalent für apt-get?

Ivan
quelle

Antworten:

16

Sie können das Paket equivs verwenden Installieren Sie Äquivalente , um ein Dummy-Paket zu erstellen, mit dem ein bestimmtes Paket gefälscht wird, das gerade installiert wird. Einige Anweisungen hier .

schäbig
quelle
Während das genug ist. Die Verbindung kann jedoch früher oder später unterbrochen werden. Es ist besser, den Unterricht in der Antwort zumindest wieder aufzunehmen. Meine Antwort kann hier helfen askubuntu.com/a/1181415/26246 . Wir können also auf diese Frage verweisen, die in Bezug auf Äquivalente die höhere Stimme hat.
user.dz
23

Obwohl eine Antwort bereits akzeptiert wurde, vermittelt das Inlinieren der akzeptierten besser den Prozess:

  1. Es gibt ein Debian-Paket, equivsdas Dummy-Pakete erstellen kann. Installieren Sie es, indem Sie ausführensudo apt-get install -y equivs

  2. Nach der Installation generieren Sie eine Vorlagendatei "control" mit dem folgenden Befehl: equivs-control postfix(Ersetzen Sie diese postfixdurch Ihren Paketnamen). In meinem Fall könnte ich einen alternativen Paketnamen verwenden, z. B. postfix-customoder was auch immer, aber mein benutzerdefiniertes Paket muss erfüllt werden oder Providesdie Installationsabhängigkeit von postfix(erneutes Ersetzen postfixfür das gewünschte Paket).

  3. Sobald die Vorlagensteuerungsdatei generiert wurde, entferne ich in der Regel viele auskommentierte Anweisungen (Anweisungen, die mit beginnen #). Eines , dass Ich mag speziell zu halten , ist die Provides:Aussage , wo ich sagen kann , dass mein Paket die Möglichkeit , durch das andere Paket angeboten sieht vor, dass ich zu fälschen bin versucht, zum Beispiel Provides: postfixerzählt die Debian / Ubuntu Abhängigkeit Bewältigungsmechanismus , dass mein Paket-von was auch immer Namen- bietet wieder die gleichen Funktionen des Zielpakets postfixoder was auch immer. Dadurch kann ich mein Paket unabhängig vom Zielpaket benennen, um Verwechslungen zu vermeiden. Erlang Factory erledigt dies mit ihren Sachen, zB esl-erlangliefert erlang.

  4. Sobald die Vorlagen-Steuerdatei erstellt ist, können Sie equivs-buildschließlich das gefälschte Paket generieren, z equivs-build /path/to/generated/control/file.

  5. Das Erstellen des Pakets dauert einige Sekunden, und Sie können es ausführen sudo dpkg -i my_package_name*.deb

Wenn Ihre Vorlagensteuerungsdatei für fortgeschrittene Benutzer eine Requires:Abhängigkeitszeile enthält, möchten Sie möglicherweise ein Tool verwenden gdebi, um Ihr Paket sowie die verschiedenen Pakete, die es als Abhängigkeiten deklariert, zu installieren.

Jonathan Oliver
quelle