Jak zrobić zależności automatycznej instalacji rpm

Zbudowałem dwa pakiety RPM

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

proj1 zależy od tego, czy plik libtest1.so jest obecny i jest poprawnie odzwierciedlony w pakietach RPM, jak pokazano tutaj:

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)

Instalacja proj1 nie powiedzie się z powodu braku zależności.

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

Jak upewnić się, że libtest1-1.0-1.x86_64.rpm jest zainstalowany automatycznie podczas instalacja proj1-1.0-1.x86_64.rpm?

Próbowałem opcji --aid z rpm -i jak opisano tutaj ale nie pracuj dla mnie.

Jest jakiś inny sposób? Dzięki za pomoc.
Author: HAL, 2012-12-14

11 answers

Utwórz (lokalne) repozytorium i użyj yum, aby rozwiązać zależności za Ciebie.

CentOS wiki ma ładną stronę z instrukcjami na ten temat. CentOS wiki HowTos / CreateLocalRepos .


Podsumowane i dodatkowo zminimalizowane (Nie idealne, ale najszybsze):

  1. Utwórz katalog dla lokalnego repozytorium, np. /home/user/repo.
  2. Przenieś RPM do tego katalogu.
  3. Fix some ownership and filesystem uprawnienia:

    # chown -R root.root /home/user/repo
    
  4. Zainstaluj createrepo pakiet, jeśli nie jest jeszcze zainstalowany, i uruchom

    # createrepo /home/user/repo
    # chmod -R o-w+r /home/user/repo
    
  5. Utwórz plik konfiguracyjny repozytorium, np. /etc/yum.repos.d/myrepo.repo zawierający

    [local]
    name=My Awesome Repo
    baseurl=file:///home/user/repo
    enabled=1
    gpgcheck=0
    
  6. Zainstaluj pakiet używając

    # yum install packagename
    
 80
Author: gertvdijk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-14 11:34:03

Podany link @gertvdijk pokazuje szybki sposób osiągnięcia pożądanych rezultatów bez konfigurowania lokalnego repozytorium:

$ yum --nogpgcheck localinstall packagename.arch.rpm

Po prostu zmień packagename.arch.rpm na nazwę pliku RPM, który chcesz zainstalować.

Edit tylko Wyjaśnienie, to automatycznie zainstaluje wszystkie zależności, które są już dostępne w repozytoriach systemu YUM.

Jeśli masz zależności spełnione przez inne RPM, które nie znajdują się w repozytoriach systemu, to ta metoda nie będzie działać, chyba że każdy RPM jest również określony wraz z packagename.arch.rpm w wierszu poleceń.

 155
Author: Matthew,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-29 02:23:27

Dla użytkowników dnf wystarczy użyć dnf install *.rpm, localinstall nie jest już potrzebny.

 21
Author: mimoralea,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-20 18:05:23

For Me worked just with

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

I automatycznie poprosił o autoryzację do pobrania depedencies. Poniżej przykład, używam Fedory 22

[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
 13
Author: user5377363,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-28 12:04:05

Znalazłem prostsze rozwiązanie. Jeśli masz wszystkie RPM w tym samym katalogu, wszystko, co musisz zrobić, to

$ sudo rpm -i *.rpm

rpm wydaje się, aby dowiedzieć się prawidłowej kolejności, aby zainstalować te i instaluje rpm.

 6
Author: Rajaram,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-29 02:25:29

[13]] odpowiedź Mateusza budziła wiele emocji, ponieważ wciąż brakuje w niej drobnego szczegółu. Dowództwo ogólne brzmiałoby:

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

package_file_name powyżej może zawierać lokalną ścieżkę bezwzględną lub względną lub być adresem URL (być może nawet URI).

Yum wyszukuje zależności pomiędzy wszystkimi plikami pakietów podanymi w wierszu poleceń i jeśli nie znajdzie tam zależności, użyje również dowolnych skonfigurowanych i włączonych repozytoriów yum.

Ani obecna praca katalog, ani ścieżki żadnego z package_file_name nie będą przeszukiwane, chyba że któryś z tych katalogów został wcześniej skonfigurowany jako włączone repozytorium yum.

Więc w przypadku OP polecenie yum:

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

Zrobiłby, podobnie jak zrobiłby rpm:

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

Różnica pomiędzy wywołaniami yum i rpm będzie widoczna tylko wtedy, gdy jeden z pakietów, który ma być zainstalowany, będzie miał inne zależności od pakietów nie wymienionych w wierszu poleceń.

W w takim przypadku rpm po prostu odmówi kontynuowania, podczas gdy yum użyje dowolnych skonfigurowanych i włączonych repozytoriów yum do wyszukiwania zależności i może się to udać.

Bieżący katalog roboczy w żadnym wypadku nie będzie przeszukiwany, z wyjątkiem sytuacji, gdy został wcześniej skonfigurowany jako włączone repozytorium yum.

 2
Author: Artur Opalinski,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-30 08:54:52

Natknąłem się na to i to, co dla mnie działało, to uruchomić yum localinstall enterPkgNameHere.rpm z wnętrza katalogu, w którym .plik rpm znajduje się.

Uwaga: zastąp enterPkgNameHere.rpm nazwą swojego .plik rpm.

 0
Author: specialk1st,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-05 01:26:10

Simple wystarczy uruchomić następujące polecenie.

sudo dnf install *package.rpm

Wprowadź hasło i gotowe.

 0
Author: Subham Debnath,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-30 05:11:14

W przypadku openSUSE Leap 15, otrzymuję podobny błąd:

> 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

Uruchamiam to polecenie, aby dowiedzieć się, jakie są zależności:

> 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

Następnie uruchamiam to polecenie, aby zainstalować zależności:

> 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

Następnie uruchamiam to, aby zainstalować plik rpm:

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

Jestem Nie pewien, czy jest to najlepsza praktyka, jednak to rozwiązało mój problem.

 0
Author: user3405291,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-09 06:33:59

Krok 1: skopiuj wszystkie rpm pkg w podanych lokalizacjach

Krok 2: jeśli createrepo nie jest już zainstalowany, ponieważ nie będzie domyślnie, zainstaluj go.

[root@pavangildamysql1 8.0.11_rhel7]# yum install createrepo

Krok 3: Utwórz repozytorium metedata i daj poniżej uprawnienia

[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

Krok 4: Utwórz plik repozytorium z następującą zawartością w /etc / yum.repo.d / mysql.repo

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

Krok 5 Uruchom to polecenie, aby zainstalować

[root@pavangildamysql1 local]# yum --nogpgcheck localinstall mysql-commercial-server-8.0.11-1.1.el7.x86_64.rpm
 0
Author: Pavan Gilda,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-12 15:31:43

Proces generowania RPM z pliku źródłowego:

  1. pobierz plik źródłowy z.przedłużanie gz.
  2. Zainstaluj rpm-build i rpmdevtools z yum install. (zostanie wygenerowany folder rpmbuild...DANE TECHNICZNE, ŹRÓDŁA, RPM.. foldery powinny być generowane wewnątrz folderu rpmbuild).
  3. skopiuj kod źródłowy.gz do folderu SOURCES.(rpmbuild/SOURCES)
  4. Untar kulki smoły za pomocą następującego polecenia.
    • przejdź do folderu SOURCES: rpmbuild / SOURCES, gdzie znajduje się plik tar obecny. polecenie: e. g tar -xvzf httpd-2.22.tar.gz folder httpd - 2.22 zostanie wygenerowany w tej samej ścieżce. Sprawdź, czy apr i apr-util znajdują się w folderze httpd-2.22 / srclib. Jeśli apr i Apr-util nie istnieją Pobierz najnowszą wersję ze strony apache, rozpakuj ją i umieść w folderze httpd-2.22 / srclib. Upewnij się również, że masz pcre zainstalować w systemie.
  5. przejdź do wyodrębnionego folderu, a następnie wpisz poniżej polecenie: ./configure --prefix=/usr/local/apache2 --with-included-apr --enable-proxy --enable-proxy-balancer --with-mpm=worker --enable-mods-static=all
  6. uruchom poniższe polecenie po pomyślnym skonfigurowaniu: make
  7. Po pomyślne wykonanie polecenia make run: checkinstall w tym samym folderze. (jeśli nie masz oprogramowania checkinstall Pobierz najnowszą wersję ze strony) Również oprogramowanie checkinstall ma błąd, który można rozwiązać w następujący sposób: zlokalizuj checkinstallrc, a następnie zamień TRANSLATE = 1 na TRANSLATE=0 za pomocą polecenia vim. Sprawdź również, czy pakiet exclude: EXCLUDE= "/ selinux "
  8. checkinstall zapyta o opcję (typ R jeśli chcesz TP build rpm dla pliku źródłowego)
  9. Zrobione! .plik rpm będzie wbudowany w folder RPMS wewnątrz pliku rpmbuild/rpms.
 -2
Author: user3248738,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-22 03:39:25