На примере установки yay:
# Ставим инструменты сборки:
sudo pacman -S --needed base-devel git
# (base-devel нужен для makepkg, git — чтобы скачать исходники).
# Клонируем репозиторий yay:
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg
У нас в папке yay содержится файл PKGBUILD. Это скрипт, который скачивает исходники и собирает из них .pkg.tar.zst-файл для установки в Arch.
makepkg -s
После сборки пакета у нас появились две папки:
И три файла:
yay-12.5.2.tar.gz – это скачанный архив с исходниками. Затем исходники распаковываются в папку src.
yay-12.5.2-2-x86_64.pkg.tar.zst – это собранный пакет, который мы будем устанавливать в систему. Впринципе, всё остальное, кроме этого файла, можно удалить.
Устанавливаем yay:
sudo pacman -U yay-12.5.2-2-x86_64.pkg.tar.zst
Также можно передать команде makepkg аргумент -i, что значит "install". Тогда makepkg после сборки пакета автоматически запустит pacman -U <package_name>:
makepkg -si
А ещё можно сделать вот так:
makepkg -Ccsi
# Или:
makepkg --cleanbuild --clean --syncdeps --isntall
--cleanbiuld – удаляет папку src/, всё, что было загружено и распаковано в неё ранее, удаляет старые результаты предыдущей сборки
--clean (-c) очищает:
но оставляет:
Оба флага (-С и -с) очищают src/, но делают это в разное время и в этом их главное различие.
То есть, если у нас в папке уже есть старые исходники, то команда makepkg -s не будет туда распаковывать новые. Она вообще не будет распаковывать исходники из скачанного архива. Поэтому существует аргумент -C, чтобы удалить src/ ПЕРЕД распаковкой исходников.
# -verifysource – только загрузить (Загрузить исходные файлы (если необходимо) и провести проверки целостности)
# -o, --nobuild – только загрузить и распаковать
makepkg --verifysource --syncdeps # скачает файлы и проверит (не распакует), установит deps
makepkg -o --syncdeps # скачает, распакует, установит deps, но не соберёт
Всё по-порядку:
# Скачаем исходники:
makepkg --verifysource
# эта команда отделяет распаковку от сборки
# без выполнения этой команды "makepkg -s" не только устанавливает зависимости, но и собирает пакет
# теперь же "makepkg -s" только установит зависимости, без сборки пакета.
# удалим старые исходники, если они есть:
makepkg -C
makepkg -o
# если файл уже скачан, то makepkg не будет его качать заново, ...
# ... а просто распакует уже имеющийся в src/.
# затем установить зависимости:
makepkg -s
# собрать пакет, но не устанавливать (по умолчанию начнёт устанавливать):
makepkg -b
# устанавливаем собранный пакет:
makepkg -i
# подчистить всё:
makepkg -c
Ещё раз:
1. makepkg --verifysource # скачать архивы
2. makepkg --claenbuild # очистить старый src/
3. makepkg --nobuild # распаковать исходники
4. makepkg --syncdeps # установить зависимости (сборка не запустится)
5. makepkg --buildonly # собрать пакет, но не устанавливать
6. makepkg --install # собрать и установить
7. makepkg --clean # подчистить src/ и pkg/ после
# Всё то же самое:
makepkg -Ccsi
# По сути, две нижеследующие команды эквивалентны:
makepkg -s
makepkg --verifysource -o -s