LINUX.ORG.RU

Gentoo: Как нормально настроить PYTHON_TARGETS и PYTHON_SINGLE_TARGET?

 


0

2

Привет

Имеется:

  1. Установленные dev-lang/python-3.11.9::gentoo и dev-lang/python-3.12.3-r1::gentoo
  2. eselect python list показывающий python3.11 и python3.12
  3. emerge --info показывающий PYTHON_TARGETS="python3_12" и PYTHON_SINGLE_TARGET="python3_12"
  4. Пакеты, последние версии которых хотят any-of ( python_targets_python3_10 python_targets_python3_11 ) (например dev-python/pysmi) или exactly-one-of ( python_single_target_python3_10 python_single_target_python3_11 ) (например app-text/pastebinit); напоминаю, что у меня везде только python3.12, а тут просят максимум python3.11 и де-факто он установлен.

Советы в интернетах рекомендуют прописать PYTHON_TARGETS и PYTHON_SINGLE_TARGET в make.conf, или эквивалентное в package.use. Но это означает, что теперь при обновлении можорной версии python мне нужно будет помнить, что нужно обновить ещё и там, а я очень не люблю ручной труд. Между тем, пока что-то автоматически обновляло мне PYTHON_TARGETS и PYTHON_SINGLE_TARGET при каждом апгрейде, просто сейчас дало сбой.

Вопросы:

  • Как сделать, чтобы PYTHON_TARGETS всегда содержало фактически установленные у меня версии python? Что-то же обновляет /etc/python-exec/python-exec.conf.
  • Как сделать, чтобы PYTHON_SINGLE_TARGET указывало на последнюю версию python (я готов удалить python3.12)? Что-то же это делало до сих пор, но почему-то удаление python 3.12 не поменяло PYTHON_SINGLE_TARGET.
  • Какие есть (если есть) более правильные способы решения данной проблемы?
★★★★★

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

Какие есть (если есть) более правильные способы решения данной проблемы?

Не лезть ручками.

Если же хочется, то прописываешь и меняешь ручками. Как пример:
https://wiki.gentoo.org/wiki/Project:Python/PYTHON_TARGETS
https://wiki.gentoo.org/wiki/Python

Ну, руками хорошо на последней сидеть, если с Монти не по наслышке знаком. На свежих версиях кроме прироста иногда отваливаются вполне работающие либы. Обычный пользователь не сильно замечает, а всякие ML(torch) насыпают какашек.

anonymous
()
Ответ на: комментарий от Shushundr

Главное ничего не трогать. Всё что нужно разработчики генты сами через профиль доставят

Соглашусь - если не умеешь не лезь.

python_targets относительно безобидно, python_single_target проблемнее. Не все софтины поддержтивают все имеющиеся версии питона. Кто-то не созраняет совместимость со старьем, кто-то наоборот не спешит в новую крутотень. И получается то залезая туда кривыми ручками просто убьешь emerge world. Если хочется быть по максимуму на свежем питоне - то придется помимо прописывания глобальных таргетов еще и вести попакетную привязку к разным питонам отдельных пакетов.

Qui-Gon ★★★★★
()

В package.use для отдельных пакетов пропиши python_targets_python3_11 или python_single_target_python3_11. Возможно нужно будет добавить эти же флаги для зависимостей. Может для нестабильной версии пакетов python3.12 добавили, как в случае с pastebin

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

Главное ничего не трогать. Всё что нужно разработчики генты сами через профиль доставят.

+ @Qui-Gon

Это всё замечательно. Только оно блокирует обновление мира.

Вобщем, вроде нашёл решение. Опишу ниже комментом.

Спасибо за ответы в любом случае.

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

В package.use для отдельных пакетов пропиши python_targets_python3_11 или python_single_target_python3_11.

Вот как раз этого я и хотел избежать.

Может для нестабильной версии пакетов python3.12 добавили, как в случае с pastebin

Да, с pastebin уже нашёл.

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

Вобщем, проблема оказалась ровно с двумя пакетами.

app-text/pastebinit взял из ~amd64, там всё хорошо.

Для dev-python/pysmi такой фокус не сработал, потому удалил (хотя можно было с package.use поколдовать по совету @grem )

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

Я обычно вручную указываю PYTHON_TARGETS и PYTHON_SINGLE_TARGET и обновляю очень редко, чтобы не разводить серпентарий. Когда установленная версия перестаёт поддерживаться - обновдяю до самой новой из тех что устраивает, то есть поддерживается всеми нужными пакетами

mittorn ★★★★★
()

Как писал выше грем для нужных тебе пакетов через package.use использовать PYTHON_SINGLE_TARGET: python3_11 он потом покажет какие пакеты нужны в добававить, и подождать когда этот пакет соизволит обновиться до питоняши 12

SPRATAY ★★
()

Поддержу, можно использовать package.use, а можно ещё package.env чтобы для отдельных пакетов выставлять другую версию Python, если главную не поддерживают. Это решает множество проблем.

Основная версия или в make.conf, или она уже в профиль по-моему переехала… в make.conf в любом случае можно переопределить глобально, если сильно хочется.

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

Но это означает, что теперь при обновлении можорной версии python мне нужно будет помнить, что нужно обновить ещё и там, а я очень не люблю ручной труд.

Не понял. Зачем? Зачем помнить? Зачем обновить? Что обновить?

Обычно это не нужно… работает, не трогай… отдельные пакеты годами могут на другой версии Python жить, и ничего. Ну будет у тебя в системе две-три или больше версий, они не конфликтуют друг с другом.

BattleCoder ★★★★★
()