LINUX.ORG.RU

Gentoo. Нужно выпинывать питон 2.7?

 ,


2

1

Решил тут обновить, ну почитал, что от питон 3.6 отказались, что теперь PYTHON_TARGETS="python2_7 python3_7" сделал как советовали в новости: emerge --depclean; emerge -1vUD @world. Потом решил обновить систему, получил:

WARNING: One or more updates/rebuilds have been skipped due to a dependency conflict:                                          
                                                                                                                               
dev-python/pygments:0                                                                                                          
                                                                                                                               
  (dev-python/pygments-2.6.1:0/0::gentoo, ebuild scheduled for merge) USE="-doc -test" ABI_X86="(64)" PYTHON_TARGETS="python3_7
 (-pypy3) -python3_6 (-python3_8)" conflicts with                                                                              
    dev-python/pygments[python_targets_python2_7(-),python_targets_python3_7(-),-python_single_target_pypy3(-),-python_single_t
arget_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] re
quired by (dev-python/docutils-0.16:0/0::gentoo, ebuild scheduled for merge) USE="" ABI_X86="(64)" PYTHON_TARGETS="python2_7 py
thon3_7 (-pypy3) -python3_6 (-python3_8)"

Почитал https://forums.gentoo.org/viewtopic-p-8454088.html?sid=59aadbc9bd435eabb97adc... , если правильно понял, то проблема в том, что docutils может в питон 2.7, а pygments только в 3.6 и выше. Или не правильно?

Вроде, минимум, достаточно прописать в /etc/portage/package.use/:

dev-python/docutils  PYTHON_TARGETS: -python2_7
но, можно и как-то так:
*/* PYTHON_TARGETS: -python2_7

# Exceptions:
dev-libs/libxml2        PYTHON_TARGETS: python2_7
dev-python/cython       PYTHON_TARGETS: python2_7 

Но как-то оба варианта не нравятся, до этого PYTHON_TARGETS вобще не трогал. Это потом не создаст проблемы при очередном обновлении? Во втором варианте не нравится, что нужно будет как-то отслеживать, что пакет может без 2.7 и убирать его из списка исключений.

★★★★★

Покажи выхлоп

# emerge -1av dev-python/docutils

Всё связанное с python2(кроме единственной зависимости) мне удалось обновить, но пришлось копать, как и что обновлять в первую очередь. Не всегда portage сам может адекватно оценить ситуацию.

SM5T001 ()

у меня в системе питон2 требуют только firefox и thunderbird, и то только на этапе сборки, поэтому после установки этих пакетов я успешно выпиливаю питон2 (так же как и gtk2)

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

Всё связанное с python2(кроме единственной зависимости)

Что именно не удалось обновить?

А где-то есть список, какие пакеты требуют питон 2 и какие-то прогнозы, когда они перейдут на питон 3?

Там совсем много текста выводится, начало такое:

# emerge -1av dev-python/docutils

These are the packages that would be merged, in order:

Calculating dependencies  . .. ......... done!
[ebuild     U  ] dev-python/setuptools-44.1.0::gentoo [42.0.2::gentoo] USE="-test" PYTHON_TARGETS="python2_7 python3_7* (-pypy3) -python3_6* (-python3_8)" 0 KiB
[ebuild     U  ] dev-python/certifi-2019.11.28::gentoo [2019.6.16::gentoo] PYTHON_TARGETS="python2_7 python3_7* (-pypy3) -python3_6* (-python3_8)" 0 KiB
[ebuild     U  ] dev-python/pygments-2.5.2::gentoo [2.4.2::gentoo] USE="-doc -test" PYTHON_TARGETS="python2_7 python3_7* (-pypy3) -python3_6* (-python3_8)" 0 KiB
[ebuild     U  ] dev-python/docutils-0.16::gentoo [0.14::gentoo] PYTHON_TARGETS="python2_7 python3_7* (-pypy3) -python3_6* (-python3_8)" 0 KiB

Total: 4 packages (4 upgrades), Size of downloads: 0 KiB

!!! Multiple package instances within a single package slot have been pulled
!!! into the dependency graph, resulting in a slot conflict:

dev-python/setuptools:0

  (dev-python/setuptools-44.1.0:0/0::gentoo, ebuild scheduled for merge) USE="-test" ABI_X86="(64)" PYTHON_TARGETS="python2_7 python3_7 (-pypy3) -python3_6 (-python3_8)" pulled in by
    >=dev-python/setuptools-42.0.2[python_targets_pypy3(-)?,python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_pypy3(-),-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] required by (dev-python/certifi-2019.11.28:0/0::gentoo, ebuild scheduled for merge) USE="" ABI_X86="(64)" PYTHON_TARGETS="python2_7 python3_7 (-pypy3) -python3_6 (-python3_8)"

А целиком https://pastebin.com/YmCYCtLp

Я в chroot попробовал, если для docutils запретить питон 2.7 то всё обновляется нормально.

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

emerge -1O setuptools сделай, там по дереву зависимостей иначе конфликт будет жесткий.

setuptools желательно иметь на те же версии питона, что ты планируешь оставить в системе. То есть вот например у тебя сейчас установлены 2.7, 3.6 и 3.7. Поддержку 3.6 из USE-ов setuptools надо выкинуть, но без игнорирования зависимостей тебе это не позволят сделать установленные пакеты с PYTHON_TARGETS=«python3_6».

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

Поддержку 3.6 из USE-ов setuptools надо выкинуть

В смысле нужно прописать в package.use/:

dev-python/docutils  PYTHON_TARGETS: -python2_7 -python3_6

на те же версии питона, что ты планируешь оставить в системе.

Да я бы их все снёс :) Но там же всё поломается.

Не обновлялся systemtap-4.0-r1, вывод большой, не знаю, нужно ли его куда-то постить, вроде всё хоршо шло, потом ошибка:

make[2]: Entering directory '/var/tmp/portage/dev-util/systemtap-4.0-r1/work/sy>
(cd .; CFLAGS="-I./../includes -I/var/tmp/portage/dev-util/systemtap-4.0-r1/wor>
         --build-base /var/tmp/portage/dev-util/systemtap-4.0-r1/work/systemtap>
         --verbose)
Traceback (most recent call last):
  File "setup.py", line 9, in <module>
    from setuptools import setup, Extension
ModuleNotFoundError: No module named 'setuptools'
systemtap пишет, ″Using python3.7 to build", setuptools, вроде, тоже с 3.7, во всяком случае:
# equery u setuptools
[ Legend : U - final flag setting for installation]
[        : I - package is installed with flag     ]
[ Colors : set, unset                             ]
 * Found these USE flags for dev-python/setuptools-44.1.0:
 U I
 + + python_targets_python2_7 : Build with Python 2.7
 - - python_targets_python3_6 : Build with Python 3.6
 + + python_targets_python3_7 : Build with Python 3.7
 - - test                     : Enable dependencies and/or preparations necessary to run tests (usually controlled by
                                FEATURES=test but can be toggled independently)

Я попробовал убрать 2.7 для setuptools и сделал ″emerge -1O setuptools″. Тогда у USE осталось только python_targets_python3_7, но при попытке обновить systemtap шла ругань связанная с dev-python/certifi. В общем, я прописал:

*/* PYTHON_TARGETS: -python2_7
и ещё раз пытаюсь обновить мир. Обновление пошло, что получится не знаю.

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

При чем здесь docutils? Я говорил именно про setuptools, так как этот пакет является зависимостью для кучи других. Если такая же ситуация у тебя с docutils(у меня она никогда не возникала), то значит и для него прописывай тоже.

systemtap пишет, ″Using python3.7 to build", setuptools, вроде, тоже с 3.7, во всяком случае:

eselect python list покажи, может там принудительно первым выбран 3.6, а ебилд systemtap бажный и юзает дефолт вместо жестко заданного

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

Про docutils я писал в стартовом сообщении, потому что на forum.gentoo.org про него писали. А, понял к чему вопрос. Я скопипастил в предудущий пост не ту строчку, я пробовал прописать:

dev-python/setuptools   PYTHON_TARGETS: -python2_7 -python3_6
и тогда вылазил ″dev-python/certifi″, а для него аналогично задать PYTHON_TARGETS не получалось, система просила флаг python_targets_python2_7.

Я уже для всей системы прописал ″PYTHON_TARGETS: -python2_7″. Пока, вроде, обновилось, что-то менять и ещё раз пересобирать всё, включая libreoffice желания нет, подожду несколько дней.

Было

#eselect python list
Available Python interpreters, in order of preference:
  [1]   python3.6
  [2]   python3.8 (fallback)
  [3]   python3.7 (fallback)
  [4]   python2.7 (fallback)
После обновления и «emerge --depclean» python3.6 удалился, поставил предпочитаемым (eselect) 3.7. И по поводу «eselect python» я не понял, разве 3.7 автоматически не должен был заменить 3.6?

Зачем мне установился python3.8 я тоже не понял, вроде всем пакетам хватает 3.7.

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

Мне вобще не понятен этот PYTHON_TARGETS. Ну сделал я:

PYTHON_SINGLE_TARGET="python3_7"
PYTHON_TARGETS="python3_7"

А python 2.7 в системе остался (и 3.8 появился). Но при этом получается, что питоновские библиотеки собираются только для 3.7? А два других питона в системе они «не полноценные» — без библиотек?

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

Всё верно PYTHON_TARGETS и PYTHON_SINGLE_TARGERS регулируют только то, с какими версиями интерпретатора будут собираться программы и библиотеки. Лишние установленные версии python при этом надо чистить самому. emerge --depclean их должен выкинуть на мороз, если от них никто не будет зависеть

Pinkbyte ★★★★★ ()

В SRPM-ке Firefox для CentOS 5 лежит Python 2.7. Потому что в системе Python 2.4. Питон нужен только для сборки. Можно и в ебилде сделать так же, и тогда Python 2.7 можно будет удалить из системы совсем.

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

Я про то что можно притянуть вместе с исходниками firefox также исходники python 2.7. Скомпилировать их в /var/tmp/ и подцепить при помощи PATH. После сборки удалить. Так в CentOS делается

anonymous ()