Как использовать apt-get для загрузки мультиархивной библиотеки?

Можно ли заставить apt-get загрузить мультиархитектурный бинарный файл библиотеки, которую я хочу установить?

Или apt-get не подходит для этого?

3 ответа

@ Ответ Танасиса правильный, я обновил его на 2021 год (Ubuntu 20.04 LTS) для arm64а также armhf.

  1. Добавьте нужные архитектуры следующим образом:

    sudo dpkg --add-architecture armhf

    sudo dpkg --add-architecture arm64

  2. Создайте новый файл .list в /etc/apt/sources.list.d:

    sudo touch /etc/apt/sources.list.d/arm-cross-compile-sources.list

  3. Добавьте в этот список источники по умолчанию с префиксом архитектуры (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
    
  4. Обновите, чтобы включить архитектуру по умолчанию (если она еще не включена), в противном случае apt попытается использовать ваши недавно добавленные архитектуры в этих источниках, что может привести к ошибкам, как это было со мной. Добавлять [arch=amd64]для каждой строки в /etc/apt/sources.listследующим образом:

    deb [arch=amd64] http://us.archive.ubuntu.com/ubuntu/ focal main restricted universe multiverse

  5. Бежать sudo apt updateи убедитесь, что у вас нет ошибок

  6. Теперь установка пакета с новой архитектурой должна пройти успешно:

    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

Другие вопросы по тегам