Como construir um pacote
From Paldo
Contents |
[edit] Traduções
- English
- Português
[edit] Sobre
Este artigo deverá ajudá-lo a construir um pacote através do código-fonte usando upkg. UPKG é o gerenciador de pacotes e o sistema de construção de pacotes usado no GNU/Linux paldo.
[edit] Porquê?
Já que os repositórios do paldo são pequenos, mesmo existindo uma aplicação para cada tarefa, pode ser que você não queira usar o k3b (e suas dependências) para gravar e copiar CDs. Já que o Gnome Baker não está nos repositórios você pode compilá-lo do código-fonte, mas isso poderia trazer futuros problemas na manutenção, por exemplo. O melhor é usar o UPKG para gerenciar os pacotes mesmo daqueles que você construir do código-fonte.
[edit] Crie um Repositório-Paldo local
Primeiro você deve criar um local para por as informações dos pacotes fontes. Não tem importância aonde você vai criar esse repositório local. No exemplo eu pus em /home/PaldoRepo:
[diogo@diogo-laptop:~]$ sudo mkdir /home/PaldoRepo
[diogo@diogo-laptop:~]$ sudo mkdir /home/PaldoRepo/binaries
[diogo@diogo-laptop:~]$ sudo mkdir /home/PaldoRepo/sources
[diogo@diogo-laptop:~]$ sudo mkdir /home/PaldoRepo/specs
[diogo@diogo-laptop:~]$ sudo chown -hR diogo:users /home/PaldoRepo
Agora UPKG deve entender esse local como um repositório. Abra o /etc/upkg.conf e edite-o:
<?xml version="1.0" encoding="UTF-8"?>
<local>
<cachedir>/var/cache/upkg</cachedir>
<repositories>
<repository>http://www.paldo.org/paldo</repository>
<repository>/home/PaldoRepo/</repository>
</repositories>
<branch>testing</branch>
<arch>x86</arch>
</local>
OBS.: Se você quer que o UPKG prefira os seus pacotes locais ao invés dos pacotes oficiais, ponha o seu repositório antes do repositório do paldo
[edit] Pegue o código-fonte
Agora baixe o código-fonte da aplicação que você quer instalar para a pasta /home/PaldoRepo/sources. O Upkg precisa do código distribuído como tar ou tar.bz2. Verifique se o seu código é um arquivo suportado. Tenha certeza de que o arquivo tem o nome que você usará na etiqueta do pacote.
upkg só achará os códigos-fontes que estão salvos em $REPODIR/sources/$PACKAGENAME
[diogo@diogo-laptop:~/temp/gnome-baker]ls gnome-baker-0.5.0.tar.bz2 [diogo@diogo-laptop:~/temp/gnome-baker]mv gnome-baker-0.5.0.tar.bz2 /home/PaldoRepo/sources/gnome-baker/
OBS.: Se você prefere usar arquivos tar.gz, você precisará do seguinte no seu spec: <archive name="..." compression="gz">
[edit] Crie o spec para o upkg
Agora temos que dizer ao upkg como compilar o código-fonte. Isso é feito por um arquivo simples em XML. Você precisa criar esse arquivo com o nome do pacote e no diretório specs do seu repositório. O nome do arquivo deveria ser o nome do pkgconf ou o nome do tar do pacote.
Você pode pegar o nome do pkgconfig no código-fonte procurando o arquivo pkgname.pc.in. Por exemplo redland.pc.in.
No caso do gnomebaker faremos o seguinte:
<?xml version="1.0"?>
<package name="gnome-baker">
<description>gnome cd burning application</description>
<releases>
<release version="0.5.0" revision="1" branch="testing">
<deps>
<dep name="libgnomeui-2.0"/>
<dep name="gtk+-2.0"/>
<dep name="glib-2.0"/>
<dep name="libglade-2.0"/>
<dep name="gstreamer-0.8"/>
</deps>
<build>
<script>
<archive name="gnome-baker-$VERSION">
<cmd>./configure --prefix=/usr \
--infodir=/usr/share/info \
--mandir=/usr/share/man \
--sysconfdir=/etc</cmd>
<cmd>make -j 2</cmd>
<cmd>make install</cmd>
</archive>
</script>
</build>
</release>
</releases>
</package>
Na maior das partes o arquivo é auto-descritivo. Para as dependências:
- Leia o configure.in ou configure.ac no código-fonte. Você achará provavelmente algo assim: PKG_CHECK_MODULES(GNOME, libgnomeui-2.0 gtk+-2.0 >= 2.4.0 glib-2.0 >= 2.4.0 libglade-2.0 gstreamer-0.8,,exit) nesse caso você provavelmente encontrará facilmente os pacotes necessários. Na maior parte dos casos o Paldo usa exatamente esses nomes. Por exemplo libgnomeui-2.0 está nos repositórios como libgnomeui-2.0. Contudo se não você pode ir a http://www.paldo.org/ e procurar o nome correto.
- Cheque o README, INSTALL,... no código-fonte. Alguns projetos listão suas dependências nesses arquivos.
- Copie de outra distribuição. Se nada ajudar você pode ainda procurar que pacotes de dependências as outras distribuições usam.
[edit] Como paldo organiza seus repositórios
Upkg conhece quatro ramos diferentes:
- experimental
- unstable
- testing
- stable
Eles tem esses propósitos:
[edit] experimental
Esse é o lugar para as ferramentas recém-lançadas que podem vir a quebrar alguma coisa. Poderia ser,por exemplo,uma cópia de um svn, git, etc.
[edit] unstable
Mais testados mas ainda não tão estáveis. Por exemplo a versão beta de uma ferramenta.
[edit] testing
Se uma ferramenta é lançada pelos desenvolvedores como "estável", ela é posta no ramo testing.
[edit] stable
Todas as ferramentas que estão no testing quando uma nova versão do paldo é distribuída está no ramo stable.
Se você por um pacote no ramo testing ele só será possível de instalar nos ramos mais novos (instável e experimental) além do próprio testing... o que significa que ele não será instalado no stable.
[edit] Iniciar compilação e instalação
Agora você está pronto para instalar:
[root@diogo-laptop:~]# upkg-build gnome-baker
Generating script...
Writing script...
Executing script...
The following extra packages will be installed:
gnome-baker
The following packages will be built from source:
gnome-baker
Do you want to continue? [Y/n]
Building gnome-baker-0.5.0-1 (testing)...
[root@diogo-laptop:~]#
Se você quiser mais informações use a opção --verbose:
[root@diogo-laptop:~]# upkg-build --verbose gnome-baker
Agora você deverá poder usar a sua aplicação.
[edit] Arquivos de Log do upkg-build
Se você quiser ver o que exatamente o upkg fez dê uma olhada em /var/lib/upkg/logs/PACKAGE-VERSION.log.bz2
[edit] Remover o pacote
Apenas use o upkg para removê-lo do sistema:
[root@diogo-laptop:~]# upkg-remove gnome-baker
This will delete all installed files properly from your filesystem.
[edit] Dicas
- Em alguns casos alguns comandos causam erros não fatais. Se você quiser que esse erros sejam ignorados pelo upkg adicione: <cmd check="no">...</cmd> a linha do comando no spec.

