Yum : $ releasever, $ basearch 및 $ YUM0과 같은 변수를 어떻게 볼 수 있습니까? [Errno 14] PYCURL ERROR

yum 저장소를 설정 중이며 yum.conf 파일의 일부 URL을 디버깅해야합니다. Scientific Linux가 다른 URL을 가져올 것으로 예상했을 때 Scientific Linux가이 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의 구성 파일을 쉽게 유지 관리하기 위해 사용할 수있는 변수가 많이 있습니다. 이름, baseurl 및 명령을 포함한 여러 옵션의 값으로 사용할 수 있습니다.

$ releasever 이것은 distroverpkg에 나열된 패키지 버전의 값으로 대체됩니다. 기본적으로 ‘redhat-release’패키지 버전입니다.

$ arch 이것은 파이썬에서 os.uname () [4]에 나열된 아키텍처로 대체 될 것입니다.

$ basearch 이것은 yum의 기본 아키텍처로 대체됩니다. 예를 들어 $ arch가 i686 인 경우 $ basearch는 i386입니다.

$ YUM0- $ YUM9 이들은 동일한 이름의 쉘 환경 변수 값으로 대체됩니다. 쉘 환경 변수가 없으면 구성 파일 변수가 대체되지 않습니다.

yum명령 줄 유틸리티 를 사용하여 이러한 변수를 볼 수있는 방법이 있습니까? ‘redhat-release’패키지 버전을 찾아 보거나 Python에서 os.uname () [4]의 값을 수동으로 얻는 것을 선호하지 않습니다.



답변

설치 yum-utils하면 yum-debug-dump해당 변수와 더 많은 디버깅 정보를 파일에 쓸 수 있습니다. stdout에 쓸 수있는 옵션이 없으며 항상 도움이되지 않는 일부 파일에 기록합니다.

이것은 분명히 훌륭한 해결책은 아니므로 여기에 복사하여 붙여 넣을 수있는 파이썬 1 라이너가 있습니다.이 라이너는 변수를 stdout에 인쇄합니다.

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의 모습은 다음과 같습니다.

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


답변

그것들을 모두 얻으려면 mmckinst posting 과 같은 코드를 사용해야 하지만 확인하려는 경우 RHEL-6에서 $releasever실행할 수 있습니다 yum version nogroups.

RHEL-6에서해야 할 다른 작업은에서 자신 만의 것을 만드는 것입니다 /etc/yum/vars.


답변

Fedora에서 dnf에 대한 동등한 답변을 찾고있는 사람이 나와 같이 여기에있는 경우를 대비하여 다음 파이썬 one-liner를 fathomed했습니다.

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'}


답변

그리고 $ releasever가 어떻게 할당되는지 드릴 다운하십시오 :

_getsysver 기능 RPM 데이터베이스를 쿼리와 같은 :

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

“system-release (releasever)”값이 여기 에 정의 되어 있으며 yum.conf의 distroverpkg 로 무시 될 수 있습니다.

쿼리가 값을 반환하지 않으면 releasever는 ‘$ releasever’로 설정됩니다 (예 : distroverpkg = centos-release 를 설정 했지만 rpm redhat-release-server를 설치 한 경우)


답변

변수 대체의 결과를 보는 또 다른 방법은 다음과 같이하는 것입니다.

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

로컬 저장소를 만들기 위해 어떤 우주 유영 클라이언트가 선택되는지 제어하기 위해 yum 변수로 땜질하고 있었고 변수가 해석되는 방법을 보는 데 유용하다는 것을 알았습니다.


답변