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.
La question initiale était: "Comment attribuer la priorité la plus élevée au référentiel local sans utiliser le fichier sources.list"
J'ai configuré un référentiel local avec les packages que j'ai téléchargés. Je l'utilise pour éviter de télécharger les mêmes packages sur Internet, lorsque je dois réinstaller Ubuntu. C'est un référentiel de base, créé avec apt-ftparchive packages . > Packages
. J'ai fait de cela un référentiel de confiance pour éviter l'avertissement "référentiel non authentifié". ( Lorsque vous avez un référentiel non approuvé, apt
ou synaptic
tentez de télécharger les mêmes packages sur Internet, car il est approuvé ).
J'utilise ce référentiel local depuis au moins 1 ans. Mais je dois toujours mettre ma ligne de référentiel local en haut du fichier sources.list
pour l'utiliser. Mais c’est ennuyeux, car je dois ouvrir un terminal et taper dessus chaque fois que je réinstalle Ubuntu, bien qu’il existe un meilleur outil, software-properties-gtk
. Je ne peux pas utiliser cet outil car il place la ligne source à la fin de `sources.list.
Et le problème réel est que, le apt
ou le synaptic
télécharge toujours un paquet à partir de la source mentionnée précédemment, sans vérifier si les paquetages sont déjà disponibles dans le référentiel local. Donc, je n'ai pas d'autre choix que de placer la source locale au sommet de sources.list
faisant terminal (en fait, je ne déteste pas le terminal, mais j'ai besoin d'une solution).
J'ai essayé cette méthode . Mais cela ne m'aide pas.
Mon fichier de préférence est-ce dans /etc/apt/preferences.d/local-pin-900
Package: *
Pin: release o=Local,n=ubuntu-local
Pin-Priority: 900
Mon dossier de sortie est ceci
Origin: Local
Label: Local-Ubuntu
Description: Local Ubuntu Repository
Codename: ubuntu-local
MD5Sum:
ed43222856d18f389c637ac3d7dd6f85 1043412 Packages
d41d8cd98f00b204e9800998ecf8427e 0 Sources
Lorsque j'active la préférence apt, le apt-cache policy
affiche correctement la préférence, par exemple. Il montre que le référentiel local a la priorité la plus élevée.
Mais lorsque je fais ceci, Sudo apt-get install <package-name>
, apt
essaie de le télécharger à partir d’Internet. Mais lorsque je place mon référentiel local en haut, il s’installe à partir du référentiel local.
Donc, Ma question est -> 'Est-il possible de forcer apt à utiliser le référentiel local lorsque le package est disponible dans le référentiel local, sans placer explicitement "le source locale "en haut de ma liste de référentiels (par exemple, le fichier sources.list)? '
Edit: la sortie de apt-cache policy $package_name
est la suivante
nautilus-wipe: installé: (aucun) candidat: 0.1.1-2 Tableau des versions: 0.1.1-2 0 500 http://archive.ubuntu.com/ubuntu/ precise/universe i386 Packages Fichier 900:/media/Main/Logiciel-Linux/Ubuntu/Precise/Packages
Cela montre que mon référentiel local a une préférence plus élevée, bien que ce ne soit pas celui qui arrive en premier dans le fichier sources.list
.
Voici le résultat de apt-get install nautilus-wipe
Lecture des listes de paquets ... Terminé Création d'un arbre de dépendance Lecture des informations d'état ... Terminé Les nouveaux packages suivants seront installés: nautilus-wipe 0 mis à niveau, 1 nouvellement installé, 0 à supprimer et 131 non mis à niveau. Besoin d’obtenir 30,7 Ko d’archives. Après cette opération, 150 ko de disque supplémentaire l'espace sera utilisé. 'http://archive.ubuntu.com/ubuntu/pool/universe/n/nautilus-wipe/nautilus-wipe_0.1.1-2_i386.deb' nautilus-wipe_0.1.1-2_i386 .deb 30730 MD5Sum: 7d497b8dfcefe1c0b51a45f3b0466994
Il essaie toujours d'obtenir le fichier d'Internet, même si je pense qu'il devrait être satisfait du fichier local.
Utiliser localhost n'a aucun effet. mais "" a mais n'était pas différent de ma méthode
Package: *
Pin: Origin ""
Pin-Priority: 1001
Je les ai utilisés avant de poster la question. Mais encore une fois j'ai essayé cela (pour surity). Le même résultat. apt-cache policy
montrant que mon référentiel local a bien la priorité la plus haute. mais quand j'ai essayé de l'installer il dit "Besoin d'obtenir XXX/XXX Ko d'archive".
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
, que apt-get
utilise pour 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: * Épingle: origine "" Épingle-priorité: 1001
Ceci 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 au même package version de votre référentiel local, répertoriez-les en haut dans le fichier /etc/apt/sources.list
>
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 fichier sources.list
. vous devez les placer en haut de "sources.list" si vous souhaitez attribuer la priorité la plus élevée à votre référentiel local.
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.
À l'aide du fichier /etc/apt/sources.list
, vous devez placer la ligne de votre référentiel local en haut de ce fichier. comme ci-dessous.
deb cdrom: [Kubuntu 12.04 LTS _Precise Pangolin_ - Release i386 (20120424)]/precise principale restreinte deb fichier:/media/Main/Precise-Debs-New / dedeb fichier:/media/Principal/Logiciel-Linux/Ubuntu/Précis /[.____. Printer.Fr.de.de. http://archive.ubuntu.com/ubuntu univers précis multivers principal restreint #Added by software-properties # deb cdrom: [Xubuntu 12.04 LTS _Precise Pangolin_ - Version i386 (20120423.1)]/Précis principal univers multivers restreint # deb cdrom: [Ubuntu 12.04 LTS _Precise Pangolin_ - Version i386 (20120423)]/précis principal # 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 precise # deb-src http://extras.ubuntu.com/ubuntu précis principal
Et oui, "apt_preference" n'a rien à voir avec la sélection d'instances des paquets avec la même version. Le point ici est que vous ne pouvez pas utiliser le fichier /etc/apt/preference
pour forcer la sélection/l’utilisation d’un fichier .deb
à partir 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. Dans ce dernier cas, vous devez utiliser le fichier /etc/apt/sources.list
avec la méthode susmentionnée.
On dirait que nous avons tous mal compris l'objectif apt_preference
, le manuel 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. Avec les 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 celui de la version .
Ces italiques ont été faites par le mien
J'ai la version précise de compiz-fusion-plugins-extra
, mais je l'ai désactivée pour la démonstration
Voici le fichier /etc/apt/preferences
, que apt-get
utilise pour 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: * Épingle: origine "" Épingle-priorité: 1001
Ce fichier indique apt-get
à installer à partir du référentiel local pour tous les packages ayant plusieurs versions existant dans un référentiel différent.
En d'autres termes, si j'ai le paquet xapps
avec la version 1.0
dans mon référentiel local et que ce même paquet xapps
existe dans le référentiel de Precise avec la version supérieure, disons 2.0
, apt-get
préférera la version du référentiel local, la version 1.0
.
Voici mon fichier /etc/apt/sources.list
deb http://archive.ubuntu.com/ubuntu univers principal précis multivers restreint deb-src http://archive.ubuntu.com/ubuntu univers précis multivers restreint #Added by software -properties deb http://security.ubuntu.com/ubuntu/ univers précis-sécurisé principal multivers restreint deb http://archive.ubuntu.com/ubuntu univers précis-mises à jour multivers principal 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 precise principal # deb- src http://extras.ubuntu.com/ubuntu main précis fichier deb:/media/Main/Logiciel-Linux/Ubuntu/Oneiric/#Ceci est un référentiel oneiric . fichier deb:/media/Main/Logiciel-Linux/Ubuntu/Natty/natty / deb fichier:/media/Main/Logiciel-Linux/Ubuntu/Natty/kubuntu/ fichier deb:/media/Main/Logiciel-Linux/Ubuntu/Natty/natty_new /[.____. VERDE .
Bien que j'aie répertorié le référentiel de precise plus tôt dans le fichier, le code apt-get
n'est pas sélectionné pour sélectionner le package dans 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 uniquement celui de la version.
Donc, le résultat de la commande apt-cache policy compiz-fusion-plugins-extra
était comme prévu ci-dessous
anwar @ edubuntu-lenovo:/etc/apt $ stratégie apt-cache compiz-fusion-plugins-extra compiz-fusion-plugins-extra: installé: (aucun) Candidat: 0.9.5.94-0ubuntu1/** sélection des versions inférieures comme priorité ** / Tableau des versions: 0.9.7.0 ~ bzr9-0ubuntu6 0 500 http://archive.ubuntu.com/ubuntu/ precise/universe i386 Packages 0.9.5.94-0ubuntu1 0 1001 fichier:/media/Main/Logiciel-Linux/Ubuntu/Oneiric/Packages 0.9.4-0ubuntu3 0 1001 fichier:/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
, qui est dans le référentiel 'precises'. bien que celui-ci figure en premier dans le fichier sources.list
.
apt-get
essayant d'installer compiz-fusion-plugins-extra
après avoir défini la priorité la plus élevée sur le référentiel local.anwar @ edubuntu-lenovo: ~ $ Sudo apt-get install compiz-fusion-plugins-extra Lire les listes de paquets ... Terminé Construire un arbre de dépendance Lecture des informations d'état ... Fait Les paquets suivants ont été installés automatiquement et ne sont plus nécessaires: X11-apps x11-xfs-utils xinit x11-session-utils libfs6 Utilisation 'apt-get autoremove' pour les supprimer. Les paquetages suivants seront installés: compiz-core compiz-plugins-default compiz-plugins-extra compiz-plugins- main-default libdecoration0 xserver-xorg-core xserver-xorg-video-intel Paquets suggérés: compizconfig-settings-manager xfonts-100dpi xfonts-75dpi Les paquets suivants seront supprimés: 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-x org-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 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 nouvellement 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 cela 8 294 Ko d’espace disque seront libérés. Voulez-vous continuer [Y/n]?
Étrange !!!, Il essaie de rétrograder les paquetages Compiz déjà installés et de résoudre avec précision les dépendances (correspondant à celui de Oneiric) avec le compiz-fusion-plugins-extra
!!! récemment sélectionné.
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 rétrograder. Mais comme ces paquets sont généralement installés, je ne les ai pas téléchargés, donc ils ne sont pas dans le dépôt local, d'où ce résultat) .
Conclusion : L'utilisation de /etc/apt/preferences
est uniquement recommandée avec un référentiel local, si vous disposez d'un référentiel complet dans le système local.
Ce qui est décrit par le manuel apt_preference
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).
/etc/apt/preferences
:Un exemple de forçage de apt-get
à sélectionner la version disponible à partir d'un référentiel personnalisé, au lieu de celui standard d'Ubuntu, peut être la distribution "Linux Mint". Ils utilisent ce fichier preference
personnalisé.
Paquet: * Broche: relâchez o = linuxmint Priorité de la broche: 700 Paquet: * Broche: Origine packages.linuxmint.com Priorité de la broche: 700 Paquet: * Pin: relâchez o = Ubuntu Priorité de la 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.
apt-get
après avoir défini la priorité la plus élevée sur le référentiel localJe voulais juste installer le paquet kubuntu-desktop
sous Ubuntu pour tester KDE. (j'ai oublié cela, j'ai défini une préférence à l'aide du fichier /etc/apt/preference
) . 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 en tant que source de référentiel) , j'ai exécutéSudo apt-get install kubuntu-desktop
, puis surpris en voyant le résultat ci-dessous.
anwar @ edubuntu-lenovo: ~ $ Sud apt-get install kubuntu-desktop Lire des listes de paquets ... Terminé Construire un arbre de dépendance Lecture des informations d'état ... Fait Certains paquets ne peuvent pas être installés. Cela peut signifier que vous avez Demandé une situation impossible ou, si vous utilisez la distribution unstable , Que certains packages requis n'ont pas encore été créés Ou ont été déplacés de Incoming. Les informations suivantes peuvent aider à résoudre le problème: Les paquetages suivants ont des dépendances non remplies: Kubuntu-desktop: Dépend de: language-selector-kde mais c’est 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 sera pas 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 sera pas 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 des paquets cassés en réserve.
J'ai été surpris par le résultat. tout à coup, je me souviens que j’ai défini une préférence ( pour écrire cette réponse ) dans /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
, le résultat était comme ci-dessous:
anwar @ edubuntu-lenovo: ~ $ règle d'apt-cache kubuntu-desktop kubuntu-desktop: installé: (aucun) Candidat: 1.222.1kde47 ~ ppa2 Tableau des versions: 1.254 0 500 copies: // Kubuntu 12.04 LTS _Precise Pangolin_ - Version i386 (20120424)/precise/principale i386 Paquets 500 http : //archive.ubuntu.com/ubuntu/ precise/main Packages i386 1.222.1kde47 ~ ppa2 0 1001 fichier:/media/Main/Logiciel-Linux/Ubuntu/Natty/natty/Paquets 1.222.1 0 Fichier 1001:/media/Main/Logiciel-Linux/Ubuntu/Natty/natty/Paquets 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 tous deux un numéro de version 1.254 , tandis que le référentiel local a une version 1.222.1kde47 ~ ppa2 , qui est une 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
essaye effectivement d’installer à partir d’un local, j’ai exécuté synaptic
et je l’ai eu, ce qui montre que le système Apt considère 1.222.1kde47 ~ ppa2 en tant que version candidate à installer.
Aussi apt-cache policy kubuntu-desktop
montrant les mêmes choses
anwar @ edubuntu-lenovo: ~ $ règle d'apt-cache kubuntu-desktop kubuntu-desktop: installé: (aucun) Candidat: 1.222.1kde47 ~ ppa2 Tableau des versions: 1.254 0 500 copies: // Kubuntu 12.04 LTS _Precise Pangolin_ - Version i386 (20120424)/precise/principale i386 Paquets 500 http : //archive.ubuntu.com/ubuntu/ precise/main Packages i386 1.222.1kde47 ~ ppa2 0 1001 fichier:/media/Main/Logiciel-Linux/Ubuntu/Natty/natty/Paquets 1.222.1 0 Fichier 1001:/media/Main/Logiciel-Linux/Ubuntu/Natty/natty/Paquets 1.222 0 Fichier 1001:/media/Main/Logiciel-Linux/Ubuntu/Natty/kubuntu/Packages
Pour résoudre ce problème, j'ai supprimé le fichier /etc/apt/preference
de Sudo rm /etc/apt/preference
.
Puis a exécuté à nouveau ceci encore apt-cache policy kubuntu-desktop
. ne voyant que cette sortie attendue.
anwar @ edubuntu-lenovo: ~ $ Sudo rm /etc/apt/preferences : Installé: (aucun) Candidat: 1.254 Tableau des versions: 1.254 0 500 caractères: // Kubuntu 12.04 LTS _Precise Pangolin_ - Libérez les packages i386 (20120424)/precise/main i386 principaux 500 http://archive.ubuntu.com/ubuntu/ precise/main Packages i386 1.222.1kde47 ~ ppa2 0 . Fichier 500:/media/Principal/Logiciel-Linux/Ubuntu/Natty/Natty/Packages 1.222.1 0 Fichier 500:/media/Principal/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 le résultat 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 paquets installée