LINUX.ORG.RU

Как работают слоты в Gentoo?

 ,


0

2

Не знаю, куда лущ эту тему поместить, так что пусть будет здесь.

Сабж. Точнее, как сделано, что разные слоты не будут конфликтовать? Как другие программы, зависящие от конкретной версии программы в нескольких слотах, находят нужный бинарник или либу?

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

До первой пересборки, лол. Или специальными костылями в ебилде.

anonymous
()

В /lib или /usr/lib загляни: в названии либы есть номер версии. Для меня вопросом является как они могут конфликтовать?

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

Всегда же есть симлинк с таким же названием, но без номера, на либу с конкретным номером. Вот и конфликт. У бинарников вообще нет номера. Алсо, как ищется либа? По названию с номером или без?

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

У бинарников вообще нет номера.

python2, python3, python3.1, python3.2... Если нужно - номер к бинарнику добавляют.

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

Есть, но выглядит несколько иначе, чем думает ТС.

ls -l /usr/bin/python*
lrwxrwxrwx 1 root root 14 май 26 10:49 /usr/bin/python -> python-wrapper
lrwxrwxrwx 1 root root 9 мар 29 2013 /usr/bin/python2 -> python2.7
-rwxr-xr-x 1 root root 6144 май 20 18:39 /usr/bin/python2.7
-rwxr-xr-x 1 root root 1450 май 20 18:38 /usr/bin/python2.7-config
lrwxrwxrwx 1 root root 9 май 26 10:49 /usr/bin/python3 -> python3.2
-rwxr-xr-x 1 root root 10304 май 20 18:59 /usr/bin/python3.2
-rwxr-xr-x 1 root root 1659 май 20 18:58 /usr/bin/python3.2-config
-rwxr-xr-x 1 root root 10304 май 26 10:43 /usr/bin/python3.3
-rwxr-xr-x 1 root root 1753 май 26 10:42 /usr/bin/python3.3-config
-rwxr-xr-x 1 root root 217 май 26 10:49 /usr/bin/python-config
lrwxrwxrwx 1 root root 16 май 20 18:39 /usr/bin/python-config-2.7 -> python2.7-config
lrwxrwxrwx 1 root root 16 май 20 18:59 /usr/bin/python-config-3.2 -> python3.2-config
lrwxrwxrwx 1 root root 16 май 26 10:43 /usr/bin/python-config-3.3 -> python3.3-config
-rwxr-xr-x 1 root root 1397 сен 6 10:03 /usr/bin/python-exec
-rwxr-xr-x 1 root root 10360 сен 6 10:03 /usr/bin/python-exec-c
-rwxr-xr-x 1 root root 10080 ноя 9 2011 /usr/bin/python-wrapper

Мышой недозацепил пару символов в первый раз.

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

Всегда же есть симлинк с таким же названием, но без номера, на либу с конкретным номером.

Да

У бинарников вообще нет номера.

$ ls -1 /usr/bin/perl[0-9]*                                 
/usr/bin/perl5.16.3
$ ls -1 /usr/bin/python[0-9]*             
/usr/bin/python2                                                
/usr/bin/python2.7                                            
/usr/bin/python2.7-config                              
/usr/bin/python3
/usr/bin/python3.2
/usr/bin/python3.2-config
/usr/bin/python3.3
/usr/bin/python3.3-config

Когда это нужно - есть. При этом слоты легко переключать установкой симлинка «без версии» на нужную версию. Подозреваю, что gcc так и делает.

Алсо, как ищется либа? По названию с номером или без?

Думаю, если программе принципиален номер версии, то с номером. Если нет - без номера.

Еще вангую, что в Gentoo все линкуется с либой с номером, так как иногда бывает, что после апдейта оно говорит «оставляю либы старых версий, чтобы работали некоторые приложения, которые с ними связаны. Чтобы удалить старые версии выполните emerge @preserved-rebuild».

Нет конфликта.

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

Ок, скриптоговно имеет номер (на то оно и скриптоговно), а как же нормальные вещи? Фаерфокс?

$ ls -l /usr/bin/firefox*
-rwxr-xr-x 1 root root 106 сен 19 02:55 /usr/bin/firefox
lrwxrwxrwx 1 root root  20 сен 23 12:58 /usr/bin/firefox.real -> /opt/firefox/firefox
rogvold
() автор топика
Ответ на: комментарий от rogvold

Стой, ты, кажется, не понимаешь. Слоты в генту есть для очень ограниченного набора конкретных программ/библиотек. Любая случайно выбранная программа скорее всего их не поддерживает, тк это не свойство портежа а конкретного ebuild. Видимо, тебе толстунки чего-то не то напели.

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

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

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

это не свойство портежа а конкретного ebuild

Это не только свойство конкретного ebuild'а, но ещё и свойство portage. Иначе ты не смог бы сделать так:

emerge sys-devel/gcc:4.3

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

Так ты можешь сделать только потому, что конкретный ebuild gcc написан соответствующим образом. То, что portage даже может в такой синтаксис аргументов конечно очень круто, но ситуации не меняет.

anonymous
()

Со слотами имел дело как пользователь и могу сильно заблуждаться. Знаю о них по конфликтам :)

Пока не касается дело конкретики - все ок.

Но как только начинаешь осуществлять некоторые телодвижения - первое что словишь конфликты и дополнительную нервозность.

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

Слоты сложны в поддержке на мой взгляд, но это лучше чем ничего. В простейшем случае это команды eselect в сложнейшем: python, libpng, java стэк и другие.

По сути слоты делают следующее: с одной стороны папки с либами и сим-линками, с другой стороны как правило патченные пакеты, способные читать и собираться с конфигурацией разных версий либ. Поддерживать это сложно, но в source-based больше гибкости в целом. И в целом слоты офигительная фича - нужно стандартизировать главные моменты и процесс пойдет.

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

Возможно ли это? Теоретически? Если да, как будут разруливаться вопросы, которые я спросил?

Думаю, это должно быть предусмотрено программой/ебилдом. AFAIK, для firefox на данный момент не предусмотрено. Так что без танцев с бубном не получится.
Танцы с бубном:
1. Задать другой --prefix
2. Если не хочешь менять --prefix, уверен, что имена всех файлов заданы где-то в Make файле, так что можно попробовать подредактировать.

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

Это не только поддержка синтаксиса. А то, что ebuild должен это поддерживать, я написал в своём посте, на который ты ответил, но, видимо, прочитать не удосужился.

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

А если сменить переменную окружения?

Какую?

configure - создает Make файл, согласно которому компилируется, компонуется и устанавливается программа. --prefix устанавливает префикс каталогов для установки. По дефолту, если собирать из исходников, это /usr/local, чем достигается ненарушение структуры дистрибутива, поскольку для всех программ, устанавливаемых пакетным менеджером дистрибутива префикс /usr . В «префиксном каталоге» находятся bin, sbin, lib, share и т. п., по которым и разбрасываются файлы при установке программы.

./configure && make && make install работает для 90% всего софта. В Gentoo можно отчетливо видеть работу configure при установке пакета.

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

А что, это не везде так что ле?

Не знаю. Зачем тогда симлинк без версии?

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