LINUX.ORG.RU

Вопрос по слотам

 


0

1

Пришло обновление gcс. Предлагает поставить в отдельный слот.

Зачем в отдельный слот? Нужно ли это?

Как посмотреть список всех отдельных слотов в системе?

В man'ах portage и emerge тема слотов не раскрыта. На gentoo.org тоже. Уткинг и гуглинг тоже не помог.

★★★★★

Зачем в отдельный слот?

затем что, судя по всему, это обновление ломает ABI.

Нужно ли это?

да

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

Deleted
()

Как посмотреть список всех отдельных слотов в системе?

у каждого пакета свои слоты(если они конечно есть)

у гцц:

# eix sys-devel/gcc
[I] sys-devel/gcc
     Available versions:  
     (2.95) ~2.95.3-r10^s
     (3.3)  ~3.3.6-r1^s
     (3.4)  3.4.6-r2^s
     (4.0)  **4.0.4^s
     (4.1)  4.1.2^s
     (4.2)  ~4.2.4-r1^s
     (4.3)  4.3.6-r1^s
     (4.4)  4.4.7^s
     (4.5)  ~4.5.1-r1^s ~4.5.2^s 4.5.3-r2^s 4.5.4^s
     (4.6)  ~4.6.0^s ~4.6.1-r1^s ~4.6.2^s 4.6.3^s 4.6.4^s
     (4.7)  ~4.7.0^s ~4.7.1^s ~4.7.2-r1^s 4.7.3-r1^s ~4.7.4^s
     (4.8)  ~4.8.0^s ~4.8.1-r1^s ~4.8.2^s ~4.8.3^s
     (4.9)  **4.9.0^s **4.9.1^s
       {altivec awt boundschecking +cxx d doc fixed-point +fortran gcj go graphite hardened ip28 ip32r10k libssp mudflap multilib multislot n32 n64 +nls nopie nossp +nptl objc objc++ objc-gc +openmp regression-test +sanitize vanilla}
     Installed versions:  4.7.3-r1(4.7)^s(09:43:25 30.09.2014)(cxx fortran nls nptl openmp -altivec -awt -doc -fixed-point -gcj -go -graphite -hardened -libssp -mudflap -multilib -multislot -nopie -nossp -objc -objc++ -objc-gc -regression-test -vanilla)
     Homepage:            http://gcc.gnu.org/
     Description:         The GNU Compiler Collection

вон те циферки в скобочках и есть версии/номера/указатели слотов

Deleted
()

Зачем в отдельный слот? Нужно ли это?

Да, нужно. Так у тебя в системе будет несколько gcc. Программы, которые требуют конкретную версию, найдут его, которым все равно - будут использовать дефолотную. Дефолтная выбирается с помощью eselect, но в случае gcc это gcc-config -l (это показывает доступные, не бойся запускать).

Это делается для пакетов, которые могут ломать совместимость при переходе от версии к версии.

А посмотреть доступные - да чем хочешь, хоть emerge, хоть eix - покажет несколько установленных версий.

python, php, perl, gentoo-sources - туда же.

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

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

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

т.е. если не ставить в отдельный слот, не всё будет собираться этим новым gcc?

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

По остальному ответил выше.

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

т.е. если не ставить в отдельный слот,

Если обновление ломает ABI, то «не ставить в отдельный слот» == «поставить новую версию в новый слот и удалить старую версию», если новая версия «нуждается» в новом слоте, то она и поставится в новый слот, тут ты не можешь выбирать, и если у тебя в системе нет больше программ завязанных на старое ABI, старая версия удалится при --depclean. Это верно для большинства пакетов. С гцц немного другое, http://wiki.gentoo.org/wiki/Upgrading_GCC/ru

UPD слоты есть не у всех пакетов, и написанное выше действительно только для пакетов имеющих слоты.

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

А посмотреть доступные - да чем хочешь, хоть emerge, хоть eix

я имел в виду не для конкретного пакета, а вообще. стало интересно, что в системе в нескольких версиях. походу придётся как-то парсить на совпадения имён вывод equert l \*

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

походу придётся как-то парсить на совпадения имён вывод equert l \*

но зачем? если --depclean не удалил старые версии из старых слотов, то они чем то используются => удалять их не стоит.

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

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

Слотами распоряжается не пользователь, а мейнтейнеры пакетов. Слоты жёстко прописаны в ebuild'ах. На тебе как пользователе это отражается только в том смысле, что для некоторых пакетов у тебя в системе может стоять несколько версий одновременно.

Получить список всех пакетов, для которых установлено несколько версий, а также тех, у которых значение SLOT не равно 0, можно каким-то колдовством с eix, я сходу не могу сказать, как. Возможно, действительно, нет лучшего способа, чем обрабатывать вывод eix -i.

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

Хм. Наверное, так правильней:

$ EIX_LIMIT=0 eix -I2 --format '<installedversions:NAMEASLOT>'

Kroz ★★★★★
()

В man'ах portage и emerge тема слотов не раскрыта. На gentoo.org тоже.

facepalm.jpg.tar.gz (10Gb)

Зачем в отдельный слот? Нужно ли это?

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

Уткинг и гуглинг тоже не помог.

Да ты чо?

Гуглил по запросу 'gentoo gcc upgrade'

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

facepalm.jpg.tar.gz (10Gb)

Представляю сколько в распакованном виде... :o

anonymous
()

Слоты это прекрасно и круто - реализовано посредством программной логики пакетов. В идеале все должно быть в слотах, когда много зависимостей. И совсем в идеале: возможность собрать допотопный софт, допотопным компилятором.

Единственное неудобство - в разных пакетах переключаться по разному. Могут потребоваться дополнительные манипуляции.

В случае gcc: gcc-config, в остальных случаях много экземпляров из eselect-модулей.

Смотри gentoo gcc upgrade wiki и wrt bug # на страничке ebuild-а

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

Да ты чо?

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

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

в разных пакетах переключение по разному

у меня вот automake в двух версиях. eselect для него нету...

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

а вообще странно, что мейтейнеры до сих пор не автоматизировали выбор версии gcc и переустановку libtool

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

затем что, судя по всему, это обновление ломает ABI.

Нет, просто смена минорной версии gcc. Много чего ломается и из-за причин не связанных с ABI.

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