Вернуться назад

makepkg

На примере установки 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