Je suis sur Ubuntu 10.04, et j'essaie de mettre en place un référentiel à l'aide de reprepro
. J'aimerais également que tout ce qui se trouve dans ce dépôt soit préféré à tout autre, même si les paquets sont d'anciennes versions. (Il ne contiendra qu'un ensemble de paquets sélectionnés).
Cependant, je ne parviens pas à faire fonctionner l'épinglage et je pense que cela a quelque chose à voir avec le dépôt d'archives, plutôt qu'avec le système de gestion de l'information. apt
sur le client.
J'ai suivi les étapes suivantes pour configurer mon référentiel
-
Installation d'un serveur web (mon choix personnel ici est Cherokee),
-
Création du répertoire
/var/www/apt/
, -
Création du fichier
conf/distributions
comme ça :Origin: Shteef Label: Shteef Suite: lucid Version: 10.04 Codename: lucid Architectures: i386 amd64 source Components: main Description: My personal repository
-
Ran
reprepro export
de la/var/www/apt/
répertoire.
Maintenant, sur n'importe quelle autre machine, je peux ajouter ce dépôt (vide) par HTTP à ma base de données. /etc/apt/sources.list
et exécuter apt-get update
sans aucune erreur :
Ign http://archive.lan lucid Release.gpg
Ign http://archive.lan/apt/ lucid/main Translation-en_US
Get:1 http://archive.lan lucid Release [2,244B]
Ign http://archive.lan lucid/main Packages
Ign http://archive.lan lucid/main Sources
Ign http://archive.lan lucid/main Packages
Ign http://archive.lan lucid/main Sources
Hit http://archive.lan lucid/main Packages
Hit http://archive.lan lucid/main Sources
Dans mon cas, je veux maintenant utiliser une ancienne version d'Asterisk, à savoir Asterisk 1.4. J'ai reconstruit le asterisk-1:1.4.21.2~dfsg-3ubuntu2.1
d'Ubuntu 9.04 (avec quelques petits changements pour corriger les dépendances) et je l'ai téléchargé dans mon dépôt.
A ce stade, je peux voir le nouveau paquet dans aptitude
mais il préfère naturellement la nouvelle version d'Asterisk 1.6 actuellement dans les dépôts d'Ubuntu 10.04. Pour essayer de corriger cela, j'ai créé /etc/apt/preferences.d/personal
comme ça :
Package: *
Pin: release o=Shteef
Pin-Priority: 1000
Mais lorsque j'essaie d'installer le asterisk
il préférera toujours la version 1.6 à ma propre version 1.4. C'est ce que apt-cache policy asterisk
montre :
asterisk:
Installed: (none)
Candidate: 1:1.6.2.5-0ubuntu1
Version table:
1:1.6.2.5-0ubuntu1 0
500 http://nl.archive.ubuntu.com/ubuntu/ lucid/universe Packages
1:1.4.21.2~dfsg-3ubuntu2.1shteef1 0
500 http://archive.lan/apt/ lucid/main Packages
Il est clair qu'il ne capte pas ma broche. En fait, quand je lance juste apt-cache policy
J'obtiens ce qui suit :
Package files:
100 /var/lib/dpkg/status
release a=now
500 http://archive.lan/apt/ lucid/main Packages
origin archive.lan
500 http://security.ubuntu.com/ubuntu/ lucid-security/multiverse Packages
release v=10.04,o=Ubuntu,a=lucid-security,n=lucid,l=Ubuntu,c=multiverse
origin security.ubuntu.com
[...]
Contrairement au dépôt d'Ubuntu, apt
ne semble pas capter un release
-line du tout pour mon propre dépôt. Je pense que c'est la raison pour laquelle je n'arrive pas à mettre en place un système de gestion de l'information. release o=Shteef
dans mon fichier de préférences. Mais je n'arrive pas à trouver de différence notable entre les préférences de mon dépôt et celles de mes clients. Release
et d'Ubuntu qui pourraient causer cela.
Y a-t-il une étape que j'ai manquée ou une erreur que j'ai commise dans la configuration de mon référentiel ?
MISE À JOUR
Grâce à l'aide de maxb sur #ubuntu-server, j'ai pu en savoir un peu plus sur ce qui se passe.
On dirait que apt
télécharge les listes de paquets dans /var/lib/apt/lists/
. Il y a un sous-répertoire appelé partial
que la page de manuel apt-cache(8)
décrit comme :
Storage area for state information in transit.
Mais mon dépôt Release
reste coincé là, et n'est jamais copié sur le fichier parent. lists
répertoire. J'arrive à faire fonctionner l'épinglage si je fais cette étape manuellement :
$ mv /var/lib/apt/lists/partial/archive.lan* /var/lib/apt/lists/
$ rm -f /var/cache/apt/*.bin
$ apt-cache policy
Package files:
100 /var/lib/dpkg/status
release a=now
1000 http://puppet.motto/apt/ lucid/main Packages
release v=10.04,o=Motto,a=lucid,n=lucid,l=Motto,c=main
origin puppet.motto
500 http://security.ubuntu.com/ubuntu/ lucid-security/multiverse Packages
release v=10.04,o=Ubuntu,a=lucid-security,n=lucid,l=Ubuntu,c=multiverse
origin security.ubuntu.com
[...]
Mais l'étape manuelle n'est pas souhaitable, bien sûr.
J'ai également remarqué que le Sources
est manquant dans mon dépôt, mais Sources.gz
est généré. La recréation du Sources
en décompressant le fichier Sources.gz
crée un fichier qui correspond à la taille et aux hachages dans le fichier Release
fichier. Mais cela ne semble pas résoudre mon problème.