---+!! Criando Backport para pacotes Debian %TOC% ---++ ##. Objetivo Este tutorial descreve em linhas gerais o processo de criação de Backports para pacotes Debian. Esse artigo foi baseado na [[https://wiki.debian.org/SimpleBackportCreation][documentação oficial do Debian sobre Backporting]]. Como exemplo, vamos ilustrar o backporting do pacote *freeradius* da versão do Debian Jessie para a versão do Debian Wheezy (OBS: já existe um backport desse pacote, porém foi necessário gerar novamente devido a atualização da libssl que quebrou seu funcionamento retornando o erro _"libssl version mismatch. Built with: yyy Linked: xxx"_ ). ---++ ##. Definições * Backport: No contexto de pacotes Debian, o processo de Backporting ou criação de backport consiste em recompilar um pacote que foi originalmente criado para uma versão diferente da versão do seu sistema. Por exemplo: suponha que você esteja executando o Debian stable (atualmente o jessie) e um pacote que você trabalha possui a funcionalidade desejada apenas no Debian testing; daí você tem algumas opções: atualizar todo o seu sistema para o testing (o que pode ser um esforço grande para o propósito específico); forçar a instalação do pacote da testing no seu sistema (esse procedimento não é adequado e pode prejudicar o funcionamento da sua máquina, quebrar outros pacotes, gerar erros de dependência complexos, etc); instalar a versão do fabricante do software (upstream) diretamente ou usar um pacote debian de outra distribuição como ubuntu (o que também não é adequado pelos motivos anteriores); ou, por fim e mais apropriado, fazer um backport do pacote em questão e instalá-lo em seu servidor. ---++ ##. Pré-requisitos * Código fonte do pacote em questão (ex: habilitar a lista de fontes no =/etc/apt/sources.list=) * Privilégios de administrador na máquina ---++ ##. Descrição das etapas A partir do seu browser, localize o pacote que você deseja fazer o backport na versão aproriada (via http://packages.debian.org/) e baixe os arquivos DSC, ORIG.TAR.GZ e DEBIAN.TAR.GZ (as extensões podem variar um pouco, por exemplo .XZ a depender do tipo de compactação). Em nosso exemplo, decidimos fazer o backport do pacote freeradius do Jessie para Wheezy, portanto devemos baixar os seguintes arquivos: <verbatim> wget http://http.debian.net/debian/pool/main/f/freeradius/freeradius_2.2.5+dfsg-0.1~bpo70+1.dsc wget http://http.debian.net/debian/pool/main/f/freeradius/freeradius_2.2.5+dfsg.orig.tar.gz wget http://http.debian.net/debian/pool/main/f/freeradius/freeradius_2.2.5+dfsg-0.1~bpo70+1.debian.tar.gz </verbatim> Depois disso, instale as dependências de compilação do seu pacote. Em nosso caso:<verbatim> apt-get build-dep freeradius apt-get install devscripts </verbatim> Extrair o source do pacote obtido anteriormente e acessar seu conteúdo. Em nosso caso:<verbatim> dpkg-source -x freeradius_2.2.5+dfsg-0.1~bpo70+1.dsc cd freeradius-2.2.5+dfsg </verbatim> Em seguida, precisamos atualizar o changelog do pacote indicando a nossa alteração. Esse passo é importante pois, além de atualizar o changelog do pacote, ele atualiza o número da versão fazendo com que o pacote atual seja devidamente atualizado e permitindo que atualizações de versão do debian sobrescrevam essa mudança (uma vez que não faz mais sentido). No exemplo abaixo utilizamos a string *~bpo70+* pois a versão do nosso Debian era 7, usamos 70 (ver mais informações sobre a numeração [[https://backports.debian.org/Contribute/#index7h3][aqui]]):<verbatim> dch --local ~bpo70+ --distribution wheezy-backports "Rebuild for wheezy-backports to fix issue with libssl." </verbatim> Podemos agora compilar o pacote, atentando-se para não gerar a assinatura GPG e para não atualizar a lista de autores:<verbatim> dpkg-buildpackage -us -uc </verbatim> Se tudo correr bem, o seu pacote será gerado no diretório anterior ao que você fez a compilação (=../=), agora basta instalar. Em nosso exemplo, foram gerados vários pacotes que necessitamos (veja os pacotes instalados com *dpkg -l | grep NOME-PACOTE*, portanto precisamos instalar:<verbatim> dpkg -i ../freeradius_2.2.5+dfsg-0.1~bpo70+2_amd64.deb ../freeradius-common_2.2.5+dfsg-0.1~bpo70+2_all.deb # outros... </verbatim> Por fim, para remover as dependências de compilação que foram instaladas, podemos usar (substitua o NOME-PACOTE conforme seu ambiente): <verbatim> PACOTES=$(egrep -A1 "build-dep.*NOME-PACOTE" /var/log/apt/history.log | grep Install: | sed 's/Install://; s/),/)\n/g' | grep -v automatic) apt-get purge $PACOTES apt-get autoremove apt-get purge devscripts </verbatim> ---++ ##. Plano de Testes Depende de cada pacote que foi instalado. Uma forma geral de verificar se o pacote foi atualizado é conferir a nova versão dele, com: <verbatim> dpkg -l NOME-PACOTE </verbatim> ---++ ##. Plano de Retorno Para retornar a versão anterior ao backport, você pode força a versão com o _apt-get install_ (substitua NOME-PACOTE e VERSAO-ANTERIOR de forma apropriada): <verbatim> apt-get install NOME-PACOTE=VERSAO-ANTERIOR </verbatim> ---++ ##. Referências * [[https://wiki.debian.org/SimpleBackportCreation][Simple Backport Creation]] * [[https://www.debian.org/doc/manuals/packaging-tutorial/packaging-tutorial.en.pdf][Debian Packaging Tutorial]] * [[https://wiki.debian.org/Packaging][Howto Packaging Debian]] * Instale o pacote `packaging-tutorial` e abra o /usr/share/doc/packaging-tutorial/packaging-tutorial.pdf no seu leitor de PDF favorito. * [[http://eriberto.pro.br/debian/guia_empacotamento_debian_2.14.pdf][Guia Rápido de Empacotamento de Software no Debian]] -- Main.ItaloValcy - 17 Jan 2017
This topic: Wiki
>
WebHome
>
BackportPacoteDebian
Topic revision:
17 Jan 2017, italovalcy
(raw view)
No permission to view
System.WebBottomBarExample