Como criar pacotes para o Gentoo ou Sabayon Linux

Este artigo explica e exemplifica, um procedimento fácil para fazer pacotes para o Gentoo ou Sabayon.

[ Hits: 24.255 ]

Por: Alberto Federman Neto. em 20/05/2013 | Blog: https://ciencialivre.blog/


Fazendo e instalando um pacote para Gentoo



Empacotando

A primeira situação: fazer um pacote para o Gentoo, mas não instalá-lo.

De fato, há várias maneiras de fazer pacotes para Gentoo. Uma delas, seria fazê-lo usando um Overlay local, ou seja, partindo de um Ebuild salvo no micro, mas sem instalar.

Outro jeito, seria usando o comando ebuild (ao invés do emerge) mas, neste caso, pode ser que tenha que montar várias dependências manualmente.

Uma maneira não complicada, é vista aqui. O exemplo esclarece, vamos fazer o pacote "myaspell-pt-br":
É um dicionário, corretor ortográfico para LibreOffice, em português do Brasil. Eu o escolhi como exemplo, porque ele é pequeno, compila rápido e pode ser um arquivo útil a muitos de nós.

Para apenas compilá-lo com Portage, fazer o pacote mas não instalar, vamos executar o comando abaixo. Com ele você encontra, vê, confirma, que o pacote existe no repositório do Gentoo:

emerge -s myaspell-pt-br

Agora, compile e empacote (extensão típica, padrão no Gentoo é "tbz2"). Se forem necessárias dependências, aparecerão mensagens avisando quais são, e se você precisa ou não, empacotá-las separadamente:

# LINGUAS="pt_BR" emerge -av -B --newuse app-dicts/myspell-pt-br

As opções usadas acima:
  • - A FLAG de LINGUAS :: garante que ele compilará direto em português do Brasil (se existir a tradução, senão ficará em inglês).
  • --ask (ou -a) :: perguntará sobre todos os pacotes, incluindo as dependências necessárias e se você quer usá-las.
  • --verbose (ou -v) :: te dará uma saída mais detalhada.
  • A opção --newuse, é porque você editou o "make.conf" (página 2), e vai usá-lo pela primeira vez.
  • --buildpkgonly (ou -B) :: esta é a opção chave, importante, ela que faz o emerge apenas compilar e empacotar, sem instalar o pacote. O "app-dicts/myspell-pt-br", por sua vez, são a categoria e o nome do pacote, que o comando emerge - s anteriormente localizou.

Observe, abaixo, meu teste. Veja que compilou corretamente, e que antes de comprimir em "tbz2", o Portage "instala" temporariamente o pacote e o testa:

sudo LINGUAS="pt_BR" emerge -v -B --newuse app-dicts/myspell-pt-br

 * IMPORTANT: 19 news items need reading for repository 'gentoo'.
 * Use eselect news to read news items.

These are the packages that would be built, in order:

Calculating dependencies... done!
[ebuild  N     ] app-dicts/myspell-pt-br-2.1.1  5,794 kB

Total: 1 package (1 new), Size of downloads: 5,794 kB

>>> Verifying ebuild manifests

>>> Emerging (1 of 1) app-dicts/myspell-pt-br-2.1.1
>>> Downloading 
 'ftp://ftp.las.ic.unicamp.br/pub/gentoo/distfiles/Vero_pt_BR_V211AOC.oxt'
--2013-05-08 16:28:45--  
 ftp://ftp.las.ic.unicamp.br/pub/gentoo/distfiles/Vero_pt_BR_V211AOC.oxt
           => "/usr/portage/distfiles/Vero_pt_BR_V211AOC.oxt"
Resolvendo ftp.las.ic.unicamp.br... 143.106.60.118
Conectando-se a ftp.las.ic.unicamp.br|143.106.60.118|:21... conectado.
Acessando como anonymous ... Acesso autorizado!
==> SYST ... feito.   ==> PWD ... feito.
==> TYPE I ... feito. ==> CWD (1) /pub/gentoo/distfiles ... feito.
==> SIZE Vero_pt_BR_V211AOC.oxt ... 1371061
==> PASV ... feito.   ==> RETR Vero_pt_BR_V211AOC.oxt ... feito.
Tamanho: 1371061 (1,3M) (sem autoridade)

100%[=====================>] 1.371.061    237KB/s   em 5,7s

2013-05-08 16:28:51 (237 KB/s) - 
 "/usr/portage/distfiles/Vero_pt_BR_V211AOC.oxt" salvo [1371061]

 * Vero_pt_BR_V211AOC.oxt SHA256 SHA512 WHIRLPOOL size ;-) ...                       [ ok ]
>>> Downloading 
 'ftp://ftp.las.ic.unicamp.br/pub/gentoo/distfiles/myspell-pt-br-2.1.1-thes.oxt'
--2013-05-08 16:28:51--  
 ftp://ftp.las.ic.unicamp.br/pub/gentoo/distfiles/myspell-pt-br-2.1.1-thes.oxt
       => "/usr/portage/distfiles/myspell-pt-br-2.1.1-thes.oxt"
Resolvendo ftp.las.ic.unicamp.br... 143.106.60.118
Conectando-se a ftp.las.ic.unicamp.br|143.106.60.118|:21... conectado.
Acessando como anonymous ... Acesso autorizado!
==> SYST ... feito.   ==> PWD ... feito.
==> TYPE I ... feito. ==> CWD (1) /pub/gentoo/distfiles ... feito.
==> SIZE myspell-pt-br-2.1.1-thes.oxt ... 4561516
==> PASV ... feito.   ==> RETR myspell-pt-br-2.1.1-thes.oxt ... feito.
Tamanho: 4561516 (4,3M) (sem autoridade)

100%[============================>] 4.561.516    237KB/s   em 19s

2013-05-08 16:29:11 (237 KB/s) - 
 "/usr/portage/distfiles/myspell-pt-br-2.1.1-thes.oxt" salvo [4561516]

 * myspell-pt-br-2.1.1-thes.oxt SHA256 SHA512 WHIRLPOOL size ;-) ...                 [ ok ]
>>> Unpacking source...
>>> Unpacking 
  /var/tmp/portage/app-dicts/myspell-pt-br-2.1.1/distdir/Vero_pt_BR_V211AOC.oxt to
  /var/tmp/portage/app-dicts/myspell-pt-br-2.1.1/work
>>> Unpacking 
 /var/tmp/portage/app-dicts/myspell-pt-br-2.1.1/
 distdir/myspell-pt-br-2.1.1-thes.oxt to 
 /var/tmp/portage/app-dicts/myspell-pt-br-2.1.1/work
>>> Source unpacked in 
 /var/tmp/portage/app-dicts/myspell-pt-br-2.1.1/work
>>> Preparing source in 
 /var/tmp/portage/app-dicts/myspell-pt-br-2.1.1/work ...
>>> Source prepared.
>>> Configuring source in 
 /var/tmp/portage/app-dicts/myspell-pt-br-2.1.1/work ...
>>> Source configured.
>>> Compiling source in 
 /var/tmp/portage/app-dicts/myspell-pt-br-2.1.1/work ...
>>> Source compiled.
>>> Test phase [not enabled]: app-dicts/myspell-pt-br-2.1.1
>>> Install myspell-pt-br-2.1.1 into 
 /var/tmp/portage/app-dicts/myspell-pt-br-2.1.1/image/ category app-dicts
>>> Completed installing myspell-pt-br-2.1.1 into 
 /var/tmp/portage/app-dicts/myspell-pt-br-2.1.1/image/
ecompressdir: bzip2 -9 /usr/share/doc
./
./usr/
./usr/share/
./usr/share/doc/
./usr/share/doc/myspell-pt-br-2.1.1/
./usr/share/doc/myspell-pt-br-2.1.1/readme.txt.bz2
./usr/share/doc/myspell-pt-br-2.1.1/README_en.TXT.bz2
./usr/share/doc/myspell-pt-br-2.1.1/README_pt_BR.TXT.bz2
./usr/share/doc/myspell-pt-br-2.1.1/README_hyph_pt_BR.TXT.bz2
./usr/share/hunspell/
./usr/share/hunspell/pt_BR.aff
./usr/share/hunspell/pt_BR.dic
./usr/share/hyphen/
./usr/share/hyphen/hyph_pt_BR.dic
./usr/share/mythes/
./usr/share/mythes/th_pt_BR.dat
./usr/share/mythes/th_pt_BR.idx
./usr/share/myspell/
./usr/share/myspell/pt_BR.aff
./usr/share/myspell/pt_BR.dic
./usr/share/myspell/hyph_pt_BR.dic
./usr/share/myspell/th_pt_BR.dat
./usr/share/myspell/th_pt_BR.idx
>>> Done.


Onde ficará o pacote pronto?
No diretório que você especificou, o PKGDIR (página 2). No nosso exemplo, eu especifiquei "/home/usuário/PKGDIR":
Linux: Como criar 
pacotes para o Gentoo ou Sabayon Linux   Linux: Como criar 
pacotes para o Gentoo ou Sabayon Linux

Observe nas figuras, que os subdiretórios de categoria, necessários para que o Portage encontre os pacotes, são criados automaticamente e aparecem.

Para o seu pacote, substitua o nome "myspell-pt-br" pelo pacote que quer. Obviamente, como é um pacote para Gentoo, ele tanto pode ser feito em Sabayon, como no Gentoo mesmo.

Assim, resumindo, você fez um pacote para Gentoo e ele está salvo na pasta PKGDIR. Fácil, não?

Instalando

O pacote é para Gentoo, vamos instalá-lo com Portage. Uma das maneiras de fazê-lo: vá para pasta onde está o pacote e execute diretamente o comando de instalá-lo, especificando a extensão:

cd /
$ cd home/usuario/PKGDIR/app-dicts

# emerge -v myspell-pt-br.tbz2


Observe aqui a saída do comando, instalou:

sudo emerge myspell-pt-br-2.1.1.tbz2

 * IMPORTANT: 19 news items need reading for repository 'gentoo'.
 * Use eselect news to read news items.

Calculating dependencies... done!

>>> Emerging binary (1 of 1) app-dicts/myspell-pt-br-2.1.1
 * myspell-pt-br-2.1.1.tbz2 MD5 SHA1 size ;-) ...                        [ ok ]
>>> Extracting info
>>> Extracting app-dicts/myspell-pt-br-2.1.1
>>> Installing (1 of 1) app-dicts/myspell-pt-br-2.1.1
>>> Recording 
 app-dicts/myspell-pt-br::gentoo in "world" favorites file...
>>> Auto-cleaning packages...
>>> No outdated packages were found on your system.

 * Regenerating GNU info directory index...
 * Processed 190 info files.


emerge -s myspell-pt-br

Searching...
[ Results for search key : myspell-pt-br ]
[ Applications found : 1 ]

*  app-dicts/myspell-pt-br
      Latest version available: 2.1.1
      Latest version installed: 2.1.1
      Size of files: 5,793 kB
      Homepage:      http://www.broffice.org/verortografico/
      Description:   Brazilian dictionaries for myspell/hunspell
      License:       LGPL-3 MPL-1.1



Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Preparando o sistema
   3. Fazendo e instalando um pacote para Gentoo
   4. Fazendo e instalando um pacote para Sabayon
   5. Empacotando programas já instalados no sistema
   6. Conclusão
Outros artigos deste autor

Recuperando e/ou adaptando o GRUB do Sabayon Linux

Os bons tempos voltaram! Revivendo e revisitando o WindowMaker

Sabayon Linux remasterizado para placas de vídeo ATI

Trabalhando com boot duplo ou múltiplo: estação para testes de sistemas operacionais

Firefox: Testando e/ou utilizando várias versões

Leitura recomendada

ownCloud - Em poder de suas mãos (Private Cloud)

Compiz - Janelas à 360 graus no Linux

Tutorial Radio Web Livre = IceCast2 + Ices2 + FFMP3

Instalação do Ambiente .NET (#C) no Slackware 15.0

Leitores de e-Books no Linux

  
Comentários
[1] Comentário enviado por albfneto em 20/05/2013 - 07:59h

ERRATA E COMPLEMENTOS DO ARTIGO:

Atualizado até 6 de Fevereiro de 2015.

IMPORTANTE

uma versão do pacote MYSPELL-PT-BR, agora, baixe deste Link:

https://www.dropbox.com/s/n0n5eax8jut8xke/app-dicts%3Amyspell-pt-br-2.1.1.a89f1d3613f5c1b8ec11efc457...

mas ele já está no repositório normal do sabayon, instalável com equo.



A) ERRATA:
Página 1, há um erro no link para baixar o pacote Serpentine, página 1. Onde se lê "href =" o correto é sem "href =".

Pagina 4, onde se lê: "para não delte para Sabayonetar nada, nenhum Ebuild", lê-se: "para não deletar nada, nenhum Ebuild, ou Diretório".

Página 1,onde se lê:"protegê-lo da minha instalação", lê-se: proteger o da minha instalação".


B) COMPLEMENTOS. MAIS PACOTES.

Aqui irei colocar Links para downloads de mais pacotes que estou fazendo e guardando, podem baixar livremente.

Formando um pequeno repositório de pacotes para Sabayon e Gentoo:

Mais pacotes que criei e disponibilizei.

B1) Sulfur, a antiga interface gráfica do Entropy (para Sabayon, antecessora do Rigo). O Sulfur é mais prático quando você quer controlar quais pacotes instalar:

http://www.vivaolinux.com.br/dica/Sabayon-Linux-Usando-os-dois-instaladores-graficos-tanto-Rigo-como...

Pode ser baixada deste endereço:

https://www.dropbox.com/s/sr2wbxb6cwiwapd/app-admin%3Asulfur-1.0_rc107.c393e29a7b729783b5b2bd722bb88...

B2) Um Firefox, Experimental, 64 Bits, versão 21,compilado em Português do Brasil, com suporte inclusive ao antigo Gstreamer, para Sabayon:

https://www.hidrive.strato.com/lnk/bErhkkvl
https://www.dropbox.com/s/lpgd1mcod7l4g1i/www-client%3Afirefox-21.0.01a466a30551917b3fc8921e8d525658...

B3) ConsoleKit, necessário em alguns casos para manter o botão desligar ativo:

http://www.vivaolinux.com.br/dica/Sabayon-Linux-com-MATE-ou-KDE-Botao-de-Desligar-sumiu-Resolvido/

Baixe de:

https://www.dropbox.com/s/592umm11cwq5h8w/sys-auth%3Aconsolekit-0.4.5_p20120320-r1%7E0.tbz2
https://www.dropbox.com/s/ax6dgqwmbnwitgs/sys-auth%3Aconsolekit-0.4.5_p20120320-r2.fe9df300c1975bcca...

B4) Protobuf antigo, 2.4.1, anterior à versão 2.5.0, necessário para manter fusion-icon funcionando, com o protobuf novo, não funciona.

baixem de:

https://www.dropbox.com/s/uq1lsm41whyzegl/dev-libs%3Aprotobuf-2.4.1.a36e506628aeb01fd9bc41c9306f9186...

B5) Alguns Codecs de Audio Uteis. o Win32Codecs, já tem no Sabayon, mas aqui estão AMD64Codec, FAAC, MAC (Monkey's Audio Codecs)

AMD64CODECS:
https://www.dropbox.com/s/9x7w1pc52zz8n79/media-libs%3Aamd64codecs-20071007.2b5536ed09c0b543e3b9edef...

FAAC:
https://www.dropbox.com/s/lcvdneslfeidsy1/media-libs%3Afaac-1.28-r3.426d594fa34f97179a44a932fea3c1c1...

MAC:
https://www.dropbox.com/s/dhad9scku6fw608/media-sound%3Amac-3.99.4.5.7-r1.dd6b639a0952a64f9d09307580...

WIN32CODECS:
https://www.dropbox.com/s/8e4trlkeulwtel5/media-libs%3Awin32codecs-20071007-r4.659aabc928faff0508fee...

Para Gentoo:
https://www.dropbox.com/sh/xsgnqxg9vwx4qhb/X9o-305vKh
https://www.dropbox.com/sh/y801qaewvp9gwxq/0cdQa3iMJl

B6) Este é um Kernel Estável (3.9.11) que não dá nenhum problema com NVIDIA, nem com ATI, nem com Systemd,

porque o 3.10 dá problemas.

Se quiser usar esse Kernel, baixe de:

https://www.dropbox.com/s/5ort7o6dk1q84i4/sys-kernel%3Alinux-sabayon-3.9.11.30981542b966d78d6b6e2446...

B7) Para a GUI de Portage, Kuroo,há uma nova versão, consulte este meu Artigo:

https://gnutwoall.wordpress.com/2013/10/28/compilando-kuroo4-64-bits-em-sabayon-eou-gentoo/

B8) Versão de 2012 do Amule Adunanza. Agradecimentos a Sabayonino, Itália pela compilação.

Pode ser baixado da minha área do Dropbox:

https://www.dropbox.com/s/tijoitg2029tda0/net-p2p%3Aamuleadu-9999.99059dda93a20df7536c3e5c81c777074e...

Ou da de Sabayonino:

https://www.dropbox.com/s/6a58r9ewnmtud16/net-p2p%3Aamuleadu-9999.99059dda93a20df7536c3e5c81c777074e...

também veja este outro meu artigo sôbre o Amule Adunanza:

https://gnutwoall.wordpress.com/2014/07/07/amule-adunanza-em-sabayon/









C) SCREENSHOT:

Este Screenshot mostra o aplicativo empacotado Portato, que foi baixado do Link e instalado em outro computador:

http://www.vivaolinux.com.br/screenshot/KDE-Preservando-Pacote-Classico-que-nao-existe-mais/

Isso demostra, confirma, que o Pacote criado está funcionando.





[2] Comentário enviado por removido em 20/05/2013 - 10:25h

Ótimo artigo Alberto (como sempre). Testei aqui as duas formas para Gentoo (estou com Funtoo) e funcionou perfeitamente. Depois de ver o seu artigo eu cheguei a uma conclusão: o Daniel e o Fábio são gênios. Interessante que no caso do portage, ele mesmo procura pelas dependências e empacota-as, pensei que ele empacotaria somente o pacote que mandei, mas ele empacotou as dependências também. Tenho apenas algumas perguntas:
1º Para criar pacotes para Sabayon eu precisaria ter o entropy instalado aqui no meu Funtoo? Ou tem outra forma de criar sem usar o entropy?
2º Como faria para empacotar direto dos fontes de um programa, teria que escrever uma ebuild para o portage?

Muito bom o seu artigo! Favoritado!

[3] Comentário enviado por albfneto em 20/05/2013 - 12:23h

Sim, precisa, porque para empacotar para Sabayon (que é entropy), precisa ter o Entropy. Como viu no meu artigo, o pacote entropy pode ser feito do pacote gentoo normal, mas a conversão, pacote gentoo para pacote sabayon, é feita pelo Entropy.

vc pode tentar instalar entropy no funtoo, ele está no Overlay Sabayon, mas se não quiser mudar o Funtoo, colocando instalador binário nele, faça um duplo boot comum sabayon pequeno, tipo com fluxbox, só para criar pacotes de sabayon.

Sim, ele empacota as dependencias, principalmente se vc instalar o pacote a ser criado no seu micro antes.
Concordo com vc, Portage e Entropy são Obras-Primas de Programação, muito bem bolados.

Inclusive, Fábio disse, na época que fez o entropy,que entropy e portage usam inteligência artificialpara a detecção das dependências. São aplicativos fabulosos, pq portage é um GCC automático, e o Entropy, baixa o pacote, acerta com o portage, compara (portage triggering) e depois usa o portage para instalá-lo

Inclusive gentoístas que criticam muito Sabayon, possívelmente nunca testaram sabayon, pq mesmo o Daniel, disse para mim que gosta de Sabayon, e que usou no notebook dele, para não precisar recompilar tudo, pq isso esquentava o notebook.

Resposta da sua pergunta dois: sim precisa, o Ebuild é o script guia, que "fala" pro Portage o que ele deve fazer. Tem alguns artigos e tutoriais na net de como escrever ebuilds,mas é uma coisa meio difícil para mim, pq não sou profissional de TI, mas acredito que quem faz Bash Scripts e Scripts em Python (tanto Portage como Entropy foram escritos em Python), consiga.

[4] Comentário enviado por removido em 20/05/2013 - 13:49h


[3] Comentário enviado por albfneto em 20/05/2013 - 12:23h:

Sim, precisa, porque para empacotar para Sabayon (que é entropy), precisa ter o Entropy. Como viu no meu artigo, o pacote entropy pode ser feito do pacote gentoo normal, mas a conversão, pacote gentoo para pacote sabayon, é feita pelo Entropy.

vc pode tentar instalar entropy no funtoo, ele está no Overlay Sabayon, mas se não quiser mudar o Funtoo, colocando instalador binário nele, faça um duplo boot comum sabayon pequeno, tipo com fluxbox, só para criar pacotes de sabayon.

Sim, ele empacota as dependencias, principalmente se vc instalar o pacote a ser criado no seu micro antes.
Concordo com vc, Portage e Entropy são Obras-Primas de Programação, muito bem bolados.

Inclusive, Fábio disse, na época que fez o entropy,que entropy e portage usam inteligência artificialpara a detecção das dependências. São aplicativos fabulosos, pq portage é um GCC automático, e o Entropy, baixa o pacote, acerta com o portage, compara (portage triggering) e depois usa o portage para instalá-lo

Inclusive gentoístas que criticam muito Sabayon, possívelmente nunca testaram sabayon, pq mesmo o Daniel, disse para mim que gosta de Sabayon, e que usou no notebook dele, para não precisar recompilar tudo, pq isso esquentava o notebook.

Resposta da sua pergunta dois: sim precisa, o Ebuild é o script guia, que "fala" pro Portage o que ele deve fazer. Tem alguns artigos e tutoriais na net de como escrever ebuilds,mas é uma coisa meio difícil para mim, pq não sou profissional de TI, mas acredito que quem faz Bash Scripts e Scripts em Python (tanto Portage como Entropy foram escritos em Python), consiga.


Obrigado pelas respostas Alberto! Estou pensando em empacotar algumas coisas para Sabayon e disponibilizar por exemplo no MEGA ou no Dropbox. Principalmente esses pacotes pouco conhecidos, esses dias eu vi no grupo do sabayon o pessoal querendo um pacote que não tinha no repo do sabayon e nem na árvore do Gentoo... Por isso estou mais interessado empacotar direto dos fontes, vou ver se consigo aprender a escrever as ebuilds.
__________________________
Dei uma pesquisada e uma olhada nas ebuilds e realmente parecem ser difíceis rsrsrs. As PKGBUILDs do Arch são muito mais simples.

[5] Comentário enviado por azk em 23/05/2013 - 01:33h

Excelente contribuição...

favoritado
;-))

[6] Comentário enviado por felipealexandre em 30/05/2013 - 00:24h

Muito bom artigo, é muito útil para criar um pacote proprietário ou algum software que não é disponibilizado nos repositórios.

[7] Comentário enviado por fabiojlbc1982 em 22/03/2017 - 15:44h

mudou algum procedimento neste tutorial?


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts