Estoy configurando un repositorio de yum, y necesito depurar algunas de las URL en el archivo yum.conf. Necesito saber por qué Scientific Linux está tratando de tomar esta URL, cuando esperaba que tomara otra URL:
# 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 página de manual yum.conf (5) brinda información sobre estas variables:
Variables
Hay varias variables que puede usar para facilitar el mantenimiento de los archivos de configuración de yum. Están disponibles en los valores de varias opciones, incluyendo nombre, baseurl y comandos.
$ releasever Esto será reemplazado con el valor de la versión del paquete listado en distroverpkg. Esto predeterminado es la versión del paquete 'redhat-release'.
$ arch Esto será reemplazado con su arquitectura según lo enumerado por os.uname () [4] en Python.
$ basearch Esto será reemplazado con su arquitectura base en yum. Por ejemplo, si su $ arch es i686, su $ basearch será i386.
$ YUM0- $ YUM9 Se reemplazarán con el valor de la variable de entorno de shell del mismo nombre. Si la variable de entorno de shell no existe, la variable del archivo de configuración no se reemplazará.
¿Hay alguna manera de ver estas variables utilizando la yum
utilidad de línea de comandos? Preferiría no buscar la versión del paquete 'redhat-release' u obtener manualmente el valor de os.uname () [4] en Python.
fuente
cat /etc/redhat-release
En realidad, usecat /etc/system-release
en su lugar, ya que este será un enlace simbólico a / etc / redhat-release, / etc / centos-release, / etc / oel-release, / etc / <lo que sea que Linux científico utilice>, según corresponda./etc/redhat-release
No es lo mismo que la$releasever
variable. La pregunta aquí es averiguar qué está sustituyendo Yum en lugar de estas variables. ¿Qué está pasando programáticamente?rpm -qf /etc/issue
es el método canónico, y habría sido el método en LSB, excepto que SuSE no se movió en las reuniones FSStnd. YARLYRespuestas:
Si instala
yum-utils
, eso le daráyum-debug-dump
cuáles escribirán esas variables y más información de depuración en un archivo. No hay ninguna opción para escribir en stdout, siempre escribirá en algún archivo que realmente no es tan útil.Obviamente, esta no es una gran solución, así que aquí hay una línea única de Python que puede copiar y pegar que imprimirá esas variables en stdout.
python -c 'import yum, pprint; yb = yum.YumBase(); pprint.pprint(yb.conf.yumvar, width=1)'
Esto funciona en CentOS 5 y 6, pero no en 4. yum está escrito en python, por lo que el módulo yum python ya está en su servidor, no es necesario instalar nada más.
Así es como se ve en CentOS 5:
fuente
yum-debug-dump
Parece hacer lo que necesito. Parece que toda la información está ahí debajo de la%%%%YUM INFO
sección. Parece que no puedo hacer que$YUM0-$YUM9
aparezcan cosas como estas, pero de todas formas nunca uso esas variables./usr/bin/python -c 'import yum;yb=yum.YumBase();yb.doConfigSetup(init_plugins=False);print yb.conf.yumvar["releasever"]'
En caso de que alguien termine aquí, como yo, buscando la respuesta equivalente para dnf en Fedora, entendí la siguiente línea de Python:
En Fedora 24 se ve así:
fuente
yum variables repo names
. Esto responde a la pregunta por ahora, con el reemplazo de yum con dnf. ¡Buen trabajo!Para obtenerlos todos, necesitará usar código como mmckinst publicado , pero si solo desea verificarlo
$releasever
, puede ejecutaryum version nogroups
RHEL-6.La otra cosa que hacer, en RHEL-6, es crear uno propio
/etc/yum/vars
.fuente
/etc/yum/vars
? Además, ¿sabe si esto cambió de RHEL5 a RHEL6?/etc/yum/vars
puede encontrar más información sobre access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/…Y profundizando en cómo se asigna $ releasever:
La función _getsysver consulta la base de datos rpm como:
El valor "system-release (releasever)" se define aquí , y podría ser anulado por distroverpkg en yum.conf
Si la consulta no devolvió ningún valor, releasever se establece en '$ releasever' (por ejemplo, si configura distroverpkg = centos-release pero ha instalado el servidor rpm redhat-release)
fuente
Otra forma de ver los resultados de la sustitución de variables es hacer algo como esto:
Estaba jugando con las variables yum para controlar qué cliente de caminata espacial se seleccionó para construir un repositorio local y encontré esto útil para ver cómo se interpretan las variables.
fuente
releasever
.