Вопрос или проблема
Я использую Ubuntu 18.04.5 LTS. У меня был заблокирован dpkg, когда я пытался установить новый пакет. Затем я разблокировал dpkg и обнаружил ошибку dpkg, называемую “dpkg не найден”. Я попробовал “sudo apt install dpkg”, но он говорит, что уже установлен новый dpkg.
Вывод команды sudo apt install dpkg
:
Чтение списков пакетов... Готово
Формирование дерева зависимостей
Чтение информации о состоянии... Готово
dpkg уже является самой новой версией (1.19.0.5ubuntu2.3).
0 обновлено, 0 новой установки, 0 к удалению и 37 не обновлено.
После этого я попытался “sudo apt-get install --reinstall dpkg
” и получил следующий вывод:
Чтение списков пакетов... Готово
Формирование дерева зависимостей
Чтение информации о состоянии... Готово
0 обновлено, 0 новой установки, 1 переустановлен, 0 к удалению и 37 не обновлено.
Необходимо загрузить 1,136 кБ архивов.
После этой операции дополнительно будет использовано 0 Б дискового пространства.
Получено:1 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 dpkg amd64 1.19.0.5ubuntu2.3 [1,136 кБ]
Загружено 1,136 кБ за 1 с (1,450 кБ/с)
Не удалось выполнить dpkg!
/usr/lib/libdvd-pkg/b-i_libdvdcss.sh: 7: /usr/lib/libdvd-pkg/b-i_libdvdcss.sh: dpkg: не найден
E: Подпроцесс /usr/bin/dpkg вернул код ошибки (100)
Таким образом, я не могу установить dpkg и также не могу исправить эту ошибку.
Примечание: sudo apt upgrade
вообще не работает. Вывод:
Чтение списков пакетов... Готово
Формирование дерева зависимостей
Чтение информации о состоянии... Готово
Вычисление обновлений... Готово
Следующие НОВЫЕ пакеты будут установлены:
distro-info python3-click python3-colorama
Следующие пакеты будут обновлены:
apt apt-utils docker.io gnome-shell gnome-shell-common grub-common grub-efi-amd64-bin grub-efi-amd64-signed grub-pc grub-pc-bin grub2-common
initramfs-tools initramfs-tools-bin initramfs-tools-core isc-dhcp-client isc-dhcp-common libapt-inst2.0 libapt-pkg5.0 libnss-myhostname
libnss-systemd libpam-systemd libseccomp2 libsystemd0 libudev1 linux-firmware python3-distupgrade sbsigntool systemd systemd-sysv
ubuntu-advantage-tools ubuntu-drivers-common ubuntu-keyring ubuntu-release-upgrader-core ubuntu-release-upgrader-gtk udev update-notifier
update-notifier-common
37 обновлено, 3 новой установки, 0 к удалению и 0 не обновлено.
Необходимо загрузить 0 Б/126 МБ архивов.
После этой операции дополнительно будет использовано 2,394 кБ дискового пространства.
Вы хотите продолжить? [Y/n] Y
Извлечение шаблонов из пакетов: 100%
Предварительная настройка пакетов ...
/tmp/ubuntu-advantage-tools.config.idFIRB: 7: /tmp/ubuntu-advantage-tools.config.idFIRB: dpkg: не найден
/tmp/grub-pc.config.YIkgdy: 1: /tmp/grub-pc.config.YIkgdy: dpkg: не найден
Не удалось выполнить dpkg!
/usr/lib/libdvd-pkg/b-i_libdvdcss.sh: 7: /usr/lib/libdvd-pkg/b-i_libdvdcss.sh: dpkg: не найден
E: Подпроцесс /usr/bin/dpkg вернул код ошибки (100)
Следуйте этим шагам:
mkdir /tmp/dpkg
cd /tmp/dpkg
wget http://archive.ubuntu.com/ubuntu/pool/main/d/dpkg/dpkg_1.15.5.6ubuntu4_i386.deb
ar x dpkg*.deb data.tar.gz
tar xfvz data.tar.gz ./usr/bin/dpkg
sudo cp ./usr/bin/dpkg /usr/bin/
sudo apt-get update
sudo apt-get install --reinstall dpkg
Ответ или решение
Проблема, с которой вы столкнулись, связана с повреждением пакета dpkg
, что и является причиной возникновения ошибки с кодом возврата 100. Давайте подробно разберёмся с данной ситуацией и возможными шагами по её решению.
Шаг 1: Понимание ошибки
Ошибка E: Sub-process /usr/bin/dpkg returned an error code (100)
обычно означает, что системный менеджер пакетов dpkg
не может выполнить команды из-за отсутствия самой программы или повреждения её исполняемого файла. Ваша первоначальная ошибка "dpkg not found" указывает на то, что исполняемый файл dpkg
не найден в ожидаемом расположении, что могло произойти, например, в результате случайного удаления или повреждения.
Шаг 2: Устранение блокировки
Сначала убедитесь, что процесс dpkg
не работает и нет блокировок, которые могли бы препятствовать доступу к его ресурсам:
sudo fuser -v /var/lib/dpkg/lock
sudo fuser -v /var/lib/apt/lists/lock
sudo fuser -v /var/cache/apt/archives/lock
Если эти команды обнаруживают активные процессы, вы можете завершить их с помощью команды:
sudo kill -9 <PID>
где <PID>
— идентификатор процесса.
Шаг 3: Восстановление dpkg
Как следует из вашего сообщения, dpkg
не доступен для выполнения, и попытки переустановить его через apt
также не дают результата. Для решения данной проблемы выполните следующие действия:
-
Создайте временную папку для загрузки:
mkdir /tmp/dpkg cd /tmp/dpkg
-
Загрузите исходный пакет
dpkg
для вашей версии Ubuntu. Убедитесь, что вы загружаете правильный архитектурный вариант (amd64 или i386):wget http://archive.ubuntu.com/ubuntu/pool/main/d/dpkg/dpkg_1.19.0.5ubuntu2.3_amd64.deb
-
Извлеките файл
dpkg
из скачанного .deb пакета:ar x dpkg*.deb data.tar.xz tar -xf data.tar.xz ./usr/bin/dpkg
-
Копируйте восстановленный исполняемый файл
dpkg
в системную директорию:sudo cp ./usr/bin/dpkg /usr/bin/
Шаг 4: Обновление и переустановка
После восстановления файла dpkg
, выполните обновление списка пакетов и переустановку dpkg
:
sudo apt-get update
sudo apt-get install --reinstall dpkg
Шаг 5: Устранение оставшихся проблем
Теперь, когда dpkg
восстановлен, попробуйте снова выполнить команду sudo apt upgrade
для обновления системы. Если возникнут другие проблемы, их можно устранить, используя следующие команды:
sudo apt-get install -f # для исправления недостающих или поврежденных пакетов
sudo dpkg --configure -a # для завершения конфигурации пакетов
Заключение
Следуя данным инструкциям, вы должны иметь возможность устранить ошибку, вызванную повреждением или отсутствием dpkg
. Важно всегда следить за состоянием системы и избегать разрушительных команд, которые могут влиять на базовые компоненты, такие как dpkg
, что может привести к усложнению управления пакетами в Ubuntu. Если данный процесс не решит вашу проблему, рекомендуется обратиться к сообществу Ubuntu для получения более специфичных советов.