Eu tenho o código-fonte de um programa (retirado de cvs / svn / git / ...) e gostaria de construir um pacote Debian / Ubuntu para ele. O pacote está presente nos repositórios, mas:
- É uma versão mais antiga (sem os recursos de que preciso)
- Preciso de opções de compilação ligeiramente diferentes do padrão.
Qual é a maneira mais fácil de fazer isso? Estou preocupado com algumas coisas
- Como posso verificar se listei todas as dependências corretamente? (Posso obter algumas dicas olhando de que dependia a versão anterior, mas podem ter sido adicionadas novas dependências.)
- Como posso evitar que o sistema de atualização instale a versão anterior no repo em uma atualização?
- Como posso evitar que o sistema instale uma versão mais recente (quando ela sair), sobrescrevendo meu pacote personalizado?
Respostas:
você pode usar o pacote especial "checkinstall" para todos os pacotes que ainda não estão no debian / ubuntu.
Você pode usar "uupdate" (
apt-get install devscripts
) para construir um pacote a partir da fonte com fontes debian existentes:Exemplo para libdrm2:
fonte
libdrm-2.3.1
exatamente? Também de ondelibdrm-2.4.1.tar.gz
veio (minha suposição inicial é que é o binário compilado do aplicativo que queremos empacotar em um deb, mas substituindo a versão existente, correto?)You must put some 'source' URIs in your sources.list
, descomente as linhas deb-src em seu/etc/apt/sources.list
Primeiro, a pergunta do título: Assumindo que o diretório debian já está lá, esteja no diretório fonte (o diretório que contém o diretório debian) e execute dpkg-buildpackage. Gosto de executá-lo com estas opções:
o que significa não assine o resultado e não limpe.
Obter as dependências é uma arte negra. A maneira "oficial" é verificar se o pacote é compilado apenas com o sistema básico, os pacotes "essenciais para compilar" e as dependências de compilação que você especificou. Não sei uma resposta geral para dependências regulares, apenas avance :)
Meu conhecimento pode estar desatualizado neste, mas para abordar ambos: Use dpkg --set-selections. Supondo que nullidentd seja o pacote que você deseja manter, execute como root
Como alternativa, já que você está compilando a partir do código-fonte, você pode usar uma época para definir o número da versão artificialmente alto e nunca mais ser incomodado. Para usar uma época, adicione uma nova entrada ao arquivo debian / changelog e coloque 99: na frente do número da versão. Dado meu exemplo nullidentd, a primeira linha do seu changelog atualizado seria:
O link do Bernard é bom, especialmente se você tiver que criar o diretório debian - também é útil a referência de desenvolvedores e a página de recursos gerais . O link de Adam também parece bom, mas não estou familiarizado com ele.
fonte
Para o que você quer fazer, você provavelmente quer usar o código fonte debian diff, então seu pacote é semelhante ao oficial, exceto pela versão original usada. Você pode baixar o código-fonte diff de packages.debian.org , ou pode obtê-lo junto com o .dsc e o arquivo-fonte original usando "apt-get source".
Então você descompacta sua nova versão do código fonte, muda para aquele diretório e aplica o diff que você baixou fazendo
Em seguida, faça as alterações que deseja para as opções de compilação e construa o pacote fazendo
fonte
Exemplo de compilação baseada no Ubuntu para ccache:
Mais detalhes: http://blog.aplikacja.info/2011/11/building-packages-from-sources-in-debianubuntu/
fonte
fonte
Eu acredito que este é o pacote Debian 'bíblia'.
Bem, é o guia do novo mantenedor do Debian, então muitos deles não serão aplicáveis, mas eles cobrem o que vai aonde.
fonte
Se você estiver usando o Ubuntu, verifique o projeto pkgcreator: http://code.google.com/p/pkgcreator
fonte
Aqui está um tutorial para construir um pacote Debian.
Basicamente, você precisa:
Normalmente faço tudo isso no meu Makefile, então posso apenas digitar make para cuspir o binário e empacotá-lo de uma vez.
fonte
Esta
pbuilder
é uma excelente ferramenta para verificar as dependências de construção e dependências configurando um sistema de base limpo em um ambiente chroot. Compilando o pacote dentro do pbuilder, você pode facilmente verificar as dependências de construção e, testando-o em um ambiente pbuilder, você pode verificar as dependências.fonte
Se você deseja uma maneira rápida e suja de instalar as dependências de compilação, use:
Isso instala as dependências. Você precisa de linhas de fontes em seu sources.list para isso:
Se você está fazendo backport de pacotes de teste para estável, saiba que as dependências podem ter mudado. O comando apt-get build-deb instala dependências para os pacotes fonte em seu repositório atual.
Mas é claro, dpkg-buildpackage -us -uc mostrará a você todas as dependências desinstaladas.
Se você quiser compilar com mais frequência, use o cowbuilder.
Em seguida, crie uma área de construção:
sudo DIST = squeeze ARCH = amd64 cowbuilder --create
Em seguida, compile um pacote de origem:
Observe onde o cowbuilder coloca o pacote resultante.
Boa sorte!
fonte