Wyszukiwanie w witrynie

Jak zainstalować i używać „yum-utils”, aby utrzymać Yum i zwiększyć jego wydajność


Niezależnie od tego, czy Fedora zacznie przyjmować dnf jako nowego menedżera pakietów i domyślną bibliotekę zarządzania pakietami, nie zastąpi to na dobre starego, dobrego menedżera pakietów yum w innych dystrybucjach pobocznych (takich jak Red Hat Enterprise Linux (RHEL) i CentOS), dopóki nie okaże się równie niezawodny jak mniam i solidniejszy (według wiki Projektu Fedora, stan na 15 listopada, 2015, dnf jest nadal w stanie testowalnym). Zatem Twoje umiejętności zarządzania mniamem będą Ci dobrze służyć jeszcze przez jakiś czas.

Z tego powodu w tym przewodniku przedstawimy Ci yum-utils, zbiór narzędzi, które integrują się z yum w celu rozszerzenia jego natywnych funkcji na kilka sposobów, dzięki czemu stają się potężniejsze i łatwiejsze w użyciu.

Instalowanie yum-utils w RHEL/CentOS

Yum-utils jest zawarte w podstawowym repozytorium (które jest domyślnie włączone), więc zainstalowanie go w dowolnej dystrybucji opartej na Fedorze jest tak proste, jak:

yum update && yum install yum-utils

Wszystkie narzędzia dostarczane przez yum-utils są instalowane automatycznie wraz z pakietem głównym, co opiszemy w następnej sekcji.

Przeglądaj narzędzia dostarczane przez pakiet yum-utils

Narzędzia dostarczane przez yum-utils są wymienione na jego stronie podręcznika:

man yum-utils

Oto 10 mniam narzędzi, które naszym zdaniem mogą Cię zainteresować:

1. Debuguj pakiet

debuginfo-install instaluje pakiety debuginfo (i ich zależności) wymagane do debugowania w przypadku awarii lub podczas tworzenia aplikacji korzystających z określonego pakietu.

Aby zdebugować pakiet (lub inny plik wykonywalny), będziemy musieli także zainstalować gdb (debugger GNU) i użyć go do uruchomienia programu w trybie debugowania.

Na przykład:

gdb $(which postfix)

Powyższe polecenie uruchomi powłokę gdb, w której możemy wpisać akcje do wykonania. Na przykład run (jak pokazano na obrazku poniżej) uruchomi program, podczas gdy bt (nie pokazano) wyświetli ślad stosu (znany również jako backtrace ) programu, co wyświetli listę wywołań funkcji, które doprowadziły do określonego momentu wykonania programu (dzięki tym informacjom zarówno programiści, jak i administratorzy systemu mogą dowiedzieć się, co poszło nie tak w przypadku awarii).

Inne dostępne akcje i ich oczekiwane rezultaty są wymienione w man gdb.

2. Znajdź repozytorium zainstalowanych pakietów

Poniższe polecenie pokazuje, z którego repozytorium zostały zainstalowane aktualnie zainstalowane pakiety :

find-repos-of-install httpd postfix dovecot

Jeśli zostanie uruchomione bez argumentów, polecenie find-repos-of-install zwróci całą listę aktualnie zainstalowanych pakietów.

3. Usuń zduplikowane lub osierocone pakiety

oczyszczanie pakietów zarządza czyszczeniem pakietów, duplikatami, osieroconymi pakietami (programy zainstalowane ze źródła innego niż aktualnie skonfigurowane repozytoria) i innymi niespójnościami zależności, w tym usuwaniem starych jąder, jak pokazano w poniższym przykładzie:

package-cleanup --orphans
package-cleanup --oldkernels

Nie musisz się martwić, że ostatnie polecenie uszkodzi jądro. Będzie to miało po prostu wpływ na stare pakiety jądra (wersje starsze niż aktualnie działająca), które nie są już potrzebne.

4. Znajdź listę zależności pakietów

repo-graph zwraca pełną listę zależności pakietów w formacie kropka dla wszystkich pakietów dostępnych w skonfigurowanych repozytoriach. Alternatywnie, repo-graph może zwrócić te same informacje z repozytorium, jeśli zostanie użyte z opcją --repoid=.

Na przykład przejrzyjmy zależności dla każdego pakietu w repozytorium aktualizacji:

repo-graph --repoid=updates | less

W powyższym poleceniu wysyłamy wynik repo-grafu do less w celu łatwiejszej wizualizacji, ale alternatywnie możesz przekierować go do pliku lokalnego w celu późniejszej kontroli:

repo-graph --repoid=updates > updates-dependencies.txt

W obu przypadkach widzimy, że pakiet iputils zależy od systemd i openssl-libs.

5. Sprawdź listę nierozwiązanych zależności

repoclosure odczytuje metadane skonfigurowanych repozytoriów, sprawdza zależności zawartych w nich pakietów i wyświetla listę nierozwiązanych zależności dla każdego pakietu:

repoclosure

6. Jak sprawdzić najnowsze lub najstarsze pakiety w katalogu

repomanage wysyła zapytanie do katalogu z pakietami RPM i zwraca listę najnowszych lub najstarszych pakietów w katalogu. To narzędzie może się przydać, jeśli masz katalog, w którym przechowujesz kilka pakietów .rpm różnych programów.

Po wykonaniu bez argumentów funkcja repomanage zwraca najnowsze pakiety. Jeśli zostanie uruchomiony z flagą --old, zwróci najstarsze pakiety:

ls -l
cd rpms
ls -l rpms
repomanage rpms

Pamiętaj, że zmiana nazwy pakietów RPM NIE będzie miała wpływu na działanie repomanage.

7. Zapytaj repozytoria Yum, aby uzyskać informacje o pakiecie

repoquery odpytuje repozytoria yum i pobiera dodatkowe informacje o pakietach, niezależnie od tego, czy są one zainstalowane, czy nie (zależności, pliki zawarte w pakiecie i inne).

Na przykład htop (Linux Process Monitoring) nie jest obecnie zainstalowany w tym systemie, jak widać poniżej:

which htop
rpm -qa | grep htop

Załóżmy teraz, że chcemy wyświetlić listę zależności htop wraz z plikami zawartymi w domyślnej instalacji. W tym celu wykonaj odpowiednio dwa poniższe polecenia:

repoquery --requires htop
repoquery --list htop

8. Zrzuć wszystkie zainstalowane pakiety RPM do pliku ZIP

yum-debug-dump umożliwia zrzut pełnej listy wszystkich zainstalowanych pakietów, wszystkich pakietów dostępnych w dowolnym repozytorium, ważnych informacji o konfiguracji i systemie do spakowanego pliku.

Może się to przydać, jeśli chcesz usunąć zaistniały problem. Dla naszej wygody yum-debug-dump nadaje plikowi nazwę yum_debug_dump--, co pozwala nam śledzić zmiany w czasie .

yum-debug-dump

Jak w przypadku każdego skompresowanego pliku tekstowego, jego zawartość możemy wyświetlić za pomocą polecenia zless:

zless yum_debug_dump-mail.linuxnewz.com-2015-11-27_08:34:01.txt.gz

Jeśli chcesz przywrócić informacje konfiguracyjne dostarczone przez yum-debug-dump, możesz w tym celu użyć yum-debug-restore:

yum-debug-restore yum_debug_dump-mail.linuxnewz.com-2015-11-27_08:34:01.txt.gz

9. Pobieranie źródłowych RPM z repozytoriów Yum

yumdownloader pobiera źródłowe pliki RPM z repozytoriów, łącznie z ich zależnościami. Przydatne do utworzenia repozytorium sieciowego, do którego można uzyskać dostęp z innych komputerów z ograniczonym dostępem do Internetu.

Yumdownloader umożliwia pobieranie nie tylko binarnych RPM, ale także źródłowych (jeśli jest używane z opcją --source).

Na przykład utwórzmy katalog o nazwie htop-files, w którym będziemy przechowywać RPM potrzebne do zainstalowania programu przy użyciu RPM. Aby to zrobić, musimy użyć przełącznika --resolve wraz z programem yumdownloader:

mkdir htop-files
cd htop-files
yumdownloader --resolve htop
rpm -Uvh 

10. Zsynchronizuj zdalne repozytorium Yum z katalogiem lokalnym

reposync jest blisko spokrewniony z yumdownloaderem (w rzeczywistości obsługuje prawie te same opcje), ale oferuje znaczną przewagę. Zamiast pobierać pliki binarne lub źródłowe RPM, synchronizuje zdalne repozytorium z katalogiem lokalnym.

Zsynchronizujmy dobrze znane repozytorium EPEL z podkatalogiem o nazwie epel-local w bieżącym katalogu roboczym:

man reposync
mkdir epel-local
reposync --repoid=epel --download_path=epel-local

Pamiętaj, że ten proces zajmie sporo czasu, ponieważ pobierane są pakiety 8867:

Po zakończeniu synchronizacji sprawdźmy ilość miejsca na dysku zajmowaną przez nasz nowo utworzony egzemplarz lustrzany repozytorium EPEL za pomocą polecenia du:

du -sch epel-local/*

Teraz od Ciebie zależy, czy chcesz zachować ten serwer lustrzany EPEL, czy używać go do instalowania pakietów, zamiast używać zdalnego. W pierwszym przypadku pamiętaj, że będziesz musiał odpowiednio zmodyfikować plik /etc/yum.repos.d/epel.repo.

11. Napraw niedokończone lub przerwane transakcje Yum

yum-complete-transaction jest częścią programu yum-utils, który wychwytuje w systemie niedokończone lub przerwane transakcje yum i próbuje je dokończyć.

Na przykład, gdy aktualizujemy serwery Linux za pomocą menedżera pakietów yum, czasami pojawia się komunikat ostrzegawczy o następującej treści:

Pozostały niedokończone transakcje. Możesz najpierw rozważyć uruchomienie transakcji yum-complete-transaction, aby je zakończyć.

Aby naprawić takie komunikaty ostrzegawcze i rozwiązać taki problem, pojawia się polecenie yum-complete-transaction w celu dokończenia niedokończonych transakcji. Znajduje te niekompletne lub przerwane transakcje yum w transaction-all* i transaction-done*, które można znaleźć w katalogu /var/lib/yum.

Uruchom polecenie yum-complete-transaction, aby zakończyć niekompletne transakcje yum:


yum-complete-transaction --cleanup-only

Teraz polecenia yum będą działać bez ostrzeżeń o niekompletnych transakcjach.


yum update

Uwaga: tę wskazówkę zasugerował jeden z naszych stałych czytelników Mr. Tomas w sekcji komentarzy tutaj.

Streszczenie

W tym artykule omówiliśmy niektóre z najbardziej przydatnych narzędzi udostępnianych przez yum-utils. Pełną listę można znaleźć na stronie podręcznika (man yum-utils).

Dodatkowo każde z tych narzędzi ma oddzielną stronę podręcznika (zobacz na przykład man reposync), która jest głównym źródłem dokumentacji, do której powinieneś się odwołać, jeśli chcesz dowiedzieć się więcej na ich temat.

Jeśli poświęcisz chwilę na sprawdzenie strony podręcznika yum-utils, być może znajdziesz inne narzędzie, które chciałbyś, żebyśmy omówili bardziej szczegółowo w osobnym artykule. Jeśli tak lub masz pytania, komentarze lub sugestie dotyczące tego artykułu, daj nam znać, który z nich, przesyłając nam notatkę, korzystając z poniższego formularza komentarza.