Je suis en train de configurer un référentiel yum et je dois déboguer certaines des URL du fichier yum.conf. J'ai besoin de savoir pourquoi Scientific Linux tente de récupérer cette URL, alors que je m'attendais à ce qu'elle en saisisse une autre:
# yum install package
http://192.168.1.100/pub/scientific/6.1/x86_64/repodata/repomd.xml: [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404"
Trying other mirror.
Error: Cannot retrieve repository metadata (repomd.xml) for repository: sl. Please verify its path and try again
La page de manuel yum.conf (5) fournit des informations sur ces variables:
Variables
Vous pouvez utiliser un certain nombre de variables pour faciliter la maintenance des fichiers de configuration de yum. Ils sont disponibles dans les valeurs de plusieurs options, y compris name, baseurl et commandes.
$ releasever Ceci sera remplacé par la valeur de la version du paquet indiqué dans distroverpkg. Ceci est la version par défaut du paquetage 'redhat-release'.
$ arch Ceci sera remplacé par votre architecture listée par os.uname () [4] en Python.
$ basearch Ceci sera remplacé par votre architecture de base en yum. Par exemple, si votre $ arch est i686, votre $ basearch sera i386.
$ YUM0- $ YUM9 Celles-ci seront remplacées par la valeur de la variable d'environnement shell du même nom. Si la variable d'environnement shell n'existe pas, la variable du fichier de configuration ne sera pas remplacée.
Existe-t-il un moyen d'afficher ces variables à l'aide de l' yum
utilitaire de ligne de commande? Je préférerais ne pas traquer la version du paquetage 'redhat-release', ou obtenir manuellement la valeur de os.uname () [4] en Python.
la source
cat /etc/redhat-release
En fait, utilisezcat /etc/system-release
plutôt, puisqu'il s'agira d'un lien symbolique vers / etc / redhat-release, / etc / centos-release, / etc / oel-release, / etc / <quelles que soient les utilisations scientifiques de Linux>, selon le cas./etc/redhat-release
n'est pas la même chose que la$releasever
variable. La question ici est de savoir ce que Yum remplace à la place de ces variables. Que se passe-t-il par programmation?rpm -qf /etc/issue
est la méthode canonique, et aurait été la méthode dans LSB sauf SuSE n'a pas bougé dans les réunions FSStnd. YARLY.Réponses:
Si vous installez
yum-utils
, cela vousyum-debug-dump
indiquera qui écrira ces variables et d'autres informations de débogage dans un fichier. Il n'y a pas d'option pour écrire sur stdout, il sera toujours écrit dans un fichier ce qui n'est vraiment pas utile.Ce n’est évidemment pas une bonne solution. Voici donc une ligne unique en python que vous pouvez copier et coller pour imprimer ces variables sur la sortie standard.
python -c 'import yum, pprint; yb = yum.YumBase(); pprint.pprint(yb.conf.yumvar, width=1)'
Cela fonctionne sur CentOS 5 et 6, mais pas 4. yum est écrit en python, donc le module yum python est déjà sur votre serveur, pas besoin d’installer rien d’autre.
Voici à quoi cela ressemble sur CentOS 5:
la source
yum-debug-dump
semble faire ce dont j'ai besoin. On dirait que l'information est tout là dans la%%%%YUM INFO
section. Je n'arrive pas à faire en sorte que des choses semblables$YUM0-$YUM9
apparaissent, mais je n'utilise jamais ces variables de toute façon./usr/bin/python -c 'import yum;yb=yum.YumBase();yb.doConfigSetup(init_plugins=False);print yb.conf.yumvar["releasever"]'
Juste au cas où quelqu'un se retrouverait ici, comme moi, à la recherche de la réponse équivalente pour dnf sur Fedora, j'ai découvert le one-liner python suivant:
Sur Fedora 24, cela ressemble à ceci:
la source
yum variables repo names
. Ceci répond à la question pour l'instant, avec le remplacement de yum par dnf. Bon travail!Pour tous les obtenir, vous devez utiliser un code tel que mmckinst publié , mais si vous voulez juste vérifier,
$releasever
vous pouvez utiliseryum version nogroups
RHEL-6.L’autre chose à faire, dans RHEL-6, est de créer le vôtre
/etc/yum/vars
.la source
/etc/yum/vars
accomplit? Aussi, savez-vous si cela a changé de RHEL5 à RHEL6?/etc/yum/vars
peuvent être trouvées à l' adresse access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/…Et explorer comment $ releasever est assigné:
La fonction _getsysver interroge la base de données rpm comme suit :
La valeur "system-release (releasever)" est définie ici et peut être remplacée par distroverpkg dans yum.conf
Si la requête n'a renvoyé aucune valeur, releasever est défini sur '$ releasever' (par exemple, si vous définissez distroverpkg = centos-release mais avez installé le serveur rpm redhat-release-server).
la source
Une autre façon de voir les résultats de la substitution de variable consiste à faire quelque chose comme ceci:
Je bricolais avec les variables yum pour contrôler le client Spacewalk sélectionné pour la construction d'un référentiel local et trouvais cela utile pour voir comment les variables étaient interprétées.
la source
releasever
.