Zarządzanie pakietami
Spis treści
Przegląd
System zarządzania pakietami to zbiór narzędzi, który zapewnia spójną metodę instalowania, aktualizowania i usuwania oprogramowania w systemie. Dystrybucje Linuksa, w tym openSUSE, zazwyczaj składają się z tysięcy różnych pakietów oprogramowania.
Oprogramowanie jest dystrybuowane za pośrednictwem pakietów powiązanych z metadanymi, które zawierają dodatkowe informacje, takie jak opis działania oprogramowania i listę zależności niezbędnych do poprawnego działania oprogramowania. Są one dostarczane przez repozytoria, albo lokalne media (CD, DVD lub dysk twardy), albo repozytoria internetowe. Po instalacji metadane są przechowywane w lokalnej bazie danych pakietów, która służy do pobierania pakietów oprogramowania.
Libzypp jest implementacją takiego systemu zarządzania pakietami w openSUSE i zapewnia YaST Software Management jako graficzny interfejs użytkownika oraz Zypper jako interfejs wiersza poleceń.
Pakiety
Pakiety to archiwa plików, które obejmują wszystkie pliki tworzące oprogramowanie (takie jak sama aplikacja, biblioteki współdzielone, pakiety programistyczne zawierające pliki potrzebne do zbudowania oprogramowania na podstawie biblioteki...), a ostatecznie instrukcje dotyczące sposobu ich działania.
Pakiet jest odpowiednio zintegrowany z dystrybucją, dla której został zbudowany, w odniesieniu do ścieżek instalacji, zależności, integracji pulpitu, odpowiednich skryptów uruchamiania dla serwerów itp. Z tych powodów należy zawsze instalować pakiety, które zostały zbudowany dla używanej dystrybucji, w tym dokładnej wersji dystrybucji (np. openSUSE 12.1). Na przykład, nie instaluj pakietów Fedory na openSUSE, a nawet pakietów openSUSE 12.1 na openSUSE 12.2.
Metadane pakietu
Pakiet zawiera także dodatkowe informacje, zwane zwykle Metadata, takie jak
- podsumowanie,
- opis,
- lista plików zawartych w pakiecie,
- zawarta w nim wersja oprogramowania, a także numer wydania pakietu,
- kiedy, gdzie i przez kogo został zbudowany,
- dla jakiej architektury został zbudowany,
- sumy kontrolne plików zawartych w pakiecie,
- licencja oprogramowania, które zawiera,
- których innych pakietów wymaga do poprawnego działania,
- itd.
Zależności pakietów
Ważnym aspektem archiwum pakietów są relacje, które zawierają. W rzeczywistości pakiety wiążą także pliki z innymi pakietami, ponieważ spakowane aplikacje potrzebują środowiska wykonawczego (innych narzędzi, bibliotek itp.), Aby faktycznie uruchomić aplikację. Zależności pakietów są używane do wyrażania takich relacji.
Na przykład pakiet A wymaga zainstalowania pakietów B, C i D, aby działał poprawnie.
- Zależności pakietów są przechodnie, co oznacza, że gdy pakiet A potrzebuje pakietu B, a pakiet B potrzebuje pakietu C, pakiet A także potrzebuje pakietu C, dlatego czasami kończy się instalowaniem wielu pakietów, chociaż po prostu chciałeś tej jednej aplikacji.
- Zależności od bibliotek (zwykle pakiety o nazwie zaczynającej się od „lib”) są bardzo powszechne i prawie każda aplikacja zależy od zestawu pakietów bibliotek.
Pakiety i zależności od pakietów są bardzo ważnymi aspektami dystrybucji Linuksa (a także innych systemów BSD i UNIX), ponieważ zapewniają modułowy sposób konfigurowania i zarządzania systemem operacyjnym i jego aplikacjami. Jest to szczególnie prawdziwe w przypadku pakietów bibliotecznych. Na przykład pakiet openssl zawiera biblioteki kryptograficzne używane przez wiele aplikacji i inne biblioteki (np. do szyfrowania SSL). Kiedy nowa, ulepszona wersja openssl jest dostępna, wszystkie aplikacje, które z niej korzystają, skorzystają z niej, po prostu aktualizując ten pojedynczy pakiet do nowszej wersji.
Jest to również bardzo skuteczny sposób na utrzymanie stabilnego i bezpiecznego systemu: gdy dziura w zabezpieczeniach, exploit lub błąd wpływa na bibliotekę używaną przez jedną lub wiele aplikacji, uaktualnienie pojedynczego pakietu naprawi je dla wszystkich.
Formaty pakietów
W świecie dystrybucji Linuksa natywne oprogramowanie jest zasadniczo pakowane w trzy rodzaje formatów pakietów.
- tgz (pliki tar gzip), które są w zasadzie archiwami kodu źródłowego. Mogą pomieścić wszystko, co opiekun pakietu uzna za przydatne. Oprócz samego formatu archiwum, niezbędnego do wyodrębnienia plików, nie ma nic ustandaryzowanego w zawartości pliku tgz. Muszą zostać skompilowane w celu uruchomienia oprogramowania.
- rpm (RPM Package Manager), które są wstępnie skompilowanymi archiwami. Stworzony przez Red Hat Linux i ustandaryzowany przez LSB, jest obecnie używany przez wiele dystrybucji Linuksa jako system pakowania, w tym także openSUSE.
- deb (Debian), które są wstępnie skompilowanymi archiwami używanymi w systemie opartym na Debianie.
However, if the archives format noticed the system of the required dependencies, they don't provide the dependency management capability and they will just present any encountered problem to the user at first sight, and leave it for him to decide what to do.
Na przykład, jeśli chcesz zainstalować pakiet RPM A, który ma zależności od pakietu RPM B, RPM nie zainstaluje automatycznie pakietu B, ale po prostu ci powie że potrzebuje pakietu B i zakończy działanie. Użytkownik musi zainstalować pakiet B, a następnie pakiet A. Teraz wyobraź sobie, że pakiet B jest zależny od pakietu C i pakietu D oraz pakiet „D” ma zależności od pakietu E i tak dalej i tak dalej. Ostatecznie gonisz zależności pakietu po wszystkich gałęziach tego bardzo dużego drzewa.
Menedżer pakietów
W nowoczesnych dystrybucjach Linuksa, takich jak openSUSE, instalacja oprogramowania odbywa się za pomocą menedżer pakietów. Menedżer pakietów, który działa na RPM, pobiera pakiety oprogramowania z repozytoriów (serwery online, płyty CD, DVD itp.), Rozwiązuje zależności i instaluje je w twoim systemie. Menedżer pakietów ułatwia także późniejsze usuwanie pakietów lub ich aktualizację. Liczba pakietów dostępnych do instalacji zależy od dodanych repozytoriów.
Natywnym menedżerem pakietów openSUSE jest moduł YaST Software Management i wiersz poleceń Zypper, chociaż dystrybucja jest dostarczana z różnymi narzędziami do zarządzania pakietami.
Repozytoria
Przed zainstalowaniem pakietów muszą one być dostępne w repozytorium pakietów na nośnikach fizycznych, takich jak dyski CD lub DVD, lub online przez Internet.
openSUSE package repositories includes:
- Official package repositories that include well tested and supported packages
- Third party repositories, such as Packman and Build Service repositories. They provide various additional packages, some of which are more up-to-date or that cannot be included on openSUSE for legal reasons, although they have had only very limited testing.
Repozytoria pakietów openSUSE obejmują:
- Oficjalne Repozytoria, które obejmują dobrze przetestowane i obsługiwane pakiety
- Repozytoria stron trzecich, takie jak repozytoria Packman i Build Service. Zapewniają różne dodatkowe pakiety, z których niektóre są bardziej aktualne lub których nie można włączyć do openSUSE ze względów prawnych, chociaż przeszły bardzo ograniczone testy.