PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » PureBasic для Linux » Создать пакет своей программы для Arch


Создать пакет своей программы для Arch

Сообщений 1 страница 2 из 2

1

Решил может кому пригодится раз уж мне довелось это делать, чтобы не изобретать велосипед.

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)

0

2

Нашёл ещё полезный код

Код:
$ cat ~/.config/pacman/makepkg.conf 
function write_buildinfo() {
	msg2 "Don't write .BUILDINFO"
}

Как обычно для кого это пишут и как оно работает, но по факту создал файл ~/.config/pacman/makepkg.conf и вставил в него функцию ниже по списку и вуаля, сборщик перестал список всех пакетов совать в пакет.

0


Вы здесь » PureBasic - форум » PureBasic для Linux » Создать пакет своей программы для Arch