Yum: $ releasever, $ basearch & $ YUM0 gibi değişkenleri nasıl görebilirim?


49

Bir yum deposu kuruyorum ve yum.conf dosyasındaki bazı URL'leri hata ayıklamam gerekiyor. Scientific Linux'un bu URL'yi neden almaya çalıştığını, başka bir URL'yi almasını beklerken neden bilmem gerekiyor:

# 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) manpage bu değişkenlerin hakkında bazı bilgiler verir:

Değişkenler

Yum'un yapılandırma dosyalarının bakımını kolaylaştırmak için kullanabileceğiniz çeşitli değişkenler vardır. Ad, baseurl ve komutlar dahil olmak üzere çeşitli seçeneklerin değerlerinde bulunurlar.

$ releasever Bu, distroverpkg'da listelenen paketin sürümünün değeri ile değiştirilecektir. Bu, varsayılan olarak 'redhat-release' paketinin sürümüne göre değişir.

$ arch Bu, Python'da os.uname () [4] tarafından listelenen mimarinizle değiştirilecektir.

$ basearch Bu, taban mimarinizle yum olarak değiştirilecektir. Örneğin, $ arch'ınız i686 ise, $ basearch'iniz i386 olacaktır.

$ YUM0- $ YUM9 Bunlar, aynı isimdeki kabuk ortamı değişkeninin değeri ile değiştirilecektir. Kabuk ortamı değişkeni yoksa, yapılandırma dosyası değişkeni değiştirilmez.

yumKomut satırı yardımcı programını kullanarak bu değişkenleri görmenin bir yolu var mı ? 'Redhat-release' paketinin sürümünü avlamamayı ya da Python'da os.uname () [4] değerini manuel olarak almayı tercih ederim.


'Redhat-Release sürümünü avlamak' önemsizdir. cat /etc/redhat-release Aslında, cat /etc/system-releasebunun yerine kullanın, çünkü bu, / etc / redhat-release, / etc / centos-release, / etc / oel-release, / etc / <her ne olursa olsun bilimsel Linux kullanır> ile bir bağlantı olacaktır.
Xalorous

3
/etc/redhat-release$releaseverdeğişkenle aynı şey değil . Buradaki soru, bu değişkenlerin yerine Yum'un yerini almanın ne olduğunu bulmaktır. Programlı olarak neler oluyor?
Stefan Lasiewski

1
'redhat-release versiyonunu araştır' aynı zamanda 'cat / etc / redhat-release' ile aynı değildir. Eski sürüm için sorar, ikincisi ASLA ASLA güvenilmemesi gereken tamamen güvenilmez ve sınırsızca değiştirilebilir bir dosya görüntüler. rpm -qf /etc/issuekanonik yöntemdir ve olurdu LSB SuSE FSSTND toplantılarda ödün vermedi dışında yöntem. YARLY.
user2066657 19

Yanıtlar:


71

Eğer yüklerseniz yum-utils, bu size yum-debug-dumpbu değişkenleri ve daha fazla hata ayıklama bilgisini bir dosyaya yazacak olanı verecektir. Stdout'a yazma seçeneği yoktur, her zaman gerçekten yararlı olmayan bir dosyaya yazacaktır.

Bu açıkçası harika bir çözüm değil, işte bu değişkenleri stdout'a basacak olan kopyalayıp yapıştırabileceğiniz bir python tek astar.

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

Bu, CentOS 5 ve 6'da çalışır ancak 4'lü değildir.

İşte CentOS 5'te göründüğü gibi:

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

2
yum-debug-dumpİhtiyacım olanı yapmak gibi görünüyor. Görünüşe göre bilgiler %%%%YUM INFObölümün altında . Bir şeylerin $YUM0-$YUM9ortaya çıkması gibi gözükmüyor ama bu değişkenleri hiçbir zaman kullanmam.
Stefan Lasiewski

2
Bash kabuğundaki $ releasever'ın temiz bir görüntüsünü elde etmek için şunu kullanın:/usr/bin/python -c 'import yum;yb=yum.YumBase();yb.doConfigSetup(init_plugins=False);print yb.conf.yumvar["releasever"]'
Rockallite

Bu sadece Python'un sistem sürümü için işe yarar - bu nasıl Python'un bir "alt-install" versiyonunda çalışır?
RCross

Ne releasever .... dize releasever aslında $ olup olmadığını do
Tembel Coder

10

Hepsini almak için yayınlanan mmckinst gibi bir kod kullanmanız gerekir , ancak sadece kontrol etmek $releaseveristiyorsanız yum version nogroupsRHEL-6 ile çalıştırabilirsiniz .

RHEL-6'da yapılacak diğer şey ise, sadece kendinizinkini yaratmaktır /etc/yum/vars.


detaylandırabilir misin Yaratma ne /etc/yum/varsbaşarır? Ayrıca bunun RHEL5'ten RHEL6'ya değişip değişmediğini biliyor musunuz?
Stefan Lasiewski

1
RHEL-5 ve RHEL-6 üzerinde çalışan kodları sorunsuzca yazabilmelisiniz. Versiyon komutu RHEL-5 atm'de değil. / Etc / yum / vars (sadece RHEL-6) ile ilgili demek istediğim, / etc / yum / vars / foorelease ... 'ı sadece kendi sürüm verilerini içeren bir sistem oluşturabilirsin ya da hatta sistemin serbest bırakmasını engellersin. / etc / yum / vars / releasever dosyasına yazarak.
James Antill

Daha fazla bilgi yaklaşık /etc/yum/varsbulunabilir access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/...
Stefan Lasiewski

10

Sadece birinin burada bitmesi durumunda, benim gibi, Fedora'daki dnf'in eşdeğer cevabını arıyorum Aşağıdaki python bir-astarını öğrendim:

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

Fedora 24'de şöyle görünür:

{'arch': 'x86_64',
 'basearch': 'x86_64',
 'releasever': '24'}

1
Bunu aramadan buldum yum variables repo names. Bu şimdilik soruyu yum, dnf ile değiştirerek yanıtlıyor. Harika iş!
bgStack15

4

Ve $ releasever'ın nasıl atandığını sondaj:

_Getsysver fonksiyon rpm veritabanını sorgulamak gibi:

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

"system-release (releasever)" değeri burada tanımlanır ve yum.conf içindeki distroverpkg tarafından geçersiz kılınabilir

Sorgu herhangi bir değer döndürmediyse, releasever '$ releasever' olarak ayarlanmış (örneğin distroverpkg = centos-release ayarladıysanız ancak rpm redhat-release- server'i yüklediyseniz)


0

Değişken ikame sonuçlarını görmenin başka bir yolu da böyle bir şey yapmaktır:

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

Yerel bir repo oluşturmak için hangi spacewalk istemcisinin seçildiğini kontrol etmek için yum değişkenleriyle uğraşıyorum ve değişkenlerin nasıl yorumlandığını görmek için bunu yararlı buldum.


Cool, ancak bu yöntem gibi değişkenler sağlamaz releasever.
Stefan Lasiewski
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.