Hello! On Tue, 27 Mar 2018, Aleksei Nikiforov wrote: > Я пытаюсь разобраться с обновлением python3 до версии 3.6.x и возник вопрос: > почему архитектурно-зависимые модули python3 в основном лежат в > % _libdir/python3 вместо %_libdir/python3.5? Если бы модули лежали в > % _libdir/python3.5, то рядом в %_libdir/python3.6 можно было бы положить > модули для python-3.6.x, а в будущем и для 3.7.x, а сейчас обновление > python-3 невозможно без одномоментной пересборки всего содержимого > %_libdir/python3 c новой версией python3. Не совсем так. Только бинарных модулей. Во-первых, из-за стремления к политике поддерживать только один вариант в Сизифе. С этим все согласились и при последней пересборке с python 3.5. Во-вторых, технически это тогда должно было бы реализовываться по-другому. Если noarch-пакеты общие, как сейчас, т.е. подходят для использования любой версией python3, то механизм Requires+Provides в rpm не позволяет выразить нужные условия работоспособности. Например: модуль a импортирует noarch-модуль b, b импортирует c. a и с -- бинарные. Тогда когда импортируется a для python 3.6, должен импортироваться b, а потом c для python 3.6 тоже. И так же для python 3.5. Соответсвующий Requires в пакете с модулем b невозможно написать. Раз так не получается, остаётся только сборка каждого модуля для каждой версии питона, т.е. все-все-все модули в Сизифе надо будет собрать ещё раз. Ну и этого может не хотеться, например, потому что слишком долгий процесс, если делать вручную. Теоретически, конечно, всякие варианты возможно, но у нас сейчас такой выбран. Вероятно, в Debian по-другому. В Сизифе тоже были предусмотрены такие механизмы для размножения модулей, остались атавизмы в виде всяких %python_setup_module, которые сейчас не очень полезны. (И этого уже нет для Python 3.) -- Best regards, Ivan