Установка приложений другой архитектуры в Ubuntu

Как установить приложение другой архитектуры в Ubuntu Linux?

Как добавить/удалить 32-bit/64-bit архитектуру в Ubuntu Linux, вы задавались данным вопросом? Решение есть.

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

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

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

dpkg -i pak-name-amd64.deb

В ответ получите следующее сообщение:

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 архитектуру нам в систему, после попробуем выполнить установку пакета выше:

dpkg -i pak-name-amd64.deb

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

sudo apt-get -f install 
  • После вы увидите сообщение, что система нам предлагает установить пакеты которые не смогли установиться ранее из-за ошибок, просто жмем клавишу - Enter и установка пакетов должна пройти гладко(гарантий нет), у меня это происходило без ошибок.

В общем, установили мы приложение и вроде-бы все работает, не забываем удалить 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 архитектуру в систему:

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

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

sudo dpkg -i pak-name-i386.deb

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

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

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

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

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

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

Выбор ранее не выбранного пакета 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(ваша текущая), выполним команду:

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

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

sudo apt-get -f install

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

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

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

root@Hacker:~/Загрузки# dpkg -i teamviewer_10.0.46203_i386.deb 
Выбор ранее не выбранного пакета teamviewer.
(Чтение базы данных … на данный момент установлено 243957 файлов и каталогов.)
Preparing to unpack teamviewer_10.0.46203_i386.deb ...
Unpacking teamviewer (10.0.46203) ...
dpkg: зависимости пакетов не позволяют настроить пакет teamviewer:
 teamviewer зависит от libjpeg62, однако:
  Пакет libjpeg62 не установлен.

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

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

sudo apt-get -f install

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

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

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

sudo dpkg --force-architecture -i Yandex.deb

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

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

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

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

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

Лицензия: CC BY-SA 4.0

Похожие материалы:
Помогла ли вам статья?
Да Нет
Статья оказалась полезной для 0 человек
p
sudo dpkg --remove-architecture amd64
dpkg: ошибка: невозможно удалить архитектуру «amd64», которая в данный момент используется в базе данных
p
а как потом корректно удалить пакет?
avatar
Выполните по очередности следующие команды:
Код
dpkg --print-architecture
dpkg --print-foreign-architectures
и предоставьте выхлоп сюда.
p
всё, спасибо, сам разобрался
avatar
Опишите ваши действия, возможно другие пользователи столкнутся с подобным и вы поможете другим.
avatar