Как добавить архитектуру i386 в ubuntu

Обновлено: 08.07.2024

Multiarch позволяет вам устанавливать пакеты, предназначенные для различных архитектур на одну и ту же машину. Это полезно для различных задач, но наиболее общая задача - установка 64 и 32-битных программ на одной машине с автоматическим разрешением зависимостей. В общем, вы можете иметь библиотеки более чем одной архитектуры установленные вместе и приложения для той или иной архитектуры, установленные как альтернативы. Заметьте что при этом не обязательно версии приложений под различные архитектуры должны быть установлены вместе.

Чтобы узнать текущую архитектуру, набираем dpkg --print-architecture. (Обратите внимание, что архитектура на самом деле относится к "ABI" (Application Binary Interface), а не набор инструкций (ISA). Так, например, armel и armhf различные архитектуры потому, что они имеют различные вызовы библиотек ABIs, хотя используют одинаковый набор инструкций.

Пакеты можно указывать как 'package:architecture', например libc:i386 и libc:amd64, обратите внимание что семантика в dpkg и apt немного отличается, поэтому вы можете получить различные результаты, но они всегда будут безопасны и не двусмысленны. Имя пакета 'package', всегда будет соответствовать текущей архитектуре apt.

Доступные архитектуры можно посмотреть dpkg --print-foreign-architectures.dpkg будет управлять пакетами для этих архитектур, а также архитектуры машины.

Заголовок 'Multi-Arch' в пакете соответствует всем multiarch-aware пакетам.

  • For an unchanged package you can choose which arch version of a package to install (e.g. 'amd64' or 'i386').
  • If a package is marked 'Multi-Arch: foreign', then it can satisfy dependencies of a package of a different architecture (e.g 'make:amd64' will satisfy a dependency on make for any-architecture package).
  • To enable more than one architecture version of a package to be installed at the same time (generally libraries and dev- packages) files need to be moved so they don't clash. These packages are marked 'Multi-Arch: same'.

Packages marked 'Multi-Arch : allowed also exist which can be treated as either :same or :foreign depending on how they are depended-on.

Packagers are currently working through the distro, starting with the most useful packages for making multi-arch aware. See the multiarch spec and implementation howto for details of how it all actually works, and how to update packages to take advantage of the functionality.

Availability

You need a multiarch-aware dpkg and apt.

In Debian dpkg this is present since 1.16.2. In Ubuntu this is present since natty (v1.15.8.10ubuntu1). Check by seeing if dpkg --print-foreign-architectures is understood.

Apt is multiarch-aware if it supports -o APT::Architectures. This is available from version 0.8.13 onwards. However there are many multiarch-related improvements and bug-fixes in later apt versions (some required by Debian dpkg 1.16.2 to properly enable multiarch), such as apt-get build-dep -a cross-dependency support, so the later the better in general up to at least 0.9.4.

Prior to apt 0.9 in Debian, dpkg can get stuck (but only if multiarch is enabled) during upgrades when it is not told which arch package it should be configuring by apt. (dpkg: error: --configure needs a valid package name but 'gcc-4.7-base' is not: ambiguous package name 'gcc-4.7-base' with more than one installed instance) dpkg --configure -a will unbung this.

Конфигурация архитектур

Чтобы добавить дополнитульную архитектуру (в Debian для dpkg 1.16.2 и выше):

Обратите внимание: ничего не изменится, пока не обновите список пакетов.

Для удаления архитектуры

dpkg архитектуры хранятся в /var/lib/dpkg/arch.

Setting up apt sources

Apt defaults to using the set of architectures reported by dpkg, and any unqualified architecture deb lines in /etc/apt/sources.list, which is usually what you wanted. This can be overridden using APT::Architecture=<arch> to set the default architecture or APT::Architectures="<arch> <arch>".

apt-sources can be architecture qualified with this syntax. This is very useful on Ubuntu's split archive. It is not normally necessary on Debian unless your normal archive does not mirror the extra architectures you are interested in.

Arch-qualifying deb-src lines doesn't make any sense.

Note: There is a bug in apt versions >=0.9.7 and <0.9.7.2 which means that putting 'arch=armel,armhf' on one line didn't work - you needed two separate entries.

after adding new architectures.

Установка/удаление пакетов

Для установки пакета из архитектуры не по-умолчанию, нужно ввести в командной строке:

Зависимости пакета будут установлены автоматически, для корректной архитектуры пример:

Installing cross-dependencies

To install build-dependencies of a package before cross-building:

This only works when all the 'tools' packages depended-on are marked Multi-Arch: foreign, any depended-on libraries which are also needed on the BUILD machine, and -dev packages which are needed for both HOST and BUILD architectures are made co-installable ('Multi-Arch: same' with arch-qualified paths), and any exceptions to the default rules are marked package:any or package:native in the package source. This process is ongoing.

When it doesn't work you can often get the dependencies installed with a manual apt-get line: e.g instead of

Details of how this resolves are on MultiarchCross.

Installing Android SDK compat libraries

Some users using the Android SDK might encounter problems when trying to run build-tools or platform-tools on amd64 bit platform. As replacement for ia32-libs, users should be fine just installing the following libraries:

Регулярно работая в Ubuntu Linux, я сталкиваюсь с тем, что для моей архитектуры попросту нет пакета приложения, который бы позволил установить нужное мне приложение под мою архитектуру, то есть в наше время как вы все уже должны знать(знаете), разработчики в большей мере уделяют основное внимание при создании ПО 64-bit архитектуре, для 32-bit такого внимания нет.

Так вот, например работая на компьютере с 32-bit архитектурой, вы хотите установить приложение которое не доступно для вашей архитектуры, но доступно для 64-bit, в данном случае есть выход. Конечно не всегда он срабатывает, но выручает часто.

Наведу пример, скачали мы пакет определенного приложения, пускай это будет pak-name-amd64.deb, вам нужно установить данный пакет в Ubuntu, вы попробуете конечно выполнить установку пакета подобным способом:

pak-name-amd64.deb is for architecture amd64 ; the package cannot be built on this system

То есть нам сообщается, что этот пакет только под 64-bit архитектуру и мы не можем его установить при нашей 32-bit, что мы делаем в данном случае? Мы добавим в систему временно 64-bit архитектуру для установки пакета и после установки удалим чтобы это не мешало при дальнейшей работе с системой:

sudo dpkg --add-architecture amd64
sudo apt-get update

После выполнения данной команды мы добавили 64-bit архитектуру нам в систему, после попробуем выполнить установку пакета выше:

Вы увидите, что установка пошла, только сразу предупреждаю, не всегда все происходит гладко, часто данный процесс происходит с ошибками, ничего не трогаем и даем возможность приложению установиться до конца, после установки просто выполним команду:

В общем, установили мы приложение и вроде-бы все работает, не забываем удалить 64-bit архитектуру с системы которую мы ранее добавили, так как у нас архитектура 32-bit, выполним в терминале команду:

sudo dpkg --remove-architecture amd64
sudo apt-get update
  • На данном этапе мы решили вопрос установки приложения под 64-bit архитектуру. Аналогичное мы можем проделать и для приложений под 32-bit архитектуру если у нас основная 64-bit, делаем по тому же принципу.

Есть у нас условный пакет с названием - pak-name-i386.deb.

Добавим 32-bit архитектуру в систему:

Добавили 32-bit архитектуру, далее установим наш вымышленный пакет:

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

  • Данная команда проверит и предложит установить пакеты которые не были установлены из-за ошибок при нашей попытке установки приложения выше.

После данных манипуляций так же не забываем удалить 32-bit архитектуру если у вас основная 64-bit, выполним в терминале команду:

sudo dpkg --remove-architecture i386
sudo apt-get update

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

Выбор ранее не выбранного пакета teamviewer.
(Чтение базы данных … на данный момент установлено 315507 файлов и каталогов.)
Распаковывается пакет teamviewer (из файла ./teamviewer_amd64.deb) …
dpkg: зависимости пакетов не позволяют настроить пакет teamviewer:
teamviewer зависит от lib32asound2, однако:
Пакет lib32asound2 не установлен.
teamviewer зависит от lib32z1, однако:
Пакет lib32z1 не установлен.
teamviewer зависит от ia32-libs, однако:
Пакет ia32-libs не установлен.

dpkg: ошибка при обработке параметра teamviewer (--install):
проблемы зависимостей — оставляем не настроенным
При обработке следующих пакетов произошли ошибки:
teamviewer

На данном этапе, чтобы решить вопрос установки приложения TeamViewer, мы добавляем 32-bit архитектуру в 64-bit(ваша текущая), выполним команду:

После установим пакеты которые не установились из-за несоответствия архитектуры, выполним команду:

Соглашаемся установить пакеты и жмем клавишу Enter, после проверяем, что TeamViewer успешно установился, удалим 32-bit архитектуру:

sudo dpkg --remove-architecture i386
sudo apt-get update

Как писал выше по установке TeamViewer под 64-bit архитектуру, у меня вот 32-bit, я соответственно ставлю под свою архитектуру и далее мы встречаемся с ошибкой:

dpkg: error processing package teamviewer (--install):
проблемы зависимостей — оставляем не настроенным
При обработке следующих пакетов произошли ошибки:
teamviewer

  • Что мы делаем в данном случае чтобы приложение подтянуло нужные ему пакеты и установилось до конца и у нас была возможность работать с приложением TeamViewer.

Достаточно в этой ситуации просто выполнить команду:

устанавливаем зависимости при установке TeamViewer

  • Далее согласиться установить пакеты нажав на клавишу Enter. Как видим неустановленные пакеты подтянулись и приложение удачно установилось.

Дополнительный способ установки пакетов несоответствующих вашей архитектуре:

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

  • В данной команде применяется атрибут force который дает команду системе не обращать внимание на несовместимость архитектуры где запускается установка пакета, то есть при запуске установки с данным атрибутом, система просто доверяет как родному пакету и соглашается на установку приложения, ну а если в итоге влетят дополнительные ошибки несовместимости приложения, то уже так и быть.

Так же если кому интересно, советовал бы посмотреть видео, так же узнаете некоторые дополнительные команды:

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

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

Ubuntu 32 64 bit

18 июня 2019 г. на сайте Ubuntu появилось довольно громкое заявление о том, что разработчики системы приняли решение полностью отказаться от поддержки 32-разрядной архитектуры i386.

Они сообщили, что уже, начиная с Ubuntu 19.10 в репозиториях больше не будет паркетов для архитектуры i386. Также было принято решение отключить обновление Ubuntu 18.04 до версии 18.10 для архитектуры i386.

Ubuntu 32bit

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

Что предложили взамен

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

Разработчики Ubuntu предложили для таких пользователей использовать Ubuntu 18.04 LTS, которая пока продолжит нативную поддержку i386 до апреля 2023 года (дата окончания поддержки Ubuntu 18.04 LTS). Для более новых версий Ubuntu предлагалось использовать chroot или контейнеры Ubuntu 18.04. Также высказалось предположение, что готовые snap-пакеты (с использованием 18.04-derived library runtime) предположительно будут работать в более поздних выпусках Ubuntu.

Скандал

После такого заявления в среде линуксоидов разгорелся не шуточный скандал. Множество пользователей остались недовольны таким решением. На форумах и профильных ресурсах разгорелись обширные дискуссии.

Ubuntu 32bit

Ubuntu 32bit

В Ubuntu решили провести тесты

21 июня на форуме Ubuntu Алан Попе (Community Manager в Ubuntu) опубликовал результаты тестирования запуска нескольких 32-разрядных игр в Ubuntu 19.10, в которой были полностью удалены пакеты i386 и отключены репозитории для i386.

Алан выбрал 6 игр из своей коллекции, некогда купленных на GOG.

В качестве тестовой площадки использовалась Ubuntu 19.10 (64-bit), работающая в VirtualBox. Были выполнены команды по удалению i386 и отключению репозиториев:

Затем была выполнена установка Wine64:

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

  • GOG Theme Hospital
  • GOG Quake The Offering

Установились но не запустились (ошибки или черный экран):

  • GOG Braid
  • GOG Surgeon Simulator 2013
  • FTL Advanced Edition
  • Shadow Warrior

Canonical пересмотрела свое решение

Было принято новое решение — оставить поддержку только необходимых 32-разрядных пакетов для архитектуры i386 в Ubuntu 19.10 и Ubuntu 20.04 LTS.

Ubuntu 32bit

Было решено выбрать определенные 32-разрядные пакеты, которые необходимы для поддержки устаревшего программного обеспечения. Для составления списка таких пакетов будет привлечено сообщество, включая сообщества Wine и UbuntuStudio. Также в Canonical указали на то, что если после релиза Ubuntu каких-то пакетов окажется недостаточно, то они будут включены после релиза.

В будущем Canonical планирует совместно с Wine, UbuntuStudio и игровыми сообществами обеспечить переход на контейнерную технологию для поддержи 32-разрядных библиотек.

linux wine featured 800x400 1

Выпущена новая версия Wine 6.20, которая теперь предоставляет пакеты для Ubuntu 21.10 в своем официальном репозитории.

  • MSXml, XAudio, DInput и несколько других модулей, преобразованных в PE.
  • Несколько системных библиотек поставляются в комплекте с исходным кодом для поддержки PE-сборок.
  • Джойстик HID теперь является единственным поддерживаемым бэкендом джойстика в DirectInput.
  • Улучшена поддержка сборок MSVCRT в Winelib.
  • Различные исправления ошибок в win-приложениях, включая Emergency 3, ZWCAD 2020, Diablo 2 и другие.

Как установить Wine 6.20 в Ubuntu:

Нажмите комбинацию клавиш Ctrl+Alt+T на клавиатуре, чтобы открыть терминал, затем выполните команды, приведенные ниже, одну за другой.

1. Включите поддержку 32-битной архитектуры.

В то время как современные компьютеры имеют 64-битную архитектуру процессора, Wine является 32-битным программным обеспечением. Поэтому сначала вы можете включить поддержку 32-битной архитектуры, выполнив команду в терминале:

sudo dpkg --add-architecture i386

2. Установите ключ для репозитория Wine.

Поскольку команда apt-key устарела по соображениям безопасности, здесь я расскажу о новом методе установки ключа стороннего репозитория в Ubuntu. Хотя apt-key более эффективен и все еще работает, вы можете использовать его, если не заботитесь о кибербезопасности!

a.) Сначала выполните команду в терминале, чтобы загрузить ключ:

b.) Затем конвертируйте ключ в gpg, сначала импортировав его во временную связку ключей, а затем экспортировав его в gpg:

gpg --no-default-keyring --keyring ./winehq-keyring.gpg --import winehq.key
gpg --no-default-keyring --keyring ./winehq-keyring.gpg --export --output winehq.gpg

sudo mkdir /usr/local/share/keyrings
sudo mv winehq.gpg /usr/local/share/keyrings

3. Добавьте репозиторий Wine в вашу систему:

sudo sh -c 'echo "deb [signed-by=/usr/local/share/keyrings/winehq.gpg] https://dl.winehq.org/wine-builds/ubuntu/ impish main" >> /etc/apt/sources.list.d/winehq.list'

После этого apt будет принимать эту ключевую подпись для всех пакетов в этом репозитории и только в этом репозитории.

4. Установите пакет Wine:

Прочтите: Как запустить рабочий стол Linux в Windows с помощью WSL

Наконец, обновите кэш системных пакетов с помощью команды:

sudo apt update

И установите Wine 6.20 (релиз разработки), выполнив команду:

sudo apt install winehq-devel

Читайте также: