Содержание
Регулярно работая в 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
В общем, установили мы приложение и вроде-бы все работает, не забываем удалить 64-bit архитектуру с системы которую мы ранее добавили, так как у нас архитектура 32-bit, выполним в терминале команду:
sudo dpkg --remove-architecture amd64
sudo apt-get update
Есть у нас условный пакет с названием - 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
Достаточно в этой ситуации просто выполнить команду:
sudo apt-get -f install
Дополнительный способ установки пакетов несоответствующих вашей архитектуре:
sudo dpkg --force-architecture -i Yandex.deb
как видите в конце данной команды прописывается приложение которое мы хотим установить, перед названием файла приложения я не прописывал путь к нему так как я перешел сразу же в директорию в которой лежит пакет яндекс браузера, если вы будете устанавливать с корня, придется перед названием пакета прописать полный путь к директории где он сохранен.
Так же если кому интересно, советовал бы посмотреть видео, так же узнаете некоторые дополнительные команды:
На этом пожалуй все, приложение мы установили, как добавить и удалить нужные нам архитектуры обсудили, после уже практикуемся, пробуем, пользуемся материалом изложенным выше. Как говорил, нет никаких гарантий, что все приложения будут гладко устанавливаться и работать, некоторые устанавливаются без проблем и далее работают отлично, есть некоторые если и установил без ошибок, при клике на ярлык, а оно не запускается и так бывает все это побочные последствия несоответствия архитектуры под которую пишется приложение.
Если у вас все же после прочтения материала выше остались вопросы или вы столкнулись с проблемой при добавлении архитектуры и установке пакета, спрашивайте в комментариях к материалу, постараюсь по возможности ответить каждому.
Лицензия: CC BY-SA 4.0
Благодарность автору!