Bug 44923 - версия 3.28.1-alt1 ломает перепаковку deb-пакета, использующего python2
Summary: версия 3.28.1-alt1 ломает перепаковку deb-пакета, использующего python2
Status: CLOSED WONTFIX
Alias: None
Product: Branch p10
Classification: Unclassified
Component: eepm (show other bugs)
Version: не указана
Hardware: x86_64 Linux
: P5 normal
Assignee: Vitaly Lipatov
QA Contact: qa-p10@altlinux.org
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2023-01-14 22:47 MSK by Nikolay Strelkov
Modified: 2023-01-28 12:21 MSK (History)
3 users (show)

See Also:


Attachments
логи и списки установленных пакетов (31.92 KB, application/gzip)
2023-01-14 22:47 MSK, Nikolay Strelkov
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Nikolay Strelkov 2023-01-14 22:47:44 MSK
Created attachment 12295 [details]
логи и списки установленных пакетов

Шаги для повторения от root:

```
apt-get install -y dpkg rpm-build-python3 rpm-build-python libnumpy python python-module-numpy python-module-pycairo python-module-pygobject python-module-pygtk python-modules python-modules-bsddb python-modules-compiler python-modules-ctypes python-modules-curses python-modules-email python-modules-encodings python-modules-hotshot python-modules-logging python-modules-multiprocessing python-modules-unittest python-modules-xml python-strict
cd /tmp
wget -c http://old-releases.ubuntu.com/ubuntu/pool/universe/m/meld/meld_1.5.3-1ubuntu1_all.deb
rm -rvf /tmp/meld-tmp
dpkg-deb -R meld_1.5.3-1ubuntu1_all.deb meld-tmp
sed -i "s|/usr/bin/python$|/usr/bin/python2|" meld-tmp/usr/bin/meld
dpkg-deb -b meld-tmp meld_1.5.3-1ubuntu1py2_all.deb

epm install -y --repack --verbose meld_1.5.3-1ubuntu1py2_all.deb
```

Ожидаемый результат - успешная перепаковка и установка старого deb-пакета, использующего Python 2.
Полученный результат - ошибка перепаковки, пакет не установлен.

Использую систему, установленную из alt-p10-mate-20221204-x86_64.iso. Помню, что в прошлом году процесс работал.
Путем бисекции по датам, следуя https://www.altlinux.org/Downgrade выяснил, что проблема появилась именно сегодня (2023/01/14). 
Прошлая версия 3.19.4-alt1 проблеме не подвержена.
Смотрите логи и списки установленных пакетов в архиве.
Comment 1 Vitaly Lipatov 2023-01-15 03:28:12 MSK
А зачем нужно ставить пакет meld из Ubuntu?
Тем более содержащий python2, который давно не поддерживается?
Comment 2 Nikolay Strelkov 2023-01-15 10:52:23 MSK
>А зачем нужно ставить пакет meld из Ubuntu?
>Тем более содержащий python2, который давно не поддерживается?

Мне нужна именно эта версия из-за https://askubuntu.com/a/965151/66509.

Пожалуйста, почините перепаковку. Раньше работало. Готов помочь с тестированием.
Comment 3 Vitaly Lipatov 2023-01-15 18:23:19 MSK
(Ответ для Norbert X на комментарий #2)
> >А зачем нужно ставить пакет meld из Ubuntu?
> >Тем более содержащий python2, который давно не поддерживается?
> 
> Мне нужна именно эта версия из-за https://askubuntu.com/a/965151/66509.
Но может быть вам тогда стоит ставить старую версию, которая была собрана для ALT?
https://www.altlinux.org/Архив_Сизифа
 
> Пожалуйста, почините перепаковку. Раньше работало. Готов помочь с
> тестированием.
Не знаю, насколько это возможно. С тем же успехом вы можете взять старый epm и им перепаковать командой epm repack. Получившийся пакет сохранить.
Comment 4 Nikolay Strelkov 2023-01-15 22:19:08 MSK
Локально для себя я проблему решил патчингом старого пакета из ветки https://git.altlinux.org/srpms/m/meld.git?p=meld.git;a=tag;h=refs/tags/1.5.3-alt1 с явным указанием python2 в шебанге и минимальными правками спека. 
Не хочу снижать или замораживать версию eepm в своей системе.

---

Провел бисекцию по коду eepm и получил такой результат - проблема первый раз появилась в версии 3.22.0-alt1 . 
Подозреваю вот этот коммит -  https://github.com/Etersoft/eepm/commit/4437824cc09c3132c5f781f5bce6792b7f54e006 . 
Локальная подмена содержимого файла /etc/eepm/repack.d/generic.sh из 3.21.8-alt1 решает проблему, т.е. после выполнения

```
# wget https://raw.githubusercontent.com/Etersoft/eepm/43a930297f3155f965f2087fbf49872372792541/repack.d/generic.sh -O /etc/eepm/repack.d/generic.sh
```

команды из первого сообщения в этом баге завершаются успешно для версии eepm 3.28.1-alt1 в p10.


Конечно, я понимаю, что Python2 сейчас стал устаревшим. 
Но много пакетов для него по-прежнему есть в репозитории ALT, поэтому мне все же кажется логичным поддержка обеих версий Python - 2 и 3 в eepm.
Поправьте, пожалуйста, скрипт перепаковки.
Comment 5 Vitaly Lipatov 2023-01-28 02:58:57 MSK
(Ответ для Norbert X на комментарий #4)
> Локально для себя я проблему решил патчингом старого пакета из ветки
...
Я не очень понимаю, зачем откатываться к версии 10-летней давности. Заведена ли issue по вашей проблема на 
https://gitlab.gnome.org/GNOME/meld/-/issues
?

...
> Но много пакетов для него по-прежнему есть в репозитории ALT, поэтому мне
Нет, пакетов для python2 ничтожное количество осталось в репозитории.

Вот таким скриптом померил количество пакетов python2
$ epms python-module | grep ^python | wc -l

На p9 — 4396
На p10 — 854
На Сизифе — 133

Напротив, по python3:
На p9 — 3317
На p10 — 3875
На Сизифе — 3748


> все же кажется логичным поддержка обеих версий Python - 2 и 3 в eepm.
> Поправьте, пожалуйста, скрипт перепаковки.
Дело в том, что определить, какой python нужен, очень непросто. У меня идей нет. Делать что-то для установки старых пакетов, которые скорее всего не будут работать...

Изменение, на которое вы ссылаетесь, однозначной поддержки только python3 не имеет.
https://github.com/Etersoft/eepm/commit/4437824cc09c3132c5f781f5bce6792b7f54e006
Comment 6 Nikolay Strelkov 2023-01-28 12:21:42 MSK
>Дело в том, что определить, какой python нужен, очень непросто. У меня идей нет. Делать что-то для установки старых пакетов, которые скорее всего не будут работать...
>
>Изменение, на которое вы ссылаетесь, однозначной поддержки только python3 не имеет.
https://github.com/Etersoft/eepm/commit/4437824cc09c3132c5f781f5bce6792b7f54e006

Вы команду wget https://raw.githubusercontent.com/Etersoft/eepm/43a930297f3155f965f2087fbf49872372792541/repack.d/generic.sh -O /etc/eepm/repack.d/generic.sh пробовали исполнять?
И далее команды из первого комментария?

На мой взгляд есть регрессия.
И не сильно важно что перепаковывается - Meld или другая полезная программа.
Сейчас получается, что epm актуальной версии нельзя использовать в скриптах из-за его непредсказуемости. 
Раньше в моем скрипте для пост-настройки ALT (https://github.com/N0rbert/alpis) после замены шебанга с python на python2 мне было достаточно выполнить одну команду (см. строку 437 "epm install -y --repack meld_1.5.3-1ubuntu1py2_all.deb", а с нововведением - существенно больше и без использования epm - см. https://github.com/N0rbert/alpis/commit/46752ad92f363cde8ab4d6e99fed1c15d81fc359 если интересно). 

Также хотелось бы прочитать все-таки комментарий Георгия Курячего, как я понимаю, внесшего обсуждаемую правку в generic.sh. 
Может быть можно сохранить универсальность скрипта перепаковки, сохранив поддержку одновременно python2 и python3. 
А также, наверное, в eepm следует добавить тесты для проверки регрессий при перепаковке различных пакетов, включая написанные на python.