Gostaria de criar um novo pacote deb para instalar uma série de arquivos. Se possível, eu gostaria de descompactar a pasta que contém esses arquivos como parte da instalação em um local de pasta conhecido. Caso contrário, algum conhecimento de como empacotar as pastas e arquivos de origem seria muito útil.
A questão é - isso é possível e, se sim - como?
Vamos dar um exemplo:
~/mypluginfolder/
contém os arquivos x
, y
uma subpasta chamada abc
e dentro desse outro arquivo chamado z
.
Eu quero tar esta pasta: tar -cvf myfiles.tar ~/mypluginfolder
Eu presumo que meu pacote debian se pareceria
myfiles.tar.gz
myfiles+ppafoss_0.1-1/
myfiles.tar
DEBIAN
changelog, compat, control, install, rules source
É possível desarmar de alguma forma myfiles.tar
para um local de pasta conhecido, por exemplo
/usr/share/rhythmbox/plugins/
Assim, o resultado final seria:
/usr/share/rhythmbox/plugins/mypluginfolder
/usr/share/rhythmbox/plugins/mypluginfolder\x
/usr/share/rhythmbox/plugins/mypluginfolder\y
/usr/share/rhythmbox/plugins/mypluginfolder\abc\z
Se - presumindo que a barra de ativação precise da fonte, é aconselhável procurar onde eu devo colocar as pastas e arquivos de origem na estrutura do pacote deb.
Isso acabará se tornando uma série de pacotes PPA individuais da barra de ativação.
O que eu prefiro (mas talvez não consiga alcançar ...) é manter minha embalagem no mínimo - criar uma série de pacotes a partir de um modelo e ajustar o mínimo (changelog etc + o arquivo tar / estrutura de arquivos e pastas) .
fonte
Respostas:
Abaixo, estou assumindo que a fonte está aberta (por exemplo, scripts Python) que, portanto, não estão vinculados a nenhuma arquitetura (por exemplo, amd64 ou i386), portanto, "todos". Se você tiver alguma fonte C, precisará usar
Architecture: amd64 i386
em seucontrol
arquivo de origem .criando pacote pronto para Launchpad
A barra de ativação aceita apenas pacotes de origem, portanto, crie um
rules
que instale os arquivos nos locais corretos. Por conveniência, vou usar o debhelper . O diretório com seus arquivos deve se parecer com:Um
debian/copyright
arquivo também pode ser útil para informar os usuários sobre as licenças associadas ao pacote. Eu não acho que você precise de umpostinst
script, pois você só precisa extrair alguns arquivos.compat
deve conter o nível de compatibilidade do debhelper, diga "8". (consulte a página de manual do debhelper para mais detalhes)O
changelog
arquivo pode ser editado com odch
comando, disponível nodevscripts
pacote. Orules
(usando debhelper) deve conter:Torne executável usando
chmod 755 debian/rules
. Um pacote de origem pode ser criado usandodebuild -S
. Certifique-se de estar em um diretório chamado<package-name>-<version>
. Mais informações sobre ooverride_
comportamento e odh
comando podem ser encontradas em sua página de manual .O Guia dos Novos Mantenedores Debian foi muito valioso para eu entender isso, é uma leitura recomendada. Exemplo de embalagem pode ser encontrada em https://github.com/Bumblebee-Project/bumblebee-ppa .
criando pacote a partir da árvore de arquivos existente
dpkg-deb -b
pode ser usado para criar tarballs a partir de uma árvore de arquivos existente. Primeiro, comece com a criação de um diretório que deve receber o nome do seu pacote. Presumo que você queira nomeá-lomyplugin
e colocá-lo/usr/share/rhythmbox/plugins/mypluginfolder
. Além disso, crie oDEBIAN
diretório (maiúsculo!) Para armazenar informações do pacote:Copie seus arquivos:
Em seguida, você precisará do chamado arquivo de controle localizado no
myplugin/DEBIAN/control
qual descreve o pacote. O conteúdo desse arquivo é colocado abaixo:Agora, você pode opcionalmente verificar o conteúdo do seu pacote. O próximo comando lista o conteúdo das entradas de arquivo e diretório de
myplugin
:Se você estiver satisfeito, crie o pacote no diretório atual:
Um novo arquivo aparecerá, nomeado como o
<package>_<version>_<architecture>.deb
que está neste exemplomyplugin_1.0-1_all.deb
. Você pode usar oless
programa para espiar o arquivo. Por exemploless myplugin_1.0-1_all.deb
,.fonte