Как использовать apt-get для загрузки мультиархивной библиотеки?
Можно ли заставить apt-get загрузить мультиархитектурный бинарный файл библиотеки, которую я хочу установить?
Или apt-get не подходит для этого?
3 ответа
@ Ответ Танасиса правильный, я обновил его на 2021 год (Ubuntu 20.04 LTS) для
arm64
а также
armhf
.
Добавьте нужные архитектуры следующим образом:
sudo dpkg --add-architecture armhf
sudo dpkg --add-architecture arm64
Создайте новый файл .list в
/etc/apt/sources.list.d
:sudo touch /etc/apt/sources.list.d/arm-cross-compile-sources.list
Добавьте в этот список источники по умолчанию с префиксом архитектуры (armhf, arm64):
deb [arch=armhf,arm64] http://ports.ubuntu.com/ focal main restricted deb [arch=armhf,arm64] http://ports.ubuntu.com/ focal-updates main restricted deb [arch=armhf,arm64] http://ports.ubuntu.com/ focal universe deb [arch=armhf,arm64] http://ports.ubuntu.com/ focal-updates universe deb [arch=armhf,arm64] http://ports.ubuntu.com/ focal multiverse deb [arch=armhf,arm64] http://ports.ubuntu.com/ focal-updates multiverse deb [arch=armhf,arm64] http://ports.ubuntu.com/ focal-backports main restricted universe multiverse
Обновите, чтобы включить архитектуру по умолчанию (если она еще не включена), в противном случае apt попытается использовать ваши недавно добавленные архитектуры в этих источниках, что может привести к ошибкам, как это было со мной. Добавлять
[arch=amd64]
для каждой строки в/etc/apt/sources.list
следующим образом:deb [arch=amd64] http://us.archive.ubuntu.com/ubuntu/ focal main restricted universe multiverse
Бежать
sudo apt update
и убедитесь, что у вас нет ошибокТеперь установка пакета с новой архитектурой должна пройти успешно:
sudo apt install libasound2-dev:arm64
Сначала, чтобы включить мульти-арку
dpkg --add-architecture <arch>
Теперь настройте apt-sources, чтобы добавить новые репозитории новой архитектуры (если вам нужно)
теперь обновите ваш sources.list
sudo apt-get update
Теперь вы можете устанавливать многоархивированные пакеты через apt-get регулярно, но вы должны указать, какую архитектуру вы хотите загрузить
apt-get install package:architecture
пример:
apt-get install gedit:i386
За arm64
Я делаю следующее на /etc/apt/sources.list
:
Ubuntu 16.04 (xenial) пример:
Я отмечаю все текущие (по умолчанию) репо как [arch=<current_os_arch>]
например,
deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ xenial main restricted
И я добавил следующее:
deb [arch=arm64] http://ports.ubuntu.com/ xenial main restricted
deb [arch=arm64] http://ports.ubuntu.com/ xenial-updates main restricted
deb [arch=arm64] http://ports.ubuntu.com/ xenial universe
deb [arch=arm64] http://ports.ubuntu.com/ xenial-updates universe
deb [arch=arm64] http://ports.ubuntu.com/ xenial multiverse
deb [arch=arm64] http://ports.ubuntu.com/ xenial-updates multiverse
deb [arch=arm64] http://ports.ubuntu.com/ xenial-backports main restricted universe multiverse
Не уверен, что это исправление ошибок, но, по крайней мере, оно работает.
Примечание: не забудьте добавить стороннюю архитектуру: dpkg --add-architecture arm64