LINUX.ORG.RU

Пытаюсь переехать на multilib

 


0

1

Понадобился wine, а текущий профиль:

default/linux/amd64/17.0/no-multilib

Поменял на:

default/linux/amd64/17.0

и получаю:

/usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/libgcc.a when searching for -lgcc
/usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: cannot find -lgcc
/usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/libgcc_s.so.1 when searching for libgcc_s.so.1
/usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: cannot find libgcc_s.so.1
/usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/libgcc.a when searching for -lgcc
/usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: cannot find -lgcc
collect2: error: ld returned 1 exit status
 * Failed to compile the ABI test. Broken host glibc?

Ничего толкового нагуглить не удалось.

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

Смена CHOST и no-multilib→multilib (не наоборот) — задача весёлая. Меня миграция x86→amd64 утомила ещё на половине пути, и я просто взял чистый stage3 и постепенно перетащил туда свои конфиги. Плясок меньше.

mord0d ★★ ()

Может лучше Винду поставить на дуалбот или если есть другой диск, то лучше на него, а не заниматься извращениями? Если какая то одна определённая игра нужна, то ещё имеет смысл заморачиваться, если больше одной, то лучше винда. Только не нужно вопить, что мол винда не тру. Винда только для игр и на отдельном диске, а всё остальное - линукс.

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

Щас бы я, чтобы поиграть, свои 9000 окон (личных, рабочих, IDE, доки) на двух юзерах, 6 активитях и 24-х рабочих столах закрывал и перезагружался в винду...

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

Может я туплю, но почему не развернуть stage3 поверх (с подходящим gcc!), оставив в покое лишь /etc и /var (соответственно конфиги и список установленных пакетов)

И тогда сразу пересобирать систему.

Alice_the_AI ()

Зачем? Собери 32 битный чрут, у тебя там всё равно около одной полпрограммы 32 битной запускаться будет. Ещё лучше собрать статично в 32 бита всё что тебе нужно (при условии регулярного обновления, конечно).

Я тут попытался обновить 13 профиль прошлогодний на 17, что-то пошло не так. Пришлось -C-шить с десяток пакетов, причём там достаточно минимальный чрут был. Хотя там же нашёл гплную джаву и андроид-тулс. А потом мне надоело.

Но где-то был скрипт для раскатывания свежего 32 битного чрута и синхронизации по юзам с хостом, надо поискать будет. А то юзы слишком поплыли с тех пор, там и компилятор был рабочий 4, а тут уже 8 забагованный, в общем, проще пересобрать будет с нуля.

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

Почему не начал с libtool? Обычно его сначала советуют пересобирать перед обновлением gcc, например, если меняется ABI. Или после.

grem ★★★★★ ()
Последнее исправление: grem (всего исправлений: 1)

Можешь закрывать тему:

Warning
Switching from a no-multilib to a multilib-enabled profile is currently not supported, so think over your decision twice before you use the no-multilib profile.

https://wiki.gentoo.org/wiki/AMD64/FAQ#What_is_multilib_and_how_can_I_use_it.3F

Либо ты делаешь 32bit chroot, либо заново разворачиваешь stage3.

https://wiki.gentoo.org/wiki/Project:AMD64/32-bit_Chroot_Guide

А ты подумал дважды? ;)

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

а зачем закрывать?

можно попробовать, как писал выше, накатить мультилибный тулчейн, затем пересобрать его, далее пересобрать @system, и вперёд.

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

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

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

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

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

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

Во-первых, не «U», а «u». Во-вторых, в данном случае именно «avDN», без --update, разово. Потому что глобальное изменение, но без обновлений пакетов. А для обновлений тогда уж нужно что-то вроде «-avuDNt --verbose-conflicts --keep-going @world»

XMs ★★★★★ ()

В документации писали, что штатных способов нет. А смысл, если всё равно пересобирать нужно всё.
Насколько я пониманию, эти профили несовместимы, поэтому даже если соберешь тот же glibc, всё остальное с no-multilib сломается.
Лет 10 назад я как-то делал 32 -> 64, но это проще, ибо разделены lib32 и lib64.
В общем, думаю более реально распаковать stage3, сохранив конфиги и word.

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

Тут к слову более интересный вопрос. Вроде как nvidia планирует убрать 32-х битный драйвер в ближайшее время, тогда и multilib накроется медным тазом. Или нет?

То есть есть ли смысл долбаться, если но «завтра» всё равно сломается.

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

тут два варианта:
1 - мейнтейры пойдут в ногу с нивидией
2 - оставят какую-то версию для 32-бит
Если таки сломается, всегда можно перейти на no-multilib.

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

Ага, пользователи Стим (то есть игр в нём)будут ужасно рады. Как и некоторым пользователям виндоус им для запуска разных игр им придётся ставить разные версии драйверов.

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

не «U», а «u»

верно, my bad

но без обновлений пакетов

почему? если есть обновления, неплохо было бы их поставить заодно

-avuDNt --verbose-conflicts --keep-going @world

av - у меня уже давно в EMERGE_DEFAULT_OPTS

t - выхлоп становится слишком длинным, нечитаемым

--verbose-conflicts а это зачем? и так по моему всё достаточно подробно, ни разу не испытывал нужды в большей степени подробности

--keep-going - только если ставишь обновляться, а сам идёшь по делам (или спать). иначе если запускаешь фоном, а сам продолжаешь работать, гораздо полезнее знать, что что то произошло и мгновенно исправить положение

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

если есть обновления, неплохо было бы их поставить заодно

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


выхлоп становится слишком длинным, нечитаемым

Зато удобно при разборе конфликтов, когда надо понять, какая тварь тянет проблемный пакет.


--verbose-conflicts а это зачем?

Когда-то добавление этого ключа помогло мне избавиться от конфликта.


иначе если запускаешь фоном, а сам продолжаешь работать

А чем это отличается от «пойти по своим делам/спать»? Что так ты не видишь, что процесс остановился, что так. Пусть уж лучше оно всё, что может, соберёт, а пользователь будет разбираться, когда посмотрит. Я, например, пускаю обновления в Drop-down терминале и убираю его, бывает, на несколько часов, а то и на весь день

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

А чем это отличается от «пойти по своим делам/спать»?

тем, что ты остаёшься за компом и увидишь, если процесс прервётся раньше времени

Я, например, пускаю обновления в Drop-down терминале и убираю его

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

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

Вроде как nvidia планирует убрать 32-х битный драйвер в ближайшее время, тогда и multilib накроется медным тазом. Или нет?

Они уже убрали 32-х битный драйвер после 390.х. Но юзерспейсные либы тут не при чем, они как были так и остались

annulen ★★★★★ ()