Переменные $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
Discussion