Переменные $arch, $basearch, $releaser и $infra

Иногда, чтобы прописать репозиторий в RedHat-based,например в CentOS бывает нужно знать значения переменных yum - $arch, $basearch, $releaser и $infra. Для того, чтобы их узнать выполняем такое:

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

Вот пример вывода с CentOS 7 1611:

Loaded plugins: fastestmirror, langpacks
{'arch': 'amd64',
 'basearch': 'x86_64',
 'infra': 'stock',
 'releasever': '7',
 'uuid': '6f68c2da-b486-4047-851a-897157d75161'}

$infra обычно имеет значение stock
Аналогично для dnf:

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

Repo URL

URL репозитория будет примерно такой: http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock
Важно, что в URL в качестве параметра arch используется значение переменной basearch, а не arch.

Error importing repomd.xml

После добавления репы стала появляться ошибка:

http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock/repodata/repomd.xml: [Errno -1] Error importing repomd.xml for base_centos: Damaged repomd.xml file

Причину я не выяснил, но в ответ на запрос этого URL возвращается список зеркал. В файлике .repo я заменил этот URL на URL зеркала и ошибка ушла.
Получить список зеркал можно так:

curl http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock/repodata/repomd.xml
Enter your comment. Wiki syntax is allowed:
 
  • linux_faq/how_to_get_yum_variables_arch_basearch_releasever_in_redhat_and_centos.txt
  • Last modified: 2019/02/11 09:13
  • by 127.0.0.1