Quero criar um pacote para instalação da versão mais recente doextrato pgn. Baixei pgn-extract.tgz
e descompactei o arquivo. Mas não consigo pensar mais, porque não tenho experiência no conceito de construção de pacotes.
Responder1
A maneira mais fácil (para algum valor de “mais fácil”) de fazer isso é baixar o arquivo existentepgn-extract
pacotee use isso como base:
baixe a fonte atual:
wget ftp://ftp.cs.kent.ac.uk/pub/djb/pgn-extract/pgn-extract.tgz
extraia-o:
tar xf pgn-extract.tgz
determine o número da versão:
grep Version pgn-extract/index.html
(Eu recebo “17-38”, então usarei isso nas instruções a seguir; se você tiver uma versão posterior, substitua “17” e “38” conforme apropriado)
vincule o tarball ao tarball “.orig” que as ferramentas de construção do Debian esperarão:
ln -s pgn-extract.tgz pgn-extract_17.38.orig.tar.gz
baixe o pacote fonte e extraia-o:
apt-get source pgn-extract
copie o diretório existente
debian
em seupgn-extract
diretório de origem:cd pgn-extract cp -a ../pgn-extract-17.21/debian .
adicione uma entrada de changelog para sua versão, algo como
dch -v 17.38-0.1 "New upstream release."
construir o novo pacote; se ocorrerem erros aqui, corrija a embalagem conforme apropriado e tente novamente:
dpkg-buildpackage -us -uc
No meu caso, tive que consertar makefile.patch
; isso apareceu como um erro ao corrigir o código no início da compilação:
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
Para corrigir isso, procedi da seguinte forma:
forçar a aplicação do patch:
export QUILT_PATCHES="debian/patches" quilt push -f
confira as rejeições
Makefile.rej
e aplique-as manualmente usando um editor; com a versão atual dopgn-extract
, isso significa:procure a linha
# AIX 3.2 Users might like these alternatives
encontre a linha logo acima desse ditado
CC=gcc
acima disso, exclua a linha que diz
-O3
e substitua o\
no final da linha anterior por$(CPPFLAGS)
, para que toda a linha termine como-I/usr/local/lib/ansi-include -std=c99 $(CPPFLAGS)
atualize o patch:
quilt refresh
execute a compilação novamente.
Você também pode começar a partir do pacote fonte Debian extraído e usá-lo uscan
para baixar e processar o tarball mais recente, mas deixarei você investigar isso se estiver interessado.