Préférer un dépot par rapport à un autre

Bonjour à tous.
Avant de poser ma question je vais ressituer le contexte:
Dans mon labo nous programmons en php et utilisons des bases de données oracle. Et pour ajouter un greffon oracle à php (sous debian) nous recompilons les sources de php5 en modifiant les fichiers:

  • debian/rules
  • debian/control
    etc …
    A la fin de la compilation nous obtenons tout une série de .deb dont le paquet/greffon oracle php5-oci8_version_architecture.deb
    Une fois ceci fait j’ai créé un dépôt debian avec l’utilitaire debarchiver et j’y ai inclus mes php5*.deb fraichement générés.

Ce dépôt est accessible par l’url debian.nomlabo.fr/php5-nomlabo.
Voici un peu la tête du dépôt:

|-- dists | |-- lenny | | |-- contrib | | | |-- binary-all | | | |-- binary-i386 | | | | |-- Packages | | | | |-- Packages.gz | | | | `-- Release | | | |-- override | | | |-- override.src | | | `-- source | | | |-- Release | | | |-- Sources | | | `-- Sources.gz | | `-- main | | |-- binary-all | | |-- binary-i386 | | | |-- Packages | | | |-- Packages.gz | | | `-- Release | | |-- override | | |-- override.src | | `-- source | | |-- Release | | |-- Sources | | `-- Sources.gz | |-- sid | | |-- Contents-i386 | | |-- Contents-i386.gz | | |-- Release | | |-- installed | | | `-- htop_0.7-1_i386.changes | | `-- main | | |-- binary-i386 | | | |-- Packages | | | |-- Packages.gz | | | `-- utils | | | `-- htop_0.7-1_i386.deb | | |-- override | | `-- source | | `-- utils | | |-- htop_0.7-1.diff.gz | | |-- htop_0.7-1.dsc | | `-- htop_0.7.orig.tar.gz | |-- stable -> lenny | `-- stable-security | |-- Contents-i386 | |-- Contents-i386.gz | |-- Release | |-- installed | | `-- php5_5.2.6.dfsg.1-1+lenny9_i386.changes | `-- main | |-- binary-all | | `-- web | | |-- php-pear_5.2.6.dfsg.1-1+lenny9_all.deb | | `-- php5_5.2.6.dfsg.1-1+lenny9_all.deb | |-- binary-i386 | | |-- Packages | | |-- Packages.gz | | |-- devel | | | |-- php5-dbg_5.2.6.dfsg.1-1+lenny9_i386.deb | | | `-- php5-dev_5.2.6.dfsg.1-1+lenny9_i386.deb | | `-- web | | |-- libapache2-mod-php5_5.2.6.dfsg.1-1+lenny9_i386.deb | | |-- libapache2-mod-php5filter_5.2.6.dfsg.1-1+lenny9_i386.deb | | |-- php5-cgi_5.2.6.dfsg.1-1+lenny9_i386.deb | | |-- php5-cli_5.2.6.dfsg.1-1+lenny9_i386.deb | | |-- php5-common_5.2.6.dfsg.1-1+lenny9_i386.deb | | |-- php5-curl_5.2.6.dfsg.1-1+lenny9_i386.deb | | |-- php5-gd_5.2.6.dfsg.1-1+lenny9_i386.deb | | |-- php5-gmp_5.2.6.dfsg.1-1+lenny9_i386.deb | | |-- php5-imap_5.2.6.dfsg.1-1+lenny9_i386.deb | | |-- php5-interbase_5.2.6.dfsg.1-1+lenny9_i386.deb | | |-- php5-ldap_5.2.6.dfsg.1-1+lenny9_i386.deb | | |-- php5-mcrypt_5.2.6.dfsg.1-1+lenny9_i386.deb | | |-- php5-mhash_5.2.6.dfsg.1-1+lenny9_i386.deb | | |-- php5-mysql_5.2.6.dfsg.1-1+lenny9_i386.deb | | |-- php5-oci8_5.2.6.dfsg.1-1+lenny9_i386.deb | | |-- php5-odbc_5.2.6.dfsg.1-1+lenny9_i386.deb | | |-- php5-pgsql_5.2.6.dfsg.1-1+lenny9_i386.deb | | |-- php5-pspell_5.2.6.dfsg.1-1+lenny9_i386.deb | | |-- php5-recode_5.2.6.dfsg.1-1+lenny9_i386.deb | | |-- php5-snmp_5.2.6.dfsg.1-1+lenny9_i386.deb | | |-- php5-sqlite_5.2.6.dfsg.1-1+lenny9_i386.deb | | |-- php5-sybase_5.2.6.dfsg.1-1+lenny9_i386.deb | | |-- php5-tidy_5.2.6.dfsg.1-1+lenny9_i386.deb | | |-- php5-xmlrpc_5.2.6.dfsg.1-1+lenny9_i386.deb | | `-- php5-xsl_5.2.6.dfsg.1-1+lenny9_i386.deb | |-- override | |-- override.src | `-- source | |-- Sources | |-- Sources.gz | `-- web | |-- php5_5.2.6.dfsg.1-1+lenny9.diff.gz | `-- php5_5.2.6.dfsg.1-1+lenny9.dsc

Seulement voilà. J’ai maintenant deux dépôts susceptibles de me fournir des paquets php5*.deb et ce que j’aimerais c’est qu’il choisisse/préfère MON dépot (et pas le dépôt officiel) pour aller les chercher.

J’ai bien tenté quelque chose de la sorte dans /etc/apt/preferences

Package: php5* Pin: release o=debian.nomlabo.fr,n=lenny,l=php5-nomlabo Pin-Priority: 999
Mais ça n’a eu aucun effet. Et un:

apt-get install php5-cli continue d’aller chercher/télécharger les php5*.deb sur les dépôts officiels debian.
Est ce que quelqu’un pourrait éclairer ma lanterne sur la démarche à suivre ?

Salut,

Peut-être ceci :

Package: * Pin: origin debian.nomlabo.fr Pin-Priority: 999

Salut,

Est-ce que tu as bien spécifié une priorité plus faible pour les dépôts officiels ?

Montre ce que donne ‘apt-cache policy’, voir ‘apt-cache policy php5-cli’.

@lol:
Merci beaucoup c’est déjà mieux. Un apt-cache policy me donne bien une priorité plus haute sur mon dépot

 999 http://debian.nomlabo.fr stable-security/main Packages
     release a=stable-security,c=main
     origin debian.nomlabo.fr
 999 http://debian.nomlabo.fr stable/main Packages
     origin debian.nomlabo.fr

Mais ça ne l’empêche pas de continuer à aller chercher php5-cli (c’est avec ce paquet là que je teste car c’est celui qui nécessite le moins de dépendances) sur le dépôt officiel. (Même en accordant à mon dépôt une priorité supérieure à 1000) :frowning:

tu veux pas montrer ‘apt-cache policy php5-cli’ ? T’as bien créé un paquet avec un n° de révision supérieur à celui du dépot officiel ?

[quote=“msfk57”]Salut,

Est-ce que tu as bien spécifié une priorité plus faible pour les dépôts officiels ?

Montre ce que donne ‘apt-cache policy’, voir ‘apt-cache policy php5-cli’.[/quote]

Voilà ce que me donne un apt-cache policy php5-cli

apt-cache policy php5-cli php5-cli: Installé : 5.2.6.dfsg.1-1+lenny9 Candidat : 5.2.6.dfsg.1-1+lenny9 Table de version : *** 5.2.6.dfsg.1-1+lenny9 0 500 http://debian.mines.inpl-nancy.fr lenny/main Packages 500 http://security.debian.org lenny/updates/main Packages 999 http://debian.nomlabo.fr stable-security/main Packages 100 /var/lib/dpkg/status

EDIT : Euuuh non le numéro de révision reste le même, mais je pensais qu’il était possible de prioriser les dépots sans pour cela toucher au numéro de révision du paquet?

Ce n’est pas obligé de changer le n° de révision, mais ça peut permettre de contourner le problème.
En l’occurrence ça ressemble plutot au problème lorsque toutes les priorités ne sont pas définies pour chaque dépot que tu utilises, alors il prends 500 par défaut.

Si c’est le cas, rajoute

Package: * Pin: origin debian.mines.inpl-nancy.fr Pin-Priority: 450
‘apt-cache policy’ ne devrait plus retourner aucun dépot avec 500.

Si tu as déjà fixé une priorité pour le dépot officiel, je vois pas ce qui peut poser problème.

Ok donc j’ai bien rajouté les lignes que tu m’as indiquées.
Voici le résultat de apt-cache policy

apt-cache policy
Fichiers du paquet :
 100 /var/lib/dpkg/status
     release a=now
 999 http://debian.nomlabo.fr stable-security/main Packages
     release a=stable-security,c=main
     origin debian.nomlabo.fr
 999 http://debian.nomlabo.fr stable/main Packages
     origin debian.nomlabo.fr
 450 http://volatile.debian.org lenny/volatile/non-free Packages
     release o=volatile.debian.org,a=stable,l=debian-volatile,c=non-free
     origin volatile.debian.org
 450 http://volatile.debian.org lenny/volatile/contrib Packages
     release o=volatile.debian.org,a=stable,l=debian-volatile,c=contrib
     origin volatile.debian.org
 450 http://volatile.debian.org lenny/volatile/main Packages
     release o=volatile.debian.org,a=stable,l=debian-volatile,c=main
     origin volatile.debian.org
 450 http://security.debian.org lenny/updates/non-free Packages
     release v=5.0,o=Debian,a=stable,l=Debian-Security,c=non-free
     origin security.debian.org
 450 http://security.debian.org lenny/updates/contrib Packages
     release v=5.0,o=Debian,a=stable,l=Debian-Security,c=contrib
     origin security.debian.org
 450 http://security.debian.org lenny/updates/main Packages
     release v=5.0,o=Debian,a=stable,l=Debian-Security,c=main
     origin security.debian.org
 450 http://debian.mines.inpl-nancy.fr lenny/non-free Packages
     release v=5.0.7,o=Debian,a=stable,l=Debian,c=non-free
     origin debian.mines.inpl-nancy.fr
 450 http://debian.mines.inpl-nancy.fr lenny/contrib Packages
     release v=5.0.7,o=Debian,a=stable,l=Debian,c=contrib
     origin debian.mines.inpl-nancy.fr
 500 http://debian.mines.inpl-nancy.fr lenny/main Translation-fr
 450 http://debian.mines.inpl-nancy.fr lenny/main Packages
     release v=5.0.7,o=Debian,a=stable,l=Debian,c=main
     origin debian.mines.inpl-nancy.fr

Mais …
un apt-get install php5-cli (ayant au préalable désinstallé le paquet) me donne

sudo apt-get install php5-cli
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Paquets suggérés :
  php-pear
Les NOUVEAUX paquets suivants seront installés :
  php5-cli
0 mis à jour, 1 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 2475ko dans les archives.
Après cette opération, 5419ko d'espace disque supplémentaires seront utilisés.
Réception de : 1 http://debian.mines.inpl-nancy.fr lenny/main php5-cli 5.2.6.dfsg.1-1+lenny9 [2475kB]
2475ko réceptionnés en 0s (3327ko/s)
Sélection du paquet php5-cli précédemment désélectionné.
(Lecture de la base de données... 20450 fichiers et répertoires déjà installés.)
Dépaquetage de php5-cli (à partir de .../php5-cli_5.2.6.dfsg.1-1+lenny9_i386.deb) ...
Traitement des actions différées (« triggers ») pour « man-db »...
Paramétrage de php5-cli (5.2.6.dfsg.1-1+lenny9) ...

Il va toujours le chercher sur le dépot des mines :017

J’avoue que je ne vois pas ce qui peut encore poser problème.

Comme dit tout à l’heure, une solution pour contourner c’est d’incrémenter le n° de la révision …

Bonne chance,

Ca serait une solution mais j’utilise un script vérifie toutes les nuits la version actuelle de php sur les dépots officiels par rapport à la version que j’ai compilé. Donc si je change moi même la version j’aurais certainement des effets de bord :frowning:
En tous cas Merci. Je vais continuer à tester… Et si jamais une autre idée vous vient faites moi signe :wink:

C’est la même version pour tous les depôts, dans ce cas mets le depôt que tu préfères en premier dans ton sources.list. Normalement, à numero de version identique, c’est l’ordre dans le sources.list qui définit où le paquet sera téléchargé.

edit : grosse erreur d’othographe.

Salut,

Cette partie du apt-cache policy est intéressante, dommage de ne pas la voir :

gerard@debian:~$ acpo
Fichiers du paquet :
100 /var/lib/dpkg/status
[size=200]release a=now[/size]

C’est tout de même étonnant:

francois@totoche:~$ apt-cache policy xorg xorg: Installé : 1:7.4+4 Candidat : 1:7.4+4 Table de version : 1:7.5+7 0 990 http://ftp.fr.debian.org squeeze/main Packages *** 1:7.4+4 0 995 http://boisson.homeip.net squeeze/Xorg7.4 Packages 100 /var/lib/dpkg/status 1:7.3+20 0 90 http://ftp.fr.debian.org lenny/main Packages francois@totoche:~$ avec comme preferences

[quote]totoche:/etc/apt/preferences.d# cat bien
Package: *
Pin: release o=Boisson,c=divers
Pin-Priority: 995

Package: *
Pin: release o=apt-build
Pin-Priority: 995

Package: *
Pin: release o=Debian,n=squeeze,l=Debian-Security
Pin-Priority: 990

Package: *
Pin: release o=Unofficial Multimedia Packages,n=squeeze,l=Unofficial Multimedia Packages
Pin-Priority: 95

Package: *
Pin: release o=Debian,n=squeeze,l=Debian
Pin-Priority: 990

Package: *
Pin: release o=volatile.debian.org,n=lenny,l=debian-volatile
Pin-Priority: 90

Package: *
Pin: release o=Debian,n=lenny,l=Debian-Security
Pin-Priority: 90

Package: *
Pin: release o=Unofficial Multimedia Packages,n=lenny,l=Unofficial Multimedia Packages
Pin-Priority: 85

Package: *
Pin: release o=Debian,n=lenny,l=Debian
Pin-Priority: 90

Package: *
Pin: release o=Unofficial Multimedia Packages,a=unstable,l=Unofficial Multimedia Packages
Pin-Priority: 65

Package: *
Pin: release o=Debian,a=unstable,l=Debian
Pin-Priority: 70

Package: *
Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
Pin-Priority: 10

Package: *
Pin: release o=Debian,a=experimental,l=Debian
Pin-Priority: 10
totoche:/etc/apt/preferences.d#
[/quote]Comme tu vois même avec une version inférieure, mon dépot reste prioritaire avec son 995 face à un dépot en 990…

Tout pareil :

apt-cache policy php5-cli php5-cli: Installé : (aucun) Candidat : 5.2.6.dfsg.1-1+lenny9 Table de version : 5.2.6.dfsg.1-1+lenny9 0 1001 http://debian.monlabo.fr stable-security/main Packages 450 http://debian.mines.inpl-nancy.fr lenny/main Packages 450 http://security.debian.org lenny/updates/main Packages 100 /var/lib/dpkg/status
Sauf qu’il persiste à aller télécharger ce paquet sur debian.mines.inpl-nancy.fr
Peut être parce que les paquets sur mon dépôt se trouvent dans stable-security alors que sur les dépôts officiels ils se trouvent dans “stable” (tout court) ?

J’ai essayé d’inverser l’ordre des dépôts mais il persiste et signe et continue de télécharger le paquet sur le dépôt des mines. Sauf que là j’ai un message d’erreur et il se plaint de télécharger à partir du dépôt des mines un paquet de taille incohérente (certainement du au fait que le php5-cli de mon dépot doit avoir une taille différente de celui disponible sur le dépôt des mines.)

sudo apt-get install php5-cli Lecture des listes de paquets... Fait Construction de l'arbre des dépendances Lecture des informations d'état... Fait Paquets suggérés : php-pear Les NOUVEAUX paquets suivants seront installés : php5-cli 0 mis à jour, 1 nouvellement installés, 0 à enlever et 0 non mis à jour. Il est nécessaire de prendre 2475ko dans les archives. Après cette opération, 5419ko d'espace disque supplémentaires seront utilisés. Réception de : 1 http://debian.mines.inpl-nancy.fr lenny/main php5-cli 5.2.6.dfsg.1-1+lenny9 [2475kB] 2475ko réceptionnés en 0s (4834ko/s) Impossible de récupérer http://debian.mines.inpl-nancy.fr/debian/pool/main/p/php5/php5-cli_5.2.6.dfsg.1-1+lenny9_i386.deb Taille incohérente E: Impossible de récupérer quelques archives, peut-être devrez-vous lancer apt-get update ou essayer avec --fix-missing ?

Regarde si il y a toutes les dépendances (par exemple par installation via dpkg -i), la seule chose que je vois est que l’un des paquets nécessaires n’est pas là et du coup il se rabat sur une autre version.