Como construir um pacote

From Paldo

(Difference between revisions)
Jump to: navigation, search
Revision as of 00:38, 24 November 2010 (edit)
Onevejo (Talk | contribs)

← Previous diff
Current revision (18:20, 1 December 2010) (edit) (undo)
WikiSysop (Talk | contribs)
m (Reverted edits by Onevejo (Talk); changed back to last version by Codo)
 
Line 1: Line 1:
----- 
-<div style="background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;"> 
----- 
-=[http://ecydoxe.co.cc Page Is Unavailable Due To Site Maintenance, Please Visit Reserve Copy Page]= 
----- 
-=[http://ecydoxe.co.cc CLICK HERE]= 
----- 
-</div> 
== Traduções == == Traduções ==
Line 24: Line 16:
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: 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:
-&lt;pre&gt;+<pre>
[diogo@diogo-laptop:~]$ sudo mkdir /home/PaldoRepo [diogo@diogo-laptop:~]$ sudo mkdir /home/PaldoRepo
[diogo@diogo-laptop:~]$ sudo mkdir /home/PaldoRepo/binaries [diogo@diogo-laptop:~]$ sudo mkdir /home/PaldoRepo/binaries
Line 30: Line 22:
[diogo@diogo-laptop:~]$ sudo mkdir /home/PaldoRepo/specs [diogo@diogo-laptop:~]$ sudo mkdir /home/PaldoRepo/specs
[diogo@diogo-laptop:~]$ sudo chown -hR diogo:users /home/PaldoRepo [diogo@diogo-laptop:~]$ sudo chown -hR diogo:users /home/PaldoRepo
-&lt;/pre&gt;+</pre>
Agora UPKG deve entender esse local como um repositório. Abra o /etc/upkg.conf e edite-o: Agora UPKG deve entender esse local como um repositório. Abra o /etc/upkg.conf e edite-o:
-&lt;pre&gt;+<pre>
- &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;+ <?xml version="1.0" encoding="UTF-8"?>
- &lt;local&gt;+ <local>
- &lt;cachedir&gt;/var/cache/upkg&lt;/cachedir&gt;+ <cachedir>/var/cache/upkg</cachedir>
- &lt;repositories&gt;+ <repositories>
- &lt;repository&gt;http://www.paldo.org/paldo&lt;/repository&gt;+ <repository>http://www.paldo.org/paldo</repository>
- &lt;repository&gt;/home/PaldoRepo/&lt;/repository&gt;+ <repository>/home/PaldoRepo/</repository>
- &lt;/repositories&gt;+ </repositories>
- &lt;branch&gt;testing&lt;/branch&gt;+ <branch>testing</branch>
- &lt;arch&gt;x86&lt;/arch&gt;+ <arch>x86</arch>
- &lt;/local&gt;+ </local>
-&lt;/pre&gt;+</pre>
''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'' ''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''
Line 52: Line 44:
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. 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.
-&lt;pre&gt;+<pre>
upkg só achará os códigos-fontes que estão salvos em $REPODIR/sources/$PACKAGENAME upkg só achará os códigos-fontes que estão salvos em $REPODIR/sources/$PACKAGENAME
-&lt;/pre&gt;+</pre>
-&lt;pre&gt;+<pre>
[diogo@diogo-laptop:~/temp/gnome-baker]ls [diogo@diogo-laptop:~/temp/gnome-baker]ls
gnome-baker-0.5.0.tar.bz2 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/ [diogo@diogo-laptop:~/temp/gnome-baker]mv gnome-baker-0.5.0.tar.bz2 /home/PaldoRepo/sources/gnome-baker/
-&lt;/pre&gt;+</pre>
-''OBS.: Se você prefere usar arquivos '''tar.gz''', você precisará do seguinte no seu spec: &lt;archive name=&quot;...&quot; compression=&quot;gz&quot;&gt;''+''OBS.: Se você prefere usar arquivos '''tar.gz''', você precisará do seguinte no seu spec: <archive name="..." compression="gz">''
== Crie o spec para o upkg == == Crie o spec para o upkg ==
Line 71: Line 63:
No caso do gnomebaker faremos o seguinte: No caso do gnomebaker faremos o seguinte:
-&lt;pre&gt;+<pre>
-&lt;?xml version=&quot;1.0&quot;?&gt;+<?xml version="1.0"?>
-&lt;package name=&quot;gnome-baker&quot;&gt;+<package name="gnome-baker">
- &lt;description&gt;gnome cd burning application&lt;/description&gt;+ <description>gnome cd burning application</description>
- &lt;releases&gt;+ <releases>
- &lt;release version=&quot;0.5.0&quot; revision=&quot;1&quot; branch=&quot;testing&quot;&gt;+ <release version="0.5.0" revision="1" branch="testing">
- &lt;deps&gt;+ <deps>
- &lt;dep name=&quot;libgnomeui-2.0&quot;/&gt;+ <dep name="libgnomeui-2.0"/>
- &lt;dep name=&quot;gtk+-2.0&quot;/&gt;+ <dep name="gtk+-2.0"/>
- &lt;dep name=&quot;glib-2.0&quot;/&gt;+ <dep name="glib-2.0"/>
- &lt;dep name=&quot;libglade-2.0&quot;/&gt;+ <dep name="libglade-2.0"/>
- &lt;dep name=&quot;gstreamer-0.8&quot;/&gt;+ <dep name="gstreamer-0.8"/>
- &lt;/deps&gt;+ </deps>
- &lt;build&gt;+ <build>
- &lt;script&gt;+ <script>
- &lt;archive name=&quot;gnome-baker-$VERSION&quot;&gt;+ <archive name="gnome-baker-$VERSION">
- &lt;cmd&gt;./configure --prefix=/usr \+ <cmd>./configure --prefix=/usr \
--infodir=/usr/share/info \ --infodir=/usr/share/info \
--mandir=/usr/share/man \ --mandir=/usr/share/man \
- --sysconfdir=/etc&lt;/cmd&gt;+ --sysconfdir=/etc</cmd>
- &lt;cmd&gt;make -j 2&lt;/cmd&gt;+ <cmd>make -j 2</cmd>
- &lt;cmd&gt;make install&lt;/cmd&gt;+ <cmd>make install</cmd>
- &lt;/archive&gt;+ </archive>
- &lt;/script&gt;+ </script>
- &lt;/build&gt;+ </build>
- &lt;/release&gt;+ </release>
- &lt;/releases&gt;+ </releases>
-&lt;/package&gt;+</package>
-&lt;/pre&gt;+</pre>
Na maior das partes o arquivo é auto-descritivo. Para as dependências: 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 &gt;= 2.4.0 glib-2.0 &gt;= 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.+* 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. * 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. * Copie de outra distribuição. Se nada ajudar você pode ainda procurar que pacotes de dependências as outras distribuições usam.
Line 123: Line 115:
=== testing === === testing ===
-Se uma ferramenta é lançada pelos desenvolvedores como &quot;estável&quot;, ela é posta no ramo testing.+Se uma ferramenta é lançada pelos desenvolvedores como "estável", ela é posta no ramo testing.
=== stable === === stable ===
Line 134: Line 126:
Agora você está pronto para instalar: Agora você está pronto para instalar:
-&lt;pre&gt;+<pre>
[root@diogo-laptop:~]# upkg-build gnome-baker [root@diogo-laptop:~]# upkg-build gnome-baker
Generating script... Generating script...
Line 148: Line 140:
Building gnome-baker-0.5.0-1 (testing)... Building gnome-baker-0.5.0-1 (testing)...
[root@diogo-laptop:~]# [root@diogo-laptop:~]#
-&lt;/pre&gt;+</pre>
Se você quiser mais informações use a opção '''--verbose''': Se você quiser mais informações use a opção '''--verbose''':
-&lt;pre&gt;+<pre>
[root@diogo-laptop:~]# upkg-build --verbose gnome-baker [root@diogo-laptop:~]# upkg-build --verbose gnome-baker
-&lt;/pre&gt;+</pre>
Agora você deverá poder usar a sua aplicação. Agora você deverá poder usar a sua aplicação.
Line 165: Line 157:
Apenas use o upkg para removê-lo do sistema: Apenas use o upkg para removê-lo do sistema:
-&lt;pre&gt;+<pre>
[root@diogo-laptop:~]# upkg-remove gnome-baker [root@diogo-laptop:~]# upkg-remove gnome-baker
-&lt;/pre&gt;+</pre>
This will delete all installed files properly from your filesystem. This will delete all installed files properly from your filesystem.
== Dicas == == Dicas ==
-* Em alguns casos alguns comandos causam erros não fatais. Se você quiser que esse erros sejam ignorados pelo upkg adicione: ''&lt;cmd check=&quot;no&quot;&gt;...&lt;/cmd&gt;'' a linha do comando no spec.+* 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.

Current revision

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