Поврежденный dpkg препятствует установке python3 на Ubuntu 24.04

Вопрос или проблема

Я недавно обновил WLS2-Win11 до Ubuntu 24.04 на своем компьютере с процессором Intel. После удаления Python 3.8 я попытался установить Python 3.12.

Команда sudo apt-get update; sudo apt-get upgrade приводит к следующей ошибке:

...                                                                                                                                                         Следующие обновления были отложены из-за фазирования:
  libopeniscsiusr needrestart open-iscsi
Следующие пакеты были удержаны:
  bind9-dnsutils bind9-host bind9-libs binutils binutils-common
  binutils-x86-64-linux-gnu btrfs-progs build-essential chafa coreutils cpp
  cpp-11 cpp-9 cron cryptsetup-initramfs curl dbus dbus-user-session dbus-x11
  dirmngr dmeventd e2fsprogs file fonts-dejavu-core fonts-urw-base35 fuse
  fwupd g++ g++-11 gcc gcc-11 gcc-11-base gcc-9 gcc-9-base ghostscript git
  git-man gnupg gnupg-l10n gnupg-utils gpg gpg-agent gpg-wks-client
  gpg-wks-server gpgconf gpgsm gpgv gsfonts imagemagick-6.q16 initramfs-tools
  initramfs-tools-bin initramfs-tools-core iproute2 jp2a
  libalgorithm-diff-xs-perl libargon2-1 libasan5 libasan6 libbinutils
  libcairo2 libctf0 libdbus-1-3 libfido2-1 libfile-fcntllock-perl libfreetype6
  libfwupd2 libgcc-11-dev libgcc-9-dev libgd3 libgl1-amber-dri libgl1-mesa-dri
  libglapi-mesa libglx-mesa0 libgudev-1.0-0 libheif1 libintl-perl
  libintl-xs-perl libjxr-tools liblocale-gettext-perl liblvm2cmd2.03                                                                                          libmagic-mgc libmm-glib0 libncurses6 libncursesw6 libnsl2 libnss-nisplus
  libnss-systemd libpam-modules libpam-modules-bin libpam-systemd libplymouth5
  libpolkit-agent-1-0 libpolkit-gobject-1-0 libproc-processtable-perl
  libpulse0 libqmi-glib5 libqmi-proxy libsemanage-common libserf-1-1
  libsndfile1 libstdc++-11-dev libsvn1 libsystemd0 libterm-readkey-perl
  libtext-charwidth-perl libtext-iconv-perl libtinfo6 libtsan0 libudev1
  libvolume-key1 libwebp7 libwebpdemux2 libwebpmux3 libxaw7 libxml2 lsof lvm2
  mesa-vulkan-drivers modemmanager multipath-tools ncurses-base ncurses-bin                                                                                   ncurses-term netpbm ntfs-3g open-vm-tools parted passwd perl perl-base
  pkexec plymouth plymouth-theme-ubuntu-text policykit-1 polkitd procps
  pulseaudio-utils sg3-utils subversion systemd systemd-sysv systemd-timesyncd
  tcpdump telnet thin-provisioning-tools tmux udev udisks2 w3m w3m-img wget
  x11-utils zerofree
0 обновлено, 0 новыми установленными, 0 к удалению и 156 не обновлено.
1 не полностью установлен или удален.
После этой операции будет использовано 0 Б дополнительного дискового пространства.
---------------------------------------------------------------------
Настройка python3 (3.12.3-0ubuntu1) ...
выполнение python rtupdate хуков для python3.12...
выполнение python post-rtupdate хуков для python3.12...
/var/lib/dpkg/info/python3.postinst: 47: py3compile: не найден
dpkg: ошибка при обработке пакета python3 (--configure):
 установленный пакет python3 скрипт пост-установки вернул код завершения ошибки 127
При обработке возникли ошибки:
 python3
needrestart пропускается, так как dpkg завершился с ошибкой

В это время на моем компьютере не был установлен python. Я попробовал sudo apt-get install python3 --reinstall, и он вернул

Чтение списков пакетов... Готово
Создание дерева зависимостей... Готово
Чтение состояния информации... Готово
0 обновлено, 0 новыми установленными, 1 переустановленным, 0 к удалению и 156 не обновлено.
1 не полностью установлен или удален.
После этой операции будет использовано 0 Б дополнительного дискового пространства.
E: Внутренняя ошибка, нет имени файла для python3:amd64

Команда whereis python3 вернула python3: /usr/lib/python3 /etc/python3 /usr/share/python3. Команды sudo dpkg --configure -a, sudo apt autoremove и sudo apt-get install -f вернули подобную ошибку, как sudo apt-get upgrade, показанную выше.

Команда sudo apt remove python3 вернула:

Чтение списков пакетов... Готово
Создание дерева зависимостей... Готово
Чтение состояния информации... Готово
Следующий пакет был автоматически установлен и больше не требуется:
  libpython3-stdlib
Используйте 'sudo apt autoremove' чтобы удалить его.
Следующие пакеты будут УДАЛЕНЫ:
  python3
0 обновлено, 0 новыми установленными, 1 к удалению и 156 не обновлено.
1 не полностью установлен или удален.
После этой операции будет освобождено 84.0 кБ дискового пространства.
Вы хотите продолжить? [Y/n] Y
dpkg: предупреждение: файл списка файлов для пакета 'python3.12-minimal' отсутствует; предполагается, что пакет не имеет файлов, установленных в данный момент
dpkg: предупреждение: файл списка файлов для пакета 'python3.12' отсутствует; предполагается, что пакет не имеет файлов, установленных в данный момент
dpkg: предупреждение: файл списка файлов для пакета 'python3-minimal' отсутствует; предполагается, что пакет не имеет файлов, установленных в данный момент
(Чтение базы данных ... 35623 файлов и каталогов в настоящее время установлены.)
Удаление python3 (3.12.3-0ubuntu1) ...
/var/lib/dpkg/info/python3.prerm: 5: py3clean: не найден
dpkg: ошибка при обработке пакета python3 (--remove):
 установленный пакет python3 скрипт предудаления вернул код завершения ошибки 127
dpkg: слишком много ошибок, остановка
/var/lib/dpkg/info/python3.postinst: 47: py3compile: не найден
dpkg: ошибка при очистке:
 установленный пакет python3 скрипт пост-установки вернул код завершения ошибки 127
При обработке возникли ошибки:
 python3
Обработка была остановлена из-за слишком большого количества ошибок.
needrestart пропускается, так как dpkg завершился с ошибкой
E: Подпроцесс /usr/bin/dpkg вернул код ошибки (1)

Вопрос 1: как я могу это исправить без переустановки ubuntu?

Вопрос 2: Если необходимо переустановить ubuntu? Как я могу сохранить данные в данной среде WSL2?

Обновление 1

Результаты sudo apt list ...

python3-minimal/noble,now 3.12.3-0ubuntu1 amd64 [установлен, автоматически]
python3.12-minimal/noble,now 3.12.3-1 amd64 [установлен, автоматически]

Результат file $(which apt)

/usr/bin/apt: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=8c9aa55bd74c35500c2014ff0674dd5eb481b82b, для GNU/Linux 3.2.0, очищен

А python3[.12] возвращает команда не найдена

Обновление 2

Команда sudo apt install --reinstall python3-minimal python3.12-minimal возвращает

dpkg: предупреждение: файл списка файлов для пакета 'python3.12-minimal' отсутствует; предполагается, что пакет не имеет файлов, установленных в данный момент
dpkg: предупреждение: файл списка файлов для пакета 'python3.12' отсутствует; предполагается, что пакет не имеет файлов, установленных в данный момент
dpkg: предупреждение: файл списка файлов для пакета 'python3-minimal' отсутствует; предполагается, что пакет не имеет файлов, установленных в данный момент
(Чтение базы данных ... 35623 файлов и каталогов в настоящее время установлены.)
Подготовка к распаковке .../python3.12-minimal_3.12.3-1_amd64.deb ...
Распаковка python3.12-minimal (3.12.3-1) поверх (3.12.3-1) ...
Настройка python3.12-minimal (3.12.3-1) ...
# Пустой sitecustomize.py чтобы избежать висячей символической ссылки
Не удалось найти платформонезависимые библиотеки <prefix>
Конфигурация пути Python:
  PYTHONHOME = (не установлено)
  PYTHONPATH = (не установлено)
  имя программы="/usr/bin/python3.12"
  изолировано = 0
  окружение = 0
  пользовательский сайт = 1
  безопасный путь = 0
  импорт сайта = 0
  в дереве сборки = 0
  stdlib dir="/usr/lib/python3.12"
  sys._base_executable="/usr/bin/python3.12"
  sys.base_prefix = '/usr'
  sys.base_exec_prefix = '/usr'
  sys.platlibdir="lib"
  sys.executable="/usr/bin/python3.12"
  sys.prefix = '/usr'
  sys.exec_prefix = '/usr'
  sys.path = [
    '/usr/lib/python312.zip',
    '/usr/lib/python3.12',
    '/usr/lib/python3.12/lib-dynload',
  ]
Серьезная ошибка Python: init_fs_encoding: не удалось получить Python кодек кодировки файловой системы
Состояние времени выполнения Python: ядро инициализировано
ModuleNotFoundError: Нет модуля с названием 'encodings'

Текущий поток 0x00007fe6d634e080 (последний вызов сначала):
  <нет рамки Python>
dpkg: ошибка при обработке пакета python3.12-minimal (--configure):
 установленный пакет python3.12-minimal скрипт пост-установки вернул код завершения ошибки 1
При обработке возникли ошибки:
 python3.12-minimal
needrestart пропускается, так как dpkg завершился с ошибкой
E: Подпроцесс /usr/bin/dpkg вернул код ошибки (1)

‘Решение’

Я попробовал все, что мог найти, чтобы исправить это, но ничего не сработало. В конце концов, я переустановил весь wls-ubuntu.

У вас отсутствуют критически важные файлы.

Эти файлы в Ubuntu 24.04 предоставляются пакетами python3.12-minimal и python3-minimal

Чтобы спасти вашу систему, вам необходимо переустановить эти пакеты. Обычно вы можете использовать apt или dpkg для переустановки.

Если вы не можете переустановить эти пакеты, ваша система не подлежит восстановлению. Сохраните ваши данные, а затем переустановите Ubuntu.

Ответ или решение

Проблема, которую вы описали, связана с конфигурацией пакетов Python в вашей системе Ubuntu 24.04. Судя по выводам команд и сообщениям об ошибках, ваша система потеряла некоторые критически важные файлы и конфигурацию, что мешает установке и работе Python. Давайте попробуем решить проблему поэтапно.

Шаг 1: Восстановление файлов пачек

Для начала необходимо попытаться восстановить недостающие файлы пакетов python3, python3.12 и python3-minimal. Выполните следующие команды:

  1. Используйте dpkg для прямой установки пакетов:

    sudo dpkg --remove --force-remove-reinstreq python3 python3.12 python3-minimal python3.12-minimal

    Эта команда удаляет проблемные пакеты, даже если они не настроены должным образом.

  2. Затем переустановите их:

    sudo apt-get update
    sudo apt-get install python3 python3.12 python3-minimal python3.12-minimal

Шаг 2: Попытка исправить проблемы с dpkg

Если шаг 1 не помог, попробуйте следующие команды:

  • Запустите команду для исправления недостающих зависимостей:

    sudo apt-get install -f
  • Также можно попробовать восстановить состояние базы данных пакетов:

    sudo dpkg --configure -a

Шаг 3: Восстановление системы

Если вышеуказанные шаги не приводят к успеху, следуйте данным рекомендациям:

  • Создание резервной копии данных:

    1. Поскольку вы работаете в WSL2, ваши данные хранятся на файловой системе Windows, поэтому убедитесь, что у вас есть доступ к необходимым данным. Вы можете копировать файлы из WSL в файловую систему Windows.
  • Переустановка Ubuntu:

    Если ничего не помогает, то, к сожалению, придется переустанавливать Ubuntu. Для этого:

    1. Сохраните все необходимые данные на внешнем носителе или в облачном хранилище.
    2. Переустановите образ Ubuntu 24.04 в WSL2.
    3. Восстановите свои данные из резервной копии.

Шаг 4: Установка Python

После переустановки Ubuntu выполните команды для установки Python, чтобы избежать подобных проблем:

sudo apt-get update
sudo apt-get install python3

Примечание

При работе с WSL2 важно следить за системными обновлениями и корректной установкой пакетов. Все команды, связанные с пакетами, следует выполнять с печатью ошибок, чтобы избежать ситуаций, когда система перестает работать должным образом.

Если у вас остались вопросы или возникли новые проблемы, не стесняйтесь обращаться за помощью.

Оцените материал
Добавить комментарий

Капча загружается...