Как создать собственный пакет 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.

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


person troutwine    schedule 24.08.2011    source источник


Ответы (3)


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

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

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

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

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

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

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

  4. Используйте debuild или dpkg-buildpackage -rfakeroot, чтобы построить его.

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

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

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

person Jan Hudec    schedule 24.08.2011
comment
Это cp -r неверно хотя бы потому, что предполагает существование $(DESTDIR)/share/statrec. dh_make --native создает собственный пакет, который здесь неверен. ChangeLog зовут changelog. Другие файлы под debian следует просмотреть и отредактировать, переименовать или удалить. dpkg-buildpackage использует fakeroot автоматически последние 2 года. - person wRAR; 24.08.2011
comment
wRAR: Можете ли вы объяснить, что предпочтительнее использовать cp -r? Почему dh_make --native неправильно? - person troutwine; 24.08.2011
comment
dh_make --native неверно, потому что, цитируя maint-guide, обычные пакеты Debian — это неродные пакеты Debian, созданные из исходных программ. Собственный пакет предназначен только для программного обеспечения только для Debian, и даже в этом случае неродной пакет может быть лучшим выбором. Для этого Makefile требуется либо mkdir -p $(DESTDIR)/share/statrec/$(VERSION) перед cp -a (не cp -r), либо какие-то другие средства для создания каталога, если это необходимо. Кроме того, каталог назначения должен быть /usr/share/statrec/$(VERSION), а не /share/statrec/$(VERSION) (и если вы используете $(VERSION), вам нужно сначала определить его). - person wRAR; 24.08.2011
comment
Ваша цитата определяет, что такое «обычный пакет Debian», а не жизненно важное различие между родным и неродным. Таким образом, «родной» пакет — это часть программного обеспечения, специфичная для проекта Debian, например dpkg? Какова функциональная разница между различиями? В каких ситуациях неродной пакет может быть лучшим выбором и почему? Относительно VERSION MG 3.3 отмечает, что определен только DESTDIR; определены ли какие-либо другие переменные? Как цели проекта Makefile сопоставляются с их использованием debuild или dpkg-buildpackage? Дело в том, что используется только цель install? - person troutwine; 24.08.2011
comment
dpkg запакован как родной, да. собственный пакет означает, что вам нужно публиковать новую исходную версию каждый раз, когда вы что-то меняете в пакете, потому что он имеет только исходную версию и не имеет номера версии Debian, и это может быть неудобно. - person wRAR; 24.08.2011
comment
dh_auto_build(1) пытается использовать make и make install, если находит Makefile. - person wRAR; 24.08.2011
comment
вместо того, чтобы создавать Makefile в корне, что в противном случае может вам не понадобиться, вы можете использовать аналогичную команду копирования в debian/rules в цели override_dh_auto_install. используйте исходный код dh_install. - person jrwren; 29.04.2015

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

person holygeek    schedule 24.08.2011

Вам следует прочитать раздел 15.2.2 в debian-handbook.

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

person kjetildm    schedule 29.08.2013