Pakiet oprogramowania to plik archiwalny zawierający program komputerowy oraz metadane niezbędne do jego wdrożenia. Program komputerowy może być w postaci kodu źródłowego, który musi być najpierw skompilowany i zbudowany. Metadane pakietu obejmują opis pakietu, wersję pakietu oraz zależności (inne pakiety, które muszą być wcześniej zainstalowane).
Menedżerowie pakietów mają za zadanie wyszukiwanie, instalowanie, utrzymywanie lub odinstalowywanie pakietów oprogramowania na polecenie użytkownika. Typowe funkcje systemu zarządzania pakietami obejmują:
- Współpracę z archiwizatorami plików w celu wyodrębnienia archiwów pakietów
- Zapewnienie integralności i autentyczności pakietów poprzez weryfikację ich sum kontrolnych i certyfikatów cyfrowych, odpowiednio
- Wyszukiwanie, pobieranie, instalowanie lub aktualizowanie istniejącego oprogramowania z repozytorium oprogramowania lub sklepu z aplikacjami
- Grupowanie pakietów według funkcji w celu zmniejszenia dezorientacji użytkownika
- Zarządzanie zależnościami w celu zapewnienia, że pakiet jest instalowany ze wszystkimi pakietami, których wymaga, unikając w ten sposób „piekła zależności”
Wyzwania związane z bibliotekami współdzielonymiEdit
Systemy komputerowe, które polegają na dynamicznym łączeniu bibliotek, zamiast statycznego łączenia bibliotek, współdzielą wykonywalne biblioteki instrukcji maszynowych pomiędzy pakietami i aplikacjami. W tych systemach, złożone zależności pomiędzy różnymi pakietami wymagającymi różnych wersji bibliotek powodują, że pojawia się wyzwanie potocznie nazywane „piekłem zależności”. W systemach Microsoft Windows jest to również nazywane „piekłem DLL”, gdy pracujemy z dynamicznie łączonymi bibliotekami. Dobre zarządzanie pakietami jest kluczowe w tych systemach. System Framework z OPENSTEP był próbą rozwiązania tego problemu, pozwalając na jednoczesną instalację wielu wersji bibliotek oraz na określenie przez pakiety oprogramowania, z którą wersją są powiązane.
Końcówki frontów dla lokalnie kompilowanych pakietówEdit
Administratorzy systemu mogą instalować i utrzymywać oprogramowanie używając narzędzi innych niż oprogramowanie do zarządzania pakietami. Na przykład, lokalny administrator może pobrać niepakowany kod źródłowy, skompilować go i zainstalować. Może to spowodować, że stan lokalnego systemu przestanie być zsynchronizowany ze stanem bazy danych menedżera pakietów. Lokalny administrator będzie musiał podjąć dodatkowe środki, takie jak ręczne zarządzanie niektórymi zależnościami lub zintegrowanie zmian z menedżerem pakietów.
Dostępne są narzędzia zapewniające, że lokalnie skompilowane pakiety są zintegrowane z zarządzaniem pakietami. Dla dystrybucji opartych na plikach .deb i .rpm, jak również Slackware Linux, istnieje CheckInstall, a dla systemów opartych na recepturach, takich jak Gentoo Linux i systemów hybrydowych, takich jak Arch Linux, możliwe jest napisanie najpierw receptury, która następnie zapewnia, że pakiet pasuje do lokalnej bazy pakietów.
Utrzymanie konfiguracjiEdit
Szczególnie kłopotliwe przy aktualizacjach oprogramowania są aktualizacje plików konfiguracyjnych. Ponieważ menedżery pakietów, przynajmniej w systemach Unix, powstały jako rozszerzenia narzędzi do archiwizacji plików, mogą one zazwyczaj tylko nadpisywać lub zachowywać pliki konfiguracyjne, a nie stosować do nich reguły. Istnieją wyjątki od tej zasady, które zwykle dotyczą konfiguracji jądra (które, jeśli zostanie uszkodzone, spowoduje, że komputer będzie niezdatny do użytku po ponownym uruchomieniu). Problemy mogą być spowodowane, jeśli zmieni się format plików konfiguracyjnych; na przykład, jeśli stary plik konfiguracyjny nie wyłącza jawnie nowych opcji, które powinny być wyłączone. Niektóre menedżery pakietów, takie jak dpkg Debiana, pozwalają na konfigurację podczas instalacji. W innych sytuacjach pożądane jest zainstalowanie pakietów z domyślną konfiguracją, a następnie nadpisanie tej konfiguracji, na przykład w instalacjach bezgłowych na dużej liczbie komputerów. Ten rodzaj wstępnie skonfigurowanej instalacji jest również obsługiwany przez dpkg.
RepozytoriaEdit
Aby dać użytkownikom większą kontrolę nad rodzajami oprogramowania, które pozwalają zainstalować w swoim systemie (i czasami z powodów prawnych lub ze względu na wygodę po stronie dystrybutorów), oprogramowanie jest często pobierane z wielu repozytoriów oprogramowania.
Wstrzymywanie aktualizacjiEdit
Gdy użytkownik wchodzi w interakcję z oprogramowaniem zarządzającym pakietami, by wywołać aktualizację, zwyczajowo przedstawia się użytkownikowi listę działań do wykonania (zwykle listę pakietów do aktualizacji, i ewentualnie podaje się numery starej i nowej wersji), i pozwala użytkownikowi albo zaakceptować aktualizację zbiorczo, albo wybrać poszczególne pakiety do aktualizacji. Wiele menedżerów pakietów można skonfigurować tak, by nigdy nie aktualizowały pewnych pakietów, lub by aktualizowały je tylko wtedy, gdy w poprzedniej wersji zostaną znalezione krytyczne luki lub niestabilności, zgodnie z definicją pakującego oprogramowanie. Ten proces jest czasami nazywany version pinning.
Na przykład:
- yum wspiera to za pomocą składni exclude=openoffice*
- pacman z IgnorePkg= openoffice (aby pominąć aktualizację openoffice w obu przypadkach)
- dpkg i dselect wspierają to częściowo poprzez flagę hold. w wyborze pakietów
- APT rozszerza flagę wstrzymania poprzez złożony mechanizm „pinning” (Użytkownicy mogą również umieścić pakiet na czarnej liście)
- aptitude posiada flagi „wstrzymaj” i „zabroń”
- portage wspiera to poprzez pakiet.plik konfiguracyjny maski
Kaskadowe usuwanie pakietówEdit
Niektóre z bardziej zaawansowanych funkcji zarządzania pakietami oferują „kaskadowe usuwanie pakietów”, w którym wszystkie pakiety zależne od pakietu docelowego i wszystkie pakiety, od których zależy tylko pakiet docelowy, są również usuwane.
Porównanie poleceńEdit
Chociaż polecenia są specyficzne dla każdego konkretnego menedżera pakietów, są w dużym stopniu przetłumaczalne, ponieważ większość menedżerów pakietów oferuje podobne funkcje.
Akcja | zypper | pacman | apt | dnf (yum) | portage | |
---|---|---|---|---|---|---|
install package | zypper w PKG |
pacman -.S PACKAGE |
apt install PACKAGE |
dnf install PACKAGE |
emerge PACKAGE |
|
remove package | zypper rm -.RU PKG |
pacman -R PACKAGE |
apt remove PACKAGE |
dnf remove --nodeps PACKAGE |
emerge -.C PACKAGE lub emerge --unmerge PACKAGE |
|
remove package+orphans | zypper rm -u --force-resolution PKG |
pacman -Rs PACKAGE |
apt autoremove PACKAGE |
dnf remove PACKAGE |
emerge - -.c PACKAGE lub emerge --depclean PACKAGE |
|
update software database | zypper ref |
pacman - -.Sy |
apt update |
dnf check-update |
emerge -.-sync |
|
show updatable packages | zypper lu |
pacman -Qu |
apt list -.-upgradable |
dnf check-update |
emerge -avtuDN --with-bdeps=y @world lub emerge --update --.pretend @world |
|
delete orphans+config | zypper rm -u |
pacman -Rsn $(pacman -.-orphaned --unneededed |
pacman -Qdt |
package-cleanup --quiet --leaves --exclude-bin |
emerge -.caD lub emerge --depclean --pretend |
|
update all | zypper up |
pacman -.Syu |
apt upgrade |
dnf update |
emerge --update --deep --with-bdeps=y @world |
Wiki Arch Linux Pacman/Rosetta oferuje obszerny przegląd.