Yum:$ releasever、$ basearch、$ YUM0などの変数を表示するには?

Yum:$ releasever、$ basearch、$ YUM0などの変数を表示するには?

yumリポジトリを設定しており、yum.confファイルからいくつかのURLをデバッグする必要があります。 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

これyum.conf(5)マンページはこれらの変数に関するいくつかの情報を提供します。

変わりやすい

yum設定ファイルのメンテナンスを簡素化するために使用できる多くの変数があります。 name、baseurl、command など、複数のオプション値として使用できます。

$ releasever distroverpkgにリストされているパッケージバージョンの値に置き換えられます。デフォルトは「redhat-release」パッケージのバージョンです。

$ archこれはPythonのos.uname()[4]にリストされているアーキテクチャに置き換えられます。

$ basearchこれはyumのデフォルトスキーマに置き換えられます。たとえば、$ archがi686の場合、$ basearchはi386になります。

$YUM0-$YUM9 これは、同じ名前のシェル環境変数の値に置き換えられます。シェル環境変数が存在しない場合、構成ファイル変数は置き換えられません。

コマンドラインユーティリティを使用してこれらの変数を表示する方法はありますかyum?私は "redhat-release"パッケージのバージョンを見つけるか、Pythonで手動でos.uname()[4]の値を取得したくありません。

ベストアンサー1

この回答が2011年に書かれたとき、当時のRHEL / CentOSのすべてのバージョンにはPython用のjsonがデフォルトでインストールされていなかったため、pprintを使用してそれを素敵に印刷しました。

2020年で、RHEL / CentOSのすべての最新バージョンはデフォルトでPython用のjsonを提供します。 jsonを使用するように回答が更新され、RHEL / CentOS 8を含めるように修正されました。@sysadmiralからの返信Fedoraの場合。

RHEL/セントOS 8:

/usr/libexec/platform-python -c 'import dnf, json; db = dnf.dnf.Base(); print(json.dumps(db.conf.substitutions, indent=2))'

RHEL/CentOS 6および7

python -c 'import yum, json; yb = yum.YumBase(); print json.dumps(yb.conf.yumvar, indent=2)'

RHEL/CentOS 4および5

# if you install python-simplejson
python -c 'import yum, simplejson as json; yb = yum.YumBase(); print json.dumps(yb.conf.yumvar, indent=2)'

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

出力例:

# CentOS 8:
# ---
[root@0928d3917e32 /]# /usr/libexec/platform-python -c 'import dnf, json; db = dnf.dnf.Base(); print(json.dumps(db.conf.substitutions, indent=2))'
Failed to set locale, defaulting to C
{
  "arch": "x86_64",
  "basearch": "x86_64",
  "releasever": "8"
}
[root@0928d3917e32 /]# 


# CentOS 7:
# ---
[root@c41adb7f40c2 /]# python -c 'import yum, json; yb = yum.YumBase(); print json.dumps(yb.conf.yumvar, indent=2)'
Loaded plugins: fastestmirror, ovl
{
  "uuid": "cb5f5f60-d45c-4270-8c36-a4e64d2dece4", 
  "contentdir": "centos", 
  "basearch": "x86_64", 
  "infra": "container", 
  "releasever": "7", 
  "arch": "ia32e"
}
[root@c41adb7f40c2 /]# 

# CentOS 6:
# ---
[root@bfd11c9a0880 /]# python -c 'import yum, json; yb = yum.YumBase(); print json.dumps(yb.conf.yumvar, indent=2)'
Loaded plugins: fastestmirror, ovl
{
  "releasever": "6", 
  "basearch": "x86_64", 
  "arch": "ia32e", 
  "uuid": "3e0273f1-f5b6-481b-987c-b5f21dde4310", 
  "infra": "container"
}
[root@bfd11c9a0880 /]# 

元の答えは次のとおりです。

これをインストールすると、これらの変数と追加のデバッグ情報をファイルに書き込む機能がyum-utils提供されます。yum-debug-dumpstdoutに書き込むオプションはありません。常に一部のファイルに書き込むため、実際には役に立ちません。

これは確かに良い解決策ではありません。したがって、コピーして貼り付けることができるPythonの1行コードがあります。これにより、これらの変数が標準出力として印刷されます。

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

これはCentOS 5と6では機能しますが、4では機能しません。 yumはPythonで書かれているので、yum Pythonモジュールはすでにサーバー上にあるので、追加のインストールは必要ありません。

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]# 

おすすめ記事