Все об Arch Linux

Arch Linux будет тем, что вы из него сделаете!

yay vs paru: какой AUR-хелпер безопаснее

Безопаснее всего релизный вариант пакета (pkg) из официального репозитория, а из двух хелперов новичку лучше взять paru. Он ставится из официальных репозиториев Arch, показывает diff PKGBUILD перед сборкой и собирает пакеты в чистом окружении. Варианты pkg-bin и pkg-git, компромиссы: первый ставится быстро, но доверяет чужим бинарникам, второй собирает свежий код из git и может ломаться.

Что такое AUR-хелпер и зачем он нужен

AUR (Arch User Repository): пользовательский репозиторий Arch. Пакеты в нём не собираются заранее: там лежат PKGBUILD, скрипты, по которым makepkg собирает программу из исходников прямо на твоей машине. Вручную это выглядит так: скачал PKGBUILD, проверил, запустил makepkg, установил получившийся пакет через pacman -U.

AUR-хелпер автоматизирует весь цикл. Он ищет пакет по имени, скачивает PKGBUILD, проверяет зависимости, собирает и ставит. По сути это обёртка над pacman и makepkg с поиском по AUR. Подробный разбор того, как устроен AUR и какие хелперы бывают, в статье «Какой AUR helper выбрать?».

Главное, что нужно держать в голове: AUR-хелпер не проверяет безопасность PKGBUILD. Он просто выполняет то, что в нём написано. Поэтому выбор хелпера и варианта пакета: вопрос не удобства, а безопасности.

Официальные репозитории Arch проходят проверку: пакеты подписаны, собираются из проверенных исходников и тестируются. AUR устроен иначе. Любой желающий может выложить PKGBUILD, а модераторы проверяют его только на соответствие правилам оформления, а не на безопасность. Вредоносный код в AUR находят уже после того, как кто-то его установил.

Чем yay отличается от paru

yay написан на Go, paru: на Rust. paru начинался как форк в духе yay, поэтому команды у них почти одинаковые, и перейти с одного на другой легко.

Что paru делает лучше:

  • Ставится из официальных репозиториев Arch (пакет paru), yay, только из AUR.
  • Показывает diff PKGBUILD перед сборкой и даёт отредактировать его до запуска makepkg.
  • Собирает в чистом окружении (--cleanbuild), не засоряя домашний каталог.
  • Умеет разрешать конфликты пакетов прямо при установке.
  • Поддерживает бинарные варианты (bin) и флаг -V для просмотра версии.
  • Чистит каталог сборки после установки (cleansubdir).

yay старше и популярнее, поэтому в интернете больше инструкций именно под него. Но по возможностям он не обгоняет paru. Для новой установки разумнее сразу взять paru: он доступен в официальном репозитории, а значит, обновляется вместе с системой и не требует установки хелпера через сам AUR.

Что означают варианты pkg, pkg-bin и pkg-git

В AUR почти у каждого популярного пакета три варианта имени. Разница: в способе получения.

pkg: сборка из исходников

Обычный вариант. Хелпер скачивает PKGBUILD, makepkg собирает программу из исходного кода на твоей машине. Версия: релизная, та, что выложил автор. Сборка занимает время: от пары минут до часа на больших проектах.

pkg-bin: предкомпилированные бинарники

Автор выкладывает готовые бинарники, а PKGBUILD просто распаковывает их в систему. Установка занимает секунды, компилятор не нужен. Но твоя машина не участвует в сборке: ты получаешь файлы, собранные кем-то другим, и доверяешь им как есть.

pkg-git: сборка из git master

PKGBUILD клонирует репозиторий и собирает самую свежую версию из ветки разработки. Ты получаешь новые фичи раньше всех, но и баги, тоже. Версия меняется при каждом обновлении, и пакет может сломаться в любой момент.

Почему AUR считается рискованным

Три причины.

Первая: отсутствие проверки. PKGBUILD в AUR не проходит аудит безопасности. Модераторы следят за оформлением и соответствием правилам, но не разбирают каждую строчку скрипта.

Вторая: права выполнения. makepkg запускает PKGBUILD от имени твоего пользователя. Вредоносный скрипт получит доступ ко всем твоим файлам, ключам и паролям, которые хранятся в системе. Он не сломает систему целиком (для этого нужны права root), но украсть данные, запросто.

Третья: заброшенные пакеты. Многие PKGBUILD годами не обновляются. Автор ушёл, пакет осиротел, а зависимости в системе меняются. Рано или поздно такой пакет перестанет собираться или соберётся с устаревшими, дырявыми зависимостями.

Поэтому в AUR действует правило: ставь только то, что нужно, от проверенных авторов, и всегда смотри, что собираешь.

Какой вариант безопаснее

Релизный pkg. Он собирается из исходников на твоей машине, а исходники можно проверить глазами. Это самый предсказуемый вариант: версия стабильна, зависимости стандартные.

pkg-bin: компромисс. Бинарники собирает автор или CI, и ты не видишь, что внутри. Доверие здесь выше, чем к случайному PKGBUILD, но и риск не нулевой: бинарник может быть собран из другого кода, чем заявлено. Для тяжёлых программ (браузеры, офисные пакеты) это разумный выбор, для мелких утилит, нет смысла.

pkg-git: самый рискованный. Код из ветки разработки не проходит полного тестирования, а PKGBUILD может меняться под каждую новую версию. Ставить такое на рабочую систему не стоит.

Перед установкой загляни на страницу пакета в AUR: количество голосов, комментарии, дата последнего обновления. Пакет с сотней голосов и свежими комментариями: хороший знак. Пакет без голосов, обновлённый три года назад, повод задуматься.

Критичный момент: AUR-хелпер автоматически подписывает и собирает PKGBUILD. Если в скрипте зашит вредоносный код (например, отправка данных или подмена файлов) он выполнится с правами твоего пользователя. Поэтому главное правило AUR: не ставь пакеты, чей PKGBUILD ты не читал. О том, как отличить честный PKGBUILD от подозрительного, я писал в статье «Как собрать Klavaro из форка: PKGBUILD для личного AUR».

Как проверить PKGBUILD перед установкой

paru и yay показывают diff PKGBUILD перед сборкой. Не пропускай этот шаг: пробегись глазами по скрипту, посмотри, откуда скачиваются исходники и что выполняется в функции build.

Если хочешь посмотреть PKGBUILD без установки, скачай его отдельно:

paru -G имя-пакета     # скачать PKGBUILD без сборки
yay -G имя-пакета      # то же самое для yay

Затем открой файл и проверь:

  • источник (source=): ссылка на официальный репозиторий проекта;
  • контрольные суммы (sha256sums=): они должны быть заполнены;
  • функции build() и package(): там не должно быть ничего, кроме сборки и установки.

Если в PKGBUILD есть curl на неизвестный адрес, подмена путей или странные команды в package(), не ставь. Обрати внимание и на переменную pkgver: она должна совпадать с последним релизом проекта. Если автор заморозил версию, а в комментариях жалуются на сломанную сборку, лучше поискать альтернативу. Подробная методика диагностики таких проблем в статье «Методика решения проблем в Arch Linux».

Какие базовые команды yay и paru

Команды у обоих хелперов одинаковые, потому что они повторяют синтаксис pacman.

Обновление системы вместе с AUR-пакетами:

paru -Syu

Установка пакета из AUR:

paru -S имя-пакета

Поиск по репозиториям и AUR:

yay -Ss имя-пакета

Удаление пакета с зависимостями и конфигами:

paru -Rns имя-пакета

Поиск осиротевших пакетов (не нужных больше никому):

paru -Qdt

Для сборки в чистом окружении добавь флаг:

paru -S --cleanbuild имя-пакета

Флаг -Syu обновляет и официальные пакеты, и AUR-пакеты за один проход. Если хочешь обновить только AUR, используй paru -Sua.

Частые вопросы

Какой AUR-хелпер выбрать новичку?

paru. Он в официальных репозиториях, показывает diff PKGBUILD и собирает в чистом окружении. yay тоже хорош, но его придётся ставить через AUR, а это лишний шаг для первой установки. Если ты уже пользуешься yay и всё работает, менять не обязательно. Разница в безопасности между ними небольшая: оба показывают PKGBUILD перед сборкой. Главное: не сам хелпер, а то, что ты ставишь через него.

pkg-bin ставится быстрее: значит, он безопаснее?

Нет. Быстрее: да, безопаснее: нет. Ты получаешь готовые бинарники, собранные кем-то другим, и не можешь проверить, что внутри. Если скорость критична, бери pkg-bin, но только от проверенных авторов. Проверь, как автор собирает бинарники: если в PKGBUILD указан официальный релиз с GitHub с контрольными суммами это нормально. Если бинарник лежит на файлообменнике, обходи стороной.

Стоит ли ставить пакеты pkg-git?

На рабочей системе: нет. Версия меняется при каждом обновлении, код из ветки разработки не тестируется. Если очень нужна свежая фича, поставь pkg-git на тестовую машину или в виртуалку.

Что делать, если yay или paru падает при обновлении?

Частая причина: проблемы с сетью или TLS при обращении к AUR. Разбор типичных ошибок и их лечения в статье «yay выдаёт EOF при обновлении AUR: дело в IPv6 (gai.conf)» и в свежей статье про ошибки AUR при обновлении. Иногда помогает очистка кеша хелпера или смена зеркала. Начни с простого: перезапусти команду, проверь интернет, посмотри вывод в терминале.

Нужно ли перечитывать PKGBUILD при каждом обновлении?

Хотя бы просматривать diff, да. Хелпер показывает изменения перед сборкой. На это уходит десять секунд, а защищает от сюрпризов вроде подмены источника или добавления лишних шагов в сборку. Особенно внимательным будь после долгого перерыва: если пакет не обновлялся полгода, а тут вдруг появилась новая версия, посмотри diff внимательнее.

Полезные ресурсы

  • AUR helpers (ArchWiki): список хелперов и сравнение их возможностей.
  • PKGBUILD (ArchWiki): полное описание формата и всех переменных.

Заключение

Безопасность AUR держится на одном правиле: не запускай PKGBUILD, который не читал. Из хелперов бери paru: он в официальных репозиториях и показывает diff перед сборкой. Из вариантов пакета: релизный pkg; pkg-bin оставь для тяжёлых программ, где сборка из исходников слишком долгая, а pkg-git: только для экспериментов. Тогда AUR останется удобным инструментом, а не источником проблем.



Не получилось? Поможем настроить

Задай вопрос в чате — отвечаем быстро, по делу и без воды.

Читайте также

Комментарии

Загрузка…

Откроется GitHub: создайте новый issue с вашим комментарием (кнопка «Submit new issue»). После отправки обновите эту страницу — комментарий появится ниже.

Telegram Max