LINUX.ORG.RU

Концепция слотов в генте неправильная

 , ,


1

1

Сейчас слот, это такой способ версионирования, когда решение о делении на версии принимает мэйнтейнер, а не автор апстрима. Потому что мэйнтейнеру виднее, как надо. Потому что авторы неотзывчивые. В общем, сколько и каких слотов наделает мэйнтейнер, столько и будет стоять версий пакета.

Там ещё есть деление на субслоты и слоты, но это от двуличия. Мол, если ABI одинаковый, то мэйнтейнер делает один слот с разными субслотами для разных версий. Т.е. версия по видению мэйнтейнера размазывается на слот и субслот, а версия по видению девелопера отображается в номере слота.

На самом деле, в процессе потребления ПО участвуют и другие люди, такие, например, как пользователи. У пользователей могут быть свои соображения, отличные от соображений мэйнтейнеров. И может возникнуть желание установки нескольких экземпляров программы с одинаковыми SLOT/SUBSLOT, но при этом в разные места на диске.

Было бы совершенно чудесно, если бы portage позволял в переменную SLOT записывать строки с произвольным количеством разделителей, так же как строки с версиями ПО сейчас, и предоставлял функции типа ver_cut, только для SLOT (slot_cut?).

Пример использования №1: Пользователь хочет установить дебужную и релизную версию ПО одновременно. Что ему делать? Или только дебужную. Или только релизную.

Пример использования №2: Хочется иметь разные установки для разных сценариев использования. Например несколько профилей среды разработки, чтобы они использовали разные конфигурационные директории.

Пример использования №3: Оставлять одновременно несколько версий прикладной программы на случай, если в новой версии удалили какую-то функциональность (как это часто делают в Firefox)

Почему вместо переменной SLOT нельзя использовать любую другую переменную? Потому что только слоты можно добавить в DEPEND atom в файл /var/lib/portage/world. Там ещё есть лазейка - можно делать ограничение по репозиториям. Например сделать два репозитория - один для релизных билдов, другой для дебужных билдов. Но как-то это менее удобно, и не покрывает все сценарии использования.

Если бы я умел выделять версию SUBSLOT-а, можно было бы ещё подумать на тему user-patches с выбором вариантов на основе этого значения. Но в любом случае с сабслотами что-то не так - их внутрь ebuild-файла записывают или не записывают мэйнтейнеры. А надо что-то такое, чтобы оно записывалось в world-файл (пользователем) и было доступно внутри .ebuild.

Почему обязательно надо записывать в world-файл и нельзя обойтись переменными окружения, прописываемыми каждому пакету персонально? Потому что для установки нескольких экземпляров нужно, чтобы portage знал о каждом из установленных экземпляров приложения. Это работа именно пакетного менеджера - следить за установленными файлами.

Перемещено shell-script из development

★★☆

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

Аппетит приходит во время еды, да

Вообще скажу так, для прикладного ПО, хорошо бы чтоб разработчики поставляли всякие аппимеджи и флатпаки. Чтоб состояние часто используемого ПО зависело от левой ноги мейнтенеров дистрибутива - штука печальная. То же касается дебажных сборок наверное.

И вопрос с разными сценариями использования решается тогда с помощью сендбоксинга просто.

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

В генте есть аналог флатпака, называется «установка в PREFIX», но при этом происходит дублирование установленных пакетов-зависимостей. Я пытаюсь этого избежать.

Einstok_Fair ★★☆
() автор топика
Ответ на: комментарий от LamerOk

Неправильный совет. Правильный - прочитай все GLEP, убедись что там такого нет, напиши свой и правильным образом (я не знаю каким) запусти в бюрократическую обработку. Вот когда бюрократия не сработает, только тогда правильным станет твой вариант.

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

Сейчас слот, это такой способ версионирования

Нет.

eternal_sorrow ★★★★★
()

Концепция слотов в генте неправильная

С нетерпением жду

Концепция слотов в самой гентеы неправильная

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

Нет, гнобить только один дистрибутив - это ограничивать себя. Надо сразу заявлять, что концепция одного системного пакетного менеджера неправильная. Так можно будет наехать сразу на Debian, Fedora и многих других.

Правильная концепция - это стандарт на взаимодействие разных менеджеров.

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

Ты забываешь о другом варианте - если у тебя действительно хороший план и ты готов впахивать в таком масштабном мероприятии - у тебя всегда есть шанс форкнуть дистрибутив и сделать всё как тебе надо, найдя сообщников.

А если ты хочешь вбросить идею чтоб потом ее поддерживал кто-то другой - то да, будь добр следовать правилам. Такова жизнь, чо...

Pinkbyte ★★★★★
()

Каким образом разделять все эти многочисленные слоты, подслоты и прочие параллельные пакеты? Насколько я помню, штатного универсального способа нет и быть не может. Потому что программы бывают очень разные. Мэйнтэйнер должен каждый раз изучать результат компиляции и решать, что как переименовать и переместить, чтобы слоты друг другу не мешали, но зависимые от них программы всё находили.

Поэтому, если тебе нужен новый слот для очередной программы, пиши новый локальный ебилд. И поддерживай.

question4 ★★★★★
()

Дистрибутивы со свалкой в корне обречены страдать от подобных проблем.

quantum-troll ★★★★★
()

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

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

А мне сказали, что Гента потенциально тоже неплоха:

the only distro that attempts to allow coinstallation of arbitrary versions is Nix, though Gentoo makes the attempt for more packages than most distros bother with

https://unix.stackexchange.com/questions/159540/is-there-a-way-to-install-several-versions-of-a-program-on-linux

Einstok_Fair ★★☆
() автор топика
Ответ на: комментарий от shatsky

Всё смотрю в его сторону, но от одного только факта что на не-никс декстопе никсовыми пакетами пользоваться сложно отдаёт концептуальной сыростью.

Gary ★★★★★
()

Почему обязательно надо записывать в world-файл ...
... нужно, чтобы portage знал о каждом из установленных экземпляров приложения.

Портаж итак знает о каждом установленном приложении, вне зависимости от наличия его в world.

World вообще не об этом...

А ещё, к слову, у ОПа в корне неправильное понимание сабслотов...

mva
()

Почему обязательно надо записывать в world-файл и нельзя обойтись переменными окружения, прописываемыми каждому пакету персонально? Потому что для установки нескольких экземпляров нужно, чтобы portage знал о каждом из установленных экземпляров приложения. Это работа именно пакетного менеджера - следить за установленными файлами.

Тихо, не спугните, дед щас NixOS изобретет!

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

у ОПа в корне неправильное понимание сабслотов…

Это у разработчков PMS концепция неправильная.

переменную SLOT надо разделить на две переменные: DEV_BUMP_SEQ_NUM и LOCATION_MARKER

То, что сейчас SUBSLOT - это некая строчка, которая описывает локацию на диске, но не прямо путём, а эфимизмом.

То, что сейчас SLOT - это запрос от разработчиков библиотеки обновить зависимости или объявить версию устаревшей и неподдерживаемой.

Проблема в том, что сейчас эти переменные не разделены и идут в строке в неправильном порядке, мешающем лёгкому пониманию

Einstok_Fair ★★☆
() автор топика
Последнее исправление: Einstok_Fair (всего исправлений: 1)
16 июля 2020 г.
Ответ на: комментарий от init_6

Чего ещё от мудилы ждать? Пиздеть он может, а руки приложить - нет.

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

Да поциент вообще упорот. Не обращай на него внимания, не корми идиотов. ☺

mord0d ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.