Упаковка программного обеспечения Linux при сохранении правильной файловой структуры - PullRequest
8 голосов
/ 21 декабря 2010

Итак, я создал часть программного обеспечения, которую я хочу упаковать и опубликовать в Arch Linux User Repositories, AUR, - должен отметить, что я никогда не упаковывал ничего для какого-либо дистрибутива раньше - и я также получил его упакованный и установленный на нем моя собственная машина через менеджер пакетов Arch Pacman, но теперь мне интересно, как же я буду структурировать папки и файлы?

Обычно, когда я пишу программное обеспечение, я использую эту структуру:

build / | SRC / | Makefile

Как минимум, и в случае с этим программным обеспечением make-файл делает не более, чем компилирует файл .cpp из src / для сборки /. Чтобы создать пакет Arch, мне также пришлось создать файл .rc, чтобы правильно использовать программу в качестве демона и файл PKGBUILD, который является файлом, который сообщает программе makepkg, как собрать пакет установщика - эти два файла, хотя, специфичны для Arch. Если я хочу упаковать программу для, скажем, debian, мне понадобится другой набор файлов, чтобы сделать это, но эти файлы работают только для Debian. Теперь я не могу просто поместить файл .rc и файл PKGBUILD в корневую папку программ, так как это будет «беспорядок», особенно если у меня также есть файлы для сборки пакета для Debian, но куда мне положить специфичные для дистрибутива файлы? Мне нужно, чтобы он был в корневой папке программ -at-less-, чтобы иметь возможность отслеживать это, и моя первоначальная мысль заключалась в том, чтобы использовать такую ​​структуру, как distro / arch / для конкретных файлов Arch Linux, а затем файл PKGBUILD просто запустил бы make-файл в корневой папке программы и скопировал скомпилированный файл из build / в distro / arch /, прежде чем он сделал что-нибудь еще, но я обнаружил, что не могу заставить PKGBUILD работать таким образом, и люди на #archlinux на Freenode также сказал, что это не умная идея.

Так, где я могу поместить определенные файлы дистрибутива? Если бы я знал, что должен был предоставить эту программу только для Arch, было бы просто структурировать ее только для Makepkg, но я не хотел бы заключать в тюрьму подобное программное обеспечение, и я мог бы также представить предоставление пакетов для других дистрибутивов мэров, таких как debian, поэтому Как мне добиться этого при сохранении вменяемой файловой структуры?

С уважением, Крис Буххольц

1 Ответ

2 голосов
/ 21 декабря 2010

Очень часто в tarballs вы находите каталог с именем 'debian', в котором есть файлы, специфичные для Debian.Я пошел бы по тому же маршруту и ​​создал бы каталог 'archlinux' и поместил туда файлы.

Затем я бы поместил файл README в каталог archlinux, который объясняет, как правильно использовать PKGBUILD.

Одним из решений может быть запись в ваш Makefile 'package-arch', который копирует PKGBUILD в корневой каталог, запускает makepkg, а затем удаляет избыточный PKGBUILD.

Это хакерское, так что я бытакже напишите отчет об ошибках для людей Arch, чтобы исправить это ограничение.Тем не менее, вы пробовали makepkg -p archlinux/PKGBUILD?

...