La réponse courte:
Le fichier de préférences APT / etc / apt / preferences peut être utilisé pour contrôler les versions des packages à sélectionner pour l'installation.
Voici le fichier /etc/apt/preferences
qui permet apt-get
de décider quelle version il doit sélectionner s’il existe plusieurs versions d’un même paquet. Avec cela, tout paquet provenant du référentiel local aura priorité sur les autres paquets.
Paquet: *
Pin: origine ""
Priorité de broche: 1001
Cela ne contrôlera pas la version, mais la préférence source si les deux packages ont la même version. Si vous devez attribuer la priorité la plus élevée à la même version de package dans votre référentiel local, répertoriez-les en haut du /etc/apt/sources.list
fichier>
Réponse à la question initiale:
Comment attribuer la priorité la plus élevée au référentiel local sans utiliser le fichier sources.list?
Il n’existe aucun moyen d’attribuer la priorité la plus élevée au référentiel local sans utiliser le sources.list
fichier. vous devez les placer en haut de "sources.list" si vous souhaitez attribuer la priorité la plus élevée à votre référentiel local.
Réponse sommaire à cette question:
Comment faire en sorte qu'apt-get préfère les paquets de référentiels locaux au lieu de télécharger à nouveau la même version de paquet depuis les référentiels officiels? Le référentiel local est signé et approuvé. Nous avons déjà essayé la priorité avec les préférences apt.
En utilisant le /etc/apt/sources.list
fichier, vous devez placer la ligne de votre référentiel local en haut de ce fichier. comme celui ci-dessous.
deb cdrom: [Kubuntu 12.04 LTS _Precise Pangolin_ - Release i386 (20120424)] / precise principale restreinte
Fichier deb: / media / Main / Precise-Debs-New /
Fichier deb: / media / Main / Logiciel Linux / Ubuntu / Precise /
deb http://archive.ubuntu.com/ubuntu multivers restreint à l'univers principal précis
deb-src http://archive.ubuntu.com/ubuntu univers précis principal multivers restreint #Added by software-properties
# deb cdrom: [Xubuntu 12.04 LTS _Précis Pangolin_ - Version i386 (20120423.1)] / principal univers restreint multivers principal
# deb cdrom: [Ubuntu 12.04 LTS _Precise Pangolin_ - Release i386 (20120423)] / precise principale restreinte
# deb http://archive.canonical.com/ubuntu partenaire précis
# deb-src http://archive.canonical.com/ubuntu partenaire précis
# deb http://extras.ubuntu.com/ubuntu main précise
# deb-src http://extras.ubuntu.com/ubuntu main précise
Et oui, "apt_preference" n'a rien à voir avec la sélection d' instances de paquets avec la même version. Le point ici est que vous ne pouvez pas utiliser /etc/apt/preference
fichier pour forcer la sélection / l’utilisation d’un .deb
fichier de votre référentiel local en attribuant la priorité la plus élevée à votre référentiel 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. Pour ce dernier cas, vous devez utiliser le /etc/apt/sources.list
fichier avec la méthode susmentionnée.
Explication:
On dirait que nous avons tous mal compris l' apt_preference
objectif, le manuel d'apt_preference le décrit dans les 3 premiers paragraphes!
Le fichier de préférences APT / etc / apt / preferences peut être utilisé pour contrôler les versions des packages à sélectionner pour l'installation.
Plusieurs versions d'un package peuvent être disponibles pour l'installation lorsque le fichier sources.list (5) contient des références à plusieurs distributions (par exemple, stable et testing). APT attribue une priorité à chaque version disponible. Sous réserve de contraintes de dépendance, apt-get (8) sélectionne la version avec la priorité la plus élevée pour l’installation. Le fichier de préférences APT remplace les priorités que APT attribue par défaut aux versions de package, donnant ainsi à l'utilisateur le contrôle sur celle qui est sélectionnée pour l'installation.
Et le très important est dans le troisième paragraphe
Plusieurs instances de la même version d'un package peuvent être disponibles lorsque le fichier sources.list (5) contient des références à plusieurs sources. Dans ce cas, apt-get (8) télécharge l'instance la plus ancienne dans le fichier sources.list (5). Le fichier de préférences APT n’affecte pas le choix de l’instance, mais seulement le choix de la version .
Ces italiques ont été faites par moi
Voyons cela avec un exemple:
J'ai la version précise de compiz-fusion-plugins-extra
, mais j'ai désactivé cette démonstration
Voici le fichier /etc/apt/preferences
qui permet apt-get
de décider quelle version il doit sélectionner s’il existe plusieurs versions d’un même paquet. (Dans cet exemple, compiz-fusion-plugins-extra
a plusieurs versions.
Paquet: *
Pin: origine ""
Priorité de broche: 1001
Ce fichier indique que l' apt-get
installation à partir du référentiel local de tous les packages ayant plusieurs versions existe dans un référentiel différent.
En d’autres termes, si j’ai un package xapps
avec une version 1.0
dans mon référentiel local et que ce même package xapps
existe dans le référentiel de Precise avec une version supérieure 2.0
, apt-get
préférera la version du référentiel local, c’est-à-dire version 1.0
.
Voici mon /etc/apt/sources.list
dossier
deb http://archive.ubuntu.com/ubuntu multivers restreint à l'univers principal précis
deb-src http://archive.ubuntu.com/ubuntu univers précis principal multivers restreint #Added by software-properties
deb http://security.ubuntu.com/ubuntu/ univers de précision précis multivers restreint
deb http://archive.ubuntu.com/ubuntu precise-updates univers principal multivers restreint
deb http://archive.ubuntu.com/ubuntu univers précis-backports principal multivers restreint
# deb http://archive.canonical.com/ubuntu partenaire précis
# deb-src http://archive.canonical.com/ubuntu partenaire précis
# deb http://extras.ubuntu.com/ubuntu main précise
# deb-src http://extras.ubuntu.com/ubuntu main précise
Fichier deb: / media / Main / Logiciel-Linux / Ubuntu / Oneiric / # Ceci est un référentiel oneiric.
Fichier deb: / media / Main / Logiciel Linux / Ubuntu / Natty / Natty /
Fichier deb: / media / Main / Logiciel Linux / Ubuntu / Natty / kubuntu /
Fichier deb: / media / Main / Logiciel Linux / Ubuntu / Natty / natty_new /
Bien que j'aie déjà énuméré le référentiel de précision dans le fichier, il n'est pas nécessaire apt-get
de sélectionner un package à partir de ce référentiel. 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.
Donc, la sortie de la commande apt-cache policy compiz-fusion-plugins-extra
était comme prévu ci-dessous
anwar @ edubuntu-lenovo: / etc / apt $ politique d'apt-cache compiz-fusion-plugins-extra
compiz-fusion-plugins-extra:
Installé: (aucun)
Candidat: 0.9.5.94-0ubuntu1 / ** sélectionnant les versions inférieures comme priorité ** /
Tableau de version:
0.9.7.0 ~ bzr9-0ubuntu6 0
500 paquets http://archive.ubuntu.com/ubuntu/ precise / universe i386
0.9.5.94-0ubuntu1 0
Fichier 1001: / media / Main / Logiciel Linux / Ubuntu / Oneiric / Packages
0.9.4-0ubuntu3 0
Fichier 1001: / media / Main / Logiciel Linux / Ubuntu / Natty / natty / Packages
Ici, la version candidate est 0.9.5.94-0ubuntu1
(qui se trouve dans le référentiel local), pas 0.9.7.0~bzr9-0ubuntu6 0
dans le référentiel 'precises'. bien que celui-ci soit mentionné en premier dans le sources.list
fichier.
Exemple d’ apt-get
essai d’installation compiz-fusion-plugins-extra
après avoir défini la priorité la plus élevée dans le référentiel local.
anwar @ edubuntu-lenovo: ~ $ sudo apt-get installer compiz-fusion-plugins-extra
Lecture des listes de paquets ... Terminé
Construire un arbre de dépendance
Lecture des informations d'état ... Terminé
Les packages suivants ont été installés automatiquement et ne sont plus nécessaires:
x11-apps x11-xfs-utils xinit x11-session-utils libfs6
Utilisez 'apt-get autoremove' pour les supprimer.
Les paquets supplémentaires suivants seront installés:
compiz-core compiz-plugins-default compiz-plugins-extra
compiz-plugins-main-default libdecoration0 xserver-xorg-core
xserver-xorg-video-intel
Forfaits suggérés:
compizconfig-settings-manager xfonts-100dpi xfonts-75dpi
Les paquets suivants seront supprimés:
compiz-gnome compizconfig-backend-gconf edubuntu-desktop
libcompizconfig0 unité ubuntu-desktop 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-sauvage
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
Les NOUVEAUX packages suivants seront installés:
compiz-fusion-plugins-extra compiz-plugins-extra
Les packages suivants seront DOWNGRADED:
compiz-core compiz-plugins-default compiz-plugins-main-default
libdecoration0 xserver-xorg-core xserver-xorg-video-intel
0 mis à niveau, 2 récemment installés, 6 rétrogradés, 37 à supprimer et 698 non mis à niveau.
Besoin d'obtenir 0 B / 5 772 Ko d'archives.
Après cette opération, 8 294 Ko d'espace disque seront libérés.
Voulez-vous continuer [O / n]?
Étrange !!!, Il essaie de rétrograder les paquetages déjà installés de compiz de résoudre précisément les dépendances (correspondant à celui de Oneiric) avec nouvellement sélectionné compiz-fusion-plugins-extra
!!!.
Ce qui est plus dangereux, c'est d'essayer de supprimer les packages de pilotes graphiques (xserver-xorg -....) pour éviter les conflits avec les nouvelles compositions.
(Probablement, si je les avais aussi dans mon référentiel local, ils voudront sans risque déclasser. Mais comme ces paquets sont généralement installés, je ne les ai pas téléchargés, donc je ne suis pas dans le dépôt local, d'où ce résultat) .
Conclusion : Il /etc/apt/preferences
est donc recommandé d'utiliser uniquement avec un référentiel local, si vous disposez d'un référentiel complet dans le système local.
Que se passe-t-il si plusieurs instances (fichier .deb) de la même version existent dans de nombreux référentiels?
Ce qui est décrit par le apt_preference
manuel
Plusieurs instances de la même version d'un package peuvent être disponibles lorsque le fichier sources.list (5) contient des références à plusieurs sources. Dans ce cas, apt-get (8) télécharge l'instance la plus ancienne dans le fichier sources.list (5).
Un exemple de cas d'utilisation de /etc/apt/preferences
fichier:
La apt-get
distribution "Linux Mint" est un exemple de forcer à sélectionner une version disponible à partir d'un référentiel personnalisé, au lieu de celle standard d'Ubuntu. Ils utilisent ce preference
fichier personnalisé .
Paquet: *
Pin: release o = linuxmint
Priorité de broche: 700
Paquet: *
Pin: origine packages.linuxmint.com
Priorité de broche: 700
Paquet: *
Pin: release o = Ubuntu
Priorité de broche: 500
Cela les amène effectivement à fournir des paquets quand ils les ont dans leurs référentiels. Mais s’ils ne les ont pas, ils utilisent le référentiel standard d’Ubuntu.
Un exemple en cours d'exécution apt-get
après la définition de la priorité la plus élevée sur le référentiel local
Je voulais juste installer un kubuntu-desktop
paquet sur Ubuntu pour tester KDE. (J'ai oublié ça, j'ai défini une préférence en utilisant un /etc/apt/preference
fichier) . J'avais une iso de l'installateur-remplaçant kubuntu-12.04, donc je pensais pouvoir l'utiliser.
(après avoir correctement défini l’iso comme source de référentiel) , j’ai couru
sudo apt-get install kubuntu-desktop
puis surpris en voyant le résultat ci-dessous.
anwar @ edubuntu-lenovo: ~ $ sudo apt-get install kubuntu-desktop
Lecture des listes de paquets ... Terminé
Construire un arbre de dépendance
Lecture des informations d'état ... Terminé
Certains paquets n'ont pas pu être installés. Cela peut signifier que vous avez
demandé une situation impossible ou si vous utilisez l'instable
distribution que certains paquets requis n'ont pas encore été créés
ou été déplacé de Incoming.
Les informations suivantes peuvent aider à résoudre le problème:
Les paquets suivants ont des dépendances non satisfaites:
kubuntu-desktop: Dépend de: language-selector-kde mais il ne va pas être installé
Recommande: amarok mais il ne va pas être installé
Recommande: apturl-kde mais il ne va pas être installé
Recommande: gdebi-kde mais il ne va pas être installé
Recommande: gpgsm mais il ne va pas être installé
Recommande: ibus-qt4 mais il ne va pas être installé
Recommande: jockey-kde mais il ne va pas être installé
Recommande: kdegraphics-strigi-plugins mais il ne va pas être installé
Recommande: kdepim-wizards mais il ne va pas être installé
Recommande: kpackagekit mais il ne va pas être installé
Recommande: libreoffice-kde mais il ne va pas être installé
Recommande: libreoffice-style-oxygen mais il ne va pas être installé
Recommande: network-manager-pptp-kde mais il ne va pas être installé
Recommande: plasma-widget-facebook mais il ne va pas être installé
Recommande: plasma-widget-kimpanel mais il ne va pas être installé
Recommande: usb-creator-kde mais il ne va pas être installé
E: Impossible de corriger les problèmes, vous avez mis en attente des paquets cassés.
J'ai été surpris par le résultat. Du coup, je me souviens que j’ai défini une préférence ( pour écrire cette réponse ) /etc/apt/preference
afin de définir la priorité la plus élevée pour mon référentiel local.
donc, j'ai lancé ceci:, apt-cache policy kubuntu-desktop
la sortie était comme ci-dessous:
anwar @ edubuntu-lenovo: ~ $ politique apt-cache kubuntu-desktop
kubuntu-desktop:
Installé: (aucun)
Candidat: 1.222.1kde47 ~ ppa2
Tableau de version:
1,254 0
500 CD-ROM: // Kubuntu 12.04 LTS _Précis Pangolin_ - Version i386 (20120424) / precise / main i386
500 http://archive.ubuntu.com/ubuntu/ precise / main Packages i386
1.222.1kde47 ~ ppa2 0
Fichier 1001: / media / Main / Logiciel Linux / Ubuntu / Natty / natty / Packages
1.222.1 0
Fichier 1001: / media / Main / Logiciel Linux / Ubuntu / Natty / natty / Packages
1.222 0
Fichier 1001: / media / Main / Logiciel Linux / Ubuntu / Natty / kubuntu / Packages
Dans cette sortie, nous voyons que le "cdrom" et le "référentiel principal précis" ont le numéro de version 1.254 , tandis que le référentiel local a la version 1.222.1kde47 ~ ppa2 , version inférieure. Bien qu'ils soient placés avant les fichiers locaux dans le fichier sources.list, les packages locaux ont la priorité.
Pour voir explicitement que apt-get
c'est bien d'essayer d'installer depuis un local, j'ai couru synaptic
et j'ai obtenu ce qui montre que le système Apt considère 1.222.1kde47 ~ ppa2 comme la version candidate à installer.
Montrant également apt-cache policy kubuntu-desktop
les mêmes choses
anwar @ edubuntu-lenovo: ~ $ politique apt-cache kubuntu-desktop
kubuntu-desktop:
Installé: (aucun)
Candidat: 1.222.1kde47 ~ ppa2
Tableau de version:
1,254 0
500 CD-ROM: // Kubuntu 12.04 LTS _Précis Pangolin_ - Version i386 (20120424) / precise / main i386
500 http://archive.ubuntu.com/ubuntu/ precise / main Packages i386
1.222.1kde47 ~ ppa2 0
Fichier 1001: / media / Main / Logiciel Linux / Ubuntu / Natty / natty / Packages
1.222.1 0
Fichier 1001: / media / Main / Logiciel Linux / Ubuntu / Natty / natty / Packages
1.222 0
Fichier 1001: / media / Main / Logiciel Linux / 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 couru encore ceci encore apt-cache policy kubuntu-desktop
. ne voyant que cette sortie attendue.
anwar @ edubuntu-lenovo: ~ $ sudo rm / etc / apt / preferences
anwar @ edubuntu-lenovo: ~ $ sudo politique d'apt-cache kubuntu-desktop
kubuntu-desktop:
Installé: (aucun)
Candidat: 1.254
Tableau de version:
1,254 0
500 CD-ROM: // Kubuntu 12.04 LTS _Précis Pangolin_ - Version i386 (20120424) / precise / main i386
500 http://archive.ubuntu.com/ubuntu/ precise / main Packages i386
1.222.1kde47 ~ ppa2 0
500 fichier: / media / Main / Logiciel Linux / Ubuntu / Natty / Natty / Packages
1.222.1 0
500 fichier: / media / Main / Logiciel Linux / Ubuntu / Natty / Natty / Packages
1.222 0
Fichier 500: / media / Main / Logiciel Linux / Ubuntu / Natty / kubuntu / Packages
Aussi couru cela à nouveau. sudo apt-get install kubuntu-desktop
pour voir la sortie ci-dessous:
......... Détails inutiles supprimés .........
0 mis à niveau, 213 nouvellement installés, 0 à supprimer et 150 non mis à niveau.
Besoin d'obtenir 0 B / 89,6 Mo d'archives.
Après cette opération, 269 Mo d’espace disque supplémentaire seront utilisés.
Voulez-vous continuer [O / n]?
Vous pouvez vérifier le résultat complet ici
Ensuite, je suis à peu près sûr de la partie Explication.
Référence 1: Le manuel apt_preference
Référence 2: Comment garder une version spécifique de packages installée