Ich bin ein bisschen verwirrt darüber, wie getdeb.net jetzt funktioniert. Das letzte Mal, dass ich ein Paket von dort bekommen habe, ist eine Weile her. Zu diesem Zeitpunkt bestand die Prozedur darin, für jedes Paket, das Sie installieren / aktualisieren möchten, einfach eine .deb-Datei herunterzuladen und anschließend mit zu installieren dpkg -i
. Der unaufhaltsame Fortschritt hat jedoch auch diesem System seine Trompeten verliehen, und getdeb-Installationen werden jetzt über ihr Repo ausgeführt, das bei apt in registriert ist /etc/apt/sources.list.d
, nachdem Sie ein einzelnes Paket installiert haben, das die Änderungen an der apt-Datenbank vornimmt.
Ich habe dieses Paket installiert und festgestellt, dass aptitude dist-upgrade
jetzt viele Pakete auf meinem System aktualisiert werden sollen, die vor der Installation des getdeb-Pakets nicht für Upgrades bereit waren. Wenn ich die Datei /etc/apt/sources.list.d/getdeb.list
in eine Datei mit einer anderen Erweiterung umbenenne , möchte aptitude update && aptitude dist-upgrade
sie keine Pakete mehr aktualisieren.
Ich habe festgestellt, dass das Standardverhalten nun darin besteht, alle Pakete auf die bei getdeb verfügbare Version zu aktualisieren. Dies ist nicht besonders geeignet, da diese Pakete nicht so gut getestet sind wie die offiziell veröffentlichten Versionen.
Gibt es irgendwo eine Konfigurationseinstellung, die ein Upgrade von Paketen auf Versionen aus dem getdeb-Repo verhindert, sofern diese Aktion nicht speziell ausgewählt wurde? Ich möchte auswählen können, welche Pakete über getdeb aktualisiert werden.
Aktualisieren
Wie von @ ~ joaopinto empfohlen, habe ich /etc/apt/preferences
die folgende Datei erstellt :
Package: *
Pin: release o=GetDeb
Pin-Priority: 50
Als ich dies erfuhr, stellte ich fest, dass es einen Fehler in apt gibt , der /etc/preferences.d
die Suche nach dem Verzeichnis verhindert . Also ... versuchen Sie nicht, dieses Verzeichnis zu verwenden.
aptitude dist-upgrade
Wenn die Voreinstellungsdatei wie angegeben eingerichtet ist, wird nicht versucht, Pakete auf ihre getdeb-Versionen zu aktualisieren. Die Priorität 50 bedeutet im Grunde, dass Pakete von getdeb nur dann installiert werden, wenn sie an keiner anderen Stelle verfügbar sind.
An dieser Stelle suche ich nach einer bequemen Möglichkeit, ein Paket auf die getdeb-Version oder die neueste Version zu aktualisieren (beides ist in Ordnung) und Abhängigkeiten nach Bedarf zu aktualisieren / installieren. Normalerweise mache ich das von der Kommandozeile aus, aber ich stellte fest, dass ich in die curses-Version von aptitude
wechseln musste, um ein Paket auf eine bestimmte Version zu aktualisieren. Dies bedeutet nicht, dass es keine Möglichkeit gibt, dies über die Befehlszeile zu tun, aber wenn dies der Fall ist, ist dies in der Schnelldokumentation von aptitude nicht ohne weiteres erkennbar.
Innerhalb von aptitude musste ich die gewünschte Version des gewünschten Pakets für das Upgrade auswählen und mich dann mit 'Konflikten' befassen, die aufgrund der Abhängigkeiten dieser Paketversion von neueren Versionen anderer Pakete entstanden sind. Dies war leicht zu lösen - ich musste nur die von getdeb stammenden Versionen dieser Pakete auswählen -, aber es scheint ein unnötiger Aufwand zu sein. Gibt es eine bessere Möglichkeit, dies zu tun?
Update auch
Wie @Ryan Thompson erklärt, können Versionen an den Befehlszeilenmodus ( apt-get
oder, wie ich herausgefunden habe, an den Paketnamen angehängt werden), wobei VERSION die gleiche Zeichenfolge ist, die durch oder aufgeführt wird .aptitude
=VERSION
aptitude
apt-cache
show
aptitude install rosegarden=1:10.04-1~getdeb1
Wenn Sie also so etwas wie installieren, wird das Paket aus dem getdeb-Repository installiert, auch wenn GetDeb-Pakete wie oben beschrieben fixiert sind. Ich habe dies getan und wurde aufgefordert, das Upgrade des abhängigen Pakets rosegarden-data
auf die von getdeb bereitgestellte Version zu bestätigen.
apt-cache policy PACKAGE-NAME
in der Befehlszeile, um die verfügbaren Versionen eines Pakets anzuzeigen. Verwenden Sie zum Installieren einer bestimmten Versionapt-get install PACKAGE-NAME=SPECIFIC-VERSION
.aptitude
, was ich vorziehen würde, weil es explizite oder automatische Installationen verfolgt, und b)aptitude
nicht erkennen würde, dass es fixierte Abhängigkeiten installieren sollte. Allerdings habe ich es gerade ausprobiert und es scheint ganz gut zu funktionieren.man apt-mark
.\n\n
Hat die Verwendung keinen Vorteilaptitude
? Mir scheint, ich habe die neuesten Ratschläge gelesen, die empfehlen, sie zu verwendenapt-*
.Antworten:
apt bietet keine benutzerfreundliche Möglichkeit, dies zu erreichen. Sie müssen apt pinning verwenden. Überprüfen Sie die folgende URL: http://jaqque.sbih.org/kplug/apt-pinning.html
Um zu verhindern, dass ein Paket von getdeb aktualisiert wird, müssen Sie / etc / apt_preferences mit folgendem Befehl erstellen: Package: * Pin: release o = GetDeb Pin-Priorität: 50
quelle
/etc/apt/preferences.d
erkannt werden: bugs.launchpad.net/ubuntu/+source/aptitude/+bug/… ... aus diesem Grund richtet getdeb das nicht mit dem Installationspaket ein. Es scheint zu funktionieren, obwohl ich hoffe, dass es eine bequeme Möglichkeit gibt, sowohl das Fixieren für ein bestimmtes Paket zu überschreiben als auch seine Abhängigkeiten zu aktualisieren, soweit dies für die neueste Version dieses bestimmten Pakets erforderlich ist. Siehe meine Bearbeitung.es sollte so aussehen, aber ohne die leere Zeile nach den Sternchen. Leerzeilen zwischen package, pin und pin-priority in / etc / apt / preferences sind nicht zulässig. Ich weiß nicht warum, diese Seite hat das Layout automatisch geändert.
Paket: *
Pin: origin archive.getdeb.net
Pin-Priorität: -1
quelle
Du suchst nach etwas, das man Feststecken nennt. Ich habe es selbst nie herausgefunden, also lasse ich mich von anderen in die richtige Richtung weisen.
quelle
Nachdem ich es stundenlang versucht hatte, bekam ich endlich die Lösung:
quelle