LINUX.ORG.RU

Установка приложений в другой слот

 


2

2

Portage при обновлении мира иногда устанавливает разные версии пакета в разные слоты. А вот меня интересует, можно ли целенаправленно установить другую версию пакета в другой слот? Это было бы полезно, например, иметь установленными стабильную и нестабильную версию Wine на тот случай, если они в очередной версии для любимой игры что-то поломали. И если можно устанавливать в разные слоты, то как в таком случае обращаться к конкретной версии пакета?

★★★★★

Да, можно указать слот через двоеточие после названия пакета, например, x11-libs/gtk+:1. Но у вайна нет слотов, поэтому с ним такое не прокатит (слоты не делают, когда одновременная установка нескольких версий невозможна из-за конфликта файлов, а он будет, потому что между минорными версиями библиотеки могут одинаково называться).

gentoo_root ★★★★★
()

Соберите wine в ручную и установите в отдельную директорию в домашней директории пользователя.

kostik87 ★★★★★
()

например, иметь установленными стабильную и нестабильную версию Wine на тот случай, если они в очередной версии для любимой игры что-то поломали.

emerge -b спасёт отца русской демократии.

Deleted
()
Ответ на: комментарий от gentoo_root

А чего ж гентаводы понтуются в каждом втором после юзов слове слотами, а как до дела доходит, так невозможно?

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

Я так и делаю. Жаль, что слоты для Wine не работают.

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

А чего ж гентаводы понтуются в каждом втором после юзов слове слотами

Не знаю, я так не делаю.

Слоты нужны для того, чтобы держать несколько нужных бинарно несовместимых библиотек сразу, например, gtk1, gtk2, gtk3. Для того, чтобы держать одновременно несколько любых версий одной программы, есть NixOS.

Кстати, очень не хватает архитектурных слотов, чтобы можно было собирать и устанавливать и 64-битные, и 32-битные библиотеки. Фактически, сейчас в amd64-Генте нет поддержки 32-битных библиотек (emul-x86 — это костыль).

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

а там когдато кастомные слоты обещали...

Thero ★★★★★
()

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

Можно. Поправь ебилд, чтобы он ставил заголовки/бинари в другое место или под другим именем и кинь его к себе в локальный оверлей(у тебя же есть оверлей, правда?)

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

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

Pinkbyte ★★★★★
()

а подскажите, что и куда в packages.* нужно добавить, чтобы запретить собирать net-libs/webkit-gtk с gtk3? т.е. я его смерджил в первый раз и неприятно удивился умолчальному gtk3 (странно держать легаси-груб и обновлять гтк, в арче наоборот например), потом попробовал добавить его в packages.accept_keywords и пересобрать, но он начал собирать ~x86, а я хочу остаться на стабильной ветке, пришлось собирать отдельно второй слот

вобщем надо какбы =net-libs/webkit-gtk:2 в packages.use, но оно не работает. на генте третий день, да

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

Слоты нужны для того, чтобы держать несколько нужных бинарно несовместимых библиотек сразу, например, gtk1, gtk2, gtk3. Для того, чтобы держать одновременно несколько любых версий одной программы, есть NixOS.

O_o т.е. слоты - это замена адекватному именованию в soname?

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

O_o т.е. слоты - это замена адекватному именованию в soname?

Нет. Если бы не было слотов, было бы вообще пофиг, какое там soname, потому что пакетный менеджер всё равно не дал бы установить несколько версий одной библиотеки. Слоты нужны, чтобы пользоваться и версиями в soname, и пакетным менеджером.

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

ну как-то другие пакетные менеджеры с этим справляются, только в гентушечке придумали «мега-фичу»

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

Фактически, сейчас в amd64-Генте нет поддержки 32-битных библиотек (emul-x86 — это костыль).

Ы?
Хорошо, что у меня x86.
Но вроде же есть какой-то multilib, он что, не работает?

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

ответьте пожалуйста на вопрос! тривиальная казалось проблема, но я уже весь гугл облазил и заснуть не могу

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

Спасибо, получилось, только не x11-libs/gtk+:3, а net-libs/webkit-gtk:3. в первом случае

...
The following mask changes are necessary to proceed:
#required by net-libs/webkit-gtk-1.6.3-r300, required by webkit-gtk:3 (argument)
# /etc/portage/package.mask:
=x11-libs/gtk+-3.4.4
...

а это православный метод?

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

ну как-то другие пакетные менеджеры с этим справляются, только в гентушечке придумали «мега-фичу»

В других пакетных менеджерах приходится городить костыли, например, называть пакет не libpng, а libpng12 и libpng15. То, что в portage реализовано слотами, в других пакетных менеджерах сделано через разные пакеты.

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

Но вроде же есть какой-то multilib, он что, не работает?

Multilib — это способ содержать в системе одновременно и 32-битные, и 64-битные библиотеки за счёт того, что они находятся в разных каталогах. Но для того, чтобы им пользоваться, нужна поддержка со стороны пакетного менеджера или отсутствие пакетного менеджера. В нормальных бинарных дистрибутивах пакетные менеджеры различают установку 32-битной и 64-битной версии данной библиотеки и позволяют установить любую из них или даже обе. В менее нормальных бинарных дистрибутивах 32-битные библиотеки кладут в пакеты с префиксом lib32- в названии, в таком случае мейнтейнерам приходится по-разному создавать пакеты 32-битных библиотек для 32-битной и 64-битной версии дистрибутива. В Генте 32-битные библиотеки для 64-битной системы есть в дереве только в бинарном виде, причём в больших пакетах, содержащих сразу несколько библиотек.

А если бы были архитектурные слоты, то можно было бы собирать у себя по мере необходимости 32-битные и 64-битные версии любых пакетов и спокойно устанавливать их. Но здесь, помимо отсутствия такой фичи, ситуацию усугубляет то, что в Генте пакеты содержат все файлы, полученные в результате сборки (в отличие от бинарных дистрибутивов с разделением бинарников, хедеров, доков, данных в /usr/share и т.п.), поэтому были бы конфликты общих одинаковых файлов.

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

не знаю, где ты там увидел костыли, но мне намного легче сделать pacman -S webkit-gtk2, чем целый день потратить на google gentoo prevent emerge gtk3, тем более что я этого так и не добился закостылив net-libs/webkit-gtk:3 в package.mask.

это пока единственное, что расстраивает

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

мне намного легче сделать pacman -S webkit-gtk2

Не понимаю, почему «pacman -S webkit-gtk2» сделать проще, чем «emerge net-libs/webkit-gtk:2». Никакие дополнительные костыли не требуются.

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

Чтобы не тащить в систему gtk3, надо замаскировать ветку gtk3, а не только ветки софта, его использующие.

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

мне пришлось собирать вебкит дважды

поддержка второго слот не отвалится при emerge --sync через год?

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

ну у меня сейчас

x11-libs/gtk+:3 net-libs/webkit-gtk:3

спасибо еще раз, да. просто не понравилось, что emerge не сообразил сам насчет webkit-gtk:2, когда была только первая строчка. я так понимаю нужно будет каждую гтк программу туда вписывать

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

мне пришлось собирать вебкит дважды

Надо было смотреть, что собираешь. Для этого есть опция -a. Рекомендую сразу -avt.

поддержка второго слот не отвалится при emerge --sync через год?

Я где-то писал, что я пророк? Если что, gtk1 до сих пор есть в дереве.

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

В Генте 32-битные библиотеки для 64-битной системы есть в дереве только в бинарном виде, причём в больших пакетах, содержащих сразу несколько библиотек.
Но здесь, помимо отсутствия такой фичи, ситуацию усугубляет то, что в Генте пакеты содержат все файлы, полученные в результате сборки (в отличие от бинарных дистрибутивов с разделением бинарников, хедеров, доков, данных в /usr/share и т.п.), поэтому были бы конфликты общих одинаковых файлов.

Ах вот оно что...

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