Нахуа? Если нужно новый софт, то накатываешь докер, и в нем всё будет работать без "обновления" родительской системы.
@rkit, ну вот например хочется нового питончика, без всяких докеров-шмокеров
@Shura Вот как раз на примере использования Питона становится понятно, насколько Линукс - говно!
Поставил утилиту, написанную дебилом на питоне. Поставились зависимости под питон 3.11.
Всё в папках python-3.11.
Потом обновляешь дистрибутив, удаляется 3.11, а ставится 3.13.
И весь софт, использующий 3.11 СЛОМАН! И ещё и надо потратить день на то, чтобы его обновить.
Линукс - говно. Не дайте себя обмануть.
@Revertron @Shura Он там не обновляется. Вся система декларативна, нужные “пакеты” грузятся в /nix/store, а потом пакетный менеджер Nix лепит из всего что есть в /nix/store готовую систему, или окружение, или devShell, или использует файлы из других “пакетов” при сборке.
То есть ты конечно можешь попросить Nix прилепить к своей системе какой-то Python (разумеется можно выбирать любую нужную версию, если ты об этом), но можно и вообще создавать нужное окружение на лету. Предположим у тебя “установлен” (в кавычках поскольку это всё же не совсем установка ИМХО) Python 3.15. Но ты качаешь проект которому нужен Python 3.10, пишешь в нём всего одну команду “nix shell github:nixos/nixpkgs/1c1c9b3f5ec0421eaa0f22746295466ee6a8d48f#python310Full”, и вуаля, у тебя есть старая версия петона (можно и 3.9 и более ранние даже)
На скриншоте видно, что пакет 3.10 питона есть в актуальных репозиториях nixpkgs, но там стоит заглушка мол он удалён и не поддерживается, ОДНАКО, ты всегда можешь просто указать конкретную версию коммита более старой версии nixpkgs, где этот пакет ещё реально существовал (фича Nix). И один умелец запилил удобный сайт для этого, где я собсна эту команду и откопал. Несмотря на отсутствие поддержки, всё работает.
@Revertron @Shura и прошу заметить, ты не мусоришь в системе “устанавливая” что-то, поскольку у тебя тупо нету привычного корня, где можно намусорить. По сути вся твоя система - это симлинка на набор симлинков на всякие бинарники в /nix/store
@blit, Даже непонятно, что смешнее — наблюдать потуги питонодебилов в управлении версиями питона, или на дурачков, открывших для себя какую-то фичу в линуксе и бегающую с ней как с серебряной пулей.
Специально для ущербных — любой более-менее популярный дистрибутив линукса кладет в "корень" симлинки на нужные версии пакетов. В любом дистрибутиве поддерживается несколько версий питона, и судя по написанному этим же дурачком — в nixos их поддерживается даже меньше обычного и ему приходится выковыривать старые версии обходными путями. Но расхваливать кривую хуйню он не перестает, отчего и дико смешно.
@vt браво, гений
Вопрос для Жака Фреско где костыль, в NixOS или в “любом более-менее популярном дистрибутиве”
Для смешных объясняю: в императивных дистрах для этого придумали всякие костыли вроде *-alternatives, когда в NixOS это работает by-design нативно. Я уже не говорю о другом последствии этой нативной реализации: разные программы могут юзать свои версии разных библиотек на уровне пакета, а не чтобы юзер это решал, при этом всём юзер даже не будет видеть всю эту подкапотную дичь, для него всё будет красиво, как будто ничего не установлено, и условный петон у него появится только если он явно его установит
работает by-design нативноИ именно бай дизайн он полез добывать через жопу старую версию, непрекращаемая ржака.
@vt Никакой жопы тут нет, идёшь в первоисточник (Github, где лежит nixpkgs), ищешь там пакет и нужный номер коммита без всяких упрощаторов от сообщества, пишешь одну команду и готово. Псс, а в вашем “супер дупер ахуенном” дистре можно откопать Python 3.5 не из жопы? Просто в NixOS можно. Со скринами только, и чтоб на одном скрине было видно одновременно использование Python 3.5 и какого-то другого (который скажем в системе установлен).
Вот мой скрин, пока свой не скинешь, будешь для меня чисто пиздуном вникуда.
Терминал с информацией о доступных версиях Python и запущенной командой по установке конкретной версии.
🔬 Подробнее
В верхней части терминала отображается приглашение ввода с указанием виртуальной среды: `(venv) C:\Users\user`. Далее следует команда `vsv 15 36 mesh`, введённая пользователем.
Ниже выведен текст приветствия: *"Welcome to pym, the friendly interactive shell"* с указанием процесса сборки: *"building python-3.5.9 | build 1/2 [conet: 64 conet] (console) [386/130 MB | 182.2 MiB OI] python-3.5.9"*.
Слева перечислены доступные версии Python с пометками:
- `vsv 15.0`
- `vsv 15.1`
- `vsv 15.2`
- `vsv 15.3`
- `vsv 15.4`
- `vsv 15.5`
- `> python 3.5.9` (выбрано пользователем)
- `vsv 15.15 (tops 4ms)`.
Внизу видно повторное отображение команды `vsv 15.36 mesh`.
@blit
@blit, Дурачок по-прежнему в полной уверенности, что "обычные дистрибутивы" не умеют запускать одновременно два питона, какой интересный экземпляр, как сурово он бьется с врагами за свою серебрянную пулю.
@blit мне вот даже стало интересно а можно ли сделать так что бы в системе было 2 версии одного пакета. Просто о том что через nix-shell ставить разные версии пикетов возможно а вот можно что бы они были прям в системе на постоянной основе ( тоесть в systemPackages)
Что то мне подсказывает можно
@luc_ren Смари. Есть пакеты, пусть даже разных версий. Получить их 0 проблем. А вот сочетать в одной системе чуть сложнее, поскольку оба они предоставляют один и тот же бинарник, а значит придётся лезть внутрь этих пакетов и менять названия бинарников как-то
Зачастую это не требуется, так как можно просто создать файл .nix для входа в shell с нужной версией питона, а потом просто при каждом входе в проект выполнять этот файлик.
Зачастую это не требуется, так как можно просто создать файл .nix для входа в shell с нужной версией питона, а потом просто при каждом входе в проект выполнять этот файлик.
Я впринцепе так и делал но мало ли вдруг я чего то не знал и nix может соеденить в себе две версии одного пакета.
Чуть жаль но честно как частно нужно что бы в systemPackages было две разных версии одного пакета :)
@blit, Снова оскорбили чувства линукс-верующего, никогда такого не было и вот опять
@Shura если относительно новые питоны, то uv от астрала идеально решает эту задачу, вообще очень хорошая вещь, если тебе надо какую-то тулзу на питоне и чтобы не ставить из репов, то uv tool install _package_name_. И конфликты решает довольно неплохо, мастхев крч
@rkit С этим никто не спорит.
Но проблема линукса в том, что версия языков программирования жёстко привязана к версии дистрибутива.
Это дебилизм.
@Revertron, Это везде так. Попробуй установи современный софт на 98 винду, например.
@rkit Ты совершенно не понял проблему.
Проблема в том, что Питон обновляется вместе с ОС. А потом ничего не работает.
@Revertron @Shura Ну можно просто конфиг поменять таким образом, чтобы зафиксировать версию петона на определённом коммите, а потом Nix построит такую систему.
Тут просто формулировка “обновление” не совсем верна, поскольку Nix каждый раз собирая систему, собирает её по сути с нуля и полностью новую
@Revertron, Обновляется симлинк, никто старый питон не удаляет, если он нужен.
@vt Это где так? В Дебиане точно всё улетает к чертям, и ставится новая версия.
@Revertron, Так правильно. ОС перестала поддерживать старый питон, он и обновился. Ну хорошо, попробуй запустить игру под 98 винду на 11й.
@rkit Так неправильно!
Я вот обновился недавно с Win10 на Win11, и никакой софт у меня не слетел.
И не надо этих инсинуаций про Win98. Она из прошлого века.
@Revertron, Если нужен
Ты же не сказал пакетному менеджеру, что он тебе нужен. apt install python-xx зафиксирует, что он установлен вручную и никуда он не улетит.
И не надо этих инсинуаций про Win98. Она из прошлого века.Как и debian, ну.
@rkit
> Как и debian, ну.
Нет, для тупых повторяю - рассматриваем апдейт с Debian 12 на Debian 13.
@Revertron @Shura Что конкретно тебе не нравится? Что нельзя взять и закосячить какой-то кусочек системы, поскольку /nix/store программно read-only, а симлинками рулит только Nix? Ну, это в каком-то роде ограничивает свободу, но и превносит те божественные плюсы, которые все так любят.