Como construir um pacote

From Paldo

Jump to: navigation, search

Contents

[edit] Traduções

[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 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.
Personal tools