LINUX.ORG.RU
ФорумTalks

Че, dpkg до сих пор болеет?

 , ,


0

1

В очередной раз после ребута заглючила Малина. На этот раз что-то с Питоном, который нужен для моих задач.

Что ни пробовал, получаю одну и ту же хрень:

root@pi:/# apt purge python3
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libmpdec2 libpython3-stdlib libpython3.7-minimal libpython3.7-stdlib python-pip-whl python3-minimal python3.7 python3.7-minimal
Use 'apt autoremove' to remove them.
The following packages will be REMOVED:
  dh-python* python3* python3-distutils* python3-lib2to3* python3-pip* python3-pkg-resources* python3-setuptools*
0 upgraded, 0 newly installed, 7 to remove and 37 not upgraded.
9 not fully installed or removed.
After this operation, 4,346 kB disk space will be freed.
Do you want to continue? [Y/n] y
Segmentation fault
(Reading database ... 30574 files and directories currently installed.)
Removing dh-python (3.20190308) ...
Fatal Python error: initfsencoding: Unable to get the locale encoding
ModuleNotFoundError: No module named 'encodings'

Current thread 0x76f64ad0 (most recent call first):
Aborted
dpkg: error processing package dh-python (--remove):
 installed dh-python package pre-removal script subprocess returned error exit status 134
Fatal Python error: initfsencoding: Unable to get the locale encoding
ModuleNotFoundError: No module named 'encodings'

Current thread 0x76f6aad0 (most recent call first):
Aborted
dpkg: error while cleaning up:
 installed dh-python package post-installation script subprocess returned error exit status 134
Removing python3-pip (18.1-5+rpt1) ...
Fatal Python error: initfsencoding: Unable to get the locale encoding
ModuleNotFoundError: No module named 'encodings'

Current thread 0x76fcaad0 (most recent call first):
Aborted
dpkg: error processing package python3-pip (--remove):
 installed python3-pip package pre-removal script subprocess returned error exit status 134
Removing python3-setuptools (40.8.0-1) ...
Fatal Python error: initfsencoding: Unable to get the locale encoding
ModuleNotFoundError: No module named 'encodings'

Current thread 0x76fdfad0 (most recent call first):
Aborted
dpkg: error processing package python3-setuptools (--remove):
 installed python3-setuptools package pre-removal script subprocess returned error exit status 134
dpkg: python3-distutils: dependency problems, but removing anyway as you requested:
 python3-setuptools depends on python3-distutils; however:
  Package python3-distutils is to be removed.
 python3-pip depends on python3-distutils.
 dh-python depends on python3-distutils | python3 (<< 3.6.5~rc1-1); however:
  Package python3-distutils is to be removed.
  Version of python3 on system is 3.7.3-1.

Removing python3-distutils (3.7.3-1) ...
Removing python3-lib2to3 (3.7.3-1) ...
dpkg: python3-pkg-resources: dependency problems, but removing anyway as you requested:
 python3-setuptools depends on python3-pkg-resources (= 40.8.0-1).

Removing python3-pkg-resources (40.8.0-1) ...
Fatal Python error: initfsencoding: Unable to get the locale encoding
ModuleNotFoundError: No module named 'encodings'

Current thread 0x76f03ad0 (most recent call first):
Aborted
dpkg: error processing package python3-pkg-resources (--remove):
 installed python3-pkg-resources package pre-removal script subprocess returned error exit status 134
dpkg: python3: dependency problems, but removing anyway as you requested:
 python3-setuptools depends on python3:any; however:
  Package python3 is to be removed.
 python3-pkg-resources depends on python3:any.
 python3-pip depends on python3:any; however:
  Package python3 is to be removed.
 dh-python depends on python3:any.
 dh-python depends on python3-distutils | python3 (<< 3.6.5~rc1-1); however:
  Package python3-distutils is not installed.
  Package python3 is to be removed.
 dh-python depends on python3:any.
 dh-python depends on python3-distutils | python3 (<< 3.6.5~rc1-1); however:
  Package python3-distutils is not installed.
  Package python3 is to be removed.

Removing python3 (3.7.3-1) ...
Fatal Python error: initfsencoding: Unable to get the locale encoding
ModuleNotFoundError: No module named 'encodings'

Current thread 0x76f92ad0 (most recent call first):
Aborted
dpkg: error processing package python3 (--remove):
 installed python3 package pre-removal script subprocess returned error exit status 134
Errors were encountered while processing:
 dh-python
 python3-pip
 python3-setuptools
 python3-pkg-resources
 python3
E: Sub-process /usr/bin/dpkg returned an error code (1)
root@pi:/# 

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

Пост - не о том, что мне делать. Разбираться влом, завтра просто накачу образ с нуля. Пост - удивление тому, что Дебиан до сих пор болеет детскими болезнями класса «не могу удалить глючную программу потому что она глючит».

★★★★★

Последнее исправление: windows10 (всего исправлений: 1)

Да насрать мне что у меня с Питоном

Использовать в этом случае что-то сложнее apt-get, который тольо попу не подтирает пользователю, который поломал зависимости, тогда странно

# rm /var/lib/dpkg/info/python3.*
# dpkg --configure -a

anonymous_sapiens ★★★★★
()
Последнее исправление: anonymous_sapiens (всего исправлений: 3)
Ответ на: комментарий от anonymous_sapiens

Я разве писал за apt? Он тут ни при чем. И да,

root@pi:/# rm /var/lib/dpkg/info/python3.*
root@pi:/# dpkg --configure -a
dpkg: dependency problems prevent configuration of dh-python:
 dh-python depends on python3-distutils | python3 (<< 3.6.5~rc1-1); however:
  Package python3-distutils is not installed.
  Version of python3 on system is 3.7.3-1.

dpkg: error processing package dh-python (--configure):
 dependency problems - leaving unconfigured
Setting up mime-support (3.62) ...
Segmentation fault
dpkg: error processing package mime-support (--configure):
 installed mime-support package post-installation script subprocess returned error exit status 139
dpkg: dependency problems prevent configuration of python3-setuptools:
 python3-setuptools depends on python3-distutils; however:
  Package python3-distutils is not installed.

dpkg: error processing package python3-setuptools (--configure):
 dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of python3-pip:
 python3-pip depends on python3-distutils; however:
  Package python3-distutils is not installed.

dpkg: error processing package python3-pip (--configure):
 dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of python3.7:
 python3.7 depends on mime-support; however:
  Package mime-support is not configured yet.

dpkg: error processing package python3.7 (--configure):
 dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of python3:
 python3 depends on python3.7 (>= 3.7.3-1~); however:
  Package python3.7 is not configured yet.

dpkg: error processing package python3 (--configure):
 dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of python3-pkg-resources:
 python3-pkg-resources depends on python3:any; however:
  Package python3 is not configured yet.

dpkg: error processing package python3-pkg-resources (--configure):
 dependency problems - leaving unconfigured
Errors were encountered while processing:
 dh-python
 mime-support
 python3-setuptools
 python3-pip
 python3.7
 python3
 python3-pkg-resources
root@pi:/# 

Это обычный дроч там, где его не должно быть.

windows10 ★★★★★
() автор топика

Да насрать мне что у меня

В этом и есть твоя проблема. Не ограничиваясь питоном

Я просто хочу его удалить используя стандартный пакетный менеджер операционной системы

Вызывать питон чтобы удалить питон могут додуматься только дебилыановцы

Стандартный пакетный менеджер операционной системы, кстати, написан на … python. Я вот не уверен, какая именно версия питона в raspberry pi является системной - 2 или 3. Но удалять не разобравшись - отличная идея, да ;)

Разбираться влом, завтра просто накачу образ с нуля

windows way, он никогда не меняется

Завтра вообще окажется, что у тебя флешка в малине дохнет

Ну и как уже сказали, в dpkg можно тупо удалить prerm script проблемного пакета

router ★★★★★
()
Последнее исправление: router (всего исправлений: 2)
Ответ на: комментарий от anonymous_sapiens

rm /var/lib/dpkg/info/python3.*

Вот это опасно, ИМХО. Я бы в конкретный скрипт (например, prerm) добавил в начало exit 0

router ★★★★★
()
Ответ на: комментарий от router

Стандартный пакетный менеджер операционной системы, кстати, написан на … python.

Нет. Си и немного перла.

Из дебиана питон вполне себе удачно выпиливается обычно. Интереса ради я держал вполне рабочий сервер с почтой, биндом и файлопомойкой совершенно без питона. Единственный пакет, который пришлось ставить в /usr/local/bin/ в обход dpkg - iotop, написанный на сях, найденный на гитхабе(тот.ю что в репах - на питоне).

shell-script ★★★★★
()

Васшета ты не можеш удалить пайтон из системы, его малый кусок в любом случае останется. Обусловленно оно тем фактом что часть критических системных компонентов написаны на пайтон3. Точнее технически можешь, но тогда пол-системы по депсам снесет...

Jetty ★★★★★
()
Последнее исправление: Jetty (всего исправлений: 1)
Ответ на: комментарий от router

Завтра вообще окажется, что у тебя флешка в малине дохнет

Тоже про это подумал

zgen ★★★★★
()

накачу образ с нуля

windows10 ★★★

Всё правильно. И перезагрузись два раза. Как завещал Билли.

ox55ff ★★★★★
()
Ответ на: комментарий от Jetty

Васшета ты не можеш удалить пайтон из системы

Ты лог-то прочитал ? Проблема не в том, что я не могу удалить пайтон из системы, а в том что при удалении пайтон запускает пайтон.

windows10 ★★★★★
() автор топика
Ответ на: комментарий от router

Завтра вообще окажется, что у тебя флешка в малине дохнет

Допустим. Только каким боком это к удалению программы, которая не удаляется, потому что пытается запуститься ?

Вопрос не к программе, и не к причине почему она перестала запускаться, а к ТУПОМУ МЕНЕДЖЕРУ, который в нормальных ОС (и дистрах) удаляет программу своими средствами, а не средствами этой программы.

Если ты не понял в чем суть, то вот краткий пересказ дебиановского бреда:

пакетный_менеджер install programname

echo "number1=вася" > /etc/programname.conf

пакетный_менеджер remove programname

пакетный_менеджер: error removing programname, string instead numeric in conf file.

Вот так это примерно выглядит в моем случае, и отсюда логичный вопрос: какое дело пакетный_менеджер че там в конфиге programname ?

Стандартный пакетный менеджер операционной системы, кстати, написан на … python

Во-первых, пофигу на чем он написан. Во-вторых, удаляю я третьепитон. В-третьих, если я удаляю зависимость - пакетный менеджер предлагает мне удалить пол-системы. Или dpkg и это ниасилил ?

windows way, он никогда не меняется

Зато эффективно.

Ну и как уже сказали, в dpkg можно тупо удалить prerm script проблемного пакета

Возможно. Но мне надо думать над идеей, а не задрачиваться на ключи каждой программы. От пакетного менеджера требуется две задачи: устанавливать и удалять. Если же мне понадобится дроч с флагами, я поставлю генту.

windows10 ★★★★★
() автор топика
Ответ на: комментарий от windows10

ИМХО у тебя в /usr/local/lib/python* косой мудуль затесался который крешится. Ну и надо смотреть, т.к. если запускается pre-remove скрипт, то оно вполне нормально и ничего ненормального в таком нет.

Jetty ★★★★★
()
Ответ на: комментарий от Jetty

Ну это понятно, что модуль который крашится.

Не понятно, почему это влияет на пакетный менеджер. Только что сэмитировал подобное на Арче на десктопе. Нормально удалилось, несмотря на то что ручками написал белиберду в код.

Мне всегда казалось что задача пакетного менеджера условно говоря пробежаться rm -rf /path/to/program, ну и че нибудь типа sed ‘/programname/d’ programdatabase.db. Бредовато звучит, что я не могу удалить неработающую программу, а вместо этого приходится разбираться почему она не работает, и заставлять ее работать чтобы удалить :)

windows10 ★★★★★
() автор топика
Ответ на: комментарий от windows10

Есть такое понятие как pre и post скрипты, если ты удалишь пакет у которого эти шаги удаления сломаны то очевидно оставишь систему в не консистентном состоянии, о чём тебе пакетный менеджер и пишет.

Eshkin_kot ★★
()
Ответ на: комментарий от InterVi

для малины арч есть

В котором, a) нет пакета python-smbus; b) сегфолтится gcc:

[alarm@alarmpi yay-git]$ ls -l
total 16
-rwxrwxrwx 1 root  root  1159 Oct  5 17:43 PKGBUILD
d--x--x--x 2 alarm alarm 4096 Oct  5 17:43 pkg
drwxr-xr-x 4 alarm alarm 4096 Oct  5 17:43 src
drwxr-xr-x 7 alarm alarm 4096 Oct  5 17:43 yay
[alarm@alarmpi yay-git]$ makepkg -si
==> Making package: yay-git 11.0.0.rc1.r1.g1a0cfd8-1 (Tue Oct  5 17:54:44 2021)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Retrieving sources...
  -> Updating yay git repo...
Fetching origin
==> Validating source files with sha256sums...
    yay ... Skipped
==> Extracting sources...
  -> Creating working copy of yay git repo...
Reset branch 'makepkg'
==> Starting pkgver()...
==> Removing existing $pkgdir/ directory...
==> Starting build()...
go build -trimpath -mod=readonly -modcacherw -ldflags '-X "main.yayVersion=11.0.0.rc1.r1.g1a0cfd8" -X "main.localePath=/usr/share/locale/" -linkmode=external' -buildmode=pie -o yay
# runtime/cgo
gcc: internal compiler error: Segmentation fault signal terminated program cc1
Please submit a full bug report,
with preprocessed source if appropriate.
See <https://github.com/archlinuxarm/PKGBUILDs/issues> for instructions.
make: *** [Makefile:111: yay] Error 2
==> ERROR: A failure occurred in build().
    Aborting...
[alarm@alarmpi yay-git]$ 

1. Образ установленный по рачвики;

2. Сегфолтится на сборке ЛЮБОГО пакета;

3. Этот же самый пакет собирается норм на соседнем x86_64.

Ты сам-то пробовал то, что советуешь ?

windows10 ★★★★★
() автор топика
Последнее исправление: windows10 (всего исправлений: 1)
Ответ на: комментарий от windows10

Проблема в том что dpkg НИЧЕГО не ставит в /usr/local
По дебостандартам префикс всегда /usr (но не /usr/local)
А вот когда «специалисты» вместо того что бы поставить пакет (какой нить python3-feature) ставят его от рута через pip(ну скопипастил же команду бездумно из гайда в нете), то такой пакет как раз попадает в /usr/local, и в большинстве случаев он и используется, но не всегда :) Вот тут-то вот и начинаются веселухи.

Jetty ★★★★★
()
Ответ на: комментарий от Jetty

Буду проще.

apt install python3
echo "sfgsdklfjsd" > /usr/bin/python3
apt remove python3

Через pip ничего не ставилось, префикс стандартный, python3 не удаляется.

Веселуха в том, что пакетному менеджеру должно быть плевать, как себя ведет программа которую он удаляет.

windows10 ★★★★★
() автор топика
Ответ на: комментарий от windows10

Веселуха в том, что пакетному менеджеру должно быть плевать, как себя ведет программа которую он удаляет.

Ну ет твоя хотелка. А жисть она другая, и в ней существуют хуки. И хуки имеют свойство выполнятся в соответствующих моментах, в даном случае pre-removal. А то что он сфелился судя из лога результат того что консистентность системы была искуственно нарушена (соответствующий пакет грохнули напрямую через dpkg с игнорированием rdepends или наоборот, установлен без необходимых)

https://wiki.debian.org/Teams/Dpkg/FAQ#Q:_Can_dpkg_be_told_to_avoid_invoking_...

Jetty ★★★★★
()
Последнее исправление: Jetty (всего исправлений: 1)
Ответ на: комментарий от InterVi

у меня работало и yay собрался

  • Сисадмин, вы же не попали ни разу в мишень!

  • Не знаю товарищ подполковник, с моего автомата все пули вылетели, проблема на стороне мишени.

windows10 ★★★★★
() автор топика
Ответ на: комментарий от windows10

просто у тебя админская мана не прокачена до 80 левла, так бы посмотрел сурово - и малина сама всё сделала

InterVi ★★★★★
()
Ответ на: комментарий от windows10

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

Не совсем понял вашу мысль. Ну запускает, что такого? Или он в процессе работы какие-то либы пытается подгрузить которые уже удалены?

anc ★★★★★
()
Ответ на: комментарий от anc

Не совсем понял вашу мысль. Ну запускает, что такого? Или он в процессе работы какие-то либы пытается подгрузить которые уже удалены?

Устал объяснять.

пакетный_менеджер install programname

echo "number1=вася" > /etc/programname.conf

пакетный_менеджер remove programname

пакетный_менеджер: error removing programname, string instead numeric in conf file.

Мне просто интересно, почему дебианщики считают нормальным, что средствами операционной системы невозможно удалить глючную программу. Ну потому что для других дистров, да и для оффтопика это кагбе не совсем нормально.

windows10 ★★★★★
() автор топика
Ответ на: комментарий от anc

Всё равно не понял какое отношение это имеет к пистону.

А, тут все просто.

Debian. Поставил пистон3 для кое-какого проекта с использованием ADC на i2c. Потом в этом пистоне3 шото заглючило, при попытке вызвать ЛЮБОЙ пистоновский файл - оно сегфолтилось. Пофиг по какой причине, важно что все другое, включая скрипты на ненавистном пыхе - работает. Ну думаю ладно, быстрее всего будет его переустановить.

Но нет, не удаляется.

А не удаляется, потому что сраный dpkg, удаляя питон, зачем-то его вызывает, но поскольку он сегфолтится с вскукареком «Fatal Python error: initfsencoding: Unable to get the locale encoding» - то dpkg его не удаляет. Вот меня это и удивило, потому что ситуация что какая-то установленная программа не работает - вполне штатная. Странно вообще запускать удаляемую программу для ее удаления, но даже хрен с ним, если запустил - то нафига ж останавливать удаление программы, если программа вылетела с ошибкой.

С этой фигней (ну почти с этой) я сталкивался еще 10 лет назад, думал с тех пор починили. Но нет, дебиан же стабильный, гы. Сымитировал эту ситуацию на Арче - pacman все нормально удалил.

windows10 ★★★★★
() автор топика

Я этих легенд про выпиливание Python'а и Perl'а ещё в середине 2000-х наслушался, но уже тогда, по факту, было нельзя. Много софта так или иначе юзает Python и Perl и выпиливание их из системы ни к чему хорошему не приводит. Про это надо забыть.

Да и чем может помешать Python? Места на диске жалко? Может быть, тогда пришло время его проапгрейдить?

saahriktu ★★★★★
()
Ответ на: комментарий от windows10

А, понял. Спасибо за пояснение. Вот бы не подумал что они в dpkg его завезли. Очень-очень странное решение. Там и кода-то не мульон и маленькая тележка, зачем пистон тянуть было? Или индусоэффект?
Я подозревал за apt, aptitude.

anc ★★★★★
()
Ответ на: комментарий от saahriktu

Много софта так или иначе юзает Python и Perl и выпиливание их из системы

Нет. Речь о третьем питоне. Его я установил сам. Больше в системе ничего его не использовало, десктопы я не ставил.

Да и чем может помешать Python?

Поставил пистон3 для кое-какого проекта с использованием ADC на i2c

Может быть, тогда пришло время его проапгрейдить?

О чем и пост. Если ты поставил питон3, и поломал один из его модулей - ты не можешь ни снести его ни переустановить. Стандартными средствами.

Пост не о том, «как починить питон3», или «как исправить ситуацию», а о том что dpkg не умеет удалять питон3, если сам питон3 сегфолтится.

windows10 ★★★★★
() автор топика
Ответ на: комментарий от anc

А, понял. Спасибо за пояснение. Вот бы не подумал что они в dpkg его завезли. Очень-очень странное решение. Там и кода-то не мульон и маленькая тележка, зачем пистон тянуть было? Или индусоэффект? Я подозревал за apt, aptitude.

Не. Питон3 - это отдельная программа, которую я поставил обычным apt install python3 python3-pip python3-smbus etc. Но apt вроде только скачивает и зависимости разруливает, а ставит dpkg. Соответственно когда делаешь apt remove python3 - тоже вызывается dpkg. Этот сраный dpkg вызывает какой-то хук или пре-remove скрипт, и если скрипт вылетает - то вылетает ВЕСЬ ПРОЦЕСС УДАЛЕНИЯ, что разумеется есть идиотизм, ведь мало ли по какой причине у меня перестала запускаться софтина. Может ОЗУ ей мало, или я прибил конфиг и не сделал бэкап. Туповато. Но я думал что за десятилетие эту багу пофиксили.

windows10 ★★★★★
() автор топика
Ответ на: комментарий от windows10

Аааа. А никакие ключики точно не помогают?

anc ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.