Zarządzanie pakietami w Ubuntu: cheatshet dla APT i dpkg
Podstawowe polecenia APT i dpkg do pakietów Ubuntu
System zarządzania pakietami Ubuntu’s package management stanowi fundament instalacji i konserwacji oprogramowania, co czyni go kluczową wiedzą dla każdego użytkownika systemu Linux lub administratora systemu.
Ta ilustracja została wygenerowana przez AI model Flux 1 dev.
Co to jest zarządzanie pakietami APT?
APT (Advanced Package Tool) to główny system zarządzania pakietami w Ubuntu, dziedziczony z Debiana. Jest to potężne narzędzie wiersza poleceń do instalowania, aktualizowania i usuwania pakietów oprogramowania. APT automatycznie rozwiązuje zależności, łączy się z oficjalnymi repozytoriami Ubuntu i jest tradycyjnym sposobem zarządzania pakietami systemowymi w systemach Ubuntu i opartych na Debianie. Jeśli jesteś nowy w Ubuntu, sprawdź nasz przewodnik po jak zainstalować Ubuntu 24.04 i przydatne narzędzia, aby rozpocząć pracę z dobrze skonfigurowanym systemem.
Główne cechy:
- Wbudowany w Ubuntu/Debian: Gotowy do użycia, nie wymaga dodatkowej instalacji
- Udostępniane biblioteki: Efektywne wykorzystanie dysku dzięki udostępnionym zależnościom systemowym
- Ręczne aktualizacje: Sam kontrolujesz, kiedy aktualizowane są pakiety
- Brak sandboxingu: Pakiety mają pełny dostęp do systemu (odpowiednie do narzędzi systemowych)
- Lekki: Brak tła, działa tylko wtedy, gdy jest wywoływany
- Dorosły ekosystem: Dziesiątki lat rozwoju, bardzo stabilny
Porównanie menedżerów pakietów
Ubuntu obsługuje wiele systemów zarządzania pakietami. Oto jak porównują się główne operacje:
| Operacja | APT | Snap | Flatpak |
|---|---|---|---|
| Wyszukiwanie | apt search keyword |
snap find keyword |
flatpak search keyword |
| Instalacja | sudo apt install package |
sudo snap install package |
flatpak install flathub app.id |
| Lista zainstalowanych | apt list --installed |
snap list |
flatpak list --app |
| Wyświetlanie informacji | apt show package |
snap info package |
flatpak info app.id |
| Aktualizacja wszystkich | sudo apt update && sudo apt upgrade |
sudo snap refresh |
flatpak update |
| Aktualizacja pojedynczego | sudo apt install --only-upgrade pkg |
sudo snap refresh package |
flatpak update app.id |
| Usuwanie | sudo apt remove package |
sudo snap remove package |
flatpak uninstall app.id |
| Czyszczenie | sudo apt autoremove |
snap remove --revision=N |
flatpak uninstall --unused |
| Repozytorium | /etc/apt/sources.list |
Sklep Snap (wbudowany) | Dodaj za pomocą flatpak remote-add |
Szybkie porównanie funkcji
| Funkcja | APT | Snap | Flatpak |
|---|---|---|---|
| Automatyczne aktualizacje | Nie | Tak | Nie |
| Sandboxing | Nie | Tak | Tak |
| Zależności | Biblioteki systemowe | Zawarte | Udostępnione środowiska uruchomieniowe |
| Rozmiar pakietu | Mały (5-50MB) | Duży (50-500MB) | Średni (20-200MB) |
| Wymagany root | Tak | Tak | Nie (instalacja użytkownika) |
| Szybkość uruchamiania | Szybka | Wolniejsza | Szybka |
| Najlepszy do | Pakietów systemowych | Uniwersalnych aplikacji | Aplikacji desktopowych |
O tym przewodniku
Ten przewodnik skupia się na APT (apt/apt-get/dpkg) - tradycyjnym systemie zarządzania pakietami w Ubuntu. APT jest niezbędny do zarządzania pakietami systemowymi, bibliotekami i usługami w systemach Ubuntu i opartych na Debianie.
Dla innych menedżerów pakietów:
- 📦 Przewodnik po menedżerze pakietów Snap - uniwersalne pakiety z automatycznymi aktualizacjami i sandboxingiem
- 📦 Przewodnik po menedżerze pakietów Flatpak - aplikacje desktopowe z granularnymi uprawnieniami
Każdy menedżer pakietów ma swoje zalety. Używaj APT do pakietów systemowych i zależności, Snap do kompatybilności między wersjami i automatycznych aktualizacji, a Flatpak do aplikacji desktopowych z granularnymi uprawnieniami.
Zarządzanie pakietami APT - szczegółowy przewodnik
Zrozumienie APT vs apt-get
APT (apt) - nowoczesny wybór
Wprowadzony w Ubuntu 14.04, apt łączy funkcje z apt-get i apt-cache z wzmocnionym doświadczeniem użytkownika:
Zalety:
- Paski postępu i kolorowe wyjścia
- Bardziej intuicyjne polecenia
- Czystsze wyjścia dla czytelności przez człowieka
- Łączy funkcje wielu narzędzi
Kiedy używać: Codzienne interaktywne operacje w wierszu poleceń
apt-get - tradycyjny wybór
Oryginalne narzędzie zarządzania pakietami, nadal powszechnie używane:
Zalety:
- Bardziej stabilny API (lepszy dla skryptów)
- Kompatybilność wsteczna
- Przewidywalny format wyjścia
- Większa kontrola
Kiedy używać: Skrypty powłoki, automatyzacja, systemy starsze
Porada: Aby zwiększyć szybkość nawigacji w terminalu i wydajność pracy, sprawdź nasz przewodnik po skrótach klawiaturowych w Ubuntu do zwiększenia wydajności podczas zarządzania pakietami.
Kluczowe polecenia zarządzania pakietami
Aktualizacja list pakietów
Zawsze aktualizuj listy pakietów przed instalacją lub aktualizacją:
# Aktualizacja indeksu pakietów
sudo apt update
# Albo z użyciem apt-get
sudo apt-get update
To polecenie odświeża lokalną bazę danych z informacjami o dostępnych pakietach i ich wersjach z skonfigurowanych repozytoriów.
Instalacja pakietów
Podstawowa instalacja:
# Instalacja pojedynczego pakietu
sudo apt install package-name
# Instalacja wielu pakietów
sudo apt install package1 package2 package3
# Instalacja konkretnej wersji
sudo apt install package-name=version-number
Przykłady:
# Instalacja serwera sieciowego Nginx
sudo apt install nginx
# Instalacja Pythona i pip
sudo apt install python3 python3-pip
# Instalacja podstawowych narzędzi do budowania
sudo apt install build-essential
# Instalacja narzędzi do monitorowania systemu
sudo apt install htop
Dla specjalistycznych potrzeb monitorowania, takich jak śledzenie wydajności GPU na systemach z kartami NVIDIA, sprawdź nasz przewodnik po aplikacjach monitorowania GPU w Linux/Ubuntu.
Instalacja bez monitów (przydatne dla skryptów):
sudo apt install -y package-name
# Albo
sudo DEBIAN_FRONTEND=noninteractive apt install -y package-name
Instalacja z pliku .deb:
# Metoda 1: Używając apt (zalecana, obsługuje zależności)
sudo apt install ./package.deb
# Metoda 2: Używając dpkg
sudo dpkg -i package.deb
sudo apt install -f # Napraw brakujące zależności
Uwaga: Pracując z pobranymi plikami .deb, możesz chcieć użyć menedżera plików z dobrym menu kontekstowym. Sprawdź nasze porównanie menedżerów plików dla Ubuntu 24.04 (Nautilus vs Nemo vs Dolphin vs Caja), aby znaleźć ten, który najlepiej nadaje się do Twojej pracy.
Aktualizacja pakietów
Aktualizacja zainstalowanych pakietów:
# Aktualizacja wszystkich pakietów (bezpieczna, nie usuwa pakietów)
sudo apt upgrade
# Aktualizacja konkretnego pakietu
sudo apt install --only-upgrade package-name
# Pełna aktualizacja (może usunąć pakiety w celu rozwiązania zależności)
sudo apt full-upgrade
# Aktualizacja wersji dystrybucji (dla dużych aktualizacji wersji)
sudo apt dist-upgrade
Kompletna sekwencja aktualizacji:
# Zalecana procedura aktualizacji
sudo apt update
sudo apt upgrade -y
sudo apt autoremove
sudo apt autoclean
Aktualizacja wersji Ubuntu:
# Dla LTS do kolejnego LTS
sudo do-release-upgrade
# Dla dowolnej aktualizacji wersji
sudo do-release-upgrade -d
Lista pakietów
Lista zainstalowanych pakietów:
# Wszystkie zainstalowane pakiety
apt list --installed
# Z filtrem grep
apt list --installed | grep package-name
# Liczba zainstalowanych pakietów
apt list --installed | wc -l
# Używając dpkg
dpkg -l
dpkg --list
dpkg -l | grep package-name
Lista aktualizowalnych pakietów:
# Wyświetl pakiety z dostępnymi aktualizacjami
apt list --upgradable
# Szczegółowa symulacja aktualizacji
apt list --upgradable -a
Lista wszystkich dostępnych pakietów:
# Wszystkie pakiety w repozytoriach
apt list
# Lista z konkretnego repozytorium
apt list | grep "source-name"
Wyszukiwanie pakietów
Wyszukiwanie nazw i opisów pakietów:
# Wyszukiwanie za pomocą apt
apt search keyword
# Wyszukiwanie bez uwzględniania wielkości liter
apt search -i keyword
# Wyświetlanie tylko nazw pakietów
apt-cache search keyword
# Wyszukiwanie tylko nazw pakietów (szybsze)
apt-cache search --names-only keyword
Przykłady:
# Wyszukiwanie edytora
apt search text editor
# Wyszukiwanie bazy danych
apt search database
# Wyszukiwanie pakietów Pythona
apt search python | grep python3
Wyświetlanie informacji o pakietach
Szczegółowe informacje o pakiecie:
# Wyświetl szczegóły pakietu
apt show package-name
# Używając apt-cache
apt-cache show package-name
# Wyświetl zależności pakietu
apt-cache depends package-name
# Wyświetl odwrotne zależności
apt-cache rdepends package-name
# Sprawdź politykę i wersje pakietu
apt-cache policy package-name
# Wyświetl statystyki pakietu
apt-cache stats
Sprawdź, czy pakiet jest zainstalowany:
# Metoda 1
dpkg -s package-name
# Metoda 2
dpkg -l package-name
# Metoda 3
apt list --installed package-name
# Metoda 4 (kod wyjścia 0, jeśli zainstalowany)
dpkg-query -W package-name
Usuwanie pakietów
Usuwanie pakietów:
# Usuń pakiet (zachowaj pliki konfiguracyjne)
sudo apt remove package-name
# Usuń pakiet i pliki konfiguracyjne (purge)
sudo apt purge package-name
# Usuń z zależnościami
sudo apt autoremove package-name
# Całkowite usunięcie pakietu i konfiguracji
sudo apt purge package-name && sudo apt autoremove
Czyszczenie systemu:
# Usuń nieużywane zależności
sudo apt autoremove
# Usuń z purge
sudo apt autoremove --purge
# Usuń pobrane pliki pakietów
sudo apt clean
# Usuń stare wersje pakietów
sudo apt autoclean
Sprawdź użycie dysku:
# Sprawdź rozmiar cache
du -sh /var/cache/apt/archives
# Sprawdź całkowity rozmiar pakietów
dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -n
Blokady pakietów (zapobieganie aktualizacjom)
Blokowanie pakietów:
# Zablokuj pakiet na obecnej wersji
sudo apt-mark hold package-name
# Odblokuj pakiet
sudo apt-mark unhold package-name
# Wyświetl zablokowane pakiety
apt-mark showhold
# Zablokuj wiele pakietów
sudo apt-mark hold package1 package2 package3
Przypadek użycia: Zapobiegaj automatycznemu aktualizowaniu określonych wersji oprogramowania.
Użycie dpkg - narzędzie na poziomie niskim do zarządzania pakietami
dpkg to podstawowy menedżer pakietów, który APT używa:
Podstawowe polecenia dpkg:
# Instalacja pakietu
sudo dpkg -i package.deb
# Usunięcie pakietu
sudo dpkg -r package-name
# Usunięcie pakietu z konfiguracją
sudo dpkg -P package-name
# Lista zainstalowanych pakietów
dpkg -l
# Lista plików w pakiecie
dpkg -L package-name
# Znajdź, który pakiet zawiera plik
dpkg -S /path/to/file
# Sprawdź status pakietu
dpkg -s package-name
# Przeinstaluj pakiet
sudo dpkg-reconfigure package-name
# Sprawdź integralność pakietu
dpkg -V package-name
Napraw uszkodzone pakiety:
# Przeinstaluj uszkodzone pakiety
sudo dpkg --configure -a
# Napraw brakujące zależności
sudo apt install -f
# Siłowe przeinstalowanie
sudo apt install --reinstall package-name
Zarządzanie repozytoriami
Wyświetlanie repozytoriów
Sprawdź skonfigurowane repozytoria:
# Wyświetl listę źródeł
cat /etc/apt/sources.list
# Wyświetl dodatkowe źródła
ls /etc/apt/sources.list.d/
# Wyświetl wszystkie włączone repozytoria
grep -r --include '*.list' '^deb ' /etc/apt/
Dodawanie repozytoriów
Dodaj PPA (Personal Package Archive):
# Dodaj repozytorium PPA
sudo add-apt-repository ppa:user/ppa-name
sudo apt update
# Przykład: Dodaj repozytorium Git
sudo add-apt-repository ppa:git-core/ppa
sudo apt update
sudo apt install git
Dodaj repozytorium ręcznie:
# Dodaj repozytorium do sources.list
echo "deb http://repository-url distribution component" | sudo tee -a /etc/apt/sources.list.d/custom.list
# Dodaj klucz GPG
wget -qO - https://example.com/key.gpg | sudo apt-key add -
# Aktualizuj listy pakietów
sudo apt update
Nowoczesne zarządzanie kluczami (Ubuntu 22.04+):
# Pobierz i dodaj klucz do keyring
wget -qO - https://example.com/key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/custom.gpg
# Dodaj podpisane repozytorium
echo "deb [signed-by=/etc/apt/keyrings/custom.gpg] http://repo-url dist component" | sudo tee /etc/apt/sources.list.d/custom.list
Usuwanie repozytoriów
# Usuń PPA
sudo add-apt-repository --remove ppa:user/ppa-name
# Albo usuń plik listy
sudo rm /etc/apt/sources.list.d/ppa-name.list
# Aktualizuj
sudo apt update
Alternatywne menedżery pakietów
Ubuntu obsługuje również Snap i Flatpak do uniwersalnego pakowania aplikacji:
-
Snap: Sprawdź nasz szczegółowy Przewodnik po menedżerze pakietów Snap dla szczegółowych informacji na temat instalacji, użycia, kanałów, ograniczenia i rozwiązywania problemów.
-
Flatpak: Sprawdź nasz szczegółowy Przewodnik po menedżerze pakietów Flatpak dla szczegółowych informacji na temat instalacji, Flathub, uprawnień, środowisk uruchomieniowych i zarządzania.
Zaawansowane zarządzanie pakietami
Symulacja operacji (dry run)
# Symulacja instalacji
apt install -s package-name
# Symulacja aktualizacji
apt upgrade -s
# Wyświetl, co byłoby zainstalowane
apt-cache showpkg package-name
Pobieranie pakietów bez instalacji
# Pobierz pakiet tylko
apt download package-name
# Pobierz z zależnościami
apt install --download-only package-name
# Pobierz do określonego katalogu
cd /path/to/dir
apt download package-name
Znajdowanie plików pakietów
# Który pakiet dostarcza plik
dpkg -S /path/to/file
# Wyszukaj pliki w pakietach (w tym niezainstalowanych)
apt-file search filename
# Zainstaluj apt-file
sudo apt install apt-file
sudo apt-file update
Blokada pakietów
Utwórz /etc/apt/preferences, aby kontrolować wersje pakietów:
# Zablokuj pakiet na konkretnej wersji
sudo nano /etc/apt/preferences
Dodaj:
Package: package-name
Pin: version 1.2.3*
Pin-Priority: 1001
Sprawdzanie wadliwości pakietów
# Sprawdź aktualizacje bezpieczeństwa
sudo apt list --upgradable | grep security
# Sprawdź konkretny pakiet na CVE
apt-cache policy package-name
Rozwiązywanie typowych problemów
Napraw uszkodzone pakiety
# Metoda 1: Napraw zależności
sudo apt install -f
# Metoda 2: Przeinstaluj pakiety
sudo dpkg --configure -a
# Metoda 3: Wyczyść i zaktualizuj
sudo apt clean
sudo apt update
sudo apt upgrade
# Metoda 4: Siłowe naprawa
sudo apt --fix-broken install
Napraw błąd “zablokowany” baza danych
# Usuń pliki blokady (tylko jeśli nie ma uruchomionego procesu apt!)
sudo rm /var/lib/dpkg/lock-frontend
sudo rm /var/lib/dpkg/lock
sudo rm /var/cache/apt/archives/lock
sudo dpkg --configure -a
Sprawdź, czy są uruchomione procesy:
ps aux | grep -i apt
sudo lsof /var/lib/dpkg/lock-frontend
Błąd sumy skrótów
# Wyczyść cache i spróbuj ponownie
sudo apt clean
sudo rm -rf /var/lib/apt/lists/*
sudo apt update
Błędy GPG/klucza
# Dodaj klucz ponownie
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys KEY_ID
# Albo pobierz klucz
wget -qO - https://repo-url/key.gpg | sudo apt-key add -
# Nowoczesny sposób (Ubuntu 22.04+)
wget -qO - https://repo-url/key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/repo.gpg
Niezaspokojone zależności
# Spróbuj aptitude (lepszy menedżer zależności)
sudo apt install aptitude
sudo aptitude install package-name
# Albo rozwiąż ręcznie
sudo apt install package-name package-dependency
Repozytorium nie znaleziono (404)
# Zaktualizuj do poprawnego repozytorium
sudo nano /etc/apt/sources.list
# Zmień stary nazwę wersji na aktualną
# Albo usuń przestarzałe PPA
sudo add-apt-repository --remove ppa:name/ppa
Najlepsze praktyki
Regularna konserwacja
Tygodniowy rutynowy:
#!/bin/bash
# Skrypt aktualizacji systemu
echo "Aktualizowanie list pakietów..."
sudo apt update
echo "Aktualizowanie pakietów..."
sudo apt upgrade -y
echo "Usuwanie nieużywanych pakietów..."
sudo apt autoremove -y
echo "Czyszczenie cache pakietów..."
sudo apt autoclean
echo "Aktualizacja zakończona!"
Aktualizacje bezpieczeństwa
Automatyczne aktualizacje dla poprawek bezpieczeństwa:
# Zainstaluj unattended-upgrades
sudo apt install unattended-upgrades
# Skonfiguruj
sudo dpkg-reconfigure unattended-upgrades
# Edytuj konfigurację
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
Konfiguracja serwera: Jeśli zarządzasz serwerem Ubuntu, odpowiednia konfiguracja sieci jest kluczowa dla niezawodnego pobierania pakietów i aktualizacji systemu. Dowiedz się jak zmienić statyczny adres IP w Ubuntu Server aby zapewnić stabilne połączenie dla operacji zarządzania pakietami.
Rezerwacja listy pakietów
Eksport zainstalowanych pakietów:
# Utwórz kopię zapasową
dpkg --get-selections > ~/package-list.txt
# Albo z eksplikowanymi zainstalowanymi pakietami
apt-mark showmanual > ~/manually-installed.txt
# Przywróć na innym systemie
sudo dpkg --set-selections < ~/package-list.txt
sudo apt-get dselect-upgrade
Sprawdź stan systemu
# Sprawdź uszkodzone zależności
sudo apt check
# Sprawdź wszystkie pakiety
sudo debsums -c
# Sprawdź logi systemu
journalctl -xe | grep -i apt
tail -f /var/log/apt/history.log
Optymalizacja wydajności
Szybsze pobieranie pakietów
Włącz pobieranie równoległe:
Edytuj /etc/apt/apt.conf.d/99parallel:
echo 'Acquire::Queue-Mode "host";' | sudo tee /etc/apt/apt.conf.d/99parallel
echo 'Acquire::http::Pipeline-Depth "5";' | sudo tee -a /etc/apt/apt.conf.d/99parallel
Użyj szybszego lustra:
# Zainstaluj apt-fast
sudo add-apt-repository ppa:apt-fast/stable
sudo apt update
sudo apt install apt-fast
# Użyj apt-fast zamiast apt
sudo apt-fast install package-name
Zmniejsz rozmiar cache
# Ogranicz cache do 100MB
echo 'APT::Archives::MaxSize "100";' | sudo tee /etc/apt/apt.conf.d/99max-cache
Przydatne skrypty zarządzania pakietami
Aktualizacja wszystkich menedżerów pakietów
#!/bin/bash
# Aktualizacja wszystkich menedżerów pakietów
echo "=== Aktualizacja APT ==="
sudo apt update && sudo apt upgrade -y
echo "=== Aktualizacja Snap ==="
sudo snap refresh
echo "=== Aktualizacja Flatpak ==="
flatpak update -y
echo "Wszystkie systemy zaktualizowane!"
Znajdowanie dużych pakietów
# Lista największych zainstalowanych pakietów
dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -nr | head -20
# Albo bardziej czytelny format
dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -nr | head -20 | awk '{printf "%.2f MB\t%s\n", $1/1024, $2}'
Audyt pakietów
#!/bin/bash
# Audyt systemu pakietów
echo "=== Statystyki pakietów systemowych ==="
echo "Zainstalowane pakiety: $(dpkg -l | grep ^ii | wc -l)"
echo "Aktualizowalne pakiety: $(apt list --upgradable 2>/dev/null | grep -c upgradable)"
echo "Zablokowane pakiety: $(apt-mark showhold | wc -l)"
echo "Do usunięcia: $(apt autoremove --dry-run | grep -Po '^\d+')"
echo "Rozmiar cache: $(du -sh /var/cache/apt/archives | cut -f1)"
Szybki przewodnik po skrótach
Podstawowe polecenia:
# Aktualizacja & aktualizacja
sudo apt update && sudo apt upgrade -y
# Instalacja pakietu
sudo apt install package-name
# Usunięcie pakietu
sudo apt remove package-name
# Wyszukiwanie pakietu
apt search keyword
# Wyświetlanie informacji o pakiecie
apt show package-name
# Lista zainstalowanych
apt list --installed
# Czyszczenie systemu
sudo apt autoremove && sudo apt autoclean
# Napraw uszkodzone pakiety
sudo apt install -f && sudo dpkg --configure -a
Podsumowanie
Zdobywanie wiedzy na temat systemu zarządzania pakietami w Ubuntu jest kluczowe dla wydajnej administracji systemu. Niezależnie od tego, czy korzystasz z nowoczesnego polecenia apt dla sesji interaktywnych, apt-get dla skryptów, czy eksplorujesz uniwersalne pakiety z Snap i Flatpak, zrozumienie tych narzędzi pomoże Ci utrzymać bezpieczny, aktualizowany i dobrze zorganizowany system Ubuntu.
Zacznij od podstawowych poleceń, stopniowo włącz zaawansowane techniki i zawsze aktualizuj swój system. Regularna konserwacja w połączeniu z najlepszymi praktykami zapewnia płynne i niezawodne doświadczenie z Ubuntu.
Porada: Zawsze uruchamiaj sudo apt update przed instalacją lub aktualizacją pakietów, aby upewnić się, że pracujesz z najnowszymi informacjami o pakietach!
Przydatne linki
- Oficjalna dokumentacja Ubuntu
- Przewodnik użytkownika APT
- Wyszukiwarka pakietów Ubuntu
- Sklep Snap
- Repozytorium Flathub
- Doradca administratora Debiana
- Przewodnik po Ubuntu Server
- Strony pomocy:
man apt,man apt-get,man dpkg