2 votes

Épinglage en fonction de l'origine d'un dépôt reprepro

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.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X