Решил может кому пригодится раз уж мне довелось это делать, чтобы не изобретать велосипед.
1. Установить пакет "base-devel" - базовый разработчика.
2. Создаём папку пакетов своих программ, например "packages"
3. В ранее созданной папке "packages" создаём папку с именем программы, например "create-desktop-file"
4. В папке программы "create-desktop-file" создаём текстовый файл PKGBUILD и папку "usr" со структурой устанавливаемых файлов программы, то есть в ней будет следующая структура файлов:
/usr/bin/create-desktop-file /usr/share/applications/create-desktop-file.desktop /usr/share/pixmaps/create-desktop-file.png
Шаблон файла PKGBUILD
# Maintainer: AZJIO pkgname=create-desktop-file-bin pkgver=0.1.2 pkgrel=1 pkgdesc="Создание ярлыков (desktop-файлов)." arch=(x86_64) license=(custom) depends=(gtk3 xdg-utils) package() { cp -r "${pkgdir}/../../usr" "${pkgdir}" }
Описание PKGBUILD полно в интернете и примеров, там слишком много возможностей, но ограничимся лишь сборкой локального бинарного пакета.
Maintainer - закомментирвоано, здесь указывается не автор программы, а человек поддерживающий сборку пакета в репозитории, то есть отвечает за PKGBUILD, за обновлениями программы, чтобы она надёжно собиралась у клиентов.
pkgname - имя пакета, по сути программы, мне навязали указывать суффикс "-bin", чтобы подчеркнуть что пакет является бинарным, а не собирается из исходников, как бы быть более честными с клиентами, но это не обязательное правило, я достаточно пакетов ставил, у которых нет этой приставки, но они не собираются из исходников. Да и выглядит не цивильно, ведь это название программы, а не информационный идентификатор для угождения кому-то, чьим-то нежным чувствам.
pkgver - версия программы, обычно релиз начинается с 1.0.0, а не 0.1.0, просто привычка, я не пишу сразу то что хочу заложить в программу, иначе нет обратной связи, поэтому подчёркиваю, что программа в стадии написании задуманных функционалов. Первая цифра, когда вся программа переписывается, вторая - дописывается значимый функционал, третья - поправки.
pkgrel - это версия если поправил пакет, не программу, чтобы произошло обновление, так как многие менеджеры пакетов при одинаковой версии откажутся переустанавливать пакет, просто ничего не сделают.
pkgdesc - описание на англ. языке
arch - архитектура
license - лицензия, если не указана стандартная, то можно поставить custom (пользовательская) и добавить файл лицензии. Без явной лицензии считается проприетарной. Так как PureBasic не является открытым компилятором, то лицензия не может быть GPL, а например MIT или BSD, который фактически дают право продавать ваш труд. Поэтому я ставлю custom.
depends - зависимости, здесь перечисление пакетов необходимых для программы. Это не обязательно имя программы, а также пакет в разных линуксах может называться иначе. То есть любая ошибка может ограничить возможность установки пакета.
В package() указана команда рекурсивного копирования из переменной ${pkgdir} с переходом на два уровня выше, в общем в папке, в которой лежит PKGBUILD будет создана папка сборки пакета pkg/create-desktop-file-bin из которой поднимаемся вверх на 2 уровня и копируем usr в ${pkgdir}.
В папке, в которой лежит PKGBUILD будет создан пакет формата "create-desktop-file-bin-0.1.2-1-x86_64.pkg.tar.zst" созданного из имени пакета, версии, архитектуры.
4. Для сборки выполнить команды перехода в папку пакета и команду сборки. С ключом -f вроде --force-yes, то есть принудительно пересобрать заменив старый файл новым.
cd "home/user/packages/create-desktop-file" makepkg -f PKGBUILD
Также с ключом "i" сразу установка, чтобы проверить работу установки
makepkg -i PKGBUILD
Всё.
Также пакет можно расположить по прямой ссылке в интернете (github.com) и использовать следующий конфиг
# Maintainer: AZJIO pkgname=find-gui-bin pkgver=1.2 pkgrel=1 pkgdesc="GUI shell for the well-known 'find' utility." arch=(x86_64) license=(custom) source=("$pkgname-$pkgver.tar.gz::https://azjio.ucoz.ru/file/find_gui.tar.gz") depends=(gtk3 findutils sed grep) url=https://azjio.ucoz.ru/load/programs/linux/find_gui_linux/11-1-0-73 package() { tar -xvf "${srcdir}/../$pkgname-$pkgver.tar.gz" -C "${pkgdir}" } sha256sums=('3e3ae8754b46a96950757818cc0837b473ce761b364d8242820012f77ba0bcfc')
Здесь хеш-сумму можно получить командой:
sha256sum home/user/packages/create-desktop-file/usr/bin/create-desktop-file
Возможно придётся установить пакет hashdeep для хеш-сумм.
Отредактировано AZJIO (14.06.2022 17:17:45)