RPM otomatik kurulum bağımlılıkları nasıl yapılır


138

İki RPM paketi oluşturdum

  • proj1-1.0-1.x86_64.rpm
  • libtest1-1.0-1.x86_64.rpm

proj1libtest1.somevcut dosyaya bağlıdır ve burada görüldüğü gibi RPM paketlerine doğru şekilde yansıtılır:

user@my-pc:~$ rpm -qp --requires proj1-1.0-1.x86_64.rpm
libtest1.so()(64bit)

user@my-pc:~$ rpm -qp --provides libtest1-1.0-1.x86_64.rpm
libtest1.so()(64bit)

proj1Bağımlılık eksik olduğundan yükleme başarısız oluyor.

user@my-pc:~$ rpm -ivh proj1-1.0-1.x86_64.rpm
error: Failed dependencies:
libtest1.so()(64bit) is needed by proj1-1.0-1.x86_64.rpm

Bunu nasıl sağlarım libtest1-1.0-1.x86_64.rpmyüklenmesi sırasında otomatik olarak yüklenir proj1-1.0-1.x86_64.rpm?

Burada açıklandığı gibi --aidseçeneği denedim ama benim için işe yaramadı.rpm -i

Başka yolu var mı?

Herhangi bir yardım için teşekkürler.

Yanıtlar:


102

Bir (yerel) havuz oluşturun ve yumbağımlılıkları sizin yerinize çözmesini sağlamak için kullanın .

CentOS wiki'nin bu konuda nasıl yapılacağını gösteren güzel bir sayfası var. CentOS wiki HowTos / CreateLocalRepos .


Özetlenmiş ve daha da küçültülmüş (ideal değil, en hızlı):

  1. Yerel depo için bir dizin oluşturun, örn /home/user/repo.
  2. RPM'leri bu dizine taşıyın.
  3. Bazı sahiplik ve dosya sistemi izinlerini düzeltin:

    # chown -R root.root /home/user/repo
    
  4. createrepoHenüz yüklenmediyse paketi yükleyin ve çalıştırın

    # createrepo /home/user/repo
    # chmod -R o-w+r /home/user/repo
    
  5. , Örneğin bir depo yapılandırma dosyası oluşturun /etc/yum.repos.d/myrepo.repoiçeren

    [local]
    name=My Awesome Repo
    baseurl=file:///home/user/repo
    enabled=1
    gpgcheck=0
    
  6. Paketinizi kullanarak yükleyin

    # yum install packagename
    

46
Verdiğiniz bağlantı sadece bu hat ile davamı çözüldü: yum --nogpgcheck localinstall packagename.arch.rpm.
Matthew

@Matthew Cool, tüm yerel veri havuzu adımlarını ortadan kaldıracaktır. Bunu bir cevap olarak söyleyebilirim.
gertvdijk

Benim gibi AIX üzerinde YUM'un kurulumunu otomatikleştirmek için RPM komut dosyası çalıştırmaya çalışıyorsanız bu çok iyi çalışmıyor ;-)
Tricky

1
@ Max13, bu yum localinstallve bağımlılık yum depolarında olmayan durumlar için zaten tartışılan dezavantajları ile, burada zaten gönderilen cevap ile aynıdır ( [...] bölümü olmadığı sürece bu yöntemin işe yaramayacağını unutmayın ).
gertvdijk

Diğer havuzlara bakmadığından sudo yum --disablerepo=* --enablerepo=local install packagename.arch.rpmemin olmak için internet bağlantısı yoksa bunu da yumdüşündüm.
Anshuman Goel

194

Sağlanan bağlantı @gertvdijk, yerel bir havuzu yapılandırmadan istenen sonuçları elde etmenin hızlı bir yolunu gösterir:

$ yum --nogpgcheck localinstall packagename.arch.rpm

packagename.arch.rpmYüklemek istediğiniz RPM dosya adına değiştirin .

Düzenle Sadece bir açıklama, sistem YUM depoları aracılığıyla zaten mevcut olan tüm bağımlılıkları otomatik olarak yükleyecektir.

Sistem depolarında olmayan diğer RPM'lerden memnun olduğunuz bağımlılıklar varsa packagename.arch.rpm, komut satırında her RPM de belirtilmediğinde bu yöntem çalışmaz .


7
Hayır, libtest1-1.0-1.x86_64.rpmbaşka bir yerde bir depoda olmadıkça veya her iki paket de komut satırında " rpm -i" gerektireceği gibi belirtilmedikçe bu çalışmaz . Bunu yum3.4.3'te doğruladım (Fedora 18). Buradaki transkript updates, dosyalar orada olsa bile bağımlılıklar için repoya gittiğini gösterir .
Aaron D.Marasco

3
@ AaronD.Marasco belki de soruda açıklanan özel durum hakkında haklısınız, ancak bu tek astar, benim yaptığım gibi buraya giren herkes için çok daha kolay ve "Nasıl yapılır?" Başlıklı soru için tamamen geçerli bir cevaptır. msgstr "rpm otomatik kurulum bağımlılıkları yap".
Matthew

3
Hayır, bağımlılıkları "otomatik olarak yüklemez" - bunları komut satırında " rpm -i" ile yaptığınız gibi belirtirsiniz , bu nedenle kullanmak yumsize ek bir fayda sağlamaz.
Aaron D.Marasco

2
Lütfen yazdıklarımı tekrar okuyun. Yüklediğiniz RPM'nin bulunduğu dizinde yerel olarak kullanılabilse bile, bağımlılıklar bir depodan indirildi.
Aaron D.Marasco

1
@ AaronD.Marasco Gönderilen diğer çözümün OP'nin sorduğu örnek için daha iyi olduğunu tartışmıyorum. Ancak cevabım, başlığındaki soruyu cevaplamak için doğru ve yerel bir repo yapılandırmaktan çok daha hızlı ve benim yaptığım gibi buraya gelen ve otomatik olarak bağımlılıkları otomatik olarak yüklemek için yum almak için hızlı bir yol isteyen diğerlerine yardımcı olacak. rpm gerektirir. Topluluğun sadece OP'ye yardım etmekle kalmayıp cevapları aramasına yardımcı olmak için yığın taşmasının amacı budur.
Matthew

28

DNF kullanıcılar sadece kullanmak için dnf install *.rpm, localinstallartık gerek yoktur.


1
Tam olarak bunu söylemek için buraya geldim
nawfel bgh

1
teşekkürler, ben yüklemek için mücadele mysql-workbenchile rpm -ivh. sonunda bu gönderiyle sonuçlandı. DNF hile yaptı.
BlueBird

21

Benim için sadece

# yum install ffmpeg-2.6.4-1.fc22.x86_64.rpm

Ve otomatik olarak bağımlılıkları indirmek için yetkilendirme istedi. Örneğin altında, fedora 22 kullanıyorum

[root@localhost lukas]# yum install ffmpeg-2.6.4-1.fc22.x86_64.rpm
Yum command has been deprecated, redirecting to '/usr/bin/dnf install  ffmpeg-2.6.4-1.fc22.x86_64.rpm'.
See 'man dnf' and 'man yum2dnf' for more information.
To transfer transaction metadata from yum to DNF, run:
'dnf install python-dnf-plugins-extras-migrate && dnf-2 migrate'

Last metadata expiration check performed 0:28:24 ago on Fri Sep 25 12:43:44 2015.
Dependencies resolved.
====================================================================================================================
 Package               Arch           Version                                  Repository                      Size
====================================================================================================================
Installing:
 SDL                   x86_64         1.2.15-17.fc22                           fedora                         214 k
 ffmpeg                x86_64         2.6.4-1.fc22                             @commandline                   1.5 M
 ffmpeg-libs           x86_64         2.6.4-1.fc22                             rpmfusion-free-updates         5.0 M
 fribidi               x86_64         0.19.6-3.fc22                            fedora                          69 k
 lame-libs             x86_64         3.99.5-5.fc22                            rpmfusion-free                 345 k
 libass                x86_64         0.12.1-1.fc22                            updates                         85 k
 libavdevice           x86_64         2.6.4-1.fc22                             rpmfusion-free-updates          75 k
 libdc1394             x86_64         2.2.2-3.fc22                             fedora                         124 k
 libva                 x86_64         1.5.1-1.fc22                             fedora                          79 k
 openal-soft           x86_64         1.16.0-5.fc22                            fedora                         292 k
 opencv-core           x86_64         2.4.11-5.fc22                            updates                        1.9 M
 openjpeg-libs         x86_64         1.5.1-14.fc22                            fedora                          89 k
 schroedinger          x86_64         1.0.11-7.fc22                            fedora                         315 k
 soxr                  x86_64         0.1.2-1.fc22                             updates                         83 k
 x264-libs             x86_64         0.142-12.20141221git6a301b6.fc22         rpmfusion-free                 587 k
 x265-libs             x86_64         1.6-1.fc22                               rpmfusion-free                 486 k
 xvidcore              x86_64         1.3.2-6.fc22                             rpmfusion-free                 264 k

Transaction Summary
====================================================================================================================
Install  17 Packages

Total size: 11 M
Total download size: 9.9 M
Installed size: 35 M
Is this ok [y/N]: y

sanırım en kolay yolu
Shams

Doğrudan bir rpm çözümü değil, ama bunu en çok seviyorum.
TFuto

RPM çözümü değil, bağımlılıkları tek bir komutla yüklemenin en kolay yoludur. Bu benim için kusursuz çalıştı
Enrique Benitez

9

Daha basit bir çözüm buldum. Aynı dizinde tüm RPM'leriniz varsa, tek yapmanız gereken,

$ sudo rpm -i *.rpm

rpm bunları yüklemek için doğru sırayı buluyor ve RPM'leri yüklüyor.


5
Bağımlılıklar geçerli dizinde değilse bu durum hala ele alınmaz.
Ding-Yi Chen

4

Matthew'in cevabı, hala küçük bir ayrıntıdan yoksun olması nedeniyle birçok duyguyu uyandırdı. Genel komut şöyledir:

# yum --nogpgcheck localinstall <package1_file_name> ... <packageN_file_name>

package_file_nameÜzerinde bir URL (hatta bir URI) yerel mutlak ya da göreli yolunu içerir, ya da olabilir.

Yum, komut satırında verilen tüm paket dosyaları arasında bağımlılıkları arar ve buradaki bağımlılıkları bulmakta başarısız olursa, yapılandırılmış ve etkinleştirilmiş yum depolarını da kullanır.

package_file_nameBu dizinlerden herhangi birinin önceden etkin olarak yapılandırılmadığı durumlar dışında , ne geçerli çalışma dizini ne de herhangi birinin yolu aranmazyum depo aranmaz.

Bu yüzden OP'nin durumunda yumkomut:

# cd <path with pkg files>; yum --nogpgcheck localinstall ./proj1-1.0-1.x86_64.rpm ./libtest1-1.0-1.x86_64.rpm

Yapacağı gibi rpm:

# cd <path with pkg files>; rpm -i proj1-1.0-1.x86_64.rpm libtest1-1.0-1.x86_64.rpm

Bunlar yumve rpmçağrılar arasındaki fark , yalnızca yüklenmek üzere listelenen paketlerden birinin komut satırında listelenmeyen paketler üzerinde daha fazla bağımlılığı varsa görülebilir.

Böyle bir durumda rpmdevam etmeyi reddederken,yum bağımlılıkları aramak için yapılandırılmış ve etkinleştirilmiş yum depolarını kullanır ve muhtemelen başarılı olabilir.

Geçerli çalışma dizini, daha önce etkin bir yumdepo olarak yapılandırılmış olması durumu dışında hiçbir durumda aranmaz.


0

Ben bu koştu ve benim için ne çalıştı yum localinstall enterPkgNameHere.rpm.rpm dosyasının bulunduğu dizinin içinden çalıştırmak oldu.

Not: yerine enterPkgNameHere.rpm.rpm dosyanızın adını yazın.


0

OpenSUSE Leap 15 durumunda, benzer hata alıyorum:

> sudo rpm -i opera-stable_53.0.2907.68_amd64.rpm 
[sudo] password for root: 
warning: opera-stable_53.0.2907.68_amd64.rpm: Header V4 RSA/SHA512 Signature, key ID a5c7ff72: NOKEY
error: Failed dependencies:
    at is needed by opera-stable-53.0.2907.68-0.x86_64

Bağımlılıklar neler olduğunu anlamak için bu komutu çalıştırın:

> sudo zypper install opera-stable_53.0.2907.68_amd64.rpm 
Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following 4 NEW packages are going to be installed:
  at libfl2 libHX28 opera-stable

4 new packages to install.
Overall download size: 50.3 MiB. Already cached: 0 B. After the operation, additional 176.9 MiB will be used.
Continue? [y/n/...? shows all options] (y): n

Sonra bağımlılıkları yüklemek için bu komutu çalıştırın:

> sudo zypper in at
Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following 3 NEW packages are going to be installed:
  at libfl2 libHX28

3 new packages to install.
Overall download size: 208.6 KiB. Already cached: 0 B. After the operation, additional 600.4 KiB will be used.
Continue? [y/n/...? shows all options] (y): y

Sonra rpmdosyayı yüklemek için çalıştırın :

> sudo rpm -i opera-stable_53.0.2907.68_amd64.rpm

En iyi uygulama olup olmadığından emin değilim , ancak sorunumu çözdü.


0

Adım 1: Verilen yerlere tüm rpm paketlerini kopyalayın

Adım 2: Createrepo önceden yüklenmemişse, varsayılan olarak olmayacağı için kurun.

[root@pavangildamysql1 8.0.11_rhel7]# yum install createrepo

3.Adım: Depo metedatası oluşturun ve aşağıda izin verin

[root@pavangildamysql1 8.0.11_rhel7]# chown -R root.root /scratch/PVN/8.0.11_rhel7
[root@pavangildamysql1 8.0.11_rhel7]# createrepo /scratch/PVN/8.0.11_rhel7
Spawning worker 0 with 3 pkgs
Spawning worker 1 with 3 pkgs
Spawning worker 2 with 3 pkgs
Spawning worker 3 with 2 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[root@pavangildamysql1 8.0.11_rhel7]# chmod -R o-w+r /scratch/PVN/8.0.11_rhel7

Adım 4: /etc/yum.repos.d/mysql.repo adresinde aşağıdaki içeriklerle havuz dosyası oluşturun

[local]
name=My Awesome Repo
baseurl=file:///scratch/PVN/8.0.11_rhel7
enabled=1
gpgcheck=0

Adım 5 Yüklemek için bu komutu çalıştırın

[root@pavangildamysql1 local]# yum --nogpgcheck localinstall mysql-commercial-server-8.0.11-1.1.el7.x86_64.rpm

-2

Basitçe aşağıdaki komutu çalıştırın.

sudo dnf install *package.rpm

Şifrenizi girin ve işiniz bitti.


-5

Kaynak dosyadan RPM oluşturma işlemi: 1) download kaynak dosya with.gz extention. 2) rpm-build ve rpmdevtools'u yum kurulumundan yükleyin. (rpmbuild klasörü oluşturulacaktır ... SPECS, SOURCES, RPMS .. klasörleri rpmbuild klasörü içinde oluşturulmalıdır). 3) source code.gz dosyasını SOURCES klasörüne kopyalayın. (Rpmbuild / SOURCES) 4) Aşağıdaki komutu kullanarak katran topunun yıldızını açın. tar dosyasının bulunduğu SOURCES klasörüne gidin: rpmbuild / SOURCES. komutu: örn. tar -xvzf httpd-2.22.tar.gz httpd-2.22 klasörü aynı yolda oluşturulur. Httpd-2.22 / srclib klasöründe apr ve apr-util olup olmadığını kontrol edin. Apr ve apr-util mevcut değilse apache sitesinden en son sürümü indirin, untar ve httpd-2.22 / srclib klasörünün içine koyun. Ayrıca sisteminizde pcre kurulumunu yaptığınızdan emin olun.

5) ayıklanan klasöre gidin ve ardından aşağıdaki komutu yazın: ./configure --prefix = / usr / local / apache2 --with-include-apr --enable-proxy --enable-proxy-balancer --with-mpm = worker --enable-mods-static = tümü 6) yapılandırma başarılı olduktan sonra komutun altında çalıştır: 7) başarılı bir şekilde yürütüldükten sonra komut çalıştır: komutunu aynı klasörde kontrol et. (checkinstall yazılımınız yoksa lütfen siteden en son sürümü indirin) Checkinstall yazılımı aşağıdaki yolla çözülebilecek bir hataya sahiptir ::::: checkinstallrc'yi bulun ve sonra vL komutunu kullanarak TRANSLATE = 1 yerine TRANSLATE = 0 olarak değiştirin. Ayrıca hariç tutma paketini kontrol edin: EXCLUDE = "/ selinux" 8) checkinstall seçeneği isteyecektir (kaynak dosya için tp build rpm istiyorsanız R tipi) 9) .rpm dosyası rpmbuild / RPMS dosyası içindeki RPMS klasöründe oluşturulacaktır. .. Herşey gönlünce olsun ....

Saygılarımızla, Prerana


Nereden bir şey inşa etmek istendi? Bu, önceden oluşturulmuş bir RPM'nin bağımlılıklarını çözmekle ilgiliydi.
Craig Jackson
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.