Я настраиваю репозиторий yum, и мне нужно отладить некоторые URL-адреса в файле yum.conf. Мне нужно знать, почему Scientific Linux пытается получить этот URL, когда я ожидал, что он получит другой 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
Страница man yum.conf (5) дает некоторую информацию об этих переменных:
переменные
Существует ряд переменных, которые можно использовать для упрощения обслуживания файлов конфигурации yum. Они доступны в значениях нескольких опций, включая name, baseurl и команды.
$ releasever Это будет заменено значением версии пакета, указанной в distroverpkg. По умолчанию используется версия пакета «redhat-release».
$ arch Это будет заменено вашей архитектурой, как указано os.uname () [4] в Python.
$ basearch Это будет заменено вашей базовой архитектурой в yum. Например, если ваш $ arch равен i686, ваш $ basearch будет i386.
$ YUM0- $ YUM9 Они будут заменены значением переменной окружения оболочки с тем же именем. Если переменная среды оболочки не существует, то переменная файла конфигурации не будет заменена.
Есть ли способ просмотреть эти переменные с помощью yum
утилиты командной строки? Я бы предпочел не выискивать версию пакета 'redhat-release' или вручную получать значение os.uname () [4] в Python.
источник
cat /etc/redhat-release
На самом деле, используйтеcat /etc/system-release
вместо этого, поскольку это будет символическая ссылка на / etc / redhat-release, / etc / centos-release, / etc / oel-release, / etc / <все, что научный Linux использует>, в зависимости от ситуации./etc/redhat-release
это не то же самое, что$releasever
переменная. Вопрос здесь состоит в том, чтобы выяснить, что Yum подставляет вместо этих переменных? Что происходит программно?rpm -qf /etc/issue
канонический метод, и был бы метод LSB кроме SuSE не двигался с места на встречах FSSTND. Ярли.Ответы:
Если вы установите
yum-utils
, это даст вам,yum-debug-dump
который будет записывать эти переменные и больше отладочной информации в файл. Нет возможности записать в stdout, он всегда будет записывать в какой-то файл, который на самом деле не так уж полезен.Это, очевидно, не очень хорошее решение, так что вот Python с одной строкой, который вы можете скопировать и вставить, который будет печатать эти переменные в стандартный вывод.
python -c 'import yum, pprint; yb = yum.YumBase(); pprint.pprint(yb.conf.yumvar, width=1)'
Это работает на CentOS 5 и 6, но не на 4. yum написан на python, поэтому модуль yum python уже находится на вашем сервере, не нужно устанавливать что-либо exra.
Вот как это выглядит на CentOS 5:
источник
yum-debug-dump
кажется, делает то, что мне нужно. Похоже, информация находится там под%%%%YUM INFO
разделом. Я не могу создать такие вещи, как$YUM0-$YUM9
кажется, но я никогда не использую эти переменные./usr/bin/python -c 'import yum;yb=yum.YumBase();yb.doConfigSetup(init_plugins=False);print yb.conf.yumvar["releasever"]'
На всякий случай, если кто-нибудь окажется здесь, как я, в поисках эквивалентного ответа для dnf на Fedora, я нашел следующую строку в Python:
На Fedora 24 это выглядит так:
источник
yum variables repo names
. Это отвечает на вопрос на данный момент, с заменой yum на dnf. Отличная работа!Чтобы получить их все, вам нужно использовать код, например, опубликованный mmckinst , но если вы просто хотите проверить,
$releasever
вы можете запуститьyum version nogroups
на RHEL-6.Другая вещь, которую нужно сделать в RHEL-6, это просто создать свою собственную
/etc/yum/vars
.источник
/etc/yum/vars
? Кроме того, вы случайно не знаете, изменилось ли это с RHEL5 на RHEL6?/etc/yum/vars
можно найти по адресу access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/…И подробно рассмотрим, как назначается $ releasever:
Функция _getsysver запросов к базе данных оборотов в минуту , как:
Здесь определяется значение "system-release (releasever)" , и оно может быть переопределено distroverpkg в yum.conf
Если запрос не вернул никакого значения, для releasever устанавливается значение «$ releasever» (например, если вы установили distroverpkg = centos-release, но установили rpm redhat-release-server)
источник
Другой способ увидеть результаты подстановки переменных - сделать что-то вроде этого:
Я возился с переменными yum, чтобы контролировать, какой клиент spacewalk выбран для построения локального репо, и нашел это полезным, чтобы увидеть, как переменные интерпретируются.
источник
releasever
.