LINUX.ORG.RU

Как в Gentoo установить две версии Firefox одновременно?

 , ,


0

1

Конкретно: 60+ и 52.8.0. Первая должна встать и обновляться стандартным способом, а вторая может с ухищрениями.

Я сначала думал, что нужно промержить вторую командой:
PREFIX=«/usr/prefix» emerge -v =firefox-52.8.0
но нет, это не срабатывает. Версия встаёт как будто она обычная, а директория /usr/prefix остаётся не тронутой.

Дальше получается два варианта действий:
1) ставить всю gentoo в prefix (с portage, с отдельной базой пакетов и т.д.) и туда ставить firefox (должно теоретически сработать)
2) разбираться как работает сборка firefox и исправлять .ebuild, чтобы он вставал в слот и собирал в нестандартную директорию.

И блин, я простой пользователь, и не хочу во всём этом копаться...

Ответ на: комментарий от Einstok_Fair

прямые или относительные это без разницы.
собрать на overlayfs новый корень и работать через него. и потихоньку добавлять необходимые библиотеки в новый корень. гентушник уж должен знать подобные методы извращений ??

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

Чтоб заслотировать это говно нужно чтоб и все его зависимости поддерживали слотирование. А это трудна и нахрен никому не надо.

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

я так понимаю EPREFIX это параметр среды

параметру командной строки --root соответствует переменная окружающей среды (environment variable) с именем ROOT. Ты верно говоришь, что environment variable это не то же самое, что command line argument, это действительно немножко разные вещи.

Однако, EPREFIX это переменная окружения и ROOT это переменная окружения. Имена у них разные, а значит и нужны они для разных целей.

И вот я думаю, что нужна EPREFIX, а ты рекомендуешь ROOT. Как же так?

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

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

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

Олень а если фф-сам внезапно совсем разные версии либ нужны а их ебюлды без слотов? Упс...

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

собрать на overlayfs новый корень и работать через него.

Я же ясно написал, что я не хочу chroot, я хочу одну общую файловую систему без всяких монтирований.

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

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

Не может firefox потребовать разных версий внезапно. Если библиотека имеет особенности, то это влияет сразу на разные программы, и слоты в этом случае уже есть с большой долей вероятности.

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

Gentoo славна слотами. Здесь, выходит, они не работают?

А ты думаешь, что слоты - это какая-то магия? Вообще-то нужно проделать некоторое количество работы мэйнтейнеру, чтобы заставить их работать. И то, насколько изначальный софт «заточен» под параллельную установку может сделать эту работу тривиальной(а-ля одна простая опция в билдсистему, передаваемая в зависимости от слота) или адом(когда софт написан так, что он даже не предполагает возможность параллельной установки, более того - ломается при таковой). Разумеется это крайние позиции, истина обычно где-то рядом^W посередине

Это всё говно естественно находится под капотом, то есть пользователи пакетов со слотами могут и не подозревать обо всей этой возне, им достаточно того что можно поставить пакет параллельно.

Но мэйнтэйнеру от этого не легче.

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

Ну и в итоге-то что, мне создать новую тему «как при сборке firefox указать целевую директорию?», так как эта уже вусмерть зафлужена?

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

Боюсь учитывая «я не хочу chroot, я хочу одну общую файловую систему без всяких монтирований» вкупе с «в firefox прям в руководстве по сборке в начале написано, что процесс сборки сложный и противный. Я как начинаю его читать так сразу и заканчиваю» ответ как сделать так как ты хочешь -> никак

Нужно либо крестик снять(соглашаться на чрут/докер/overlayfs/чёрта лысого), либо трусы одеть(разобраться с билдсистемой)

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

Не может firefox потребовать разных версий

А ну если он тебе нотариально подтвержденное заявление дал то другой разговор.

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

Лол, в гуйксе даже фаерфокса нормального нет?

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

а man тебе на что дан господом ?? изучай :)

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

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

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

Для создания префикса, ВНЕЗАПНО. Только если посмотреть глубже - вот ты можешь сказать чем для тебя Gentoo Prefix отличается от чрута так, что ты говоришь «Prefix - да, чрут - нет»? :-)

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

Тем что Prefix просто стоит рядом (примерно как portable applications), а chroot это целая эпопея с монтированием (его прописыванием, документированием)

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

А ещё я может хочу основную систему x32, а редкие извращения типа firefox - отдельно

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

chroot это целая эпопея с монтированием (его прописыванием, документированием)

Посмотрел я на gentoo-chrootiez и не понял где там эпопея. До сих пор в одном из таких чрутов у меня на домашнем десктопе живет стим. Это если совсем лень свой скрипт писать.

Но тебе конечно виднее, особенно учитывая что Prefix также работает через bash-скрипт.

С другой стороны Prefix работает из под рядового пользователя, а для полноценного chroot нужны права рута. Впрочем, есть proot, который подобного не требует.

Так что пока что я вижу с твоей стороны нежелание читать документацию и вникать, только и всего

А ещё я может хочу основную систему x32, а редкие извращения типа firefox - отдельно

Если ядро поддерживает оба интересующих тебя ABI, я не вижу абсолютно никаких причин чтобы chroot из одного ABI в другое - не работал(SELinux и другие MAC-системы, которые могут такое запрещать пока опустим для простоты). Самый частый пример - chroot из 64-битной системы в 32-битную, но я делал и наоборот(на том же MIPS приходилось) - всё абсолютно также. Сомневаюсь что будут какие-то проблемы с x32.

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

Я просто в шоке от того, что этот типовой сценарий использования (несколько версий одной финальной программы) не пережеван как следует в хендбуке в общем виде. (я писал выше про комбо из SLOT + EPREFIX)

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

пережуй и напиши :)

видать мало кому нужно либо обходятся другими средствами.

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

EPREFIX нельзя устанавливать напрямую в ебилде или для отдельного ебилда - это сломает к хренам дерево зависимостей. Если бы ты прочитал Package Manager Specification, то у тебя бы таких идей даже не возникло.

Но ты упорно пытаешься изобрести велосипед, не желая даже ознакомиться с матчастью. Это безусловно похвально, если бы ты не подавал якобы отсутствие документации на невозможный сценарий с таким апломбом.

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

это сломает к хренам дерево зависимостей.

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

Если бы ты прочитал PMS

То это всё равно как совет «прочитать все книги мира». Слишком много ненужной информации. Не конкретный.

или для отдельного ебилда

Переменные окружения можно устанавливать для отдельного ebuild-а.

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

Не сломает, потому что конечная программа, которой пользуется человек, не является зависимостью чего-либо

А тот факт, что возможны проблемы с линковкой firefox к системным библиотекам тебя не смущает(навскидку из-за несовместимости ABI, вызванное сменой версии компилятора и/или опций сборки)? Не зря же классический Prefix не содержал в себе только glibc(а RAP - вообще содержит и его)

То это всё равно как совет «прочитать все книги мира». Слишком много ненужной информации. Не конкретный.

Поиск по слову EPREFIX уже отменили? Ладно...

Переменные окружения можно устанавливать для отдельного ebuild-а

Технически можно. Но они могут работать НЕ так как ты думаешь. И об этих исключениях сказано в PMS. Который тебе лень прочитать, ты же и так умный, зачем оскорбляться какой-то документацией...

Только вот если ты такой умный, всё сам знаешь, документация и разработчики тебе не указ - чего ж ты вопросы то задаёшь такие простые? :-)

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

проблемы с линковкой firefox к системным библиотекам тебя не смущает(навскидку из-за несовместимости ABI, вызванное сменой версии компилятора и/или опций сборки)?

Эта проблема решена в portage. Так как в world будет записано две строчки с разными слотами, то при изменении библиотек будут пересобраны обе версии.

Поиск по слову EPREFIX уже отменили?

В гугле искал, а как скачать локально и искать с find . -type f -exec grep -R «EPREFIX» {} \; я не знаю.

они могут работать НЕ так как ты думаешь.

Я никак не думаю, я спрашиваю, почему так нельзя.

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

Так как в world будет записано две строчки с разными слотами, то при изменении библиотек будут пересобраны обе версии.

Я тебе про Фому, ты мне про Ерёму. При чем здесь две строчки в одном world-файле, при условии что ты собрался ставить Gentoo Prefix. Ты не в курсе, что у каждого префикса СВОЙ world-файл и набор всех необходимых библиотек зависимостей?

В гугле искал, а как скачать локально и искать с find . -type f -exec grep -R «EPREFIX» {} \; я не знаю.

Я предлагал поискать на странице самого мануала Package Manager Specification. Или в своем браузере поиском на странице(а весь PMS можно открыть одной HTML-страницей) ты тоже не умеешь пользоваться?

Я никак не думаю, я спрашиваю, почему так нельзя.

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

Pinkbyte ★★★★★
()

Wine с двумя префиксами.

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

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

Это была моя первая мысль, поставить в префикс (в топик старте так и написано). Я попробовал, у меня не получилось, бага создана в багтрекере, продвижение по этому пути остановлено.

Перешел к плану 2 из топикстартового сообщения - т.е. отдельный ebuild со SLOT и EPREFIX в том же дереве.

Я предлагал поискать на странице самого мануала Package Manager Specification.

Но не сказал, что именно там нужно найти Идем на страницу https://projects.gentoo.org/pms/6/pms.html ищем там все EPREFIX:

EPREFIX
Legal In: All (хм, что бы это значило?)
Consostent: Yes
The normalised offset-prefix path of an offset installation. When EPREFIX is not set in the calling environment, EPREFIX defaults to the built-in offset-prefix that was set during installation of the package manager. When a different EPREFIX value than the built-in value is set in the calling environment, a cross-prefix build is performed where using the existing utilities, a package is built for the given EPREFIX, akin to ROOT. See also 11.1.3. Only for EAPIs listed in table 11.4 as supporting EPREFIX.

Table 11.4: EAPIs supporting offset-prefix env variables
EAPI: 3, 4, 5, 6, EPREFIX: Yes

These commands are used during the src_configure, src_compile, and src_install phases
econf must pass the following options to the configure script:
--prefix must default to ${EPREFIX}/usr
и т.д.

Ну и что я тут должен вычитать? Прочитал. Не понял, что ты хочешь сказать.

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

AppImage, docker, mount -bind и прочие chroot это всё лишние сущности. Не нужны они тут, если в ебилде от генты уже есть механизм, который позволяет доопределить одну переменную окружения для одного ебилда и этот ебилд сам встанет по другому пути.

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

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

Почему ты им не пользуешься?

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

Я всё ещё собираюсь им воспользоваться. Останавливает меня незнание некоторых деталей процесса сборки Firefox, а именно - учитывает ли его configure параметры, передаваемые из .ebuild-а. Ну и сам текст ебилда я ещё не разбирал по строкам.

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

(хм, что бы это значило?)

Not all variables are meaningful in all phases

All - значит что данная переменная валидна во всех phase-функциях(src_* и pkg_*). Для сравнения обращаться к переменной ROOT НЕЛЬЗЯ за пределами функций pkg_*. Точнее обратиться-то ты технически можешь, но что тебе там выдадут - решительно не ясно, альтернативные реализации(тот же paludis например) имеют право хоть сатану вызывать в этом случае.

Ну и что я тут должен вычитать? Прочитал. Не понял, что ты хочешь сказать.

The normalised offset-prefix path of an offset installation

cross-prefix build is performed where using the existing utilities, a package is built for the given EPREFIX

Жирным я выделил то, на чем стоит заострить внимание, так как описано задуманное для данных переменных поведение. А оно говорит нам, что в первую очередь альтернативный префикс - это набор ПО со ВСЕМИ его зависимостями.

Нет, чисто технически ты можешь попробовать поставить через переопределение EPREFIX отдельный пакет(опцию --nodeps у emerge никто не отменял). Насколько у тебя это получится... Ну, судя по моему опыту(а я в своё время увлекался тестированием пакетов для Gentoo Prefix, хотя в команду так и не вступил) - с чем-то сложнее hello world и билдсистемой сложнее коротенького Makefile это скорее всего не получится, даже несмотря на то, что в отсутствии библиотек внутри префикса делается fallback на общесистемные.

Если бы у тебя было кое-какое понимание как работает тулчейн, например, при кросскомпиляции в Gentoo ты бы знал, что использовать тулчейн из хостовой системы внутри префикса через ебилды - это отдельная пляска с бубном(и официально, ЕМНИП, не поддерживается).

Именно по этому Gentoo Prefix полноценно собирается с нуля(bootstrap, вот это вот всё)

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

это скорее всего не получится

Т.е. ни одной конкретной причины нет, только неясные опасения общего характера.

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

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

Такого механизма, который сработает ТОЛЬКО для одного ЛЮБОГО произвольного ебилда в Gentoo НЕТ.

Переменную ROOT можно использовать для подготовки специализированного чрута, но из него потом ВСЁ равно придется вычищать некоторые build-time зависимости(тот же тулчейн кем-то, да потянется).

Про EPREFIX я уже распинался.

BDEPEND и прочее из EAPI 7 потенциально может решить проблему ROOT(но не твою, потому что чрут тебе видите ли не интересен), но насколько затянется перевод на него - время покажет.

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

ни одной конкретной причины нет

Есть. Зовется эта причина билдсистемой пакета, которая на такое применение в большинстве случаев не расчитана.

И отсутствием костылей^W подпорок в Gentoo для поддержки таких случаев.

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

Могу её доопределить для одного билда? Могу.

- Могу я выполнить rm -rf /* ?
- Могу
- Останутся ли целы все мои файлы(принадлежащие пользователю, выполнившему данную команду), если я дождусь окончания работы этой команды?
- ?

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

Стреляй тогда, чо, зачем мы тут с тобой распинаемся-то :-)

О результатах расскажешь. Хотя можешь не рассказывать - мне они, в общем-то очевидны уже сейчас...

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 3)
8 мая 2020 г.
Ответ на: комментарий от Pinkbyte

О результатах расскажешь.

Обсуждение не привело к нахождению походящего решения. Раунд 2.

Префикс в 2018-м году мне нужен был для того, чтобы была возможность носить firefox на флешке, вместе с профилем, чтобы везде всё было одинаково.

Теперь наступил короновирус и перемещаться не нужно, поэтому и EPREFIX не нужен. Однако вышла новая версия Firefox 76, а у меня стоит Firefox 75.

На этот раз я хочу установить ТРИ версии firefox:

a) сохранить имеющийся Firefox 75 (у него в билде написано SLOT=«0», что на мой взгляд неправильно)

b) установить два новых:

=www-client/firefox-76.0-r1:76-release/profile76

=www-client/firefox-76.0-r1:76-debug/profile76

Здесь 76-release - это SLOT, а profile76 - это SUBSLOT

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

Для того, чтобы переопределить значение переменной SLOT я хочу запускать сборку следующим образом:

SLOT=76-release/profile76 emerge firefox::einflay

SLOT=76-debug/profile76 emerge firefox::einflay

Мне не ясно:

  1. переопределит ли переменная SLOT, которая передаётся снаружи, ту переменную SLOT, которая записана в билде?

  2. после установки, будет ли сохранена запись о слоте в файле world

Einstok_Fair ★★☆
() автор топика
Последнее исправление: Einstok_Fair (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.