Praca z zależnościami pakietów od Red Hat Linux

Praca z zależnościami pakietów od Red Hat Linux

Cel

Naszym celem jest przyzwyczajenie się do dostępnych narzędzi, aby znaleźć informacje o zależnościach od pakietu od systemu opartego na RPM.

Wersje systemu operacyjnego i oprogramowania

  • System operacyjny: Red Hat Enterprise Linux 7.5
  • Oprogramowanie: RPM 4.11, mniam 3.4.3

Wymagania

Uprzywilejowany dostęp do systemu.

Trudność

ŁATWY

Konwencje

  • # - Wymaga, aby podane polecenia Linux są wykonywane z uprawnieniami root bezpośrednio jako użytkownik root lub za pomocą sudo Komenda
  • $ - Biorąc pod uwagę polecenia Linux, które mają być wykonywane jako zwykły użytkownik niepewny

Wstęp

RPM, który oznacza menedżer pakietów Red Hat, jest dobrze znanym i dojrzałym menedżerem pakietów używanym przez wszystkie dystrybucje smaku Red Hat, a także SUSE. Z RPM pakiet może definiować relacje między pakietami, a nawet z wersjami pakietów - na przykład serwer Apache Tomcat potrzebuje odpowiedniego środowiska Java, aby móc uruchomić.

Z drugiej strony, aby zainstalować środowisko Java, nie potrzebujesz serwera Tomcat - możesz zdecydować się na uruchomienie innej aplikacji opartej na Javie, być może jedna napisana sama zaczęła ręcznie, gdy jest to konieczne, aby wykonać swoje zadanie. Innymi słowy, serwer Tomcat zależy na Javie.

RPM może znacznie ułatwić życie Sysadmin, prezentując te zależności - i narzędzia polegające na RPM, takich jak RPM użyteczność lub mniam może automatycznie rozwiązać te zależności i zainstalować wszystkie dodatkowe pakiety potrzebne do poprawnego uruchomienia nowego komponentu.



Zbieranie informacji

Aby znaleźć listę pakietów, które FOO.Pakiet baru zależy od, po prostu uruchom:

# mniam deplist foo.bar

I aby znaleźć listę pakietów, które wymagają (zależą od) pakietu.bar:

rpm -q --wherrequires foo.bar

Prawdziwy przykład z ogólnym pakietem: grzmotnąć. Zobaczmy, jakie pakiety potrzebne są pakiet Bash:

# Pakiet Bash Yum Deplist: Bash.x86_64 4.2.46-30.Zależność EL7: LIBC.Więc.6 () (64bit) Dostawca: GLIBC.x86_64 2.17-222.Zależność EL7: LIBC.Więc.6 (glibc_2.11) (64bit) Dostawca: GLIBC.x86_64 2.17-222.Zależność EL7: LIBC.Więc.6 (glibc_2.14) (64bit) Dostawca: GLIBC.x86_64 2.17-222.Zależność EL7: LIBC.Więc.6 (glibc_2.15) (64bit) Dostawca: GLIBC.x86_64 2.17-222.Zależność EL7: LIBC.Więc.6 (glibc_2.2.5) (64bit) Dostawca: GLIBC.x86_64 2.17-222.Zależność EL7: LIBC.Więc.6 (glibc_2.3) (64bit) Dostawca: GLIBC.x86_64 2.17-222.Zależność EL7: LIBC.Więc.6 (glibc_2.3.4) (64bit) Dostawca: GLIBC.x86_64 2.17-222.Zależność EL7: LIBC.Więc.6 (glibc_2.4) (64bit) Dostawca: GLIBC.x86_64 2.17-222.Zależność EL7: LIBC.Więc.6 (glibc_2.8) (64bit) Dostawca: GLIBC.x86_64 2.17-222.Zależność EL7: Libdl.Więc.2 () (64bit) Dostawca: GLIBC.x86_64 2.17-222.Zależność EL7: Libdl.Więc.2 (glibc_2.2.5) (64bit) Dostawca: GLIBC.x86_64 2.17-222.Zależność EL7: libtinfo.Więc.5 () (64bit) Dostawca: NCURSES-libs.x86_64 5.9-14.20130511.EL7_4 Zależność: RTLD (GNU_HASH) Dostawca: GLIBC.x86_64 2.17-222.Dostawca EL7: GLIBC.i686 2.17-222.El7 
Kopiuj

Z perspektywy pakietu, grzmotnąć jest bardzo ogólny i jak widać powyżej, zależy od kilku podstawowych pakietów. Ale jeśli chcielibyśmy zainstalować coś znacznie bardziej zależnego, powiedzmy, Konzole Emulator terminali KDE na Red Hat Linux z menedżerem pulpitu GNOME, możemy uzyskać więcej niż jedną stronę Listę Zależności. I z Konzole, Sprawa jest jeszcze bardziej skomplikowana, ponieważ opiera się na pakietach QT i KDE, więc aby ją zainstalować, musisz zainstalować całe środowisko KDE obok Gnome (co na pewno możesz zrobić), aby wszystko dostarczyć wszystko Konzole wymagania.

Aby uzyskać więcej wglądu na to, jakie pakiety zostaną zainstalowane, przed rozpoczęciem instalacji sprawdź listę dostarczoną przez Yum:

# Yum Zainstaluj zależności Konsole-> Uruchamianie kontroli transakcji ---> Konsole pakietu.x86_64 0: 4.10.5-4.EL7 zostanie zainstalowany-> Zależność przetwarzania: Konsole-części = [… .] 
Kopiuj

W przypadku systemu Red Hat z GNOME może potrwać sporo czasu, aby rozwiązać zależności aplikacji KDE po raz pierwszy, a kiedy to się skończy, Yum zaprezentuje jeden wyłączny pakiet, o którym prosiliśmy, z ładnym małym rozmiarem. Następnie zainstalowano ponad sto pakietów dla zależności:

[… .]-> Uruchamianie kontroli transakcji ---> System doładowania pakietu.x86_64 0: 1.53.0-27.EL7 zostanie zainstalowany ---> Pakiet doładowania.x86_64 0: 1.53.0-27.EL7 zostanie zainstalowany -> Zależności rozwiązywania zależności zakończonej Zależność ======================================================= ================================================== =============================t ================================================== ================================================== =================== Instalowanie: Konsole x86_64 4.10.5-4.EL7 RHEL-7-SERVER-RPMS 78 K Instalacja zależności: OpenExr-libs [… .] 
Kopiuj

W podsumowaniu widzimy, że instalacja będzie na końcu użyć znacznie więcej miejsca na dysku, a następnie rozmiar potrzebnego pakietu:

[… .] Podsumowanie transakcji ============================================================================= ================================================== ============================= Zainstaluj 1 pakiet (pakiety zależne od +120) 
Kopiuj

To dużo, ale otrzymaliśmy przydatne informacje na temat tego, ile miejsca zostanie wykorzystane. Jest to szczególnie przydatne, jeśli zainstalujemy wiele pakietów w jednej transakcji.

Podczas gdy w tym przypadku transakcja jest marnotrawna, celem zależności jest ostatecznie oszczędzanie zasobów: jeśli ktoś wdraża jakąś funkcjonalność w swoim kodzie i to można wywołać w systemie, następny programista może nie być konieczny wdrażania tej samej funkcji funkcjonalności Ponownie, ale użyj już istniejącej implementacji. Dla Konzole Przykład, jeśli chcesz zainstalować Akregator Następnym razem system będzie już rozwiązany, jak KDEPIM pakiet zawierający Akregator również polega na Qt, kdelibs, i taki.

Możemy użyć RPM narzędzie Uzyskaj informacje na odwrót: Wymieńmy zainstalowane pakiety wymagające grzmotnąć pakiet:

# rpm -q --wherquireres bash dracut-033-535.El7.x86_64 initscripts-9.49.41-1.El7.x86_64 AUTOFS-5.0.7-83.El7.x86_64 LVM2-2.02.177-4.El7.x86_64 RSYSLOG-8.24.0-16.El7.x86_64 
Kopiuj

Czyszczenie niepotrzebnych pakietów

Jeśli będziemy aktualizować nasze systemy i zmienimy lub rozszerzymy swoje role, nieuchronnie pojawią się pakiety „śmieciowe”. W sensie pakietu śmieci oznacza już nie potrzebne i/lub przestarzałe pakiety. Aby śledzić powyższy przykład, nie potrzebujemy już Akregator, Ponieważ przenieśliśmy „usługę” obsługi RSS do hipotetycznego centralnego koncentratora RSS w naszym systemie, więc po migracji naszych kanałów do centralnego miejsca, odinstalujemy lokalną aplikację obsługi RSS. To nie usunie wszystkich pakietów KDE, ponieważ wiele innych pakietów może od nich zależeć. Ale jeśli nie, pakiety te są śmieciowe i będą konsumować zasoby, w tym dłuższe czasy aktualizacji, jak mniam Domyślnie zaktualizuje wszystko ślepo, znajdzie nowe pakiety/errata dla.

Wydawanie zasobów na aktualizację kilku niepotrzebnych pakietów na laptopie z połączeniem szerokopasmowym i SSD może nie wydawać się problemem, ale wyobraź sobie centrum danych z setkami lub tysiącami komputerów, a otrzymujesz zdjęcie. Zasadniczo dobrym pomysłem jest uproszczenie wszystkich systemów, a zarządzanie zasobami to tylko jeden punkt. Im bardziej złożony system, tym więcej jest podatnych na błąd. Więcej komponentów oznacza więcej możliwych błędów.

Aby uzyskać przegląd w niepotrzebnych pakietach zainstalowanych w systemie, możemy użyć mniam i cleanup w taki sam sposób, jak na CentOS, czyli inna funkcja mniam, AutoreMove:

Yum AutoreMove


Pakiety te narzędzia oznaczają jako niepotrzebne.

Podczas korzystania z któregokolwiek z tych narzędzi zaleca się, aby dokładnie sprawdzić mniam Wyjmuje i być może sprawdzi, co czyszczenie spowoduje testowanie maszyn z identyczną zawartością opakowania przed wyczyszczeniem systemów produkcyjnych.

Te narzędzia są rzeczywiście sprytne, ale nie wszechwiedzące: na przykład w bazie danych RPM nie będzie wpisu na temat niestandardowej aplikacji PHP działającej na WebServer, który wywołuje kubki Aby wydrukować przychodzące zamówienia na drukarce podłączonej do serwera. To znaczy tam Móc być wpisem, jeśli aplikacja jest pakowana z odpowiednimi zależnościami i poprawnie zainstalowana za pomocą RPM Lub mniam - Ale to wymaga wysiłku, a wszystkie usługi muszą być pakowane w ten sam sposób, jeśli chcesz czuć się bezpiecznie dzięki automatycznym sprzątaniu opartym na mniam.

Rozwiązywanie problemów zależności

Zwłaszcza w dużych środowiskach mogą wystąpić problemy z zależnością podczas instalowania lub aktualizacji systemów.

Poniższy zrzut ekranu pokazuje prosty problem:

Rozwiązywanie zależności za pomocą RPM

Na powyższym ekranie terminalu staramy się zainstalować NRPE Pakiet, klient musiał monitorować wiele aspektów systemu za pomocą Nagios. Pobraliśmy klienta do dystrybucji, ale oba RPM I mniam niepowodziła z tym samym błędem: NRPE pakiet wymaga (zależy) Nagios-common pakiet. W tym przykładzie możemy uzyskać potrzebny pakiet z tego samego źródła, a podczas instalowania obu z nich RPM Narzędzie widzi, że zależność, na której wcześniej nie udało się, będzie zadowolona do końca transakcji i instaluje oba pakiety, wychodząc z powodzenia w milczeniu.

Wniosek

Yum i RPM są niezbędnymi narzędziami podczas pracy z dystrybucjami za pomocą menedżera pakietów RPM. Znając zestaw narzędzi, jest o wiele łatwiejsza i zwykle bezpieczniejsza do rozwiązywania instalacji, aktualizacji i modyfikowania zadań w środowisku oprogramowania danego systemu.

Powiązane samouczki Linux:

  • Rzeczy do zainstalowania na Ubuntu 20.04
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
  • Linux Pliki konfiguracyjne: Top 30 Najważniejsze
  • Pobierz Linux
  • Wprowadzenie do automatyzacji, narzędzi i technik Linuksa
  • Czy Linux może uzyskać wirusy? Badanie podatności Linuksa…
  • Jak zainstalować Yum na Linux
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 22.04 JAMMY Jellyfish…
  • Najlepszy Linux Distro dla programistów
  • Mint 20: Lepsze niż Ubuntu i Microsoft Windows?