Как создать собственный пакет Debian для статических файлов?

Мне нужно дебазировать некоторые статические ресурсы для программного проекта, но я смущен доступной информацией и могу использовать некоторые рекомендации при этом. Вот материалы, которые я читал:

Новое руководство по управлению сетью Debian кажется наиболее распространенным, особенно в этой главе, но это дидактическое представление неэффективно для меня; он читает больше как ссылку на повторное обучение, чем руководство для незнания. Большая часть информации, которую я нашел, также ориентирована на получение пакетов, включенных в общий репозиторий, который мне не нужен. Чтобы сделать так, чтобы какой-то добрый народ мог показать мне дорогу, я создал небольшой проект statrec, который иллюстрирует тип пакета, который мне нужен создавать. Это исходное дерево выглядит так:

statrec/
├── LICENSE
├── README.md
├── share
│   ├── gilgamesh.txt
│   └── thoreau.txt
└── VERSION

Мне нужно, но я не могу определить, как:

  • установите statrec/share в /usr/share/statrec/VERSION/,
  • создать или изменить символическую ссылку от /usr/share/statrec/current/ до /usr/share/statrec/VERSION/, а затем
  • удалить предыдущие версии statrec.

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

Ответ 1

Я бы сказал, что проще всего:

  • Создайте файл makefile, который будет устанавливать файлы так, как вы хотите, чтобы они соблюдали любой параметр DESTDIR и ничего не делали для целевого объекта по умолчанию. Что-то вроде:

    all: # nothing to build
    
    install:
        cp -r share/* $(DESTDIR)/usr/share/statrec/$(VERSION)
    

    Значение DESTDIR важно; он не будет устанавливаться в систему, а вместо этого во временный каталог, который будет dpkg, чем пакет. Все символические ссылки должны указывать на конечные адресаты (без префикса $(DESTDIR)).

  • Пусть dh_make --native сделает это бизнес (он создаст еще один make файл debian/rules, который вызовет первый make файл).

  • Посмотрите файлы под debian. Особенно debian/changelog может потребоваться редактирование (там, где debuild/dpkg-buildpackage получить номер версии, поэтому он должен быть заполнен).

    Я считаю, что debuild автоматически использует fakeroot, для dpkg-buildpackage вы должны указать его вручную. Даже не думайте о том, чтобы запустить его как настоящий корень.

  • Используйте debuild или dpkg-buildpackage -rfakeroot для его создания

Не нужно заботиться об удалении, поскольку dpkg будет обрабатывать это.

Обновление: Я предлагаю dh_make --native, потому что я понял, что вопрос заключается в простой установке нескольких файлов данных на несколько дебианских систем. Если он должен быть распространен, я предлагаю просто запросить на IRC-канале irc.debian.org # debian и, возможно, оставить его в Debian Developer (только разработчики Debian могут загрузить в архив Debian и обычно хотят сами обрабатывать упаковку).

Кроме того, если это часть программного обеспечения, а не отдельная группа файлов данных, установка должна быть частью общей установки программного обеспечения с использованием одного общего make файла, должен быть только один исходный пакет Debian и только debian/control и debian/*.files должны указать, какие файлы переходят в пакет приложения (который является "Архитектура: любой" ), и какие файлы идут в пакет данных (который является "Архитеку: все" и обычно получает суффикс -data).

Ответ 2

Я нашел saurik (известность cydia/jailbreak) "Руководство по размещению Cydia Repository", полезное для создания ваших собственных файлов .deb. Взгляните на это здесь: http://www.saurik.com/id/7

Ответ 3

Вы должны прочитать раздел 15.2.2 в debian-handbook.

Мне посчастливилось просто создать файл .install и пропустить эту часть Makefile для моего собственного проекта