Сразу к делу: предупреждение warning: ...: ignoring package with invalid architecture (в старых версиях pacman это wrong architecture) появляется, когда пакет собран для другой архитектуры, чем твой процессор. Чаще всего это сборка для x86_64_v3, а у тебя обычный x86_64. Не игнорируй предупреждение: найди пакет для своей архитектуры или собери его из исходников.
Pacman перед установкой сверяет архитектуру пакета с архитектурой системы. Поле arch в PKGBUILD и в метаданных собранного пакета хранит, для какого процессора он собран. Если значения не совпадают, менеджер пакетов пропускает файл и пишет предупреждение. Проверка работает и при синхронизации репозиториев, и при установке скачанного файла через pacman -U.
Откуда pacman знает архитектуру пакета? При сборке makepkg записывает её в файл .PKGINFO внутри архива. Там же лежат версия, зависимости и контрольные суммы. При установке pacman читает этот файл и сравнивает поле arch с архитектурой системы. Если в /etc/pacman.conf задана опция Architecture, проверка идёт по ней.
В новых версиях pacman текст такой:
warning: firefox: ignoring package with invalid architecture
В старых версиях ошибка выглядела иначе:
error: firefox: wrong or unknown architecture: 'x86_64_v3'
Смысл один: пакет не подходит твоей системе, и pacman отказывается его ставить. Это защита, а не баг. Если бы pacman молча поставил чужой пакет, ты получил бы неработающую программу.
Официальные репозитории Arch собираются только для x86_64, поэтому в обычной системе ошибка не появляется. Чужие пакеты попадают в систему несколькими путями.
CachyOS, Chaotic-AUR и другие проекты собирают пакеты с оптимизациями под x86_64_v3. Если ты добавил такой репозиторий в /etc/pacman.conf, pacman начнёт видеть пакеты с чужой архитектурой. Подробнее про подключение сторонних репозиториев читай в статье «Свой репозиторий: repo-add».
Файлы .pkg.tar.zst с форумов, из чужих кэшей или с сайтов собираются на чужих машинах. Скачал такой файл, запустил pacman -U и получил предупреждение об архитектуре. Та же история с импортом пакетов из Manjaro: там свои сборки, и они не всегда совместимы с Arch. Разбор читай в статье «Импорт пакетов из Manjaro».
AUR-пакеты собираются из исходников на твоей машине, поэтому архитектура там всегда своя. Но если кто-то выложил готовый бинарник в комментариях к AUR-странице, он собран на другом процессоре. Ставить такие файлы вслепую нельзя.
Отдельный случай: опция Architecture в /etc/pacman.conf. По умолчанию pacman берёт архитектуру из uname -m, но её можно переопределить вручную. Если ты прописал там x86_64_v3, а процессор старый, pacman начнёт ругаться на все официальные пакеты. Верни значение x86_64 или удали строку.
Поле arch в PKGBUILD описывает, для каких архитектур собирается пакет. Три значения встречаются чаще всего.
any: пакет не зависит от процессора. Скрипты, шрифты, документация, темы. Такой пакет ставится на любую архитектуру.x86_64: базовая архитектура x86-64. Официальные репозитории Arch собирают именно так.x86_64_v3: микроархитектурный уровень с дополнительными инструкциями: AVX2, FMA, BMI1, BMI2. Сборки для него быстрее, но требуют современный процессор.Уровни микроархитектуры x86-64 нумеруются от v1 до v4. v1: базовый набор инструкций, который понимает любой 64-битный процессор. v2 добавляет SSE4.2 и POPCNT. v3: AVX2 и FMA. v4: AVX-512, его используют редко. Чем выше уровень, тем быстрее код, но тем новее нужен процессор.
Сначала узнай, какую архитектуру видит система:
uname -m
Вывод x86_64 означает базовый уровень. Он не показывает, поддерживает ли процессор AVX2. Проверь это отдельно:
grep -c avx2 /proc/cpuinfo
Число больше нуля: AVX2 есть, процессор тянет сборки x86_64_v3. Для полной проверки уровня v3 нужны ещё флаги bmi1 и fma:
grep -o -m1 'avx2\|bmi1\|fma' /proc/cpuinfo
Теперь посмотри архитектуру пакета. Для пакета из репозитория:
pacman -Si firefox
В выводе ищи строку «Архитектура» (Architecture). pacman -Si показывает данные из синхронизированной базы репозиториев, пакет скачивать не нужно. Для скачанного файла:
pacman -Qip ./firefox-xxx.pkg.tar.zst
Команда читает метаданные прямо из архива и показывает архитектуру до установки. Для уже установленного пакета аналогично работает pacman -Qi firefox.
x86_64_v3 это не отдельная архитектура, а уровень оптимизации. Сборки для него компилируются с флагом -march=x86-64-v3, и компилятор использует инструкции AVX2, FMA и BMI. Код получается компактнее и быстрее: меньше инструкций на одну операцию, лучше работа с векторами.
Прирост производительности зависит от задачи. В среднем это несколько процентов, в тяжёлых вычислениях (кодирование видео, компиляция, рендеринг) заметно больше. Для повседневных программ разница почти незаметна.
Кому подходят такие сборки: владельцам процессоров Intel Haswell и новее (2013 год и позже) и AMD Excavator, Zen и новее. Проверка одна: флаг avx2 в /proc/cpuinfo. Если его нет, сборки x86_64_v3 не запустятся.
Готовые репозитории с такими сборками держат CachyOS и Chaotic-AUR. Они пересобирают пакеты Arch с флагами оптимизации и выкладывают в свои зеркала. Подключать их стоит только если процессор точно поддерживает AVX2, иначе половина пакетов просто не установится.
Обычная установка не даст поставить несовместимый пакет, но у pacman есть флаг --ignorearch, который отключает проверку. Использовать его не стоит.
Даже если пакет встанет, ты не получишь нормальных обновлений. Официальные репозитории не знают про чужую сборку, и pacman -Syu попытается заменить её своей версией. В лучшем случае пакет перезапишется, в худшем система останется с битыми зависимостями.
На старом процессоре без AVX2 программа с инструкциями v3 упадёт с segfault при первом же обращении к такой инструкции. Не «медленно работает», а именно падает: процессор не понимает команду и выбрасывает исключение.
На новом процессоре пакет x86_64_v3 запустится, но смешивать архитектуры всё равно плохо. Обновление из официального репозитория перезапишет пакет версией x86_64, зависимости начнут конфликтовать, и система придёт в нестабильное состояние. Предупреждение pacman это сигнал остановиться и разобраться, а не повод жать --ignorearch.
Порядок действий зависит от того, откуда взялся пакет.
pacman -Si покажет репозиторий, pacman -Qip покажет метаданные файла./etc/pacman.conf или найди вариант для обычного x86_64. У CachyOS и Chaotic есть репозитории для базовой архитектуры.makepkg. Сборка из исходников всегда подстраивается под твой процессор. Как это работает, читай в статье «Установка пакетов из AUR».repo-add.Общая методика диагностики таких проблем описана в статье «Методика решения проблем в Arch Linux».
Официальные зеркала Arch содержат только каталог x86_64. Сторонние репозитории с оптимизациями держат отдельные каталоги: x86_64_v3 в URL зеркала означает микроархитектурный репозиторий. Посмотри на путь в /etc/pacman.conf и в mirrorlist:
grep -r "x86_64_v3" /etc/pacman.conf /etc/pacman.d/
Если нашёл, ты подключил репозиторий для другой микроархитектуры. В URL сторонних зеркал каталог выглядит как x86_64_v3 или x86-64-v3. Официальные зеркала Arch такого каталога не имеют вообще. Открой mirrorlist и посмотри на пути: core/os/x86_64 это официальное зеркало, core/os/x86_64_v3 это стороннее.
pacman -Si firefox | grep -i "репозиторий"
Название репозитория в выводе подскажет источник. Настройка зеркал разобрана в статье «Настройка зеркал Arch Linux».
AUR-пакеты собираются из исходников на твоей машине, поэтому ошибка архитектуры там редка. Но если ты скачал готовый бинарник из комментариев к AUR-странице или с чужого сайта, он собран на другом процессоре. Собирай сам через makepkg.
Нет. Процессор без AVX2 не выполнит инструкции, и программа упадёт с segfault. Проверь поддержку заранее: grep -c avx2 /proc/cpuinfo.
Сборки используют AVX2, FMA и BMI, поэтому код быстрее. В среднем прирост несколько процентов, в тяжёлых вычислениях больше. Для обычного пользователя разница почти незаметна.
Выполни grep -c avx2 /proc/cpuinfo. Если вывод больше нуля, поддержка есть. Для полной уверенности проверь ещё флаги bmi1 и fma.
Значит, в mirrorlist или в /etc/pacman.conf попал сторонний репозиторий. Проверь оба файла и убери лишние записи. Официальные репозитории Arch собираются только для x86_64.
arch и сборка пакетов.Ошибка wrong architecture это защита pacman от пакетов, собранных для другого процессора. Чаще всего за ней стоит сборка x86_64_v3, а у тебя обычный x86_64. Проверь архитектуру пакета через pacman -Si или pacman -Qip, сверь с флагами своего CPU через grep avx2 /proc/cpuinfo и найди версию для своей архитектуры или собери из исходников. Игнорировать предупреждение и ставить пакет через --ignorearch не стоит: на старом процессоре программа упадёт, на новом сломает систему смешиванием архитектур.
Задай вопрос в чате — отвечаем быстро, по делу и без воды.
Комментарии