Zbudowałem dwa pakiety RPM
proj1-1.0-1.x86_64.rpm
libtest1-1.0-1.x86_64.rpm
proj1
zależy od libtest1.so
obecnego pliku i jest poprawnie odzwierciedlone w pakietach RPM, jak widać 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
kończy się niepowodzeniem 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 mogę się upewnić, że libtest1-1.0-1.x86_64.rpm
zostanie zainstalowany automatycznie podczas instalacji programu proj1-1.0-1.x86_64.rpm
?
Wypróbowałem --aid
opcję z rpm -i
opisaną tutaj, ale nie zadziałała.
Czy jest inny sposób?
Dzięki za wszelką pomoc.
yum --nogpgcheck localinstall packagename.arch.rpm
.yum localinstall
to jest to samo, co odpowiedź już tutaj zamieszczona , z omówionymi już wadami sytuacji, w których zależności nie występują w repozytoriach yum (zobacz, ta metoda nie zadziała, jeśli [...] część).sudo yum --disablerepo=* --enablerepo=local install packagename.arch.rpm
aby upewnić się,yum
że nie zajrzy do innych repozytoriów.Podany link @gertvdijk pokazuje szybki sposób osiągnięcia pożądanych wyników bez konfigurowania lokalnego repozytorium:
Po prostu zmień
packagename.arch.rpm
nazwę pliku RPM, który chcesz zainstalować.Edytuj Tylko wyjaśnienie, spowoduje to automatyczne zainstalowanie wszystkich zależności, które są już dostępne w repozytoriach systemowych YUM.
Jeśli masz zależności spełniane przez inne pakiety RPM, których nie ma w repozytoriach systemu, ta metoda nie zadziała, chyba że każdy RPM zostanie również określony
packagename.arch.rpm
w wierszu poleceń.źródło
libtest1-1.0-1.x86_64.rpm
znajduje się w repozytorium w innym miejscu lub oba pakiety są określone w wierszu poleceń, tak jakrpm -i
wymagałoby to „ ”. Właśnie to zweryfikowałem wyum
3.4.3 (Fedora 18). Transkrypcja tutaj pokazuje, że idzie doupdates
repo o zależności, nawet gdy pliki są właśnie tam.rpm -i
”, więc używanie nieyum
daje żadnych dodatkowych korzyści.Dla użytkowników dnf po prostu użyj
dnf install *.rpm
,localinstall
nie jest już potrzebne.źródło
mysql-workbench
zrpm -ivh
. ostatecznie skończyło się na tym poście. DNF załatwił sprawę.U mnie pracowałem tylko z
I automatycznie poprosił o zezwolenie na pobranie zależności. Poniżej przykładu używam fedory 22
źródło
Znalazłem prostsze rozwiązanie. Jeśli masz wszystkie RPM w tym samym katalogu, wszystko, co musisz zrobić, to
rpm
Wydaje się, że wymyśla prawidłową kolejność ich instalowania i instaluje RPM.źródło
Odpowiedź Mateusza wzbudziła wiele emocji, ponieważ brakuje w niej jeszcze drobnego szczegółu. Ogólne polecenie brzmiałoby:
package_file_name
Powyżej może zawierać lokalną ścieżkę bezwzględną lub względną lub być adresem (ewentualnie URI).Yum wyszuka zależności między wszystkimi plikami pakietów podanymi w wierszu poleceń, A JEŚLI NIE MOŻE znaleźć zależności, użyje również dowolnych skonfigurowanych i włączonych repozytoriów yum.
Ani bieżący katalog roboczy, ani ścieżki żadnego z nich
package_file_name
nie będą przeszukiwane, z wyjątkiem sytuacji, gdy którykolwiek z tych katalogów został wcześniej skonfigurowany jako aktywneyum
repozytorium.Tak więc w przypadku OP
yum
polecenie:zrobiłby tak, jak zrobiłoby to
rpm
:Różnica między tymi
yum
irpm
wywołaniami byłaby widoczna tylko wtedy, gdyby jeden z wymienionych pakietów do zainstalowania miał dalsze zależności od pakietów NIE wymienionych w wierszu poleceń.W takim przypadku
rpm
po prostu odmówi kontynuowania, podczas gdyyum
użyje skonfigurowanych i włączonych repozytoriów yum do wyszukiwania zależności i może się powieść.Bieżący katalog roboczy NIE będzie przeszukiwany w żadnym przypadku, z wyjątkiem sytuacji, gdy został wcześniej skonfigurowany jako włączone
yum
repozytorium.źródło
Wpadłem na to i to, co zadziałało, to uruchomienie
yum localinstall enterPkgNameHere.rpm
z katalogu, w którym znajduje się plik .rpm.Uwaga: zastąp
enterPkgNameHere.rpm
nazwę pliku .rpm.źródło
W przypadku openSUSE Leap 15 otrzymuję podobny błąd:
Uruchamiam to polecenie, aby dowiedzieć się, jakie są zależności:
Następnie uruchamiam to polecenie, aby zainstalować zależności:
Następnie uruchamiam to, aby zainstalować
rpm
plik:Jestem nie wiem, czy to jest najlepsza praktyka, jednak rozwiązać mój problem.
źródło
Krok 1: skopiuj wszystkie paczki rpm w podanych lokalizacjach
Krok 2: jeśli createrepo nie jest jeszcze zainstalowane, ponieważ domyślnie nie będzie, zainstaluj je.
Krok 3: utwórz metedane repozytorium i podaj poniższe uprawnienia
Krok 4: Utwórz plik repozytorium z następującą zawartością w /etc/yum.repos.d/mysql.repo
Krok 5 Uruchom to polecenie, aby zainstalować
źródło
Po prostu uruchom następujące polecenie.
Wpisz swoje hasło i gotowe.
źródło
Proces generowania RPM z pliku źródłowego: 1) pobierz plik źródłowy z rozszerzeniem.gz. 2) zainstaluj rpm-build i rpmdevtools z yum install. (folder rpmbuild zostanie wygenerowany ... foldery SPECS, SOURCES, RPMS .. zostaną wygenerowane w folderze rpmbuild). 3) skopiuj kod źródłowy.gz do folderu SOURCES. (Rpmbuild / SOURCES) 4) Rozpakuj plik tar za pomocą następującego polecenia. przejdź do folderu SOURCES: rpmbuild / SOURCES, w którym znajduje się plik tar. polecenie: np. tar -xvzf httpd-2.22.tar.gz folder httpd-2.22 zostanie wygenerowany w tej samej ścieżce. Sprawdź, czy apr i apr-util i tam w folderze httpd-2.22 / srclib. Jeśli apr i apr-util nie istnieją, pobierz najnowszą wersję z witryny Apache, rozpakuj ją i umieść w folderze httpd-2.22 / srclib. Upewnij się również, że masz zainstalowany pcre w swoim systemie.
5) przejdź do wyodrębnionego folderu, a następnie wpisz poniższe 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: wykonaj 7) po pomyślnym wykonaniu polecenia make uruchom: 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ź także pakiet wykluczeń: EXCLUDE = "/ selinux" 8) checkinstall zapyta o opcję (wpisz R jeśli chcesz tp budować rpm dla pliku źródłowego) 9) Gotowy plik .rpm zostanie wbudowany w folder RPMS wewnątrz pliku rpmbuild / RPMS. .. Wszystkiego najlepszego ....
Pozdrawiam, Prerana
źródło