Przejdź do głównej zawartości

dpkg


  • dpkg – główny backend systemu zarządzania pakietami Debiana (oraz Ubuntu, Linux Mint, Kali Linux i innych), obsługujący instalację, usuwanie, rozpakowywanie, konfigurację i zapytania dotyczące plików .deb.
  • Działa bezpośrednio na lokalnej bazie /var/lib/dpkg/ i nie pobiera zależności (od tego są front‑endy, np. apt, aptitude).
  • Przydatny do instalacji pakietów spoza repozytorium, debugowania błędów zależności, tworzenia własnych paczek i skryptów post‑instalacyjnych.

Okno terminala
dpkg [opcje] plik.deb # operacje na pliku pakietu
dpkg [opcje] <nazwa-pakietu> # operacje na zainstalowanym pakiecie
  • Większość czynności wymaga uprawnień administratora (sudo).
  • Flagi rozpoczynające się -i, -r, -P, -L wskazują tryb działania; można łączyć z parametrami (np. --force-confnew).

ParametrOpis
-i, --install <plik.deb>Instaluje i konfiguruje pakiet z pliku.
-r, --remove <pakiet>Usuwa pakiet, pozostawiając pliki konfiguracyjne.
-P, --purge <pakiet>Usuwa pakiet wraz z plikami konfiguracyjnymi.
-L, --listfiles <pakiet>Wypisuje listę plików należących do zainstalowanego pakietu.
-l, --list <wzorzec>Listuje zainstalowane pakiety pasujące do wzorca glob.
-s, --status <pakiet>Pokazuje status (installed, half-configured, deinstalled).
-I, --info <plik.deb>Wyświetla metadane pakietu znajdującego się w pliku.
-x, --extract <plik.deb> <katalog>Rozpakowuje zawartość pakietu bez instalacji.
--unpack <plik.deb>Rozpakowuje, ale nie konfiguruje (często do debugu).
--configure <pakiet>Wykonuje skrypty postinst na wstępnie rozpakowanym pakiecie.
-S, --search <plik>Szuka, który pakiet dostarcza wskazany plik ścieżki.
--force-*Ignoruje określone błędy (np. --force-depends).
--auditWypisuje nieskonfigurowane lub częściowo usunięte pakiety.
--get-selectionsEksport listy pakietów z ich stanem (do backupu).
--set-selectionsImport listy stanów pakietów (dpkg --set-selections < lista).
--merge-availAktualizuje bazę dostępnych pakietów z pakietów Packages.

Okno terminala
# 1. Instalacja lokalnego pakietu .deb
sudo dpkg -i google-chrome-stable_current_amd64.deb
# 2. Poprawienie zależności po instalacji .deb (typowy krok)
sudo apt-get -f install # apt dobierze brakujące zależności
# 3. Rozpakowanie pakietu do katalogu ./tmp
mkdir tmp && dpkg -x sample.deb tmp/
# 4. Sprawdzenie, który pakiet dostarcza /usr/bin/ls
dpkg -S /usr/bin/ls #=> coreutils: /usr/bin/ls
# 5. Całkowite usunięcie (purge) wraz z konfiguracją
sudo dpkg -P apache2

  • Baza pakietów: Pliki status, available i info/*.list w /var/lib/dpkg/; uszkodzenie wymaga ręcznej naprawy lub kopii zapasowej.
  • Lock file: Równoległe instancje dpkg/apt są blokowane przez /var/lib/dpkg/lock-frontend; nie zabijaj procesu w trakcie instalacji.
  • Force options: Opcje --force-* mogą złamać system zależności – używaj jedynie przy świadomości konsekwencji.
  • Front‑endy: apt, aptitude i synaptic korzystają z dpkg, ale oferują rozwiązywanie zależności i repozytoria HTTP/HTTPS.
  • Kopia listy pakietów: dpkg --get-selections + dpkg --set-selections to prosty sposób klonowania systemu na nową maszynę.

Błąd / KomunikatPrzyczynaRozwiązanie
dpkg was interrupted, you must manually run 'sudo dpkg --configure -a'Przerwana instalacja lub brak zasilaniaUruchom zalecane polecenie, następnie apt-get -f install.
dependency problems – leaving unconfiguredBrakujące lub niezgodne zależnościUżyj sudo apt-get -f install lub zainstaluj brakujące pakiety.
dpkg: error processing archive ... (--install): package architecture (i386) does not match system (amd64)Paczka dla innej architekturyPobierz wersję odpowiednią dla swojego systemu lub dodaj architekturę (dpkg --add-architecture).
Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?Inny proces apt/dpkg aktywnyPoczekaj aż zakończy, lub zabij bezpiecznie, usuń plik lock (ostateczność).