cria um pacote .deb a partir de scripts ou binários

70

Eu procurei uma maneira simples de criar pacotes .deb para coisas que não possuem código-fonte para compilar (configs, shellscripts, software proprietário). Isso foi um grande problema, porque a maioria dos tutoriais de pacotes está assumindo que você tem um tarball de origem que deseja compilar. Então eu encontrei este tutorial curto (alemão ).

Depois, criei um pequeno script para criar um repositório simples. Assim:

rm /export/my-repository/repository/*
cd /home/tdeutsch/deb-pkg
for i in $(ls | grep my); do dpkg -b ./$i /export/my-repository/repository/$i.deb; done
cd /export/avanon-repository/repository
gpg --armor --export "My Package Signing Key" > PublicKey
apt-ftparchive packages ./ | gzip > Packages.gz
apt-ftparchive packages ./ > Packages
apt-ftparchive release ./ > /tmp/Release.tmp; mv /tmp/Release.tmp Release
gpg --output Release.gpg -ba Release

Eu adicionei a chave ao keyring apt e incluí a fonte assim:

deb http://my.default.com/my-repository/ ./

Parece que o repositório em si está funcionando bem (tive alguns problemas, para corrigi-los eu precisava adicionar os Pacotes duas vezes e criar a solução alternativa para o arquivo Release). Eu também coloquei alguns .deb baixados no repositório, parece que eles também estão trabalhando sem problemas. Mas meus pacotes criados por mim não ... Quando eu faço sudo apt-get update , eles estão causando erros como este:

E: Problem parsing dependency Depends
E: Error occurred while processing my-printerconf (NewVersion2)
E: Problem with MergeList /var/lib/apt/lists/my.default.com_my-repository_._Packages
E: The package lists or status file could not be parsed or opened.

Alguém tem uma ideia do que eu fiz de errado?

ATUALIZAÇÃO 2012-03-06: Apenas uma dica para outra pessoa que está procurando uma maneira fácil de criar DEBs: Dê uma olhada em FPM .

    
por Thomas Deutsch 23.02.2011 / 12:11

1 resposta

69

O tutorial que você vinculou usa uma abordagem de baixo nível para criar um pacote. Essa abordagem geralmente não é recomendada e pode levar a todos os tipos de problemas quando não feita com cuidado.

A criação de um .deb para um script é muito simples quando você entende os princípios básicos do empacotamento. Em poucas palavras:

# Configure your paths and filenames
SOURCEBINPATH=~
SOURCEBIN=myscript.sh
DEBFOLDER=~/somescripts
DEBVERSION=0.1

DEBFOLDERNAME=$DEBFOLDER-$DEBVERSION

# Create your scripts source dir
mkdir $DEBFOLDERNAME

# Copy your script to the source dir
cp $SOURCEBINPATH/$SOURCEBIN $DEBFOLDERNAME 
cd $DEBFOLDERNAME

# Create the packaging skeleton (debian/*)
dh_make -s --indep --createorig 

# Remove make calls
grep -v makefile debian/rules > debian/rules.new 
mv debian/rules.new debian/rules 

# debian/install must contain the list of scripts to install 
# as well as the target directory
echo $SOURCEBIN usr/bin > debian/install 

# Remove the example files
rm debian/*.ex

# Build the package.
# You  will get a lot of warnings and ../somescripts_0.1-1_i386.deb
debuild

Adicionar mais scripts requer que eles sejam copiados para o diretório e adicionados ao arquivo debian / install - e, em seguida, apenas re-execute o debuild. Você também deve verificar e atualizar os arquivos debian / * conforme necessário.

Você deve ler as páginas do manual para: dh_make , dh_install e debuild

    
por João Pinto 23.02.2011 / 14:27