Czy istnieje sposób na pobranie wszystkich zależności za pomocą yumdownloadera, nawet jeśli są już zainstalowane?
Próbuję utworzyć lokalne repozytorium i chcę tylko uwzględnić potrzebne pakiety.
yum
repository
Luke
źródło
źródło
--requires
--resolve
opcja repoquery nie działa rekurencyjnie dla deps.--recursive
opcję do polecenia repoquery, aby rekurencyjnie działała.yum-utils
projektu nadrzędnego . Powodem, dla którego pobiera więcej pakietów niż oczekiwano, jest to, że funkcjarpmUtils.arch.getArchList()
zwraca wszystkie kompatybilne architektury dla danego. Obejmuje na przykładnoarch
architekturę, która może być potrzebnax86_64
pakietom. Możesz sprawdzić źródło: yum.baseurl.org/gitweb?p=yum.git;a=blob;f=rpmUtils/…Dla informacji wszystkich
yumdownloader
nie wykonuje pracy. Dla każdego, kto ma pewne doświadczenie w zarządzaniu pakietami z `yum, naturalne jest oczekiwanie, że następujący wiersz poleceń pobierze rekurencyjnie pakiet RPM i wszystkie jego zależności:Ale tak nie jest. Może to być drukowanie zależności pierwszego poziomu lub tych, które nie są jeszcze zainstalowane. Nie jestem pewien.
Oto jedna metoda, która działa na CentOS 6.5. Postępuj zgodnie z instrukcjami, aby zainstalować wtyczkę downloadonly dla
yum
podaną przez Red Hat . Zasadniczo na CentOS 6.x:Następnie skorzystaj z wtyczki w połączeniu z
--installroot
przełącznikiemyum
. Zapobiega toyum
rozwiązywaniu, a następnie pomijaniu zależności, które są już zainstalowane w systemie.Można by pobrać RPM pakietu,
<package>
a wszystkie jego zależności w katalogu<rpm_dir>
. Przykład z Git:źródło
sudo yum install yum-plugin-downloadonly.noarch
mówi,No package yum-plugin-downloadonly.noarch available.
co robić?yum search yumdownloader
zwracayum-utils.noarch
Cannot find a valid baseurl for repo: base/$releasever/x86_64
pojawia się po dodaniu--installroot
flagi.Cannot find a valid baseurl...
problemu z Centos 7 dzięki rozwiązaniu pod tym linkiem : Dodaj--releasever=/
parametrZdaję sobie sprawę, że wątek jest stary, ale na wypadek, gdyby ktoś natknął się na to, możesz użyć yum, aby osiągnąć pożądane zachowanie.
Najpierw instynktownie plugin do pobrania (instrukcje dla RHEL): (RHEL5)
(RHEL6)
Następnie uruchom polecenie w następujący sposób:
Jeśli zignorujesz,
--downloaddir
yum automatycznie pobierze do/var/cache/yum
Więc chyba, że musisz specjalnie używać yumdownloadera, myślę, że byłby to najprostszy sposób na osiągnięcie celu.
źródło
Jeśli jesteś z przyszłości (Fedora 23+), gdzie yum zastępuje się dnf, ten skrypt bash może ci się przydać.
rpmDownloader:
rpm Resolver:
źródło
Odkryłem, że w praktyce budowanie takiego repozytorium jest trudne do utrzymania. Zbudowaliśmy to repozytorium, ponieważ:
Problemy, które możemy rozwiązać, to:
Ostatecznie lepszym rozwiązaniem naszego problemu było proxy oficjalnych repozytoriów i buforowanie używanych pakietów. Działa to dobrze, ponieważ:
Użyliśmy Nginx i wbudowanej obsługi proxy.
źródło
Opierając się na odpowiedzi Luke'a i komentarzach ...
W chwili pisania tego
repotrack
będzie pasował do wszystkich następujących architektur gdyx86_64
jest określona:x86_64
,athlon
,i686
,i586
,i486
,i386
, inoarch
.Dla moich celów Jestem zainteresowany tylko
x86_64
inoarch
opakowań, a wiem, że moja dystrybucja nie ma żadnychathlon
pakietów.Następujące polecenie pobiera listę adresów URL pakietów, odfiltrowuje
i?86
architektury i drukuje nazwy pakietów podczas pobierania:Pamiętaj, że
repotrack
nie ostrzega cię, jeśli nie może znaleźć pakietu, który spełnia zależność w twoich włączonych repozytoriach. Po cichu to pomija.źródło
Spróbuj także
na przykład:
Źródło: https://www.thegeekdiary.com/downloading-rpm-packages-with-dependencies-yumdownloader-vs-yum-downloadonly-vs-repoquery/
źródło