Voulez-vous pouvoir spécifier un référentiel pendant l'exécution, ou devrait-il s'agir davantage d'une chose statique? Les deux réponses ci-dessous supposent la dernière option.
Tshepang
Idéalement, ce serait pendant l'exécution. L'option statique est suffisante cependant.
Ton van den Heuvel le
2
Votre rubrique et l’aide que vous demandez sont différentes.
dimanche
Réponses:
29
Utilisez Pinning
L’épinglage est un processus qui vous permet de rester sur une version stable d’Ubuntu (ou de tout autre système Debian) tout en récupérant des paquets d’une version plus récente. - help.ubuntu.com
Vous pouvez désactiver les mises à jour automatiques à partir de certains référentiels sans les supprimer entièrement via des aptstratégies:
Pour désactiver les mises à jour automatiques du référentiel repo, ajoutez un fichier /etc/apt/preferences.d/repoavec le contenu suivant:
Package: *
Pin: release n=repo
Pin-Priority: 50
Ce qui donnera à tous les paquets de ce référentiel une priorité inférieure à celle des paquets déjà installés (qui en ont 100).
C'est dommage que la seule réponse d'apt_preferences soit la dernière ...
Robert Siemer
comment trouver quelle version est à partir de quel repo?
Max N
2
@ MaxN vous trouverez généralement cette information en cours d'exécutionapt-cache policy package-name
mardi
Cela ne forcera pas un référentiel à ne pas être pris en compte lors de la mise à jour. car release n=repone cache personne
Anwar
35
Vous pouvez spécifier une version avec -toption. À titre d'exemple, j'ai ajouté le référentiel suivant /etc/apt/sources.listpour installer la dernière version d'Iceweasel:
deb http://mozilla.debian.net/ squeeze-backports iceweasel-release
Comme vous le savez, il existe un même paquet iceweaseldans le référentiel officiel Debian. Si je veux installer Iceweasel à partir de cette version spécifique, je lance:
apt-get install -t squeeze-backports iceweasel
depuis la page de manuel d'apt-get:
-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.
Je pense que c'est une meilleure solution.
UPDATE : Comme @SuB le mentionnait dans le commentaire, " -tspécifie la version et non le nom du référentiel. Ubuntu ne contient aucun nom de référentiel (contrairement au linux basé sur RedHat tel que RHEL, Fedora, CentOS, ...)".
Comme vous le voyez dans le apt-getmanuel, -tspécifiez la version et non le nom du référentiel. Il n'y a pas de nom de référentiel dans Ubuntu (contrairement aux linux basés sur RedHat tels que RHEL, Fedora, CentOS, ...)
SuB
1
@SuB Oui, tu as raison! J'ai confondu le nom du référentiel avec la publication!
dessinateur le
-t xenialfonctionne pour un seul paquet. mais toutes ses dépendances seront toujours récupérées des paquets supérieurs
Anwar
10
Réponse courte
Vous devez épingler les référentiels que vous ne souhaitez pas installer avec une priorité inférieure à 100. Ce qui signifie (à partir de la apt_preferencepage de manuel)
100 <= P <500
entraîne l’installation d’une version sauf si une version appartenant à une autre distribution est disponible ou si la version installée est plus récente
Et pour sélectionner un référentiel à épingler, vous utiliseriez des champs du Releasefichier des référentiels . Tels que archive, label, release, versionetc. En spécifiant les valeurs de ces champs, vous pouvez sélectionner précisément un référentiel et affecter votre priorité préférée à elle. Consultez la page apt_preference pour plus de détails.
Longue réponse
Avant de continuer, nous devons savoir quelque chose d’important à propos de l’épinglage. Ces comprend
Champs de Releasefichiers et son mappage à la apt-cache policysortie
Format des fichiers de préférences apt
Utilisation Releasedes champs de fichiers pour définir la priorité
1. Champs de Releasefichier et apt-cache policysortie
Les valeurs dans ces lignes proviennent de Releasefichiers.
Description définit la description d'un référentiel. Ceci n'est pas affiché en apt-cache policysortie
Label c'est l'étiquette du référentiel. De nombreux référentiels ont des étiquettes vides. C'est indiqué l=<label>dans la sortie.
Origine indique l'origine du référentiel. Le référentiel officiel Ubuntu a Ubuntupour valeur. Comme o=dans la sortie
Version est la version d'une distribution. Il est 16.04 pour Xenial. Comme v=dans la sortie
Suite est identique à Archive . Depuis le wiki debian, c’est le nom de la distribution de Debian à laquelle les paquets contenus dans ce répertoire appartiennent (ou sont conçus pour), c’est-à-dire stables, en test ou instables. . Pour Ubuntu, ce sont release-updates, release-securityetc. Par exemple, xenial-updates, xenial-security. Il est indiqué dans la sortie comme a=xenial, a=xenial-security. Les PPA utilisent simplement le nom de version pour cela, c'est pourquoi cela n'aidera pas beaucoup Pinning.
Le composant raconte le problème des licences. Il est main, multiverse, restricted, universedans Ubuntu. Dans la sortie, il est indiqué par c=mainou c=restrictedetc. La plupart des PPA utilisent maince champ, ce qui n'aide donc pas beaucoup.
L'architecture concerne l'architecture du système d'exploitation. Montré comme b=i386ou b=amd64dans la sortie
Le nom de code est le nom de version de la distribution. Pour 16.04 c'est xenial. Pour 14.04 c'est trusty. Montré dans la apt-cache policysortie sous la forme n=xenialou n=trusty. Il en va généralement de même pour tous les référentiels d'une seule distribution. C'est pourquoi cela n'aide pas beaucoup.
L’autre ligne en apt-cache policysortie commençant par originindique l’origine Internet du référentiel. Il peut également être utilisé pour épingler. Mais ne doit pas être mélangé avec le champ de Releasefichiers Origin. Ce sont différents.
Nous utiliserons ces valeurs pour épingler un référentiel.
Alors, comment utilisons-nous l'épinglage 1 pour restreindre le référentiel?
Il existe plusieurs façons de contrôler l’épinglage et seul un petit sous-ensemble est efficace pour Ubuntu. Une explication détaillée dépasse toutefois le cadre de la réponse. Veuillez vous référer à la apt_preferencepage de manuel pour cela.
2. format de fichier Pin
Les fichiers de préférence pin ou apt résident dans le /etc/apt/preferences.ddossier. Chaque épinglage contient trois lignes.
La première ligne commence par Package:et un nom de paquet séparé par une virgule suit. Les expressions régulières et les globs sont autorisés
La deuxième ligne commence par Pin:et est utilisée pour cibler un ensemble de packages.
Si nous voulons épingler des paquets de xenialplus haut xenial-updates, nous utiliserons release a=xenial.
Si nous voulons épingler la version 5.0, nous l'utilisons version 5.0ici. Les modèles globaux sont autorisés.
Ou si nous voulons épingler les paquets depuis l'origine http://archive.ubuntu.com, nous les utiliserons origin "archive.ubuntu.com". Remarque, nous n'écrivons pas de http://protocole ici.
La troisième ligne commence par Pin-Priority:et sa valeur est un nombre. Ce qui signifie la priorité des éléments ciblés ci-dessus.
3. Utilisation Releasedes champs de fichiers pour définir la priorité
Dans cet exemple, les packages d' xenialarchives ont une priorité supérieure à xenial-updateset xenial-security.
Après avoir épinglé, exécuter une apt-cache policy nautilusmontre qu’il a effectivement donné une priorité plus élevée à une version inférieure d’ xenialarchive par rapport à une version supérieure d’ xenial-updatesarchive. Remarquez la Candidate:ligne.
Mais, si nous voulons également accorder la priorité aux packages fournis par PPA, cela ne fonctionnera pas. Parce que les PPA utilisent le même nom d'archive xenialpar défaut. Ainsi, l'attribution d'une priorité à a=xenials'appliquera également à ces packages. Par exemple (après avoir activé le PPA),
Maintenant, la version candidate provient d'un PPA. Les deux packages des xenialarchives du référentiel officiel Ubuntu et du PPA ont la même priorité 1001, car ils utilisent tous les deux la même valeur Archivedans le fichier Release. Pour réussir à épingler, nous devons combiner plus de champs dans le fichier Pin.
Quelques exemples
Épingler un référentiel PPA
Pour épingler des paquets à partir d'un référentiel, nous devons le cibler en utilisant les informations trouvées dans la apt-cache policycommande. Nous venons de voir que a=xenialcela ne nous aiderait pas à repérer un référentiel. Nous devons utiliser plusieurs champs ensemble en utilisant une virgule dans un fichier de préférences pour cibler précisément un référentiel.
Par exemple, pour empêcher tous les paquets de http://ppa.launchpad.net/oibaf/graphics-drivers/ppa, nous pouvons utiliser
Ici, nous utilisons la valeur du nom de code ainsi que celle Origindu PPA. (Bien que la valeur du nom de code ne soit pas requise ici en fait). Parfois, le référentiel peut manquer cette valeur. Dans ces cas, d'autres techniques devraient être utilisées. La sortie de apt-cache policy libgl1-mesa-glxdit que ça marche. Cela a réduit la priorité de tous les paquets de ce PPA.
Ignorer le fait qu'il est candidat. Ceci est arrivé, car il est déjà installé sur mon système . Vérifier la priorité à droite
Épingler un référentiel lorsque des informations de version sont manquantes
Si nous voulons épingler un référentiel dont les informations de version sont manquantes, comme celui-ci http://download.opensuse.org/repositories/home:/sarimkhan/xUbuntu_14.04, nous devons utiliser une autre méthode. Comme aucun autre référentiel n'utilise cette origine, nous pouvons utiliser en toute sécurité originpour épingler ce référentiel.
Et puis supprimez les commentaires de sources.list. Ce n’est peut-être pas la meilleure solution, mais au moins les apt-getpages de manuel ne spécifient aucun moyen de le faire.
Sur une note connexe, par exemple, le processus de mise à niveau de la distribution Ubuntu désactive tous les référentiels tiers lors de la mise à niveau (et n'exécute pas simplement une option permettant d'exclure temporairement ceux-ci).
Réponses:
Utilisez Pinning
Vous pouvez désactiver les mises à jour automatiques à partir de certains référentiels sans les supprimer entièrement via des
apt
stratégies:Pour désactiver les mises à jour automatiques du référentiel
repo
, ajoutez un fichier/etc/apt/preferences.d/repo
avec le contenu suivant:Ce qui donnera à tous les paquets de ce référentiel une priorité inférieure à celle des paquets déjà installés (qui en ont 100).
Pour plus d'informations
man apt_preferences
ou consultez le wiki de la communauté Ubuntu .la source
apt-cache policy package-name
release n=repo
ne cache personneVous pouvez spécifier une version avec
-t
option. À titre d'exemple, j'ai ajouté le référentiel suivant/etc/apt/sources.list
pour installer la dernière version d'Iceweasel:Comme vous le savez, il existe un même paquet
iceweasel
dans le référentiel officiel Debian. Si je veux installer Iceweasel à partir de cette version spécifique, je lance:depuis la page de manuel d'apt-get:
Je pense que c'est une meilleure solution.
UPDATE : Comme @SuB le mentionnait dans le commentaire, "
-t
spécifie la version et non le nom du référentiel. Ubuntu ne contient aucun nom de référentiel (contrairement au linux basé sur RedHat tel que RHEL, Fedora, CentOS, ...)".la source
apt-get
manuel,-t
spécifiez la version et non le nom du référentiel. Il n'y a pas de nom de référentiel dans Ubuntu (contrairement aux linux basés sur RedHat tels que RHEL, Fedora, CentOS, ...)-t xenial
fonctionne pour un seul paquet. mais toutes ses dépendances seront toujours récupérées des paquets supérieursRéponse courte
Vous devez épingler les référentiels que vous ne souhaitez pas installer avec une priorité inférieure à 100. Ce qui signifie (à partir de la
apt_preference
page de manuel)Et pour sélectionner un référentiel à épingler, vous utiliseriez des champs du
Release
fichier des référentiels . Tels quearchive
,label
,release
,version
etc. En spécifiant les valeurs de ces champs, vous pouvez sélectionner précisément un référentiel et affecter votre priorité préférée à elle. Consultez la page apt_preference pour plus de détails.Longue réponse
Avant de continuer, nous devons savoir quelque chose d’important à propos de l’épinglage. Ces comprend
Champs de
Release
fichiers et son mappage à laapt-cache policy
sortieFormat des fichiers de préférences apt
Utilisation
Release
des champs de fichiers pour définir la priorité1. Champs de
Release
fichier etapt-cache policy
sortieExtrait d'un article du wiki Debian
Vous verriez des résultats
apt-cache policy
comme ceux-ciLes valeurs dans ces lignes proviennent de
Release
fichiers.Description définit la description d'un référentiel. Ceci n'est pas affiché en
apt-cache policy
sortieLabel c'est l'étiquette du référentiel. De nombreux référentiels ont des étiquettes vides. C'est indiqué
l=<label>
dans la sortie.Origine indique l'origine du référentiel. Le référentiel officiel Ubuntu a
Ubuntu
pour valeur. Commeo=
dans la sortieVersion est la version d'une distribution. Il est 16.04 pour Xenial. Comme
v=
dans la sortieSuite est identique à Archive . Depuis le wiki debian, c’est le nom de la distribution de Debian à laquelle les paquets contenus dans ce répertoire appartiennent (ou sont conçus pour), c’est-à-dire stables, en test ou instables. . Pour Ubuntu, ce sont
release-updates
,release-security
etc. Par exemple,xenial-updates
,xenial-security
. Il est indiqué dans la sortie commea=xenial
,a=xenial-security
. Les PPA utilisent simplement le nom de version pour cela, c'est pourquoi cela n'aidera pas beaucoup Pinning.Le composant raconte le problème des licences. Il est
main
,multiverse
,restricted
,universe
dans Ubuntu. Dans la sortie, il est indiqué parc=main
ouc=restricted
etc. La plupart des PPA utilisentmain
ce champ, ce qui n'aide donc pas beaucoup.L'architecture concerne l'architecture du système d'exploitation. Montré comme
b=i386
oub=amd64
dans la sortieLe nom de code est le nom de version de la distribution. Pour 16.04 c'est
xenial
. Pour 14.04 c'esttrusty
. Montré dans laapt-cache policy
sortie sous la formen=xenial
oun=trusty
. Il en va généralement de même pour tous les référentiels d'une seule distribution. C'est pourquoi cela n'aide pas beaucoup.L’autre ligne en
apt-cache policy
sortie commençant parorigin
indique l’origine Internet du référentiel. Il peut également être utilisé pour épingler. Mais ne doit pas être mélangé avec le champ deRelease
fichiersOrigin
. Ce sont différents.Nous utiliserons ces valeurs pour épingler un référentiel.
Alors, comment utilisons-nous l'épinglage 1 pour restreindre le référentiel?
Il existe plusieurs façons de contrôler l’épinglage et seul un petit sous-ensemble est efficace pour Ubuntu. Une explication détaillée dépasse toutefois le cadre de la réponse. Veuillez vous référer à la
apt_preference
page de manuel pour cela.2. format de fichier Pin
Les fichiers de préférence pin ou apt résident dans le
/etc/apt/preferences.d
dossier. Chaque épinglage contient trois lignes.La première ligne commence par
Package:
et un nom de paquet séparé par une virgule suit. Les expressions régulières et les globs sont autorisésLa deuxième ligne commence par
Pin:
et est utilisée pour cibler un ensemble de packages.Si nous voulons épingler des paquets de
xenial
plus hautxenial-updates
, nous utiliseronsrelease a=xenial
.Si nous voulons épingler la version 5.0, nous l'utilisons
version 5.0
ici. Les modèles globaux sont autorisés.Ou si nous voulons épingler les paquets depuis l'origine
http://archive.ubuntu.com
, nous les utiliseronsorigin "archive.ubuntu.com"
. Remarque, nous n'écrivons pas dehttp://
protocole ici.La troisième ligne commence par
Pin-Priority:
et sa valeur est un nombre. Ce qui signifie la priorité des éléments ciblés ci-dessus.3. Utilisation
Release
des champs de fichiers pour définir la prioritéVoici un exemple
Dans cet exemple, les packages d'
xenial
archives ont une priorité supérieure àxenial-updates
etxenial-security
.Après avoir épinglé, exécuter une
apt-cache policy nautilus
montre qu’il a effectivement donné une priorité plus élevée à une version inférieure d’xenial
archive par rapport à une version supérieure d’xenial-updates
archive. Remarquez laCandidate:
ligne.Mais, si nous voulons également accorder la priorité aux packages fournis par PPA, cela ne fonctionnera pas. Parce que les PPA utilisent le même nom d'archive
xenial
par défaut. Ainsi, l'attribution d'une priorité àa=xenial
s'appliquera également à ces packages. Par exemple (après avoir activé le PPA),Maintenant, la version candidate provient d'un PPA. Les deux packages des
xenial
archives du référentiel officiel Ubuntu et du PPA ont la même priorité1001
, car ils utilisent tous les deux la même valeurArchive
dans le fichier Release. Pour réussir à épingler, nous devons combiner plus de champs dans le fichier Pin.Quelques exemples
Épingler un référentiel PPA
Pour épingler des paquets à partir d'un référentiel, nous devons le cibler en utilisant les informations trouvées dans la
apt-cache policy
commande. Nous venons de voir quea=xenial
cela ne nous aiderait pas à repérer un référentiel. Nous devons utiliser plusieurs champs ensemble en utilisant une virgule dans un fichier de préférences pour cibler précisément un référentiel.Par exemple, pour empêcher tous les paquets de
http://ppa.launchpad.net/oibaf/graphics-drivers/
ppa, nous pouvons utiliserIci, nous utilisons la valeur du nom de code ainsi que celle
Origin
du PPA. (Bien que la valeur du nom de code ne soit pas requise ici en fait). Parfois, le référentiel peut manquer cette valeur. Dans ces cas, d'autres techniques devraient être utilisées. La sortie deapt-cache policy libgl1-mesa-glx
dit que ça marche. Cela a réduit la priorité de tous les paquets de ce PPA.Ignorer le fait qu'il est candidat. Ceci est arrivé, car il est déjà installé sur mon système . Vérifier la priorité à droite
Épingler un référentiel lorsque des informations de version sont manquantes
Si nous voulons épingler un référentiel dont les informations de version sont manquantes, comme celui-ci
http://download.opensuse.org/repositories/home:/sarimkhan/xUbuntu_14.04
, nous devons utiliser une autre méthode. Comme aucun autre référentiel n'utilise cette origine, nous pouvons utiliser en toute sécuritéorigin
pour épingler ce référentiel.Remarque 1: cette origine correspond à l'origine Internet et non à celle qui spécifie le fournisseur dans le fichier de version.
Note 2: le
Pin-Priority
numéro a une signification particulière. Consultezapt_preference
la page de manuel pour plus de détails.la source
Une alternative basée sur l'interface graphique consisterait à ouvrir un centre logiciel et à sélectionner éditer> sources logicielles ...
il vous suffit de décocher les référentiels pour lesquels vous ne voulez pas de mises à jour.
J'espère que cela t'aides
la source
Le choix évident est de modifier
/etc/apt/sources.list
et de commenter tous les autres référentiels, puis d’exécuterEt puis supprimez les commentaires de
sources.list
. Ce n’est peut-être pas la meilleure solution, mais au moins lesapt-get
pages de manuel ne spécifient aucun moyen de le faire.Sur une note connexe, par exemple, le processus de mise à niveau de la distribution Ubuntu désactive tous les référentiels tiers lors de la mise à niveau (et n'exécute pas simplement une option permettant d'exclure temporairement ceux-ci).
la source
Une autre option de l'interface graphique consiste à simplement choisir l'origine dans le gestionnaire de paquets Synaptic.
la source