Вопрос или проблема
Я недавно обновил 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
. Выполните следующие команды:
-
Используйте
dpkg
для прямой установки пакетов:sudo dpkg --remove --force-remove-reinstreq python3 python3.12 python3-minimal python3.12-minimal
Эта команда удаляет проблемные пакеты, даже если они не настроены должным образом.
-
Затем переустановите их:
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: Восстановление системы
Если вышеуказанные шаги не приводят к успеху, следуйте данным рекомендациям:
-
Создание резервной копии данных:
- Поскольку вы работаете в WSL2, ваши данные хранятся на файловой системе Windows, поэтому убедитесь, что у вас есть доступ к необходимым данным. Вы можете копировать файлы из WSL в файловую систему Windows.
-
Переустановка Ubuntu:
Если ничего не помогает, то, к сожалению, придется переустанавливать Ubuntu. Для этого:
- Сохраните все необходимые данные на внешнем носителе или в облачном хранилище.
- Переустановите образ Ubuntu 24.04 в WSL2.
- Восстановите свои данные из резервной копии.
Шаг 4: Установка Python
После переустановки Ubuntu выполните команды для установки Python, чтобы избежать подобных проблем:
sudo apt-get update
sudo apt-get install python3
Примечание
При работе с WSL2 важно следить за системными обновлениями и корректной установкой пакетов. Все команды, связанные с пакетами, следует выполнять с печатью ошибок, чтобы избежать ситуаций, когда система перестает работать должным образом.
Если у вас остались вопросы или возникли новые проблемы, не стесняйтесь обращаться за помощью.