Po zainstalowaniu pakietu przez yum (ze skonfigurowanymi wieloma repozytoriami), jak mogę znaleźć, z którego repozytorium zostało zainstalowane?
Po uruchomieniu yum info package-name
(lub yum list package-name
) widzę tylko, że pakiet jest „zainstalowany”.
rpm -qa|grep NAME
to można zrobićyum list installed|grep NAME
, aby znaleźć to, co repo rpm pochodzi .Odpowiedzi:
Po zainstalowaniu yum-utils, repoquery dostarczy poszukiwanych informacji (tutaj „epel” jest repozytorium).
źródło
yum info package_name
, nie wydaje się, aby zapytania do repozytoriów były w tej samej kolejności co yum.yum info package_name
zwraca więcej wyników niż pozornie repoquery. Dlatego wymiana stosów nie powinna blokować głosów.repoquery -i $pkg
daje repo, z którego$pkg
jest dostępny a, nie repo, z którego$pkg
został zainstalowany. Zrobiłem to polecenierpm -qi $pkg
i otrzymałem różne numery wersji.rpm
skutkowało wcześniejszym numerem wersji niż tenrepoquery
.--use-mirror
.). Nie sądzę, że zawsze można uzyskać właściwą odpowiedź.Jaka wersja mniam?
W bieżącej wersji, jeśli zainstalowany pakiet jest tej samej wersji, co najnowsza dostępna, zostanie wyświetlone repozytorium, z którego został zainstalowany.
Jeśli dostępny jest nowszy pakiet, zostanie on pokazany osobno, a nowa wersja pokazuje repozytorium, z którego jest dostępny.
źródło
Wychodzę za późno, ale (przynajmniej na Fedorze 15) można użyć yumdb do podobnych zapytań:
I czego tak naprawdę potrzebowałem, aby wyświetlić listę pakietów z danych repozytoriów:
źródło
Jeśli wszystko inne zawiedzie, możesz ręcznie sprawdzić yumdb. Znajduje się w nim
/var/lib/yum/yumdb
i zawiera szczegółowe informacje o każdym zainstalowanym pakiecie. Będziesz szczególnie zainteresowanyfrom_repo
. Na przykład dlabind-utils
pakietu:Aby uzyskać tylko potrzebne informacje:
Późniejsze wersje dostarczą jeszcze więcej danych; na przykład w EL 7 przechowywane jest tutaj dokładne lustro i adres URL, z którego pakiet został pobrany.
źródło
for i in /var/lib/yum/yumdb/b/*bind-utils*/*; do echo $i: `cat $i` | grep -oP 'from_repo:\ \K.*'; done
co w powyższym przykładzie zwraca:updates
- znacznie bardziej czytelny!grep
nic tu nie ma potrzeby , a nawet można porzucić pętlę. Bardzo prostecat /var/lib/yum/yumdb/b/*bind-utils*/from_repo
jest wszystko, czego potrzebujesz.Powie ci sprzedawca i pakujący
źródło
Aby zobaczyć, co zostało zainstalowane z repozytorium epel: (powinno działać w Centos 5.5), zauważ, że jeśli nie masz repozytorium o nazwie epel, to wypluje wszystko, co jest zainstalowane.
repoquery --repoid = epel -a | xargs mniam zainstalowana lista
źródło
Jeśli pakiet został niedawno zainstalowany, możesz zajrzeć do katalogu / var / cache / yum.
W tym katalogu znajduje się katalog dla każdego repozytorium, aw nim katalog pakietów. Zrobiłbyś więc coś takiego:
Pamięć podręczna musi być jednak włączona w pliku /etc/yum.conf:
Zauważ, że a
yum clean [packages|all]
wyczyści katalog pamięci podręcznej.Jeśli katalog pamięci podręcznej jest pusty, istnieje alternatywny sposób. Informacje odczytywane przez
yum info [package]
pochodzą z /var/cache/yum/[repo]/primary.xml.gzMożesz przejrzeć plik, wprowadzając:
Jednak na komputerach, na których
yum info [package]
nie wyświetla się „From repo:”, jak wskazuje „theotherreceive”, dzieje się tak, ponieważ nie ma go w pliku primary.xml, więc nie będzie możliwości odzyskania tych informacji. Dlatego jeśli pakiet znajduje się w dwóch lub więcej plikach primary.xml, musisz określić priorytet repo w systemie.źródło
Na podstawie i odpowiedzi Swoogan
na RedHat i CentOS można zrobić
Wyniki powinny wyglądać mniej więcej tak
Gdzie nazwa_ repozytorium to repozytorium, w którym można znaleźć pakiet, i prawdopodobnie został on zainstalowany z pierwszego na liście (patrz yum repolist)
źródło
Czy te informacje są przechwytywane gdziekolwiek? Pakiet nie ma tych informacji, a yum nie przejmuje się tym, że znajdzie pakiet. Prawdopodobnie możesz to poskładać, ustalając, jakie repozytoria mają pakiet, a następnie określ, który z nich ma priorytet.
źródło
Nie jest to świetne rozwiązanie, ale stwierdziłem, że dostępna lista yum pokaże Ci, gdzie jest dostępna najbardziej aktualna wersja każdego pakietu, np .:
dostępna lista | grep gstreamer
bluez-gstreamer.i386 4.30-2.fc10 aktualizacje
gstreamer.i386 0.10.21-2.fc10 fedora
gstreamer-devel.i386 0.10.21-2.fc10 fedora
gstreamer-devel.x86_64 0.10.21-2.fc10 fedora
gstreamer- plugins-bad-devel.i386 0.10.9-1.fc10 rpmfusion-free
gstreamer-plugins-bad-devel.x86_64 0.10.9-1.fc10 rpmfusion-free
Możesz więc zrobić listę mniszek dostępną w pakiecie, a następnie porównać zainstalowaną wersję za pomocą zainstalowanej listy mniam i mieć dobry pomysł, z którego repozytorium pochodzi, jeśli wersje są zgodne.
źródło
Możesz dodać pełną flagę do „mniam informacji”:
Repozytorium instalacji będzie znajdować się pod wyjściem „From repo”.
źródło
Wiem, że to nieco stare pytanie - ale pojawia się przy wyszukiwaniu w Google tego, czego szukałem.
Istnieje również metoda uzyskania unikalnej listy używanych repozytoriów:
Spowoduje to wyświetlenie repozytoriów, z których zostały zainstalowane pakiety.
źródło
Najprostsze i najprostsze podejście bez instalowania dodatkowych narzędzi, grepingowania lub wysyłania obcych informacji to po prostu:
Trzecia kolumna poda identyfikator repozytorium, z którego pakiet został zainstalowany.
Zostało to wspomniane w komentarzu do pierwotnego pytania za pomocą grep, ale nie jest to konieczne. Możesz po prostu przekazać nazwę pakietu bezpośrednio
yum
do filtrowania.źródło
Żadne z powyższych poleceń nie działało dla mnie. Właśnie to musiałem zrobić.
Dobre referencje są tutaj.
https://access.redhat.com/sites/default/files/attachments/rh_yum_cheatsheet_1214_jcs_print-1.pdf
źródło
Najłatwiej jest to zrobić:
Więcej porad i wskazówek można znaleźć tutaj: http://wiki.centos.org/TipsAndTricks/YumAndRPM
źródło