Yum: Como posso ver variáveis como $ releasever, $ basearch & $ YUM0?

43

Estou configurando um repositório yum e preciso depurar algumas das URLs no arquivo yum.conf. Eu preciso saber por que o Scientific Linux está tentando pegar essa URL, quando eu esperava que ela pegasse outra 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

A página do manual yum.conf (5) fornece algumas informações sobre essas variáveis:

Variables

There are a number of variables you can use to ease maintenance of yum's configuration files. They are available in the values of several options including name, baseurl and commands.

$releasever This will be replaced with the value of the version of the package listed in distroverpkg. This defaults to the version of 'redhat-release' package.

$arch This will be replaced with your architecture as listed by os.uname()[4] in Python.

$basearch This will be replaced with your base architecture in yum. For example, if your $arch is i686 your $basearch will be i386.

$YUM0-$YUM9 These will be replaced with the value of the shell environment variable of the same name. If the shell environment variable does not exist then the configuration file variable will not be replaced.

Existe uma maneira de visualizar essas variáveis usando o utilitário de linha de comando yum ? Eu preferiria não caçar a versão do pacote 'redhat-release', ou manualmente obter o valor de os.uname () [4] em Python.

    
por Stefan Lasiewski 29.08.2011 / 21:36

5 respostas

64

Se você instalar yum-utils , isso fornecerá yum-debug-dump , que gravará essas variáveis e mais informações de depuração em um arquivo. Não há opção para escrever no stdout, ele sempre grava em algum arquivo que realmente não é útil.

Esta obviamente não é uma ótima solução, então aqui está um one-liner em python que você pode copiar e colar que imprimirá essas variáveis para stdout.

python -c 'import yum, pprint; yb = yum.YumBase(); pprint.pprint(yb.conf.yumvar, width=1)'

Isso funciona no CentOS 5 e 6, mas não no 4. yum é escrito em python, então o módulo yum python já está no seu servidor, não é necessário instalar nada exra.

Aqui está o que parece no CentOS 5:

[root@somebox]# python -c 'import yum, pprint; yb = yum.YumBase(); pprint.pprint(yb.conf.yumvar, width=1)'
{'arch': 'ia32e',
 'basearch': 'x86_64',
 'releasever': '5',
 'yum0': '200',
 'yum5': 'foo'}
[root@somebox]# 
    
por 07.09.2011 / 01:49
8

Para obter todos eles, você precisará usar um código como mmckinst postou , mas se você quiser apenas verificar $releasever você pode executar yum version nogroups no RHEL-6.

A outra coisa a fazer, no RHEL-6, é apenas criar o seu próprio em /etc/yum/vars .

    
por 29.09.2011 / 17:41
6

Para o caso de alguém acabar aqui, como eu, procurando a resposta equivalente para o dnf no Fedora, eu compreendi o seguinte one-liner de python:

python3 -c 'import dnf, pprint; db = dnf.dnf.Base(); pprint.pprint(db.conf.substitutions,width=1)'

No Fedora 24, é assim:

{'arch': 'x86_64',
 'basearch': 'x86_64',
 'releasever': '24'}
    
por 19.10.2016 / 17:34
2

E detalhando como $ releasever é atribuído:

A função _getsysver consulta o banco de dados rpm como:

rpm -q --provides $(rpm -q --whatprovides "system-release(releasever)") | grep "system-release(releasever)" | cut -d ' ' -f 3

O valor "system-release (releasever)" é definido aqui , e pode ser substituído por distroverpkg no yum.conf

Se a consulta não retornar nenhum valor, o releasever será definido como '$ releasever' (por exemplo, se você definir distroverpkg = centos-release , mas tiver instalado o redhat-release-server do rpm)

    
por 25.01.2017 / 14:36
0

Outra maneira de ver os resultados da substituição de variáveis é fazer algo assim:

yum-config-manager -c /etc/reposyncb.conf  | grep -i spacewalk

Eu estava mexendo com variáveis do yum para controlar qual cliente de caminhada no espaço é selecionado para construir um repositório local e achei útil para ver como as variáveis estão sendo interpretadas.

    
por 27.08.2013 / 20:55