La réponse est courte :
Le fichier de préférences APT /etc/apt/preferences peut être utilisé pour contrôler les éléments suivants les versions des paquets qui seront sélectionnées pour l'installation.
Voici le fichier /etc/apt/preferences
qui apt-get
permet de décider quelle version il faut sélectionner s'il y a plusieurs versions d'un même paquet. Ainsi, tout paquet provenant du dépôt local aura la priorité sur les autres paquets.
Package: \*
Pin: origin ""
Pin-Priority: 1001
Cela ne contrôlera pas la version, mais la préférence de source si les deux paquets ont la même version. Si vous devez attribuer la priorité la plus élevée à un même paquet version dans votre répertoire local, listez-les en haut de la page de la section /etc/apt/sources.list
fichier>
Réponse à la question initiale :
Comment attribuer la priorité la plus élevée à un dépôt local sans utiliser le fichier sources.list ?
Il n'y a aucun moyen d'attribuer la priorité la plus élevée au dépôt local sans utiliser la fonction sources.list
vous devez les placer en tête de "sources.list" si vous voulez assigner la plus haute priorité à votre répertoire local.
Réponse synthétique à cette question :
Comment faire en sorte que apt-get préfère les paquets du dépôt local plutôt que de télécharger à nouveau la même version du paquet à partir des dépôts officiels ? Le dépôt local est signé et fiable. Nous avons déjà essayé apt preferences priority.
L'utilisation de la /etc/apt/sources.list
Vous devez mettre la ligne de votre dépôt local en haut de ce fichier, comme dans l'exemple ci-dessous.
deb cdrom:\[Kubuntu 12.04 LTS \_Precise Pangolin\_ - Release i386 (20120424)\]/ precise main restricted
deb file:/media/Main/Precise-Debs-New /
deb file:/media/Main/Linux-Software/Ubuntu/Precise /
deb http://archive.ubuntu.com/ubuntu precise main universe restricted multiverse
deb-src http://archive.ubuntu.com/ubuntu precise universe main multiverse restricted #Added by software-properties
# deb cdrom:\[Xubuntu 12.04 LTS \_Precise Pangolin\_ - Release i386 (20120423.1)\]/ precise main multiverse restricted universe
# deb cdrom:\[Ubuntu 12.04 LTS \_Precise Pangolin\_ - Release i386 (20120423)\]/ precise main restricted
# deb http://archive.canonical.com/ubuntu precise partner
# deb-src http://archive.canonical.com/ubuntu precise partner
# deb http://extras.ubuntu.com/ubuntu precise main
# deb-src http://extras.ubuntu.com/ubuntu precise main
Et oui, "apt_preference" n'a rien à voir avec la sélection instances des paquets avec la même version. Ce qu'il faut retenir, c'est que vous ne pouvez pas utiliser /etc/apt/preference
pour forcer la sélection/utilisation d'un fichier .deb
de votre dépôt local en attribuant la plus haute priorité à votre dépôt local. Ce fichier (préférence) est utilisé pour sélectionner une version spécifique, et non une instance spécifique (fichier .deb) de la même version. Dans ce dernier cas, vous devez utiliser /etc/apt/sources.list
avec la méthode mentionnée ci-dessus.
Explication :
Il semble que nous ayons tous mal compris la apt_preference
le manuel apt_preference décrit cela dans les 3 premiers paragraphes !!!
Le fichier de préférences APT /etc/apt/preferences peut être utilisé pour contrôler les éléments suivants les versions des paquets qui seront sélectionnées pour l'installation.
Plusieurs versions d'un paquetage peuvent être disponibles à l'installation lorsque le fichier sources.list(5) contient des références à plus d'une distribution (par exemple, stable et testing). APT attribue une priorité à chaque version disponible. Sous réserve des contraintes de dépendance, apt-get(8) sélectionne la version ayant la priorité la plus élevée pour l'installation. Le fichier de préférences d'APT remplace les priorités qu'APT attribue par défaut aux versions des paquets, donnant ainsi à l'utilisateur le contrôle sur la version sélectionnée pour l'installation.
Le point le plus important se trouve au troisième paragraphe
Plusieurs instances de la même version d'un paquetage peuvent être disponibles lorsque le fichier sources.list(5) contient des références à plus d'une source. Dans ce cas, le fichier sources.list(5) contient des références à plusieurs sources. apt-get(8) télécharge l'instance listée le plus tôt dans le fichier sources.list(5). Le fichier de préférences d'APT n'affecte pas le choix de l'instance, seulement le choix de la version .
Les italiques sont de mon fait
Voyons cela à l'aide d'un exemple :
J'ai la version précise de compiz-fusion-plugins-extra
mais je l'ai désactivé pour la démonstration
Voici le fichier /etc/apt/preferences
qui apt-get
permet de décider quelle version il faut sélectionner s'il y a plusieurs versions d'un même paquet. (Dans cet exemple, compiz-fusion-plugins-extra
a plusieurs versions.
Package: \*
Pin: origin ""
Pin-Priority: 1001
Ce fichier dit apt-get
pour installer à partir du dépôt local tous les paquets dont plusieurs versions existent dans différents dépôts.
En d'autres termes, si j'ai un paquet xapps
avec version 1.0
dans mon dépôt local, et ce même paquet xapps
existe dans le référentiel de Precise avec une version supérieure, disons 2.0
, apt-get
préférera la version du dépôt local, c'est-à-dire la version 1.0
.
Voici mon /etc/apt/sources.list
fichier
deb http://archive.ubuntu.com/ubuntu precise main universe restricted multiverse
deb-src http://archive.ubuntu.com/ubuntu precise universe main multiverse restricted #Added by software-properties
deb http://security.ubuntu.com/ubuntu/ precise-security universe main multiverse restricted
deb http://archive.ubuntu.com/ubuntu precise-updates universe main multiverse restricted
deb http://archive.ubuntu.com/ubuntu precise-backports universe main multiverse restricted
# deb http://archive.canonical.com/ubuntu precise partner
#deb-src http://archive.canonical.com/ubuntu precise partner
# deb http://extras.ubuntu.com/ubuntu precise main
# deb-src http://extras.ubuntu.com/ubuntu precise main
deb file:/media/Main/Linux-Software/Ubuntu/Oneiric / #this is oneiric repository.
deb file:/media/Main/Linux-Software/Ubuntu/Natty/natty /
deb file:/media/Main/Linux-Software/Ubuntu/Natty/kubuntu /
deb file:/media/Main/Linux-Software/Ubuntu/Natty/natty\_new /
Bien que j'aie indiqué le référentiel précis plus tôt dans le fichier, cela n'entraîne pas de problèmes de sécurité. apt-get
pour sélectionner un paquet dans ce dépôt. Comme décrit dans le manuel
Le fichier de préférences APT n'affecte pas le choix de l'instance, mais seulement le choix de la version.
Ainsi, la sortie de la commande apt-cache policy compiz-fusion-plugins-extra
était conforme aux attentes, comme indiqué ci-dessous
anwar@edubuntu-lenovo:/etc/apt$ apt-cache policy compiz-fusion-plugins-extra
compiz-fusion-plugins-extra:
Installed: (none)
Candidate: 0.9.5.94-0ubuntu1 / \*\*selecting lower versions for priority\*\* /
Version table:
0.9.7.0~bzr9-0ubuntu6 0
500 http://archive.ubuntu.com/ubuntu/ precise/universe i386 Packages
0.9.5.94-0ubuntu1 0
1001 file:/media/Main/Linux-Software/Ubuntu/Oneiric/ Packages
0.9.4-0ubuntu3 0
1001 file:/media/Main/Linux-Software/Ubuntu/Natty/natty/ Packages
Ici, la version candidate est 0.9.5.94-0ubuntu1
(qui se trouve dans le référentiel local), et non pas 0.9.7.0~bzr9-0ubuntu6 0
qui se trouve dans le dépôt de precises. bien que celui de precises ait été listé en premier dans le sources.list
fichier.
Un exemple d'exécution de apt-get
essayer d'installer compiz-fusion-plugins-extra
après avoir accordé la plus haute priorité au dépôt local.
anwar@edubuntu-lenovo:~$ sudo apt-get install compiz-fusion-plugins-extra
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
x11-apps x11-xfs-utils xinit x11-session-utils libfs6
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
compiz-core compiz-plugins-default compiz-plugins-extra
compiz-plugins-main-default libdecoration0 xserver-xorg-core
xserver-xorg-video-intel
Suggested packages:
compizconfig-settings-manager xfonts-100dpi xfonts-75dpi
The following packages will be REMOVED:
compiz compiz-gnome compizconfig-backend-gconf edubuntu-desktop
libcompizconfig0 ubuntu-desktop unity xorg xserver-xorg
xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-mouse
xserver-xorg-input-synaptics xserver-xorg-input-vmmouse
xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-ati
xserver-xorg-video-cirrus xserver-xorg-video-fbdev xserver-xorg-video-geode
xserver-xorg-video-mach64 xserver-xorg-video-mga xserver-xorg-video-neomagic
xserver-xorg-video-nouveau xserver-xorg-video-openchrome
xserver-xorg-video-qxl xserver-xorg-video-r128 xserver-xorg-video-radeon
xserver-xorg-video-s3 xserver-xorg-video-savage
xserver-xorg-video-siliconmotion xserver-xorg-video-sis
xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-trident
xserver-xorg-video-vesa xserver-xorg-video-vmware
The following NEW packages will be installed:
compiz-fusion-plugins-extra compiz-plugins-extra
The following packages will be DOWNGRADED:
compiz-core compiz-plugins-default compiz-plugins-main-default
libdecoration0 xserver-xorg-core xserver-xorg-video-intel
0 upgraded, 2 newly installed, 6 downgraded, 37 to remove and 698 not upgraded.
Need to get 0 B/5,772 kB of archives.
After this operation, 8,294 kB disk space will be freed.
Do you want to continue \[Y/n\]?
Étrange ! !!, il essaie de rétrograder les paquets compiz déjà installés pour résoudre les dépendances (correspondant à celles d'Oneiric) avec les nouveaux paquets sélectionnés. compiz-fusion-plugins-extra
! !!.
Le plus dangereux est qu'il essaie de supprimer les paquets de pilotes graphiques (xserver-xorg-....) pour éviter les conflits avec les nouveaux ordinateurs.
(Probablement, si je les avais aussi dans mon dépôt local, ils pourraient vouloir rétrograder en toute sécurité. Mais comme ces paquets sont habituellement installés, je ne les ai pas téléchargés, ils ne sont donc pas dans le dépôt local, d'où ce résultat). .
Conclusion : Ainsi, en utilisant /etc/apt/preferences
n'est recommandé qu'avec un référentiel local, si vous disposez d'un référentiel complet dans votre système local.
Que se passe-t-il si plusieurs instances (.deb file) de la même version existent dans plusieurs dépôts.
Qui est décrite par le apt_preference
manuel
Plusieurs instances de la même version d'un paquetage peuvent être disponibles lorsque le fichier sources.list(5) contient des références à plus d'une source. Dans ce cas, apt-get(8) télécharge l'instance listée en premier dans le fichier sources.list(5).
Exemple de cas d'utilisation /etc/apt/preferences
fichier :
Un exemple de forçage apt-get
pour sélectionner une version disponible à partir d'un répertoire personnalisé, au lieu du répertoire standard d'Ubuntu, peut être la distribution "Linux Mint". Elle utilise cette version personnalisée de preference
fichier.
Package: \*
Pin: release o=linuxmint
Pin-Priority: 700
Package: \*
Pin: origin packages.linuxmint.com
Pin-Priority: 700
Package: \*
Pin: release o=Ubuntu
Pin-Priority: 500
Cela les oblige à fournir des paquets lorsqu'ils les ont dans leurs dépôts. Mais s'ils ne les ont pas, ils utilisent le dépôt standard d'Ubuntu.
Un exemple en cours d'exécution apt-get
après avoir donné la plus haute priorité au dépôt local
Je voulais juste installer kubuntu-desktop
sur Ubuntu pour tester KDE. (J'ai oublié de le faire, j'ai défini une préférence à l'aide de /etc/apt/preference
fichier) . J'avais une iso de kubuntu-12.04-alternate-installer, donc j'ai pensé que je pouvais l'utiliser.
(après avoir correctement défini l'iso comme source du dépôt) J'ai couru
sudo apt-get install kubuntu-desktop
puis surpris de voir le résultat ci-dessous.
anwar@edubuntu-lenovo:~$ sudo apt-get install kubuntu-desktop
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
kubuntu-desktop : Depends: language-selector-kde but it is not going to be installed
Recommends: amarok but it is not going to be installed
Recommends: apturl-kde but it is not going to be installed
Recommends: gdebi-kde but it is not going to be installed
Recommends: gpgsm but it is not going to be installed
Recommends: ibus-qt4 but it is not going to be installed
Recommends: jockey-kde but it is not going to be installed
Recommends: kdegraphics-strigi-plugins but it is not going to be installed
Recommends: kdepim-wizards but it is not going to be installed
Recommends: kpackagekit but it is not going to be installed
Recommends: libreoffice-kde but it is not going to be installed
Recommends: libreoffice-style-oxygen but it is not going to be installed
Recommends: network-manager-pptp-kde but it is not going to be installed
Recommends: plasma-widget-facebook but it is not going to be installed
Recommends: plasma-widget-kimpanel but it is not going to be installed
Recommends: usb-creator-kde but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
J'ai été surpris par le résultat. Je me suis soudain souvenu que j'avais défini une préférence ( pour avoir écrit cette réponse ) en /etc/apt/preference
pour donner la plus haute priorité à mon dépôt local.
J'ai donc lancé cette opération : apt-cache policy kubuntu-desktop
Le résultat est le suivant :
anwar@edubuntu-lenovo:~$ apt-cache policy kubuntu-desktop
kubuntu-desktop:
Installed: (none)
Candidate: 1.222.1kde47~ppa2
Version table:
1.254 0
500 cdrom://Kubuntu 12.04 LTS \_Precise Pangolin\_ - Release i386 (20120424)/ precise/main i386 Packages
500 http://archive.ubuntu.com/ubuntu/ precise/main i386 Packages
1.222.1kde47~ppa2 0
1001 file:/media/Main/Linux-Software/Ubuntu/Natty/natty/ Packages
1.222.1 0
1001 file:/media/Main/Linux-Software/Ubuntu/Natty/natty/ Packages
1.222 0
1001 file:/media/Main/Linux-Software/Ubuntu/Natty/kubuntu/ Packages
Dans cette sortie, nous voyons que le "cdrom" et le "dépôt principal précis" ont tous deux le numéro de version suivant 1.254 alors que le référentiel local a la version 1.222.1kde47~ppa2 qui est une version inférieure. Bien qu'ils soient placés avant les paquets locaux dans le fichier sources.list, les paquets locaux sont prioritaires.
Pour voir explicitement que apt-get
essaie en effet d'installer à partir d'un fichier local, j'ai exécuté synaptic
et j'ai obtenu ceci, qui montre que le système Apt prend en compte 1.222.1kde47~ppa2 comme la version candidate à installer.
En outre apt-cache policy kubuntu-desktop
montrant les mêmes choses
anwar@edubuntu-lenovo:~$ apt-cache policy kubuntu-desktop
kubuntu-desktop:
Installed: (none)
Candidate: 1.222.1kde47~ppa2
Version table:
1.254 0
500 cdrom://Kubuntu 12.04 LTS \_Precise Pangolin\_ - Release i386 (20120424)/ precise/main i386 Packages
500 http://archive.ubuntu.com/ubuntu/ precise/main i386 Packages
1.222.1kde47~ppa2 0
1001 file:/media/Main/Linux-Software/Ubuntu/Natty/natty/ Packages
1.222.1 0
1001 file:/media/Main/Linux-Software/Ubuntu/Natty/natty/ Packages
1.222 0
1001 file:/media/Main/Linux-Software/Ubuntu/Natty/kubuntu/ Packages
Pour résoudre ce problème, j'ai supprimé le /etc/apt/preference
fichier par sudo rm /etc/apt/preference
.
Puis, il a recommencé à courir, encore et encore apt-cache policy kubuntu-desktop
. je ne vois que la sortie attendue.
anwar@edubuntu-lenovo:~$ sudo rm /etc/apt/preferences
anwar@edubuntu-lenovo:~$ sudo apt-cache policy kubuntu-desktop
kubuntu-desktop:
Installed: (none)
Candidate: 1.254
Version table:
1.254 0
500 cdrom://Kubuntu 12.04 LTS \_Precise Pangolin\_ - Release i386 (20120424)/ precise/main i386 Packages
500 http://archive.ubuntu.com/ubuntu/ precise/main i386 Packages
1.222.1kde47~ppa2 0
500 file:/media/Main/Linux-Software/Ubuntu/Natty/natty/ Packages
1.222.1 0
500 file:/media/Main/Linux-Software/Ubuntu/Natty/natty/ Packages
1.222 0
500 file:/media/Main/Linux-Software/Ubuntu/Natty/kubuntu/ Packages
Je l'ai également relancé. sudo apt-get install kubuntu-desktop
pour obtenir le résultat ci-dessous :
......... Unnecessary details deleted .........
0 upgraded, 213 newly installed, 0 to remove and 150 not upgraded.
Need to get 0 B/89.6 MB of archives.
After this operation, 269 MB of additional disk space will be used.
Do you want to continue \[Y/n\]?
Vous pouvez consulter le résultat complet <a href="http://paste.ubuntu.com/1072503/" rel="noreferrer">aquí</a>
Je suis donc presque sûr de la partie Explanation.
Référence 1 : Le manuel apt_preference
Référence 2 : Comment conserver une version spécifique des paquets installés ?