Я хочу создать пакет для установки последней версииpgn-извлечение. Я скачал pgn-extract.tgz
и распаковал архив. Но дальше думать не могу, так как у меня нет опыта в концепции сборки пакетов.
решение1
Самый простой способ (в некотором смысле «самый простой») сделать это — загрузить существующийpgn-extract
упаковкаи использовать это как основу:
скачать текущий исходник:
wget ftp://ftp.cs.kent.ac.uk/pub/djb/pgn-extract/pgn-extract.tgz
извлеките его:
tar xf pgn-extract.tgz
определить номер версии:
grep Version pgn-extract/index.html
(У меня получилось «17-38», поэтому я буду использовать это в следующих инструкциях; если у вас более поздняя версия, замените «17» и «38» на соответствующие)
свяжите tar-архив с tar-архивом «.orig», который ожидают инструменты сборки Debian:
ln -s pgn-extract.tgz pgn-extract_17.38.orig.tar.gz
Загрузите исходный пакет и распакуйте его:
apt-get source pgn-extract
скопируйте существующий
debian
каталог вpgn-extract
исходный каталог:cd pgn-extract cp -a ../pgn-extract-17.21/debian .
добавьте запись в журнал изменений для вашей версии, что-то вроде
dch -v 17.38-0.1 "New upstream release."
соберите новый пакет; если здесь возникнут ошибки, исправьте упаковку соответствующим образом и повторите попытку:
dpkg-buildpackage -us -uc
В моем случае мне пришлось это исправить makefile.patch
; это проявилось в виде ошибки исправления кода в начале сборки:
dpkg-source: info: using source format '3.0 (quilt)'
dpkg-source: info: building pgn-extract using existing ./pgn-extract_17.38.orig.tar.gz
patching file Makefile
Hunk #1 FAILED at 37.
Hunk #2 succeeded at 48 (offset 1 line).
1 out of 2 hunks FAILED
dpkg-source: info: the patch has fuzz which is not allowed, or is malformed
dpkg-source: info: if patch 'makefile.patch' is correctly applied by quilt, use 'quilt refresh' to update it
dpkg-source: error: LC_ALL=C patch -t -F 0 -N -p1 -u -V never -E -b -B .pc/makefile.patch/ --reject-file=- < pgn-extract.orig.ltAFev/debian/patches/makefile.patch gave error exit status 1
dpkg-buildpackage: error: dpkg-source -b pgn-extract gave error exit status 2
Чтобы исправить это, я поступил следующим образом:
принудительно применить патч:
export QUILT_PATCHES="debian/patches" quilt push -f
проверить отклонения
Makefile.rej
и применить их вручную с помощью редактора; в текущей версииpgn-extract
это означает:ищите линию
# AIX 3.2 Users might like these alternatives
найдите строку прямо над этим высказыванием
CC=gcc
выше удалите строку с надписью
-O3
, и замените\
в конце предыдущей строки на$(CPPFLAGS)
, так что вся строка будет выглядеть как-I/usr/local/lib/ansi-include -std=c99 $(CPPFLAGS)
обновить патч:
quilt refresh
запустите сборку еще раз.
Вы также можете начать с извлеченного исходного пакета Debian и использовать его uscan
для загрузки и обработки последней версии tarball, но я предоставлю вам возможность изучить этот вопрос самостоятельно, если вам интересно.