Minimum Centos Docker kapsayıcısına man sayfaları yükleyemiyorum


13

Minimal bir Centos 7 Docker resmim var ve Dockerfile'mda hata ayıklamaya yardımcı olması için bazı man sayfaları almaya çalışıyorum. Kutunun dışında çok fazla şey yok:

# man ls
No manual entry for ls

Bu Serverfault cevabı başına , man-pagesRPM'yi kurdum ve bu iyi görünüyor:

# yum install -y man-pages
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
 * base: mirror.vtti.vt.edu
 * extras: centos.mbni.med.umich.edu
 * updates: centos.netnitco.net
Resolving Dependencies
--> Running transaction check
---> Package man-pages.noarch 0:3.53-5.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

======================================================================================================
 Package                  Arch                  Version                     Repository           Size
======================================================================================================
Installing:
 man-pages                noarch                3.53-5.el7                  base                5.0 M

Transaction Summary
======================================================================================================
Install  1 Package

Total download size: 5.0 M
Installed size: 4.6 M
Downloading packages:
man-pages-3.53-5.el7.noarch.rpm                                                | 5.0 MB  00:00:01     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : man-pages-3.53-5.el7.noarch                                                        1/1 
  Verifying  : man-pages-3.53-5.el7.noarch                                                        1/1 

Installed:
  man-pages.noarch 0:3.53-5.el7                                                                       

Complete!

Ancak:

# man ls
No manual entry for ls

Ben man sayfasını içermesi gerekiyordu rpmkontrol man-pagesederdi lsve öyle görünüyor:

# rpm -ql man-pages | grep -w ls
/usr/share/man/man1p/ls.1p.gz

Ama aslında kurulmuş gibi görünmüyor:

# man 1p ls
No manual entry for ls in section 1p
# ls -l /usr/share/man/man1p/
total 0

Ve dosya sisteminde başka bir yerde de görünmüyor.

# find / -name ls.1\*
#

Dosyaları oluşturabilirim /usr/share/man/man1p/, bu yüzden muhtemelen bazı Docker sanal dosya sistemi tuhaflığı değil.

Bunun en iyi yanı, şu anda gerçekten istediğim şeyin useraddkomutun man sayfası olmasıydı , ki bu RPM'de bile değil. İçinde shadow-utils.

# yum whatprovides /usr/share/man/man8/useradd.8.gz
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
 * base: mirror.vtti.vt.edu
 * extras: mirror.tzulo.com
 * updates: centos.netnitco.net
2:shadow-utils-4.1.5.1-18.el7.x86_64 : Utilities for managing accounts and shadow password files
Repo        : base
Matched from:
Filename    : /usr/share/man/man8/useradd.8.gz

Hangi zaten yüklü.

# yum install shadow-utils
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
 * base: mirror.vtti.vt.edu
 * extras: centos.mbni.med.umich.edu
 * updates: centos.netnitco.net
Package 2:shadow-utils-4.1.5.1-18.el7.x86_64 already installed and latest version
Nothing to do

Ve aslında, ikili dosyalar (örneğin /usr/sbin/useradd) oradadır. Ama adam sayfaları değil.

# ls -l /usr/share/man/man8/useradd.8.gz
ls: cannot access /usr/share/man/man8/useradd.8.gz: No such file or directory

Yani sorularım:

  1. İkili dosyaları bulabildiğimde neden shadow-utilsRPM'de olması gereken man sayfalarından hiçbirini bulamıyorum?
  2. RPM'nin yüklenmesi (başarıyla) neden bu man-pagesRPM'de olması gereken dosyaları yüklemiyor?

Güncelleme: Başına Aaron Marasco cevabı ve msuchy en comment denedim yum reinstall shadow-utils. Olduğu gibi yum install man-pages, bu başarıyla tamamlanmış gibi görünüyor, ancak aslında herhangi bir dosya koymuyor /usr/share/man/.



CentOS 7 ile bir Vagrant kurulumunda bana oldu - Paket kurulmadan önce kurulan bazı paketlerin man-pagesman sayfaları olmadığını buldum . Çözüm, bu paketleri yeniden yüklemekti, örneğin yum reinstall yum rpmbu ikisini kapsayacak şekilde.
RichVel

Yanıtlar:


12

Resminiz muhtemelen vardırnodocs yum yapılandırması (Bkz ayarlanan işlem bayrağı /etc/yum.conf).

Kılavuz sayfalarını istediğiniz paketleri kurmadan (yeniden) kurmadan önce global olarak (ya da yum komut satırında) kaldırabilirsiniz.

Örneğin:

yum --setopt=tsflags='' reinstall shadow-utils

Bu, güney zirvesinin cevabında--setopt=tsflags='' önerildiği gibi olmalı mı ? ( için )=-
David Moles

1
@DavidMoles, evet, bu bir yazım hatasıydı - atıfta bulunulan projektatomik belgede doğru anahtar sözdizimi de kullanıldı.
maxschlepzig

Teşekkürler. Sadece düzeltirdim, ama 6 karakterlik sınır. :)
David Moles

neden shadow-utils'i yeniden yükleyelim?
Tiina

@Tina çünkü bu komutu sağlayan pakettir useradd(soruda atıfta bulunulan).
maxschlepzig

5

Burada hiçbir şey işe yaramadı ve bunun üzerine kabul edilen cevap bir yazım hatası içeriyor. Orada yorum yapmak için yeterli Rep yok bu yüzden kimse yardımcı olması durumunda burada bir cevap olarak ekliyorum.

Man sayfaları içeren bir paket yüklemek için şunu kullanın:

yum --setopt=tsflags='' install man-db

Sonra:

yum --setopt=tsflags='' install {your-package-name}

Veya satırı, man sayfalarının yüklenmesini engelleyen yum.conf dosyasından kalıcı olarak kaldırabilirsiniz. Bunu yapmak için şunu kullanın:

sed -i '/tsflags=nodocs/d' /etc/yum.conf

Sonra yum installveya yum reinstallnormal olarak kullanabilirsiniz .

Kaynak


+1 de, sadece nodocs hattını yorumlamak için,sed -i 's/tsflags=nodocs/# &/' /etc/yum.conf
michael

2

Bunun eski bir soru olduğunu biliyorum, ancak bunu izlemek için harcadığım zaman göz önüne alındığında, sonunda başka birine faydalı olacak.

Sorun RPM'nin liman işçisinin görüntüsünde nasıl yapılandırıldığına bağlıdır, önce excludedocsdirektifin RPM yapılandırmasında aşağıdaki gibi listelenip listelenmediğini kontrol edin :

# rpm --showrc | grep docs

Eğer oradaysa, o zaman altında olduğunu belirten dosyayı bulmalı /etc/rpm/macros.imgcreateve kaldırmalısınız.

Yum daha sonra tüm man-page kurulumunu beklendiği gibi yapmalıdır ( nodocs tsflagyukarıda belirtilenlere sahip olmadığınız göz önüne alındığında) .


1

Docker görüntüsü aşırı derecede soyulmuş. RPM'ler kurulduktan sonra man sayfalarını kaldırdıklarına inanıyorum . Bunu ile doğrulayabilirsiniz rpm -V shadow-utils. Man sayfaları eksik olduğu için paketleri yükseltmek için delta RPM'leri kullanmaya çalışırken sorun yaşadığımı biliyorum.

Ne yazık ki, bir şey için bir man sayfası elde etmenin tek yolunun RPM'yi yeniden yüklemeyi veya bunları RPM'den manuel olarak çıkartıp yerine yerleştirmek olduğunu düşünüyorum.

Sanırım bu siteye de bakınız .


2
Evet. yum reinstall shadow-utilsdüzeltir.
msuchy

@msuchy Sadece denedim ve hayır, öyle değil. Muhtemelen man-pagesdüzgün bir şekilde kurulmasını engelleyen şeylerle mi ilgili ?
David Moles

@ aaron-d-marasco Bu, neden başlamak için kurulmadıklarını açıklıyor, ancak yüklemeye çalıştığımda neler olup bittiğini açıklamıyor man-pages.
David Moles

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.