Zależności od pakietu debiana

Zależności od pakietu debiana
W przypadku dystrybucji Linux, takich jak Debian GNU/Linux, istnieje ponad 60.000 różnych pakietów oprogramowania. Wszystkie mają konkretną rolę. W tym artykule wyjaśniamy, w jaki sposób zarządzanie pakietami wiarygodnie zarządza tą ogromną liczbą pakietów oprogramowania podczas instalacji, aktualizacji lub usunięcia, aby system działał i całkowicie stabilny.

W przypadku Debiana GNU/Linux odnosi się to do narzędzi apt, apt-get, zdolności, apt-cache, apt, zależnych od APT-REDEPENDS, DPKG-DEB i apt-markark.

Dostępność pakietów oprogramowania

Jak już wspomniano powyżej, dystrybucja Linuksa składa się z mnóstwa różnych pakietów oprogramowania. Na dzień dzisiejszy oprogramowanie jest dość złożone i dlatego powszechne jest dzielenie oprogramowania na kilka pojedynczych pakietów. Pakiety te można podzielić według funkcjonalności lub według roli, takich jak pakiety binarne, biblioteki, dokumentacja, przykłady użytkowania, a także kolekcje specyficzne dla języka i zapewnić wybraną część oprogramowania. Nie ma na to ustalonej zasady, a podział jest dokonywany przez zespół programistów narzędzia, albo opiekunka do pakietu, który zajmuje się pakietem oprogramowania dla dystrybucji Linux. Korzystając z umiejętności, rysunek 1 zawiera listę pakietów zawierających tłumaczenia dla różnych języków dla Webbrowser Mozilla Firefox.

Rycina 1: Firefox umiejętności.png

Ten sposób pracy umożliwia utrzymanie każdego pakietu przez innego programistę lub jako cały zespół. Ponadto podział na pojedyncze komponenty pozwala innym pakietom oprogramowania wykorzystać go również do własnych celów. Można zastosować wymaganą funkcjonalność i nie trzeba być na nowo.

Organizacja pakietu

Narzędzia do zarządzania pakietami w dystrybucji Debian GNU/Linux stale dbają o to, aby zależności zainstalowanych pakietów są całkowicie spełnione. Dzieje się tak szczególnie w przypadku, gdy pakiet oprogramowania ma być zainstalowany, aktualizowany lub usunięty w systemie lub z systemu. Brakujące pakiety są dodawane do systemu lub zainstalowane pakiety są usuwane z systemu na wypadek, gdyby nie są już wymagane. Rysunek 2 pokazuje to dla usunięcia opakowania „MC-DATA” za pomocą „Apt-get”. Pakiet „MC-DATA” zaleca również automatyczne usuwanie pakietu „MC”, ponieważ nie ma już sensu instalować bez „MC-DATA”.

Rysunek 2: apt-get-remove-mc.png

Znaki pakietów i flagi

Podczas pracy narzędzia do zarządzania pakietami szanują flagi pakietów i ustawione. Są one ustawione automatycznie lub ustawione ręcznie przez administratora systemu. Zwłaszcza to zachowanie odnosi się do flagi „Essential Pakiet”, który jest ustawiony dla pakietów, których nie należy usunąć. Zanim to zrobisz, wydawane jest wyraźne ostrzeżenie (patrz rysunek 3).

Rysunek 3: apt-get-remove.png

Ponadto trzy oceny „automatyczne”, „Podręcznik” i „Hold” są brane pod uwagę. Oznaczają pakiet jako automatycznie instalowany, ręcznie instalowany lub nie można ich aktualizować (przytrzymaj bieżącą wersję). Pakiet oprogramowania jest oznaczony „automatyczny” lub „Instrukcja”, ale nie oba.

Między innymi polecenie „apt-mark” obsługuje znaki i flagi za pomocą następujących podkomisji:

  • Auto: Ustaw pakiet jako automatycznie instalowany
  • Hold: Trzymaj bieżącą wersję pakietu
  • Instrukcja: ustaw pakiet jako ręcznie zainstalowany
  • ShowAuto: Pokaż automatycznie zainstalowane pakiety
  • Showmanual: Pokaż ręcznie zainstalowane pakiety
  • Showhold: Wymień pakiety, które są zawieszone
  • Unhhold: Usuń flagę HOLD dla danego pakietu

Aby wymienić wszystkie ręcznie zainstalowane pakiety, wydaj to polecenie:

$ apt-mark showmanual
Abiword
Abs-guide
Ack-Grep
ACL
ACPI

$

Aby zatrzymać wersję pakietu, użyj podkomenda „Hold”. Poniższy przykład pokazuje to dla pakietu „MC”.

# apt-mark hold mc
MC ustawiony
#

Podkomenda „Showhold” wymienia pakiety, które są wstrzymane (w naszym przypadku jest to pakiet „MC”, tylko):

# Apt-Mark Showhold
MC
#

Stosując alternatywną metodę zatytułowaną „APT Pinning”, pakiety są klasyfikowane według priorytetów. Apt zastosuje je, aby zdecydować, jak obsługiwać ten pakiet oprogramowania i wersje dostępne w repozytorium oprogramowania.

Opis pakietu

Stosując alternatywną metodę zatytułowaną „APT Pinning”, pakiety są klasyfikowane według priorytetów. Apt zastosuje je, aby zdecydować, jak obsługiwać ten pakiet oprogramowania i wersje dostępne w repozytorium oprogramowania.

Każdy pakiet oprogramowania zawiera własny opis pakietu, który jest znormalizowany. Wśród innych dziedzin opisy ten wyraźnie określa, na które dodatkowe opakowania (od) zależy. Narzędzia specyficzne dla dystrybucji wyodrębniają te informacje z opisu pakietu oraz oblicz i wizualizuj zależności dla Ciebie. Następny przykład używa polecenia „Apt-Cache Show”, aby wyświetlić opis pakietu „Poppler-Utils” (patrz rysunek 4).

Rysunek 4: Pakiet-description-POPPLER-UTILS.png

Opis pakietu zawiera sekcję o nazwie „Zależność”. W tej sekcji wymieniono inne pakiety oprogramowania plus numer wersji, od którego zależy obecny pakiet. Na rycinie 4 Ta sekcja jest sformułowana na czerwono i pokazuje, że „Poppler-Utils” zależy od pakietów „libpppler64”, „libc6”, „libcairo2”, „libFreeType6”, „liblcms2-2”, „libstdc ++ 6” i „Zlib1g”.

Pokaż zależności pakietów

Czytanie opisu pakietu jest trudnym sposobem ustalenia zależności pakietu. Następnie pokażemy, jak to uprościć.

Istnieje kilka sposobów pokazania zależności pakietu od wiersza poleceń. Dla pakietu Deb jako pliku lokalnego użyj polecenia „DPKG -DEB” z dwoma parametrami - nazwa pliku pakietu i słowo kluczowe „zależy”. Poniższy przykład pokazuje to dla pakietu „SkyPeforlinux-64.Deb ':

$ dpkg-deb -f pobieranie/SkyPeforlinux-64.Deb zależy
GCONF-SERVICE, Libasound2 (> = 1.0.16), libatk1.0-0 (> = 1.12.4), libc6 (> = 2.17),
libcairo2 (> = 1.2.4), libcups2 (> = 1.4.0), libexpat1 (> = 2.0.1),
libFreeType6 (> = 2.4.2), Libgcc1 (> = 1: 4.1.1), LibgConf-2-4 (> = 3.2.5),
Libgdk-Pixbuf2.0-0 (> = 2.22.0), libglib2.0-0 (> = 2.31.8), libgtk2.0-0 (> = 2.24.0),
Libnspr4 (> = 2: 4.9-2 ~), Libnss3 (> = 2: 3.13.4-2 ~), libpango-1.0-0 (> = 1.14.0),
libpangocairo-1.0-0 (> = 1.14.0), libsecret-1-0 (> = 0.7), libv4l-0 (> = 0.5.0),
Libx11-6 (> = 2: 1.4.99.1), libx11-xcb1, libxcb1 (> = 1.6), Libxcomposite1 (> = 1: 0.3-1),
libxcursor1 (>> 1.1.2), libxdamage1 (> = 1: 1.1), libxext6, libxfixes3,
Libxi6 (> = 2: 1.2.99.4), libxrandr2 (> = 2: 1.2.99.3), libxrender1, libxss1,
libxtst6, apt-transport-https, libFontConfig1 (> = 2.11.0), Libdbus-1-3 (> = 1.6.18),
libstdc ++ 6 (> = 4.8.1)
$

Aby zrobić to samo dla zainstalowanego pakietu, użyj „apt-cache”. Pierwszy przykład łączy podkomenda „show”, a następnie nazwa pakietu. Dane wyjściowe jest wysyłane do polecenia „GREP”, które filtruje wiersz „zależy”:

$ apt-cache show xpdf | Grep zależy
Zależy: libc6 (> = 2.4), Libgcc1 (> = 1: 4.1.1), libpoppler46 (> = 0.26.2),
libstdc ++ 6 (> = 4.1.1), libx11-6, libxm4 (> = 2.3.4), libxt6
$

Pakiet polecenia „GREP -STATUS -F -s zależy Xpdf”, zgłosi te same informacje.

Bardziej szczegółowe, drugi przykład ponownie używa „apt-cache”, ale z podkomencją „zależy”,. Po podkomendzie następuje nazwa pakietu:

$ apt-cache zależy xpdf
xpdf
Zależy: libc6
Zależy: libgcc1
Zależy: libpoppler46
Zależy: libstdc ++ 6
Zależy: Libx11-6
Zależy: libxm4
Zależy: libxt6
Zaleca: Poppler-Utils
Poppler-Utils: i386
Zaleca: Poppler-Data
Zaleca: GSFONTS-X11
Zaleca: Cups-BSD
CUPS-BSD: I386
Zderzy się z:
Zderzy się z:
Zderzy się z:
Zderzy się z:
Zastępuje:
Zastępuje:
Zastępuje:
Zastępuje:
Zderzenie z: xpdf: i386
$

Powyższa lista jest dość długa i można ją skrócić za pomocą przełącznika „-i” (skrót od „-ważnego”):

$ apt -cache zależy -i xpdf
xpdf
Zależy: libc6
Zależy: libgcc1
Zależy: libpoppler46
Zależy: libstdc ++ 6
Zależy: Libx11-6
Zależy: libxm4
Zależy: libxt6
$

Polecenie „APT-RDEPENDS” robi to samo, ale z informacjami o wersji, jeśli określono w opisie:

$ apt-rdepends xpdf
Czytanie list pakietów… gotowe
Budowanie drzewa zależności
Czytanie informacji o stanie… zrobione
xpdf
Zależy: libc6 (> = 2.4)
Zależy: libgcc1 (> = 1: 4.1.1)
Zależy: libpoppler46 (> = 0.26.2)
Zależy: libstdc ++ 6 (> = 4.1.1)
Zależy: Libx11-6
Zależy: libxm4 (> = 2.3.4)
Zależy: libxt6
Libc6
Zależy: libgcc1

$

Polecenie „Aptitude” również działa z przełącznikami. Aby uzyskać zależności, użyj przełącznika „~ r”, a następnie nazwę pakietu. Rysunek 5 pokazuje to dla pakietu „XPDF”. Litera „A” w drugiej kolumnie wyjścia „Aptitude” identyfikuje pakiet jako automatycznie instalowany.

Rycina 5: Oddoby umiejętności.png

Zależności pakietu mogą być nieco trudne. Może pomóc w graficznym wyświetlaniu zależności pakietów. Użyj polecenia „zadłużenie”, a następnie nazwa pakietu, aby utworzyć graficzną reprezentację zależności pakietu. Narzędzie „kropka” z pakietu Graphviz przekształca opis w obraz w następujący sposób:

$ debtree xpdf | dot -tpng> wykres.png

Na rysunku 6 widać utworzony obraz PNG, który zawiera wykres zależności.

Rysunek 6: DOT.png

Pokaż odwrotne zależności

Do tej pory pokazaliśmy, że odpowiedzieliśmy na pytanie, które pakiety są wymagane dla pakietu. Istnieje również odwrotnie - tak zwane zależności odwrotne. Kolejne przykłady dotyczą pakietu, a także pakietów, które od niego zależą. Przykład numer jeden używa „apt-cache” z podkomendacją „rdepends” w następujący sposób:

$ apt-cache rdependy xpdf
xpdf
Odwrotnie zależy:
| Octave-Doc
xpdf: i386
LibFontConfig1: i386
| XMDS-DOC
xfe
Wiipdf
| Vim-Latexsuite
Python-Scapy
| Ruby-Tioga
| Python-Stable-Doc
| Crunch Page
| Octave-Doc
| Muttprint-Manual
Mozplugger
Mlpost
Libmlpost-Ocaml-dev

$

Pakiety, które zależą od innych pakietów, są oznaczone symbolem rury. Ten pakiet nie musi być instalowany w twoim systemie, ale należy go wymienić w bazie danych pakietów.

Następny przykład wykorzystuje „Aptitude” do wymienienia pakietów, które mają mocne odniesienie do pakietu „XPDF” (patrz rysunek 7).

Rysunek 7: Poszukiwanie umiejętności.png

Sprawdzaj instalację brakujących pakietów

„Apt-get” oferuje podkomenda „sprawdź”, która pozwala weryfikacji instalacji. Jeśli zobaczysz następujące dane wyjściowe, nie brakuje pakietów:

# Apt-get Check
Czytanie list pakietów… gotowe
Budowanie drzewa zależności
Czytanie informacji o stanie… zrobione
#

Wniosek

Znalezienie zależności pakietów działa dobrze z odpowiednimi narzędziami. Używanie ich prawidłowo pomaga zrozumieć, dlaczego pakiety są instalowane i które mogą brakować.

Linki i referencje

  • Axel Beckert, Frank Hofmann: Das Debian-Paketmanagement-Buch, https: // www.DPMB.org/