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