Möchten Sie das Repo zur Laufzeit festlegen können oder sollte es eher statisch sein? Die beiden folgenden Antworten gehen von der letztgenannten Option aus.
Tshepang
Ideal wäre es zur Laufzeit. Die statische Option ist jedoch ausreichend.
Ton van den Heuvel
2
Ihre Überschrift und die tatsächlich angeforderte Hilfe sind unterschiedlich.
Sundar
Antworten:
29
Verwenden Sie Pinning
Pinning ist ein Prozess, mit dem Sie auf einem stabilen Release von Ubuntu (oder einem anderen Debian-System) bleiben können, während Sie Pakete aus einer neueren Version herunterladen. - help.ubuntu.com
Sie können automatische Updates für bestimmte Repositorys deaktivieren, ohne sie über aptRichtlinien vollständig zu entfernen :
Fügen repoSie eine Datei /etc/apt/preferences.d/repomit dem folgenden Inhalt hinzu, um automatische Updates aus dem Repository zu deaktivieren :
Package: *
Pin: release n=repo
Pin-Priority: 50
Damit erhalten alle Pakete aus diesem Repository eine niedrigere Priorität als bereits installierte Pakete (mit 100).
Es ist eine Schande, dass die einzige Antwort von apt_preferences die letzte ist ...
Robert Siemer
wie finde ich heraus, welche version von welchem repo stammt?
Max N
2
@ MaxN Sie würden in der Regel diese Informationen finden, indem Sieapt-cache policy package-name
Anwar
Dies erzwingt nicht, dass ein Repository beim Aktualisieren nicht berücksichtigt wird. da release n=repowird niemand zwischengespeichert
Anwar
35
Sie können ein Release mit der -tOption angeben . Als Beispiel habe ich das folgende Repository hinzugefügt /etc/apt/sources.list, um die neueste Version von Iceweasel zu installieren:
deb http://mozilla.debian.net/ squeeze-backports iceweasel-release
Wie Sie wissen, gibt es dasselbe Paket iceweaselim offiziellen Debian-Repository. Wenn ich Iceweasel von dieser speziellen Version installieren möchte, führe ich Folgendes aus:
apt-get install -t squeeze-backports iceweasel
von apt-get manual page:
-t, --target-release, --default-release
This option controls the default input to the policy engine, it creates a default pin at priority 990 using the specified
release string. This overrides the general settings in /etc/apt/preferences. Specifically pinned packages are not affected by
the value of this option. In short, this option lets you have simple control over which distribution packages will be retrieved
from. Some common examples might be -t '2.1*', -t unstable or -t sid. Configuration Item: APT::Default-Release; see also the
apt_preferences(5) manual page.
Ich denke, das ist eine bessere Lösung.
UPDATE : Wie @SuB im Kommentar erwähnte, " -tgibt Release nicht Repository-Namen an. Es gibt keinen Repository-Namen in Ubuntu (im Gegensatz zu RedHat-basierten Linux wie RHEL, Fedora, CentOS, ...)".
Geben Sie, wie Sie im apt-getHandbuch sehen, den -tNamen des Release und nicht des Repository an. Es gibt keine Repository - Name in Ubuntu ( im Gegensatz zu RedHat Linux - basierten wie RHEL, Fedora, CentOS, ...)
SuB
1
@SuB Ja, du hast recht! Ich habe den Repository-Namen mit der Freigabe verwechselt!
Cartoonist
-t xenialfunktioniert für ein einzelnes Paket. Aber alle Abhängigkeiten werden immer noch aus höheren Paketen geholt
Anwar
11
Kurze Antwort
Du musst die Repositories anheften möchten Sie nicht weniger von mit einer Priorität installieren als 100. Welche Mittel (von apt_preferenceMann - Seite)
100 <= P <500
bewirkt, dass eine Version installiert wird, es sei denn, eine Version einer anderen Distribution ist verfügbar oder die installierte Version ist aktueller
Um ein Repository zum Fixieren auszuwählen, verwenden Sie Felder aus der Repository- ReleaseDatei. Wie archive, label, release, versionetc. Durch die Werte dieser Felder angeben, können Sie genau ein Repository auswählen und die gewünschte Priorität zuweisen. Weitere Informationen finden Sie auf der Seite apt_preference .
Lange Antwort
Bevor wir fortfahren, müssen wir einige wichtige Dinge über das Feststecken wissen. Das schließt ein
Felder von ReleaseDateien und die Zuordnung zur apt-cache policyAusgabe
Format der Apt-Einstellungsdateien
Verwenden von ReleaseDateifeldern zum Festlegen der Priorität
1. Felder der ReleaseDatei und apt-cache policyAusgabe
Die Werte in diesen Zeilen stammen aus ReleaseDateien.
Beschreibung legt die Beschreibung für ein Repository fest. Dies wird in der apt-cache policyAusgabe nicht angezeigt
Beschriften sie das Etikett des Endlagers ist. Viele Repositorys haben leere Bezeichnungen. Es wird l=<label>in der Ausgabe angezeigt .
Herkunft Dies gibt Auskunft über die Herkunft des Repositorys. Offizielles Ubuntu-Repository hat Ubuntuals Wert. Dargestellt wie o=in der Ausgabe
Version ist die Version einer Distribution. Es ist 16.04 für Xenial. Dargestellt wie v=in der Ausgabe
Suite ist dasselbe wie Archive . Aus dem Debian- Wiki ist es Der Name der Debian-Distribution, zu der die Pakete in diesem Verzeichnis gehören (oder für die sie entwickelt wurden), dh stabil, testfähig oder instabil. . Für Ubuntu, sind diese release-updates, release-securityetc. Zum Beispiel xenial-updates, xenial-security. Es wird in der Ausgabe als a=xenial, angezeigt a=xenial-security. PPAs verwenden hierfür nur den Release-Namen, weshalb es beim Pinning nicht viel hilft.
Komponente erzählt über die Lizenzsache. Es ist main, multiverse, restricted, universein Ubuntu. In der Ausgabe wird es als c=mainoder c=restrictedusw. angezeigt . Die meisten PPAs verwenden maindieses Feld, daher hilft es auch beim Fixieren nicht viel.
Bei Architektur geht es um die Betriebssystemarchitektur. Wird als b=i386oder b=amd64in der Ausgabe angezeigt
Codename ist der Release-Name der Distribution. Für den 16.04 ist es xenial. Für 14.04 ist es trusty. Wird in der apt-cache policyAusgabe als n=xenialoder angezeigt n=trusty. Dies gilt in der Regel für alle Repositorys einer einzelnen Distribution. Das ist der Grund, warum es beim Feststecken nicht viel hilft.
Die andere Zeile in der apt-cache policyAusgabe, die mit beginnt origin, gibt den Internetursprung des Repositorys an. Es kann auch zum Fixieren verwendet werden. Sollte aber nicht mit ReleaseDateifeld gemischt werden Origin. Das sind andere.
Wir werden diese Werte verwenden, um ein Repository zu fixieren.
Wie verwenden wir Pinning 1 , um das Repository einzuschränken?
Es gibt verschiedene Möglichkeiten, das Fixieren zu steuern, und für Ubuntu ist nur eine kleine Teilmenge wirksam. Eine detaillierte Erklärung würde jedoch den Rahmen der Antwort sprengen. Bitte lesen Sie hierzu die apt_preferenceMan-Seite .
2. Pin-Dateiformat
Pin- oder Apt-Einstellungsdateien befinden sich im /etc/apt/preferences.dOrdner. Jede Stecknadel enthält drei Zeilen.
Die erste Zeile beginnt mit Package:einem durch Kommas getrennten Paketnamen. Reguläre Ausdrücke und Globs sind erlaubt
Die zweite Zeile beginnt mit Pin:und wird verwendet, um auf eine Gruppe von Paketen abzuzielen.
Wenn wir Pakete von xenialhöher als anheften möchten xenial-updates, verwenden wir release a=xenial.
Wenn wir die Version 5.0 anheften möchten, verwenden wir diese version 5.0hier. Glob Pattens sind erlaubt.
Oder wenn wir Pakete von Origin aus pinnen möchten http://archive.ubuntu.com, verwenden wir origin "archive.ubuntu.com". Beachten Sie, dass wir dort kein http://Protokoll schreiben .
Die dritte Zeile beginnt mit Pin-Priority:und der Wert ist eine Zahl. Womit die Priorität der oben genannten Zielobjekte bezeichnet wird.
3. Verwenden von ReleaseDateifeldern zum Festlegen der Priorität
In diesem Beispiel erhalten Pakete aus xenialArchiven eine höhere Priorität als xenial-updatesund xenial-security.
Nach dem Fixieren apt-cache policy nautiluszeigt das Ausführen von an , dass eine niedrigere Version aus dem xenialArchiv tatsächlich Vorrang vor einer höheren Version aus dem xenial-updatesArchiv hat. Beachten Sie die Candidate:Linie.
Wenn wir aber auch PPA-Paketen Vorrang einräumen möchten, funktioniert dies nicht. Da PPAs xenialstandardmäßig denselben Archivnamen verwenden . Das Zuweisen einer Priorität zu a=xenialgilt also auch für diese Pakete. Zum Beispiel (nach aktiviertem PPA),
Jetzt ist die Kandidatenversion von einem PPA. Beide Pakete aus dem xenialArchiv des offiziellen Ubuntu-Repos und der PPA haben dieselbe Priorität 1001, da beide denselben Wert für die ArchiveRelease-Datei verwenden. Um erfolgreich zu pinnen, müssen wir mehr Felder in der Pin-Datei kombinieren.
Einige Beispiele
Pin ein PPA-Repository
Um Pakete aus einem Repository zu pinnen, müssen wir sie mit den Informationen aus dem apt-cache policyBefehl peilen . Wir haben gerade gesehen, dass a=xeniales nicht hilft, ein Repository zu lokalisieren. Wir müssen mehrere Felder zusammen mit einem Komma in einer Einstellungsdatei verwenden, um genau auf ein Repository abzielen zu können.
Um beispielsweise zu verhindern, dass alle Pakete http://ppa.launchpad.net/oibaf/graphics-drivers/ppa-fähig sind, können wir verwenden
Hier verwenden wir den Codenamenwert sowie den OriginWert des PPA. (Obwohl der Codename hier eigentlich nicht benötigt wird). Manchmal kann das Repository diesen Wert verfehlen. In diesen Fällen sollten einige andere Techniken angewendet werden. Die Ausgabe von apt-cache policy libgl1-mesa-glxsagt, dass es funktioniert. Es senkte die Priorität aller Pakete dieser PPA.
Ignorieren Sie die Tatsache, dass es sich um einen Kandidaten handelt. Dies geschah, weil es bereits in meinem System installiert ist . Überprüfen Sie die Priorität rechts
Repository fixieren, wenn Versionsinformationen fehlen
Wenn wir ein Repository anheften möchten, dessen Versionsinformationen fehlen, wie dieses http://download.opensuse.org/repositories/home:/sarimkhan/xUbuntu_14.04, müssen wir eine andere Methode anwenden. Da kein anderes Repository diesen Ursprung verwendet, können wir origindieses Repository ohne Bedenken anpinnen.
Und dann entfernen Sie Kommentare aus sources.list. Vielleicht nicht der beste Weg, aber zumindest in den apt-getManpages wird keine Möglichkeit angegeben, dies zu tun.
In Verbindung stehender Hinweis, zum Beispiel, der Ubuntu-Distributions-Upgrade-Prozess deaktiviert alle Repositorys von Drittanbietern während des Upgrades (und führt nicht nur eine Option aus, um diese vorübergehend auszuschließen).
Antworten:
Verwenden Sie Pinning
Sie können automatische Updates für bestimmte Repositorys deaktivieren, ohne sie über
apt
Richtlinien vollständig zu entfernen :Fügen
repo
Sie eine Datei/etc/apt/preferences.d/repo
mit dem folgenden Inhalt hinzu, um automatische Updates aus dem Repository zu deaktivieren :Damit erhalten alle Pakete aus diesem Repository eine niedrigere Priorität als bereits installierte Pakete (mit 100).
Weitere Informationen finden
man apt_preferences
Sie im Ubuntu Community Wiki .quelle
apt-cache policy package-name
release n=repo
wird niemand zwischengespeichertSie können ein Release mit der
-t
Option angeben . Als Beispiel habe ich das folgende Repository hinzugefügt/etc/apt/sources.list
, um die neueste Version von Iceweasel zu installieren:Wie Sie wissen, gibt es dasselbe Paket
iceweasel
im offiziellen Debian-Repository. Wenn ich Iceweasel von dieser speziellen Version installieren möchte, führe ich Folgendes aus:von apt-get manual page:
Ich denke, das ist eine bessere Lösung.
UPDATE : Wie @SuB im Kommentar erwähnte, "
-t
gibt Release nicht Repository-Namen an. Es gibt keinen Repository-Namen in Ubuntu (im Gegensatz zu RedHat-basierten Linux wie RHEL, Fedora, CentOS, ...)".quelle
apt-get
Handbuch sehen, den-t
Namen des Release und nicht des Repository an. Es gibt keine Repository - Name in Ubuntu ( im Gegensatz zu RedHat Linux - basierten wie RHEL, Fedora, CentOS, ...)-t xenial
funktioniert für ein einzelnes Paket. Aber alle Abhängigkeiten werden immer noch aus höheren Paketen geholtKurze Antwort
Du musst die Repositories anheften möchten Sie nicht weniger von mit einer Priorität installieren als 100. Welche Mittel (von
apt_preference
Mann - Seite)Um ein Repository zum Fixieren auszuwählen, verwenden Sie Felder aus der Repository-
Release
Datei. Wiearchive
,label
,release
,version
etc. Durch die Werte dieser Felder angeben, können Sie genau ein Repository auswählen und die gewünschte Priorität zuweisen. Weitere Informationen finden Sie auf der Seite apt_preference .Lange Antwort
Bevor wir fortfahren, müssen wir einige wichtige Dinge über das Feststecken wissen. Das schließt ein
Felder von
Release
Dateien und die Zuordnung zurapt-cache policy
AusgabeFormat der Apt-Einstellungsdateien
Verwenden von
Release
Dateifeldern zum Festlegen der Priorität1. Felder der
Release
Datei undapt-cache policy
AusgabeAus dem Debian-Wiki- Artikel
Sie würden die Ausgabe von
apt-cache policy
diesen sehenDie Werte in diesen Zeilen stammen aus
Release
Dateien.Beschreibung legt die Beschreibung für ein Repository fest. Dies wird in der
apt-cache policy
Ausgabe nicht angezeigtBeschriften sie das Etikett des Endlagers ist. Viele Repositorys haben leere Bezeichnungen. Es wird
l=<label>
in der Ausgabe angezeigt .Herkunft Dies gibt Auskunft über die Herkunft des Repositorys. Offizielles Ubuntu-Repository hat
Ubuntu
als Wert. Dargestellt wieo=
in der AusgabeVersion ist die Version einer Distribution. Es ist 16.04 für Xenial. Dargestellt wie
v=
in der AusgabeSuite ist dasselbe wie Archive . Aus dem Debian- Wiki ist es Der Name der Debian-Distribution, zu der die Pakete in diesem Verzeichnis gehören (oder für die sie entwickelt wurden), dh stabil, testfähig oder instabil. . Für Ubuntu, sind diese
release-updates
,release-security
etc. Zum Beispielxenial-updates
,xenial-security
. Es wird in der Ausgabe alsa=xenial
, angezeigta=xenial-security
. PPAs verwenden hierfür nur den Release-Namen, weshalb es beim Pinning nicht viel hilft.Komponente erzählt über die Lizenzsache. Es ist
main
,multiverse
,restricted
,universe
in Ubuntu. In der Ausgabe wird es alsc=main
oderc=restricted
usw. angezeigt . Die meisten PPAs verwendenmain
dieses Feld, daher hilft es auch beim Fixieren nicht viel.Bei Architektur geht es um die Betriebssystemarchitektur. Wird als
b=i386
oderb=amd64
in der Ausgabe angezeigtCodename ist der Release-Name der Distribution. Für den 16.04 ist es
xenial
. Für 14.04 ist estrusty
. Wird in derapt-cache policy
Ausgabe alsn=xenial
oder angezeigtn=trusty
. Dies gilt in der Regel für alle Repositorys einer einzelnen Distribution. Das ist der Grund, warum es beim Feststecken nicht viel hilft.Die andere Zeile in der
apt-cache policy
Ausgabe, die mit beginntorigin
, gibt den Internetursprung des Repositorys an. Es kann auch zum Fixieren verwendet werden. Sollte aber nicht mitRelease
Dateifeld gemischt werdenOrigin
. Das sind andere.Wir werden diese Werte verwenden, um ein Repository zu fixieren.
Wie verwenden wir Pinning 1 , um das Repository einzuschränken?
Es gibt verschiedene Möglichkeiten, das Fixieren zu steuern, und für Ubuntu ist nur eine kleine Teilmenge wirksam. Eine detaillierte Erklärung würde jedoch den Rahmen der Antwort sprengen. Bitte lesen Sie hierzu die
apt_preference
Man-Seite .2. Pin-Dateiformat
Pin- oder Apt-Einstellungsdateien befinden sich im
/etc/apt/preferences.d
Ordner. Jede Stecknadel enthält drei Zeilen.Die erste Zeile beginnt mit
Package:
einem durch Kommas getrennten Paketnamen. Reguläre Ausdrücke und Globs sind erlaubtDie zweite Zeile beginnt mit
Pin:
und wird verwendet, um auf eine Gruppe von Paketen abzuzielen.Wenn wir Pakete von
xenial
höher als anheften möchtenxenial-updates
, verwenden wirrelease a=xenial
.Wenn wir die Version 5.0 anheften möchten, verwenden wir diese
version 5.0
hier. Glob Pattens sind erlaubt.Oder wenn wir Pakete von Origin aus pinnen möchten
http://archive.ubuntu.com
, verwenden wirorigin "archive.ubuntu.com"
. Beachten Sie, dass wir dort keinhttp://
Protokoll schreiben .Die dritte Zeile beginnt mit
Pin-Priority:
und der Wert ist eine Zahl. Womit die Priorität der oben genannten Zielobjekte bezeichnet wird.3. Verwenden von
Release
Dateifeldern zum Festlegen der PrioritätHier ist ein Beispiel
In diesem Beispiel erhalten Pakete aus
xenial
Archiven eine höhere Priorität alsxenial-updates
undxenial-security
.Nach dem Fixieren
apt-cache policy nautilus
zeigt das Ausführen von an , dass eine niedrigere Version aus demxenial
Archiv tatsächlich Vorrang vor einer höheren Version aus demxenial-updates
Archiv hat. Beachten Sie dieCandidate:
Linie.Wenn wir aber auch PPA-Paketen Vorrang einräumen möchten, funktioniert dies nicht. Da PPAs
xenial
standardmäßig denselben Archivnamen verwenden . Das Zuweisen einer Priorität zua=xenial
gilt also auch für diese Pakete. Zum Beispiel (nach aktiviertem PPA),Jetzt ist die Kandidatenversion von einem PPA. Beide Pakete aus dem
xenial
Archiv des offiziellen Ubuntu-Repos und der PPA haben dieselbe Priorität1001
, da beide denselben Wert für dieArchive
Release-Datei verwenden. Um erfolgreich zu pinnen, müssen wir mehr Felder in der Pin-Datei kombinieren.Einige Beispiele
Pin ein PPA-Repository
Um Pakete aus einem Repository zu pinnen, müssen wir sie mit den Informationen aus dem
apt-cache policy
Befehl peilen . Wir haben gerade gesehen, dassa=xenial
es nicht hilft, ein Repository zu lokalisieren. Wir müssen mehrere Felder zusammen mit einem Komma in einer Einstellungsdatei verwenden, um genau auf ein Repository abzielen zu können.Um beispielsweise zu verhindern, dass alle Pakete
http://ppa.launchpad.net/oibaf/graphics-drivers/
ppa-fähig sind, können wir verwendenHier verwenden wir den Codenamenwert sowie den
Origin
Wert des PPA. (Obwohl der Codename hier eigentlich nicht benötigt wird). Manchmal kann das Repository diesen Wert verfehlen. In diesen Fällen sollten einige andere Techniken angewendet werden. Die Ausgabe vonapt-cache policy libgl1-mesa-glx
sagt, dass es funktioniert. Es senkte die Priorität aller Pakete dieser PPA.Ignorieren Sie die Tatsache, dass es sich um einen Kandidaten handelt. Dies geschah, weil es bereits in meinem System installiert ist . Überprüfen Sie die Priorität rechts
Repository fixieren, wenn Versionsinformationen fehlen
Wenn wir ein Repository anheften möchten, dessen Versionsinformationen fehlen, wie dieses
http://download.opensuse.org/repositories/home:/sarimkhan/xUbuntu_14.04
, müssen wir eine andere Methode anwenden. Da kein anderes Repository diesen Ursprung verwendet, können wirorigin
dieses Repository ohne Bedenken anpinnen.Hinweis 1: Dieser Ursprung ist der Internetursprung und nicht derjenige, der den Hersteller in der Release-Datei angibt.
Anmerkung 2: Die
Pin-Priority
Zahl hat eine besondere Bedeutung. Überprüfen Sie dieapt_preference
Manpage für Details.quelle
Eine GUI-basierte Alternative wäre, das Software-Center zu öffnen und Bearbeiten> Softwarequellen zu wählen.
Alles, was Sie tun müssen, ist das Deaktivieren der Repositorys, von denen Sie keine Aktualisierungen wünschen.
Hoffe das hilft
quelle
Offensichtlich können Sie
/etc/apt/sources.list
alle anderen Repositorys ändern , auskommentieren und dann ausführenUnd dann entfernen Sie Kommentare aus
sources.list
. Vielleicht nicht der beste Weg, aber zumindest in denapt-get
Manpages wird keine Möglichkeit angegeben, dies zu tun.In Verbindung stehender Hinweis, zum Beispiel, der Ubuntu-Distributions-Upgrade-Prozess deaktiviert alle Repositorys von Drittanbietern während des Upgrades (und führt nicht nur eine Option aus, um diese vorübergehend auszuschließen).
quelle
Eine andere GUI-Option ist die Auswahl des Ursprungs in Synaptic Package Manager.
quelle