apt ищет файлы i386, хотя архитектура amd64

15

Я пытаюсь использовать хранилище файлов для обновления linux / ubuntu на неподключенном компьютере. Архитектура для этой машины (uname -a):

x86_64 GNU/Linux

Результаты dpkg --printarchitecture:

amd64

Это машина Trusty Tahr amd64, об этом, в частности, говорится в файле aptitude sources.list. Кроме того, в «Об этом компьютере» в Ubuntu говорится, что машина является 64-битной. Итак, я установил пакеты amd64 на машину. Тем не менее, когда я пытаюсь сделать apt-get update, я получаю такие ошибки, как:

W: Failed to fetch file:/var/spool/apt-mirror-trusty/mirror/archive.ubuntu.com/ubuntu/dists/trusty/main/binary-i386/Packages  File not found

Другими словами, несмотря на то, что это 64-битная машина, apt необъяснимым образом пытается прочитать пакеты i386. Почему это происходит, и как я могу заставить его использовать 64-битные пакеты?

Обратите внимание, что в файле sources.list нет ничего, что определяло бы i386.

Единственная незакомментированная строка в файле sources.list:

deb file:///var/spool/apt-mirror-trusty/mirror/archive.ubuntu.com/ubuntu trusty main restricted universe multiverse
Тайлер Дурден
источник
Может быть, эта поддержка multiarch включена по умолчанию в Ubuntu, потому что есть некоторые поставщики программного обеспечения партнеров (Skype, cof, cof ..), которые достаточно ленивы, чтобы не компилировать вещи на i386 и amd64. Так как многоархатные библиотеки будут необходимы, dpkgпо умолчанию настроен на прием amd64 и его 32-битный брат. Я говорю «возможно», потому что я не нашел никакой официальной документации с этой информацией. Просто мои 2 цента.

Ответы:

25

В amd64установках Ubuntu i386по умолчанию включен в качестве дополнительной архитектуры. apt& co. ожидайте, что репозитории предоставят все сконфигурированные архитектуры, что вызывает ошибку, которую вы видите.

Поскольку в вашем зеркале есть только amd64пакеты, вы должны пометить его так:

deb [ arch=amd64 ] file:///var/spool/apt-mirror-trusty/mirror/archive.ubuntu.com/ubuntu trusty main restricted universe multiverse
Стивен Китт
источник
Это была действительно проблема. С этим исправлением хранилище было принято и обновлено. Благодарю.
Тайлер Дурден
2
dpkg --print-foreign-architecturesпокажет любую архитектуру, для которой включена поддержка multiarch; У меня была та же проблема, и (вероятно, неудивительно) вышеприведенная команда сообщила:i386
sxc731
Это не объясняет, как отключить дополнительную архитектуру по умолчанию . Положить [arch=amd64]в каждую debстроку не является хорошим решением. Это объясняет, как это сделать: superuser.com/a/714392/376867
midenok
2
@midenok Где я предложил добавить спецификатор арки в каждый дескриптор репозитория? Полностью отключить работу i386с одним проблемным хранилищем - это излишне. Обратите внимание, что если у вас есть несколько репозиториев, вызывающих проблему, описанную в вопросе, это указывает на проблему с полем Архитектуры репозитория , а не с локальной конфигурацией.
Стивен Китт
@ Стефен Китт Хорошо, вы решили одну конкретную проблему, описанную в вопросе. Но ваше решение не практично. Большинство людей, включая asker и меня, не хотят видеть пакеты i386 в списке пакетов.
Миденок