Как собрать apg

Руководство по сборке пакетов .apg

Метод 1: Использование apgbuild

Этот способ позволяет автоматизировать процесс создания пакета с помощью утилиты apgbuild.

1. Установка apgbuild

Следуйте инструкциям в README репозитория apgbuild.

2. Получение исходного кода

Загрузите исходный код программы, которую хотите упаковать:

wget https://example.com/source.tar.gz

Разархивируйте загруженный файл:

tar -xvzf source.tar.gz
cd source

3. Компиляция без установки в систему

Соберите программу и установите её в отдельную директорию (например, pkgdir):

mkdir -p pkgdir
./configure --prefix=/usr
make
make DESTDIR=$(pwd)/pkgdir install

4. Подготовка структуры пакета

Создайте структуру пакета в соответствии с форматом .apg:

package.apg/
├── metadata.json      # Метаданные пакета
├── scripts/           # Скрипты установки и удаления
│   ├── preinstall    # Выполняется перед установкой
│   ├── postinstall   # Выполняется после установки
│   ├── preremove     # Выполняется перед удалением
│   └── postremove    # Выполняется после удаления
├── data/              # Файлы пакета
│   └── (исполняемые файлы, библиотеки и т.д.)
└── md5sums            # Контрольные суммы

Переместите необходимые файлы в package.apg/data. Обычно это:

  • /usr/bin/ — исполняемые файлы
  • /usr/lib/ — библиотеки
  • /usr/share/ — файлы документации, иконки, локализация
  • /etc/ — файлы конфигурации
  • /usr/include/ — заголовочные файлы (если необходимы)

5. Создание metadata.json

Сгенерируйте файл metadata.json командой:

apgbuild -m package.apg

Заполните поля, указав название пакета, его версию, архитектуру и зависимости.

Пример metadata.json:

{
    "name": "example",
    "version": "1.0",
    "release": 1,
    "architecture": "x86_64",
    "description": "Example package",
    "maintainer": "John Doe <[email protected]>",
    "license": "MIT",
    "homepage": "https://example.com",
    "dependencies": [
        {
            "name": "libexample",
            "version": "1.2.3",
            "condition": ">="
        }
    ],
    "conflicts": [
        "example-old"
    ],
    "provides": [
        "example-feature"
    ],
    "replaces": [
        "example-legacy"
    ]
}

6. Генерация контрольных сумм

apgbuild --makesums package.apg

7. Создание пакета

apgbuild -o имяпакета-версия-релиз-архитектура.apg

Пример:

apgbuild -o example-1.0-1-x86_64.apg

Метод 2: Ручная сборка (экстремальный вариант)

Этот метод предполагает выполнение всех шагов вручную без использования apgbuild.

1. Получение и компиляция программы

wget https://example.com/source.tar.gz
mkdir -p build
cd build
tar -xvzf ../source.tar.gz
cd source
./configure --prefix=/usr
make
make DESTDIR=$(pwd)/pkgdir install

2. Подготовка структуры пакета

Создайте директорию пакета:

mkdir -p package.apg/data
mv pkgdir/usr/bin package.apg/data/
mv pkgdir/usr/lib package.apg/data/
mv pkgdir/usr/share package.apg/data/

Создайте папку для скриптов (если нужны):

mkdir -p package.apg/scripts

3. Создание metadata.json вручную

Создайте файл package.apg/metadata.json и заполните его:

{
    "name": "example",
    "version": "1.0",
    "release": 1,
    "architecture": "x86_64",
    "description": "Example package",
    "maintainer": "John Doe <[email protected]>",
    "license": "MIT",
    "homepage": "https://example.com",
    "dependencies": [],
    "conflicts": [],
    "provides": [],
    "replaces": []
}

4. Генерация контрольных сумм

cd package.apg
find data -type f -exec md5sum {} \; > md5sums

5. Архивация в .tar.xz

tar -cJf example-1.0-1-x86_64.tar.xz -C package.apg .

6. Конвертация в .apg

mv example-1.0-1-x86_64.tar.xz example-1.0-1-x86_64.apg

Теперь ваш пакет готов к установке!