60: Menedżery pakietów
Instalacja oprogramowania
- Windows: plik
setup.exe
- Linux: menedżery pakietów
Anatomia pakietu
Skompresowane archiwum
(gzip lub podobna)
Zawartość pakietu
- pliki
- opis (metainformacje)
- zależności
- skrypty pomocnicze (pre-install, post-install …)
Uwaga:
Praktycznie każdy plik systemowy pochodzi z jakiegoś pakietu.
Process instalacji pakietu
- sprawdzenie zależności
- rozpakowanie zawartości
- uruchomienie skryptów
Sprawdzenie zależności
- inne pakiety (lub pliki)
- wersje innych pakietów
Rodzaje zależności
- wymaga (require)
- konflikt (conflicts)
- sugeruje i rekomenduje (suggests, recommends)
- dostarcza (provides)
Rozpakowanie zawartości
- nadpisanie drzewa systemowego
- podmiana starych wersji plików
Uruchomienie skryptów
- zatrzymanie/uruchomienie usług
- wstępna konfiguracja
- generowanie kluczy
- generowanie certyfikatów
- inicjowanie bazy danych
Aktualizacja stanu
Menedżer pakietów śledzi i rejestruje stan każdego pakietu.
Podpisy cyfrowe
- poszczególnych pakietów (np. rpm)
- listy pakietów (np. APT/deb)
Instalacja oprogramowania
instalacja pakietu + zależności
pakiety .deb
narzędzie dpkg
- sprawdzanie stanu, informacji
- instalacja, usuwanie
- pojedyncze pakiety
narzędzie APT
- polecenia:
- pobieranie pakietu wraz z zależnościami
- użycie
dpkg do instalacji
narzędzie APT
(__)
(oo)
/------\/
/ | ||
* /\---/\
~~ ~~
..."Have you mooed today?"...
pakiety .rpm
- RHEL i klony (CentOS, Rocky, AlmaLinux)
- Fedora
- SUSE
- i inne
narzędzie rpm
- sprawdzanie stanu, informacji
- instalacja, usuwanie
- weryfikacja podpisów
- pojedyncze pakiety
narzędzie yum / dnf
- pobieranie list pakietów
- wyszukiwanie pakietów
- pobieranie pakietów wraz z zależnościami
dlaczego yum albo dnf?
yum (do EL 7)
dnf (od EL 8, od Fedory 22)
inne dystrybucje
apk (Alpine Linux)
xbps (Void Linux)
opkg (OpenWRT)
tgz (Slackware)
pkg.tar.zst (Arch Linux)
niezależne od dystrybucji
- Flatpak
- Snapcraft
- ZeroInstall
- AppImage
- Homebrew
- Nix
właściwe dla języków programowania
pip (Python)
npm (JavaScript, NodeJS)
CPAN (perl)
Composer (PHP)
RubyGems gem` (Ruby)
Cargo (Rust)
repozytoria
- oficjalne
- społecznościowe
- niezależne
- produktowe
phased updates
Etapowe wdrażanie poprawek pośród użytkowników
- atrybut
Phased-Update-Percentage w APT
- dystrybucje: Ubuntu
Koniec