dpkg ставит пакет в два этапа. Ошибка на втором оставляет файлы на диске, а пакет — недоустановленным.
Первый этап — распаковка: файлы из архива ложатся по местам. Второй — настройка: dpkg проверяет зависимости, кладёт в /etc файлы настроек пакета и запускает его сценарии установки. Только после настройки пакет считается установленным.
Зависимости dpkg проверяет перед настройкой. lab-pkg-data в системе не было, поэтому lab-pkg-report остался распакованным: dpkg -s пишет Status: install ok unpacked, а dpkg -l ставит в начале строки iU. Программа уже лежит в /usr/bin, а её настройки ещё нет — её ошибки ты и видел.
Чинят это так: ставят зависимость, затем доделывают настройку. sudo dpkg --configure lab-pkg-report настраивает один пакет, sudo dpkg --configure -a — все, что остались ненастроенными. Можно и сразу дать dpkg -i оба архива одной командой: он распакует оба и настроит их по порядку зависимостей.
dpkg ставит только те архивы, которые ему дали, и в сеть не ходит. Зависимости из репозиториев подбирает apt install. Здесь сети нет, и sudo apt install ./lab-pkg-report_1.0-1_all.deb напечатает lab-pkg-data (= 1.0-1) but it is not installable.
dpkg -s пакета показывает Status: install ok unpacked, нужную зависимость ты уже поставил. Что сделаешь дальше?
-
Без настройки в
/etcнет файла настроек пакета, аdpkg -sпишетunpacked. Программа без него печатает ошибки, как в начале урока. -
Архив цел, файлы уже распакованы. Не хватает этапа настройки — его делает
dpkg --configure. -
apt updateобновляет индексы репозиториев и пакет не настраивает. Состояние вdpkg -sостанетсяunpacked.
unpacked — файлы на месте, пропущен этап настройки. sudo dpkg --configure <пакет> его выполняет, после чего dpkg -s пишет install ok installed.
Главное в шаге
- dpkg ставит пакет в два этапа: распаковка, затем настройка.
-
Без зависимости пакет остаётся
unpacked: файлы на диске, установка не закончена. -
Поставь зависимость и выполни
dpkg --configure— настройка завершится.