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.251 ]

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

Experimentos com GNOME3 em instalações contendo outros ambientes gráficos

ATI Catalyst Radeon Graphics no Sabayon Linux - Instalando e configurando drivers proprietários

Linux com boot no Pendrive, com todas as facilidades: Smart-USB_Key-Mania, PLOP Boot Manager e outros métodos

Compiz e Compiz-Fusion no novo Sabayon Linux

Editores e processadores de texto para GNU/Linux

Leitura recomendada

Compilador Clipper open-source, compile sem problemas os sistemas .PRG no Linux!

Utilizando o aLink Creator do aMule

SLiM: Simple Login Manager - Mini review

É possível ganhar dinheiro com Software Livre?

DVDAuthor: Como autorar DVDs 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