Супер: Как я могу просмотреть переменные как $releasever, $basearch и $YUM0?

Так как Ваша основная цель состоит в том, чтобы сохранить дисковое пространство, существует другое решение: дедупликация (и вероятно сжатие) на уровне файловой системы. По сравнению с решением жесткой ссылки это не имеет проблемы непреднамеренного влияния на другие связанные файлы.

ZFS имеет dedup (блочный уровень, не уровень файла) начиная с версии 23 пула и сжатия с тех пор давным-давно. При использовании Linux можно попробовать zfs-предохранитель, или если Вы используете BSD, он исходно поддерживается.

55
22.07.2017, 04:38
6 ответов

Если Вы устанавливаете yum-utils, это даст Вам yum-debug-dump который запишет те переменные и больше информации об отладке в файл. Нет никакой опции записать в stdout, он будет всегда писать в некоторый файл, который действительно не настолько полезен.

Это - очевидно, не отличное решение, таким образом, вот острота Python, которую можно скопировать и вставить, который распечатает те переменные к stdout.

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

Это работает над CentOS 5 и 6, но не 4. конфетка записана в Python, таким образом, вкусный модуль Python уже находится на Вашем сервере, никакая потребность установить что-либо exra.

Вот то, на что это похоже на 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]# 
74
27.01.2020, 19:33
  • 1
    yum-debug-dump кажется, делает то, в чем я нуждаюсь. Похож на информацию, все там под %%%%YUM INFO раздел. Я, может казаться, не делаю вещи как $YUM0-$YUM9 появитесь, но я никогда не использую те переменные так или иначе. –  Stefan Lasiewski 07.09.2011, 04:12
  • 2
    Для получения чистого дисплея $releasever в оболочке удара используйте это: /usr/bin/python -c 'import yum;yb=yum.YumBase();yb.doConfigSetup(init_plugins=False);print yb.conf.yumvar["releasever"]' –  Rockallite 09.02.2017, 09:36
  • 3
    Это только работает на версию системы Python - как Вы получаете эту работу для дополнительной версии "alt-install" Python? –  RCross 01.09.2017, 18:57
  • 4
    , что делает Вас, делает, если releasever является на самом деле $releasever строка.... –  The Lazy Coder 29.11.2017, 09:35

Для получения всех их, необходимо будет использовать код как отправленный mmckinst, но если Вы просто хотите проверить $releasever можно работать yum version nogroups на RHEL-6.

Другая вещь сделать, в RHEL-6, состоит в том, чтобы просто создать Ваше собственное в /etc/yum/vars.

11
27.01.2020, 19:33
  • 1
    можно ли уточнить? Что делает создание /etc/yum/vars выполнить? Кроме того, Вы, оказывается, знаете, изменилось ли это от RHEL5 до RHEL6? –  Stefan Lasiewski 29.09.2011, 19:12
  • 2
    Необходимо смочь написать код, который работает над RHEL-5 и RHEL-6 без проблемы. Команда версии не находится в банкомате RHEL-5. Что я имел в виду о/etc/yum/vars (только RHEL-6) то, что можно просто создать/etc/yum/vars/foorelease..., который имеет собственные данные выпуска в нем, или даже просто переопределите систему releasever путем записи в/etc/yum/vars/releasever. –  James Antill 03.10.2011, 23:07
  • 3
    Больше информации о /etc/yum/vars может быть найден в access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux / … –  Stefan Lasiewski 03.12.2012, 21:47

Другой способ видеть результаты подстановки переменных состоит в том, чтобы сделать что-то вроде этого:

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

Я переделывал вкусные переменные для управления, какой клиент выхода в открытый космос выбран для создания локального repo и найден этим полезным, чтобы видеть, как переменные интерпретируются.

0
27.01.2020, 19:33
  • 1
    Прохладный, однако этот метод, кажется, не обеспечивает переменные как releasever. –  Stefan Lasiewski 01.10.2013, 03:14

На всякий случай, если кто-нибудь окажется здесь, как я, ища эквивалентный ответ для dnf в Fedora, я нашел следующий однострочный файл python:

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

В Fedora 24 это выглядит так:

{'arch': 'x86_64',
 'basearch': 'x86_64',
 'releasever': '24'}
12
27.01.2020, 19:33

И более подробно о том, как назначается $releasever:

Функция _getsysver запрашивает базу данных rpm следующим образом:

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

"system-release(releasever)" значение определено здесь, и оно может быть переопределено distroverpkg в yum. conf

Если запрос не вернул никакого значения, releasever устанавливается в '$releasever' (например, если вы установили distroverpkg=centos-release, но установили rpm redhat-release-server)

.
4
27.01.2020, 19:33

Для CentOS 8 Stream, который использует больше переменных, таких как $stream -, вы также можете сделать это:-

# cd /etc/dnf/vars;grep. *

что раскрывает их таким образом:-

contentdir:centos
infra:stock
stream:8-stream
1
16.12.2020, 09:30

Теги

Похожие вопросы