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.

tetris 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:

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:

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

Powiązane artykuły na tym serwerze