Multilib это репозиторий Arch Linux с 32-битными библиотеками, пакеты в нём идут с префиксом lib32. Включаешь его, когда нужны 32-битные приложения: игры из Steam, Wine, старые программы. Для этого раскомментируй секцию [multilib] в /etc/pacman.conf, выполни pacman -Syu и ставь пакеты вида lib32-*. Вся настройка занимает пару минут.
Multilib это официальный репозиторий Arch Linux, в котором лежат 32-битные версии библиотек. Название происходит от слов multi и library: система одновременно использует библиотеки двух архитектур. Пакеты в нём называются с префиксом lib32: lib32-glibc, lib32-mesa, lib32-vulkan-radeon, lib32-libpulse и так далее. По сути, это те же библиотеки, что и в основной ветке, только собранные под архитектуру i686.
Файлы 32-битных библиотек лежат в каталоге /usr/lib32, отдельно от 64-битных в /usr/lib. Благодаря этому обе версии одной библиотеки могут стоять в системе одновременно и не мешать друг другу. Пакеты в multilib собираются из тех же исходников, что и в основной ветке, поэтому версии обычно совпадают.
Зачем они нужны? Современные системы на x86_64 работают в 64-битном режиме, но многие программы до сих пор собираются под 32 бита. Это касается игр из Steam, старых приложений, некоторых драйверов и Wine. Без 32-битных библиотек такие программы просто не запустятся.
Steam и большинство игр в нём распространяются в виде 32-битных бинарников. Даже если сама игра 64-битная, её рантайм может тянуть 32-битные зависимости. Например, Proton и старые версии движков используют 32-битные библиотеки для совместимости. Без multilib Steam не запустится: при старте он ругнётся на отсутствующие файлы вроде libgcc_s.so.1 или libstdc++.so.6.
Wine запускает Windows-программы, и многие из них 32-битные. Для них нужны 32-битные библиотеки Wine, пакет lib32-wine. Если поставить Wine без multilib, часть программ просто откажется работать. Подробнее про настройку Wine читай в статье «Wine и Windows-скрипты».
32-битные библиотеки нужны не только для игр. Некоторые банковские плагины, старые версии браузеров, эмуляторы и профессиональный софт работают только в 32-битном режиме. Если ты не знаешь, нужен ли тебе multilib, скорее всего, он тебе не нужен. Включай его только тогда, когда конкретная программа просит 32-битные библиотеки.
Включай multilib в трёх случаях:
Если ничего из этого не про тебя, multilib можно не трогать. Лишний репозиторий не вредит системе, но и пользы не приносит: 32-битные пакеты занимают место на диске и увеличивают время обновления. Включать multilib «на всякий случай» не стоит.
Как понять, что программа требует 32-битные библиотеки? Обычно при запуске она пишет ошибку вроде error while loading shared libraries: libX11.so.6: cannot open shared object file. В сообщении будет имя файла с суффиксом .so. Найди, какому пакету он принадлежит, через pacman -F, и поставь 32-битную версию из multilib.
Включение занимает две минуты и сводится к правке одного файла.
Открой /etc/pacman.conf редактором с правами root:
sudo nano /etc/pacman.conf
Найди в конце файла секцию:
#[multilib]
#Include = /etc/pacman.d/mirrorlist
Убери решётки в начале обеих строк. Должно получиться так:
[multilib]
Include = /etc/pacman.d/mirrorlist
Сохрани файл и закрой редактор. Секция [multilib] использует тот же mirrorlist, что и остальные репозитории, поэтому отдельно настраивать зеркала для неё не нужно.
После правки конфига выполни полное обновление системы:
sudo pacman -Syu
pacman -Syu синхронизирует базы всех репозиториев, включая только что включённый multilib, и обновит систему. Если обновление зависло или прервалось, читай статью «pacman -Syu завис: как прервать».
Теперь ставь 32-битные пакеты как обычно:
sudo pacman -S lib32-mesa lib32-vulkan-radeon
Искать пакеты можно через pacman -Ss:
pacman -Ss lib32
Вывод покажет все доступные пакеты с префиксом lib32. Выбирай те, что нужны конкретной программе.
Самый простой способ: установить lib32-glibc и убедиться, что пакет действительно 32-битный.
Перед установкой можно проверить, из какого репозитория придёт пакет:
pacman -Si lib32-glibc
В выводе будет строка Repository: multilib. Если репозиторий другой или не указан, значит, пакет ищется не там, где надо.
Ядро Arch Linux собрано с поддержкой 32-битных программ, отдельно включать ничего не нужно. Убедиться можно так:
zgrep IA32_EMULATION /proc/config.gz
Вывод CONFIG_IA32_EMULATION=y означает, что ядро умеет запускать 32-битные бинарники. Если строка отсутствует, ядро собрано без этой опции, и multilib не поможет.
file /usr/lib32/libc.so.6
Вывод должен содержать ELF 32-bit LSB. Если вместо этого видишь ELF 64-bit, значит, пакет пришёл не из multilib, а откуда-то ещё.
pacman -Ql lib32-glibc
Команда покажет список файлов пакета. Пути вида /usr/lib32/... подтверждают, что библиотеки легли в 32-битный каталог. А pacman -Qi lib32-glibc покажет, из какого репозитория пришёл пакет: в строке Repository должно стоять multilib.
После включения multilib Steam ставится обычным способом:
sudo pacman -S steam
Если Steam запустился и не ругается на библиотеки, multilib работает. Про запуск игр на Linux вообще читай статью «PortProton: игры на Linux».
Иногда 32-битный пакет конфликтует с уже установленным. Типичная ошибка: exists on filesystem. Она появляется, когда файл уже лежит на диске, но не принадлежит ни одному пакету. Решение читай в статье «exists on filesystem: конфликт».
Некоторые программы тянут и 64-битную, и 32-битную версию одной библиотеки. Это нормально: lib32-glibc и glibc живут рядом, потому что у них разные каталоги (/usr/lib32 и /usr/lib). Не удаляй одну из версий вручную, иначе сломаешь зависимости.
Если включить multilib и сразу ставить lib32-* без pacman -Syu, можно получить рассинхрон версий. Всегда сначала обновляй систему целиком. Про опасность частичных обновлений читай статью «Частичное обновление: ignorepkg».
Иногда в системе оказываются пакеты, собранные не под твою архитектуру. Это отдельная тема, разобрана в статье «Пакеты из чужой архитектуры».
Некоторые пакеты из AUR тянут 32-битные зависимости, даже если сам пакет 64-битный. Например, сборки игр и эмуляторов часто требуют lib32-* в опциональных зависимостях. Если сборка падает на отсутствии 32-битной библиотеки, включи multilib и поставь её заранее.
32-битные пакеты дублируют часть библиотек, поэтому занимают дополнительное место. Обычно это сотни мегабайт, для игровых систем пара гигабайт. Если место заканчивается, посмотри, какие пакеты съедают больше всего, и почисти кеш pacman.
Отключение делается в обратном порядке.
sudo pacman -Rns $(pacman -Qq | grep '^lib32-'). Команда удалит все пакеты с префиксом lib32- вместе с ненужными зависимостями.[multilib] в /etc/pacman.conf: верни решётки в начало обеих строк.sudo pacman -Syu, чтобы база забыла про репозиторий.Учти: если Steam или Wine остались в системе, они перестанут работать. Поэтому сначала удали их или убедись, что они тебе не нужны.
После отключения multilib пакеты lib32-* не появятся снова при обновлении, но и не удалятся сами. Если ты удалил их командой из первого шага, система вернётся к чистому 64-битному состоянию.
Нет. В свежеустановленной системе секция [multilib] в /etc/pacman.conf закомментирована. Включать её нужно вручную. Установщик archinstall тоже не активирует multilib автоматически.
Скорее всего, нет. Multilib нужен только тогда, когда конкретная программа требует 32-битные библиотеки. Если всё работает без него, не включай.
Проверь, что ты выполнил pacman -Syu после правки конфига. Потом переустанови Steam: sudo pacman -S steam. Если ошибка про отсутствующие библиотеки осталась, посмотри, какой именно файл не найден, и поставь соответствующий пакет lib32-* через pacman -Ss.
Multilib содержит стабильные 32-битные пакеты, testing кандидаты на релиз для основной ветки. Это разные репозитории с разными задачами. Testing включают редко и только для тестирования новых версий.
Можно, но не нужно. Пакеты lib32-* лежат именно в multilib, и без включённого репозитория pacman их не найдёт. Не скачивай их вручную с зеркал и не ставь через pacman -U: зависимости и обновления сломаются.
Multilib это репозиторий с 32-битными библиотеками, который нужен для Steam, Wine и старых программ. Включается он за пару минут: раскомментируй [multilib] в /etc/pacman.conf, выполни pacman -Syu и ставь пакеты lib32-*. Проверить работу просто через file /usr/lib32/libc.so.6. Если multilib больше не нужен, отключи его в обратном порядке. Главное правило: не включай репозиторий «на всякий случай» и не ставь 32-битные пакеты без полного обновления системы. Если что-то пошло не так, отключение multilib занимает столько же времени, сколько и включение.
Задай вопрос в чате — отвечаем быстро, по делу и без воды.
Комментарии