Что такое multilib linux

Что такое multilib и как с ним работать

Разработка на C# под linux
https://wiki.gentoo.org/wiki/Project:Multilib
https://wiki.gentoo.org/wiki/Multilib
https://wiki.gentoo.org/wiki/Multilib/gx86-multilib

multilib-build.eclass (docs) adds support for building regular ebuilds for multiple ABIs.
multilib-build eclass is seldom inherited directly. Instead, its API is exposed via other eclasses such as multilib-minimal.
multilib-minimal.eclass (docs)

Разработка mva

http://paste.pirate-party.ru/msWCJ5fd.txt
The problem was in that thing: if just call econf with
ECONF_SOURCE=$ in multilib_src_configure,
then it was fail as above.
But if keep ECONF_SOURCE=».», but do multilib_copy_sources in prepare instead — all works fine.
It looks like buildsystem artifact, but as it works with multilib_copy_sources — let it be 🙂
!meta -v mono
user: dev-lang/mono; maintainers: dotnet
user: (dotnet@gentoo.org) angelos, cynede

другие операционные системы тоже имеют нерешенные проблемы с организацией сборки Mono для режима multilib:
https://ask.fedoraproject.org/en/question/66853/unresolved-dependecies-with-mono/
и решенные проблемы, которые всё равно являются проблемами, так как плохо (никак) задокументированы:
http://askubuntu.com/questions/453681/gcc-wont-link-with-m32

gcc man page directed me to the ‘-m32’ and ‘-m64’ options. These options generate code for 32-bit or 64-bit environments, respectively.
The 32-bit environment sets int, long and pointer to 32 bits and generates code that runs on any i386 system.
The 64-bit environment sets int to 32 bits and long and pointer to 64 bits and generates code for AMD’s x86-64 architecture.

Зачем вообще собирать mono для 32-битного окружения? Ну кто-то как-то может создавать 32-битные программы, которые захотят использовать Mono. А у mono есть подводная часть, написанная на C/C++, вот она должна быть собрана в двух вариантах — 64-х битном и 32-х битном.
Что в эту часть входит конкретно?

Источник

Multilib в Linux

Много ли гемора с multilib (i386 || x86_64) в вашем дистрибутиве Linux? Получается, что нужно держать две версии библиотеки для двух архитектур, и выставлять приоритет x86 либам для x86 софта? В маке, например, компилируется одна либа или один бинарник, и он включает в себя сразу две архитектуры, есть ли такое в Linux?

Multilib нужен для x64 систем и: Skype, Wine, Flash, Chrome (скоро придёт x64) и прочего.

и выставлять приоритет x86 либам для x86 софта?

дамп мозга какой-то. почитай про dynamic linking, man ld.so

ничего дежать не нужно, оно само на hdd лежит

Много ли гемора с multilib (i386 || x86_64) в вашем дистрибутиве Linux?

нет вообще никакого гемора, просто автоматом включается USE=abi_x86_32 для зависимостей, и прописывается по —autounmask-write

Много ли гемора с multilib (i386 || x86_64) в вашем дистрибутиве Linux?

Большую часть библиотек в Debian можно установить одновременно в вариантах для нескольких архитектур (они будут сложены в /usr/lib/, например, /usr/lib/i386-linux-gnu/). Некоторые из-за упрямства мейнтейнеров могут конфликтовать со своими вариантами для других архитектур.

Skype для Debian зависит от 32-битных библиотек и так работает даже на 64-битной системе.

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

Много ли гемора с multilib (i386 || x86_64) в вашем дистрибутиве Linux?

Debian. Нужно один раз выполнить dpkg —add-architecture i386 , и после # apt-get update будет работать. Раньше встречались глюки вроде невозможности одновременно поставить i386 и amd64 версии одной библиотеки, сейчас я их не встречаю.

Читайте также:  Не устанавливается загрузчик линукс

Установка skype:i386 автоматически тянет нужные i386 версии библиотек.

И в Windows, и в Mac OS X есть возможность поставить 64-битный хром. Недавно новость проскакивала на эту тему. В Linux он уже давно 64-битный.

Источник

Official repositories (Русский)

Репозиторий — хранилище пакетов программ, которые можно загрузить и установить на компьютер.

Официальные репозитории Arch Linux содержат наиболее важное и популярное программное обеспечение, которое можно легко получить и установить при помощи pacman. Эти репозитории поддерживают мейнтейнеры пакетов.

Пакеты в официальных репозиториях постоянно обновляются, при этом старые версии пакетов сразу удаляются. В Arch нет главных (major) релизов дистрибутива: каждый пакет обновляется сразу после того, как его новая версия становится доступна в upstream. Каждый репозиторий полноценен в том смысле, что содержит в себе совместимые между собой версии программ.

Contents

Стабильные репозитории

Этот репозиторий можно найти в каталоге . /core/os/ на каждом из доступных зеркал.

core содержит пакеты для:

  • Загрузки Arch Linux
  • Подключения к интернету
  • Сборки пакетов
  • Управления и восстановления поддерживаемых файловых систем
  • Процесса установки системы (например, openssh )

а также все необходимые зависимости этих пакетов (необязательно из makedepends) и мета-пакета base .

core имеет достаточно строгие требования к качеству. Разработчики/пользователи должны подтвердить (в ответ на signoff-запрос в почтовой рассылке) работоспособность обновлений, прежде чем они будут приняты. Для малоиспользуемых пакетов обычно достаточно следующих шагов: информирование пользователей об обновлении, запрос подтверждений, удержание пакета в #testing около недели (в зависимости от серьёзности изменений), отсутствие серьёзных баг-репортов и неявное подтверждение от мейнтейнера пакета.

extra

Этот репозиторий можно найти в каталоге . /extra/os/ на каждом из доступных зеркал.

extra содержит все пакеты, которые не подходят для core. Например: Xorg, оконные менеджеры, веб-браузеры, медиаплееры, инструменты для работы с языками, такими как Python и Ruby, и многое другое.

community

Этот репозиторий можно найти в каталоге . /community/os/ на каждом из доступных зеркал.

community содержит пакеты из AUR, принятые доверенными пользователями. Некоторые из этих пакетов в конечном итоге могут оказаться в репозиториях core или extra, если разработчики посчитают их важными для дистрибутива.

multilib

Этот репозиторий можно найти в каталоге . /multilib/os/ на каждом из доступных зеркал.

multilib содержит 32-битное программное обеспечение и библиотеки, которые можно использовать для запуска и сборки 32-битных приложений на 64-битных системах (например, wine , steam и т.д.).

32-битные библиотеки хранятся в директории /usr/lib32/ при включённом репозитории multilib.

Включение multilib

Раскомментируйте раздел [multilib] в /etc/pacman.conf , чтобы включить репозиторий multilib:

Затем обновите систему и установите необходимые multilib-пакеты.

Отключение multilib

Выполните следующую команду, чтобы удалить все пакеты, установленные из репозитория multilib:

Читайте также:  После того как переустановили windows

Если вы столкнулись с конфликтами с gcc-libs, переустановите пакет gcc-libs и группу base-devel .

Закомментируйте раздел [multilib] в /etc/pacman.conf :

Тестовые репозитории

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

Требование тестирования пакетов в таких репозиториях обязательно только для пакетов из репозитория core и пакетов, затрагивающих множество других программ (например, perl и python ), а также обычно применимо к большим коллекциям ПО, например, GNOME или KDE.

testing

Этот репозиторий можно найти в каталоге . /testing/os/ на каждом из доступных зеркал.

testing содержит пакеты, являющиеся кандидатами на внесение в репозитории core и extra.

Новые пакеты попадают в testing в следующих случаях:

  • Они предназначены для репозитория core. Все пакеты для core сперва должны пройти через testing.
  • Есть вероятность того, что они повредят что-либо при обновлении, в следствие чего их необходимо сперва протестировать.

testing — единственный репозиторий, в котором могут быть совпадения имён с другими официальными репозиториями. Если он включён, он должен быть первым репозиторием среди перечисленных в файле /etc/pacman.conf .

community-testing

Этот репозиторий похож на репозиторий testing, но создан для пакетов, являющихся кандидатами на внесение в репозиторий community.

multilib-testing

Этот репозиторий похож на репозиторий testing, но создан для пакетов, являющихся кандидатами на внесение в репозиторий multilib.

gnome-unstable

Этот репозиторий содержит пакеты с будущим релизом (или кандидатом в релиз) окружения рабочего стола GNOME до их перевода в главный репозиторий testing.

Добавьте нижеприведенные строки в файл /etc/pacman.conf , чтобы включить данный репозиторий:

Репозиторий gnome-unstable должен быть первым в списке репозиториев (в том числе выше записи для репозитория testing).

Информацию об относящихся к упаковке багах сообщайте в нашу систему отслеживания ошибок, прочая информация должна направляться непосредственно разработчикам на GNOME Gitlab.

kde-unstable

Этот репозиторий содержит самую свежую бета-версию или версию-кандидат на выпуск KDE Plasma и Applications.

Добавьте нижеприведенные строки в файл /etc/pacman.conf , чтобы включить данный репозиторий:

Репозиторий kde-unstable должен быть первым в списке репозиториев (в том числе выше записи для репозитория testing).

Отключение тестовых репозиториев

Если вы ранее включили тестовые репозитории, а теперь решили их отключить, необходимо:

  1. Удалить (закомментировать) их из файла /etc/pacman.conf .
  2. Выполнить pacman -Syuu , чтобы «откатить» обновления из этих репозиториев.

Второй пункт необязателен, но помните об этом на случай, если вы заметите какие-либо проблемы.

Репозитории Staging

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

См. [1] для получения информации об исторических деталях.

Читайте также:  Iptv для компьютера windows 10

Историческая справка

Разделение репозиториев появилось по историческим причинам. Когда дистрибутивом не пользовалось много людей, был только один репозиторий, известный как official (нынешний core). В то время official содержал в основном приложения, которые предпочитал Джадд Винет (Judd Vinet — основатель Arch Linux). Репозиторий был устроен таким образом, чтобы содержать «всего по одному»: одно окружение рабочего стола, один основной браузер и т.д.

Конечно, были пользователи, которым не нравился выбор Джадда, и, когда появилась удобная система сборки пакетов, они начали создавать собственные пакеты. Эти пакеты вошли в репозиторий unofficial и поддерживали их другие разработчики, а не Джадд. В конце концов, разработчиками было принято решение поддерживать оба репозитория, и названия official и unofficial перестали отображать их истинный смысл. Примерно в районе версии 0.5 названия были изменены на current и extra.

Вскоре после выхода версии 2007.8.1, current был переименован в core, чтобы не было неоднозначностей в трактовке того, что, собственно, должен содержать репозиторий. Сейчас репозитории практически равны в глазах разработчиков и сообщества, но core имеет некоторые отличия. Самое главное из них — то, что только пакеты из core включаются в установочные CD и релизы. Этот репозиторий все ещё содержит полноценную систему Linux, однако, скорее всего, это не та система, которую вы хотели бы использовать.

Примерно между версиями 0.5 и 0.6 обнаружилось, что есть большое количество пакетов, которые разработчики не хотели поддерживать. Джейсон Чу (Jason Chu) создал неофициальные «Репозитории Доверенных Пользователей» (Trusted User Repositories), где доверенные пользователи могли размещать созданные ими пакеты. Также существовал репозиторий staging, из которого пакеты могли быть перенесены в официальные репозитории одним из разработчиков Arch Linux, но, если не считать этого пункта, разработчики и доверенные пользователи были практически равны.

Такое разделение работало до тех пор, пока доверенным пользователям не надоело поддерживать собственные репозитории, а обычные пользователи не захотели выкладывать свои пакеты. Это привело к развитию AUR. Доверенные пользователи объединились в меньшую по размеру группу, которая сейчас поддерживает репозиторий community. Доверенные пользователи все ещё образуют отдельную от разработчиков Arch Linux группу и довольно мало общаются между собой. Тем не менее, популярные пакеты время от времени все ещё перемещают из community в extra. AUR позволяет также обычным пользователям выкладывать свои файлы PKGBUILD.

После того, как однажды ядро из репозитория core поломало множество систем, в репозитории была введена политика подтверждения («core signoff policy»). С тех пор все обновления пакетов для core должны сперва пройти через репозиторий testing и только после нескольких подтверждений («signoffs») от других разработчиков пакет можно перенести. Через какое-то время было замечено, что некоторые пакеты в core почти не используются, а число подписей пользователей и отсутствие отчётов об ошибках неофициально стали критерием для утверждения таких пакетов.

В конце 2009 и начале 2010, в связи с созданием новых файловых систем и желанием поддерживать их при установке, а также осознанием того, что репозиторий core никогда не был чётко структурирован (просто «важные пакеты, выбранные разработчиками»), назначение репозитория было сформулировано более точно.

Источник

Оцените статью