La toute puissance du fichier /etc/apt/preferences ?

Salut à tous !

Je réagis, indirectement, à l’indispensable post-it, http://www.debian-fr.org/sources-list-au-carre-ou-minimaliste-t5659.html de mattotop.

On peut très souvent lire que le sources.list devrait préférentiellement faire appel aux noms des versions (sarge, etch, lenny, squeeze, wheezy…) plutôt qu’aux noms « génériques » des versions (stable, testing, unstable…) par soucis de garder le contrôle sur les mises à jour du système (comprendre : par exemple, ne passer en squeeze uniquement parce qu’on l’a demandé, et non pas parce que, étant passée en stable, celle-ci s’impose d’office au système, sous une nuée de mises à jour).

Je comprends toute à fait le raisonnement et c’est d’ailleurs celui que je suis sur mon installation. Je comprends néanmoins également que certains puissent suivre l’autre manière de fonctionner, à condition que ce choix soit réfléchi.

Cependant, pourquoi devoir préciser le nom des versions dans le sources.list ? Selon moi (ce qui ne vaut donc pas grand chose) le sources.list n’est là que pour contenir un « gros tas tout pourri » de dépôts qui mettrait bien à mal le système s’il n’était pas régit par le fichier preferences. D’après ce que je comprends, c’est à lui est à lui seul qu’incombe la tâche de mettre de l’ordre et hiérarchiser les priorités des dépôts contenus dans le sources.list (lequel ne doit donc pas avoir la moindre once « d’intelligence » puisque preferences est là pour ça).

Ainsi, dans cette logique, pourquoi ne pas indiquer les versions « génériques » dans le fichiers sources.list et laisser à preferences le soin de gérer tout ça comme il faut ? Ainsi, afin de préciser quelle version de Debian on souhaite utiliser, ne vaudrait-il pas mieux indiquer les versions dans preferences plutôt que dans sources.list ?

On pourrait ainsi laisser les labels stable, testing, et unstable dans sources.list, et préciser les noms des versions squeeze, wheezy, et sid, dans preferences via l’étiquette « n », comme, par exemple : o=Debian,n=squeeze,l=Debian.

On se retrouverait alors avec un fichier sources.list standard, sans précision aucune sur la « politique » du système qui sera ainsi uniquement menée par le fichier preferences, à la fois au niveau de la hiérarchisation des différentes branches de Debian, mais également sur la version préférée, « nommément » spécifiée.

On aurait alors un fichier sources.list extrêmement standard qui se présenterait sous la forme suivante :

##### Stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
deb http://www.debian-multimedia.org stable main
deb http://security.debian.org/ stable/updates main contrib non-free
deb http://ftp.fr.debian.org/debian/ stable-updates main contrib non-free

##### Testing
deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
deb http://www.debian-multimedia.org testing main
deb http://security.debian.org/ testing/updates main contrib non-free

##### Unstable
deb http://ftp.fr.debian.org/debian/ unstable main contrib non-free
deb http://www.debian-multimedia.org unstable main

##### Experimental
deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
deb http://www.debian-multimedia.org experimental main

Et un fichier preferences à qui revient toute « l’intelligence » ; rédigé en fonction de ce que l’on souhaite faire de son système. À lui seul tient désormais la responsabilité politique, sources.list étant devenu totalement neutre. Par exemple, pour une Debian principalement wheezy :

[code]Package: *
Pin: release o=apt-build
Pin-Priority: 989

Package: *
Pin: release o=Debian,n=wheezy,l=Debian-Security
Pin-Priority: 979

Package: *
Pin: release o=Unofficial Multimedia Packages,n=wheezy,l=Unofficial Multimedia Packages
Pin-Priority: 978

Package: *
Pin: release o=Debian,n=wheezy,l=Debian
Pin-Priority: 977

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

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

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

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

Package: *
Pin: release o=Unofficial Multimedia Packages,n=sid,l=Unofficial Multimedia Packages
Pin-Priority: 99

Package: *
Pin: release o=Debian,n=sid,l=Debian
Pin-Priority: 98

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

Package: *
Pin: release o=Debian,a=experimental,l=Debian
Pin-Priority: 88[/code]

Le même sources.list peut donc être utilisé pour toutes les variantes imaginables. Ainsi, rien n’empêche ceux qui le souhaitent de ne toujours pas spécifier les noms de versions, en passant les étiquettes « n » de preferences en « a » et spécifier, plus habituellement, la branche souhaitée de Debian.

Sources.list n’intervient désormais plus du tout. Tout dépend uniquement de preferences.

Mon raisonnement tient-il la route ? Ou bien suis-je complètement à coté de la plaque ?

Je crois qu’il n’y avait pas d’enregistrement « Codename » (n=) dans les dépôts, à l’époque où mattotop avait écrit cette célèbre page.

Vu comme ça, ça me semble plus logique en effet…

Plus logique ou pas, tout dépend de l’utilisation qu’on en fait. Je pense que faire le choix de confier le bébé à sources.list ou à preferences s’apparente au [strike]troll[/strike] débat Vim/Emacs.
Personnellement, je tourne en Sid, et je n’ai aucun fichier preferences. Ceux qui tourne en Testing et qui n’ont pas besoin de chercher des paquets en sid n’auront certainement pas non plus de fichier preferences.

Bref, tout dépend de l’usage de ces fichiers. Nous ne nous sommes pas sous une distribution libre pour rien. Chacun fait ce qu’il veux ^^

Salut,

A tout hasard, je repose ma question dans ce post : Ou trouve-t-on le code release (o, n, a, l). Je sais en trouver la valeur par apt-cache policy mais pas ou il le trouve :038

Salut à tous !

Et merci pour vos réactions.

@ kna : effectivement, si le codename « n » est tout récent, je comprends pourquoi il n’était pas plus recommandé auparavant. Je trouve alors que son introduction est une fort riche idée !

@ Dunatotatos : mon message concernait effectivement plutôt les installations qui opéraient un mix des différentes branches. L’utilisation d’une branche unique justifie-t-elle effectivement à elle seule la simple utilisation du sources.list ? Possible, mais cela ne doit peut-être pas forcément être une règle. Nombreux sont ceux qui estiment malgré tout nécessaire de hiérarchiser les différents dépôts d’une même branche. Le fichier preferences aurait donc, également dans ce cas-ci, toute sa place. Évidemment, comme tu le fais remarquer, nous sommes libre de faire ce que l’on veut. Je trouve cependant le débat intéressant.

@ ggoodluck47 : je ne suis pas sûr de bien comprendre ta question. On peut trouver ces informations en tête des fichiers Release, par exemple : http://ftp.fr.debian.org/debian/dists/squeeze/Release.

Re,

Quand je fais apt-cache policy, ou celui ci va-t-il chercher la valeur release a=now :slightly_smiling:

Si je ne me trompe pas, pour ce code « now » c’est un peu différent car il est attribué aux paquets actuellement installés, qu’apt connaît à tout instant.

Re,
C’est pas du “now” dont je parle mais du “a” ? Où est-il déterminé ? Dans quel fichier ?

En effet, je n’avais pas pensé aux dépôts d’une même branche. En tout cas, il est vrai qu’un petit tuto sur le fichier preferences aurait sa raison d’être (selon moi).

Le Laurent Romejko du fichier preferences se cache peut être ici, à jamais mystérieux, mais c’est possible, vu la commande qui permet d’y accéder:

/var/cache/apt/archives/pkgcache.bin

qui se métamorphose à chaque mise à jour.

:techie-hiding:

Stef

Edit: ach nein ! Si on l’efface, et qu’on fait un apt-cache policy, il renaît de ses cendres…

Edit2: /var/lib/apt/lists: chaque dépot correspond à trois fichiers, un release, un package, et une clé. C’est le fichier release qui contient les infos d’apt-cache policy propres à chaque dépôt. Mais si on l’efface ou si on le modifie, apt-cache policy fonctionne encore. Il faut effacer les fichiers packages pour retirer toute info.
:angelic-cyan:

Je suis complétement de ton avis, c’est beaucoup plus simple à appréhender pour un nouveau venu avec ta méthode et cela permet de bien comprendre l’intérêt du fichier préférences.

Aprés dans la pratique et une utilisation de debian en serveur, je n’utilise absolument pas le fichier préférences et c’est pour ça que je préfère avoir un sources.list qui nomme la version stable à utiliser.
Su mon poste en Sid, je vais adopter ta méthode par contre :slightly_smiling: (c’est peut-être déjà le cas, je sais plus ^^)

Y’en a un là : http://www.isalo.org/wiki.debian-fr/index.php?title=L%27etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences

[quote=“Blacksad”]Je suis complétement de ton avis, c’est beaucoup plus simple à appréhender pour un nouveau venu avec ta méthode et cela permet de bien comprendre l’intérêt du fichier préférences.

Aprés dans la pratique et une utilisation de debian en serveur, je n’utilise absolument pas le fichier préférences et c’est pour ça que je préfère avoir un sources.list qui nomme la version stable à utiliser.
Su mon poste en Sid, je vais adopter ta méthode par contre :slightly_smiling: (c’est peut-être déjà le cas, je sais plus ^^)[/quote]
A priori, pas besoin d’un fichier preferences en sid, sauf cas particulier (dépôts multimedia experimental par exemple).

[quote=“ggoodluck47”]Re,
C’est pas du “now” dont je parle mais du “a” ? Où est-il déterminé ? Dans quel fichier ?[/quote]
C’est de ça dont tu parles?
http://www.isalo.org/wiki.debian-fr/index.php?title=L%27etiquetage_de_paquets_via_le_fichier_/etc/apt/preferences#Ligne_Package

[quote]Les fichiers de configuration des dépôts se trouvent dans /var/lib/apt/lists/. La valeur de ces variables (v,o,a,n,…) est indiquée dans les fichiers *Release comme par exemple /var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release dont voici la partie qui nous interesse:

[quote] Origin: Debian
Label: Debian
Suite: stable
Version: 5.0.5
Codename: stable
Date: Sat, 26 Jun 2010 12:12:50 UTC
Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
Components: main contrib non-free
Description: Debian 5.0.5 Released 26 June 2010[/quote][/quote]

Tu l’as pourtant corrigé ce tuto… :mrgreen: :wink:

Salut,

Je renonce ! Je ne dois pas utiliser le même français :laughing:

[quote=“ggoodluck47”]Salut,

Je renonce ! Je ne dois pas utiliser le même français :laughing:[/quote]
Ben plus bas c’est écrit

[quote]a= correspond a Suite
dans notre exemple -> Pin: release a=stable[/quote]

Mais si c’est pas la réponse à ta question c’est qu’effectivement je n’ai pas compris la question. :blush:

[quote=“ggoodluck47”]Salut,

A tout hasard, je repose ma question dans ce post : Ou trouve-t-on le code release (o, n, a, l). Je sais en trouver la valeur par apt-cache policy mais pas ou il le trouve :038[/quote]
Le code release est défini dans les fichiers Release des dépots et n’est utilisé dans ta machine que dans le ou les fichiers préférences pour spécifier un dépot.

J’avoue que je suis perplexe sur la réponse que tu espères.

Salut,

En effet, je ne pense pas que les valeurs données par apt-cache policy soient modifiables. Les fichiers release les contiennent, mais ne permettent pas de les modifier. J’ai essayé de remplacer les valeurs, ça n’a rien changé. Il semble que ça passe par les fichiers packages et package.indexdiff mais tout cela est codé et sécurisé (une cryptographie “SHA-1”, mise au point par la nsa d’après google, est l’objet des fichiers indexdiff). Pas question de jouer avec ces valeurs donc. Pourquoi faire d’ailleurs ?

Et puis j’aurai dû lire le wiki, la réponse y était déjà !..

Stef

[quote=“fran.b”][quote=“ggoodluck47”]Salut,

A tout hasard, je repose ma question dans ce post : Ou trouve-t-on le code release (o, n, a, l). Je sais en trouver la valeur par apt-cache policy mais pas ou il le trouve :038[/quote]
Le code release est défini dans les fichiers Release des dépots et n’est utilisé dans ta machine que dans le ou les fichiers préférences pour spécifier un dépot.

J’avoue que je suis perplexe sur la réponse que tu espères.[/quote]

Voici la réponse que j’attendais :041 Merci François !

Dans ce cas tous les dépôts se retrouvent avec les même priorités, apt prendra forcement la dernière version d’un logiciel ?