Sommaire
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 que vous synaptic
essayez de télécharger les mêmes packages sur Internet, car il est sécurisé ).
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 sources.list
fichier pour l'utiliser. Mais c’est ennuyeux, car je dois ouvrir un terminal et taper dessus chaque fois que je réinstalle Ubuntu, même s’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 vrai problème, c’est que, apt
ou synaptic
télécharge toujours un package à partir de la source mentionnée précédemment, sans vérifier si les packages sont déjà disponibles dans le référentiel local. Donc, je n'ai pas d'autre choix que de placer la source locale en haut du sources.list
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-ce
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, la apt-cache policy
préférence est affichée correctement. Par exemple, cela montre que le référentiel local a la priorité la plus élevée.
Mais quand je fais cela 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 paquet est disponible dans le référentiel local, sans placer explicitement "la source locale" en haut de la liste de mes référentiels (par exemple, le fichier sources.list)? '
Edit: la sortie de apt-cache policy $package_name
est la suivante
nautilus-lingette: Installé: (aucun) Candidat: 0.1.1-2 Tableau de version: 0.1.1-2 0 500 paquets http://archive.ubuntu.com/ubuntu/ precise / universe i386 900 fichier: / 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 vient en premier dans le sources.list
fichier.
Voici la sortie de apt-get install nautilus-wipe
Lecture des listes de paquets ... Terminé Construire un arbre de dépendance Lecture des informations d'état ... Terminé Les NOUVEAUX packages suivants seront installés: essuie-nautile 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 d’espace disque supplémentaire seront utilisés. 'http://archive.ubuntu.com/ubuntu/pool/universe/n/nautilus-wipe/nautilus-wipe_0.1.1-2ii386.deb' nautilus-wipe_0.1.1-2_i386.deb 30730 MD5Sum: 7d497b8dfcefe1c0b51b45a6f
Il essaie toujours d'obtenir le fichier d'Internet, même si je pense qu'il devrait être satisfait du fichier local.
Résultat de l'utilisation de "" ou de localhost en tant que mediageek suggéré
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 en effet la plus haute priorité. mais quand j'ai essayé de l'installer il dit "Besoin d'obtenir XXX / XXX Ko d'archive".
apt-get
commande. Il est écrit "0 kb doit être téléchargé".apt-cache policy
apt-cache policy
et j'ai vu que le référentiel local avait une priorité plus élevée. Mais toujoursapt-get
essayer de l'installer à partir d'Internet. Je pense que ce n’est tout simplement pas possible sanssources.list
fichier.apt-cache policy
montré que la version était la mêmeRéponses:
La réponse courte:
Voici le fichier
/etc/apt/preferences
qui permetapt-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.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:
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:
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.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!Et le très important est dans le troisième paragraphe
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émonstrationVoici le fichier
/etc/apt/preferences
qui permetapt-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.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 version1.0
dans mon référentiel local et que ce même packagexapps
existe dans le référentiel de Precise avec une version supérieure2.0
,apt-get
préférera la version du référentiel local, c’est-à-dire version1.0
.Voici mon
/etc/apt/sources.list
dossierBien 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 manuelDonc, la sortie de la commande
apt-cache policy compiz-fusion-plugins-extra
était comme prévu ci-dessousIci, la version candidate est
0.9.5.94-0ubuntu1
(qui se trouve dans le référentiel local), pas0.9.7.0~bzr9-0ubuntu6 0
dans le référentiel 'precises'. bien que celui-ci soit mentionné en premier dans lesources.list
fichier.Exemple d’
apt-get
essai d’installationcompiz-fusion-plugins-extra
après avoir défini la priorité la plus élevée dans le référentiel local.É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
manuelUn 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 cepreference
fichier personnalisé .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 localJe 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.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: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 courusynaptic
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 chosesPour résoudre ce problème, j'ai supprimé le
/etc/apt/preference
fichier parsudo rm /etc/apt/preference
.Puis couru encore ceci encore
apt-cache policy kubuntu-desktop
. ne voyant que cette sortie attendue.Aussi couru cela à nouveau.
sudo apt-get install kubuntu-desktop
pour voir la sortie ci-dessous: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
la source