Visite também: Br-Linux ·  VivaOLinux ·  LinuxSecurity ·  Dicas-L ·  NoticiasLinux ·  SoftwareLivre.org ·  [mais]
Voltar   Under-Linux.org Fóruns > UnderLinux Wiki
Wiki Classificados Galeria Reviews Jogos Comunidades RSS Feeds FAQ Termos de Uso Sobre
Cadastre-se FotosBlogs Lista de Membros Calendário Pesquisar Mensagens de Hoje Marcar Fóruns Como Lidos

Ferramentas pessoais
Publicidade

From UnderLinux Wiki

'AutoPackage - Construindo seus próprios pacotes

Tabela de conteúdo

Introdução

Antes de explicar como criar os pacotes vou explicar melhor o que é esta ferramenta. Ela tem dois objetivos principais:

  • Facilitar a vida do usuário
  • Padronizar os pacotes

Como ele vai facilitar a vida dos usuário? É relativamente simples, além de possuir uma interface gráfica para instalar o usuário não precisa se preocupar em compilar ou então em ficar caçando dependências, o autopackage irá fazer isso.

E para os administradores também é muito útil para deixar organizado os pacotes instalados na máquina, ao invés de pegar os fontes, compilar e instalar, você gera o pacote a partir do fonte e instala. Qual a vantagem disso? Na minha opnião é a facilidade para atualização/remoção. Os pacotes instalados via fonte geralmente não possuem um "desinstalador", ou se possuem estão dentro do próprio fonte do pacote, então você é obrigado a manter o fonte em sua máquina desperdiçando muito espaço. Com o autopackage fica muito mais fácil remover/atualizar pois ele "guarda" os arquivos que foram instalados em um sistema parecido com o do slackware. Basta um simples comando, package remove pacote, e ele irá remover tudo.

Funcionalidades do autopackage

  • Construção de pacotes que irão instalar em várias distros diferentes
  • Multiplas interfaces: a melhor é automaticamente escolhida então os usuários de ambiente gráfico terão uma interface GUI, e os usuários de modo texto terão uma interface no modo texto.
  • Suporte a múltiplos idiomas(nas ferramentas e nos seus pacotes)
  • Automaticamente verifica e resolve dependências, não importando como o software foi instalado. Isto significa que você não precisa utilizar o autopackage para todos os seus softwares, para que os pacotes sejam instalados com sucesso.

Instalando o AutoPackage

Agora vamos por a mão na massa ;)

Primeiro vamos instalar o autopackage: (eu compilo todos meus programas no diretorio /source, use o diretório que achar melhor)

cd /sources wget http://ftp.sunsite.dk/projects/autopackage/1.0/autopackage-devel.tar.bz2 mkdir devel cd devel tar -xjvf ../autopackage-devel.tar.bz2 cd autopackage make install

Só isso? Sim :-) Agora você tem as ferramentas de desenvolvimento do autopackage Como também iremos instalar o pacote para ver se ele está funcionando corretamente, também precisamos do autopackage em si:

cd /sources wget http://ftp.sunsite.dk/projects/autopackage/1.0/autopackage.tar.bz2 tar -xjvf autopackage.tar.bz2 cd autopackage ./install

Criando um pacote

Pronto, já temos todas as ferramentas necessárias para começarmos a trabalhar, como exemplo vamos criar o pacote do vim

cd /sources wget http://ftp.at.vim.org/pub/vim/unix/vim-6.3.tar.bz2 wget http://www.linuxfromscratch.org/blfs/downloads/svn/vim-6.3-security_fix-1.patch tar -xjvf vim-6.3.tar.bz2 cd vim63 patch -Np1 -i ../vim-6.3-security_fix-1.patch

Agora vamos começar o processo de criação do pacote:

mkdir autopackage

A primeira coisa a se fazer é criar o arquivo de "configuração"

makeinstaller --mkspec > autopackage/default.apspec <p class="code"> <p style="text-indent: 26px;" align="justify"> Isso irá gerar um esqueleto limpo do arquivo, onde futuramente você poderá criar seu próprio pacote Edite o arquivo autopackage/default.apspec com o editor que preferir (eu uso o vi), e o deixe da seguinte maneira:


[Meta]
RootName: @gnu.org/vim:SOFTWAREVERSION
DisplayName: Vim
ShortName: vim
Maintainer: Vim development
vim@vim.org
Packager: Rafael M. Capovilla iceman@underlinux.com.br
Summary: The Vim package, which is an abbreviation for VI IMproved, contains a vi clone with extra features as compared to the original vi.
URL: http://www.vim.org/
License: GNU General Public License
SoftwareVersion: 6.3
AutopackageTarget: 1.0
# Only uncomment InterfaceVersion if your package exposes interfaces to other software,
# for instance if it includes DSOs or python/perl modules. See the developer guide for more info,
# or ask on autopackage-dev if you don't understand interface versioning in autopackage.
#
# InterfaceVersion: 0.0

[Description] Vim is a highly configurable text editor built to enable efficient text editing. It is an improved version of the vi editor distributed with most UNIX systems.
Vim is often called a "programmer's editor," and so useful for programming that many consider it an entire IDE.
It's not just for programmers, though. Vim is perfect for all kinds of text editing, from composing email to editing configuration files.

[BuildPrepare]
prepareBuild --with-features=huge --prefix=/usr
[BuildUnprepare]
unprepareBuild
[Prepare]
require @gnu.org/ncurses 5

[Install]
InstallExe bin/*
InstallMan 1 man/*
installData share/*

[Uninstall]
# Usually just the following line is enough to uninstall everything
uninstallFromLog

[Imports]
echo '*' | import

Descrição das Configurações

Hahaha não se assustem, é mais simples do que parece ;)

Bom nesse artigo é, a documentação oficial achei que ainda faltam algumas coisas...

Na seção [Meta] a maioria das coisas são intuitivas, exceto essas duas: RootName e AutopackageTarget.

RootName é o lugar onde estão o que eles chamam de "skeleton files". Mais ainda voltarei a falar dela AutopackageTarget é a versão do autopackage que seu software precisa para ser instalado, na hora da compilação isso não influi em nada, mas quando você for instalar e tiver algum valor diferente de 1.0, o pacote tentará automaticamente baixar a versão do autopackage especificada. Então se você colocar 2.0 ele nunca vai instalar seu pacote.

[BuildPrepare] prepareBuild --with-features=huge --prefix=/usr

Isso seria o equivalente ao script ./configure dos fontes, aqui ele irá executar o configure com as opções --enable-huge e usará como padrão o /usr, se você não especificar nada o padrão seria /usr/local.

[BuildUnprepare] unprepareBuild

Equivalente ao make clean

[Prepare] # Dependency checking require @gnu.org/ncurses 5

Aqui é minha parte predileta ;) é onde se configura a checagem de dependências, no caso do vim ele precisa da libncuses do pacote ncurses (e ainda especifico a versão 5).

Como eu sei que o ncurses tem essa dependência? LENDO DOCUMENTAÇÃO!!!Se você é um administrador e tem preguiça de ler/estudar, te aconselho a mudar de carreira.

[Install] installExe bin/* installMan 1 man/* installData share/*

Aqui seria o make install, a diferença daqui é que você pode especificar o que quer instalar, só os binários, só a documentação,etc... installExec bin/* irá instalar os binário no $PREFIX/bin installMan 1 man/* instala os manuais da seção 1 em $PREFIX/man installData share/* instala os arquivos extras do vim (arquivos de sintaxe, outros docs,etc..) também em $PREFIX/share

[Uninstall] uninstallFromLog

Equivalente ao make uninstall, mas aqui mesmo que o fonte não tenha o make uninstall o autopackage será capaz de remover o pacote.

[Imports] echo '*' | import

Esse script é utilizado para selecionar os arquivos que serão inclusos no pacote que será gerado, como queremos instalar o vim inteiro basta deixar como está.

Continuando a criação do pacote

Acabou? NÃO :P, ainda falta os "skeleton files", lembrar do RootName? pois bem, nele estava: @gnu.org/vim:SOFTWAREVERSION

Isso quer dizer que ele vai usar o arquivo vim dentro do dir @gnu.org/vim, como esse diretório ainda não existe vamos ter que criá-lo:

cp -r ../devel/autopackage/share/ /usr/share/autopackage cd /usr/share/autopackage/share/skeletons/@gnu.org/ mkdir vim cp ncurses/skeleton.1 vim/

Edite o arquivo vim/skeleton.1 e o deixe assim:

[Meta] RootName: @gnu.org/vim DisplayName: VImproved editor ShortName: vim Skeleton-Author: Rafael M. Capovilla iceman@underlinux.com.br Skeleton-Version: 1 [Notes] Interface version corresponds to soname version [Test] INTERFACE_VERSIONS=`testForLib -i libncurses.so`

Aqui a única coisa que é novidade é a seção Test, é aqui que o pacote irá chegar se existe a libncurses instalada.

Feito isso vamos finalmente criar o pacote: </p <p class="code"> cd /sources/vim63/ makeinstaller

Caso ele fale que não encontrou o pacote de desenvolvimento, entre novamente em /sources/devel/autopackage/ e execute make install.

Agora ele irá compilar o pacote e gerar o .package, provavelmente durante a compilação ele irá mostrar alguns warnings, eles podem ser ignorados.

Quando ele terminar o processo de compilação você verá a mensagem: Package will be placed in vim-6.3.x86.package

Testando o Pacote

Será que está tudo certo? Vamos instalar o pacote para descobrir:

./vim-6.3.x86.package

Se você estiver no X, ele irá abrir a tela do instalador grafico, como esta:

Agora para ter certeza de que está tudo instalado execute o vi ;)

Para ver os arquivos instalados e onde foram instalados execute:

package files vim

CONCLUSÃO

Não vou ser hipócrita e dizer que isso é fácil ou que não é trabalhoso, eu mesmo levei um bom tempo para conseguir entender alguns dos parâmetros possíveis da configuração. Mas eu apostaria que isso será um meio de unificar/padronizar os pacotes. Ele é totalmente independente da distro em que está sendo compilado/instalado, a prova disso foi que executei tudo isso na distro que eu mesmo fiz (Under - http://under.underlinux.com.br). Mas ai vâo me perguntar, se as outras distros já tem um sistema de pacotes que elas mesmas fizeram, porque elas iriam jogar fora aquilo para usar uma coisa dessas? Bom, duvido que grandes distros, principalmente as mais comerciais adotem isso assim de cara, mas deveriam. Com isso acaba a bagunça e a confusão que os usuários tem quando precisam instalar um pacote, uma hora é rpm, na outra eh tar.gz, na outra tgz e na outra bz2.... Isso assusta muita gente, utilizar esse padrão que o autopackage oferece é atraente em todos os sentidos. É o sonho de todos os usuários que iniciam no mundo linux ou então que são obrigados por causa do trabalho, poder instalar um programa apenas clicando.

O Autopackage interage com o Gnome/Kde, se o usuário clicar no arquivo .package ele irá abrir o instalador e o autopackage vai fazer o resto do serviço sozinho... existe coisa mais fácil do que isso para quem não é da area?

Outro fator imporante é que o autopackage segue o modelo de padronização de arquivos FHS, mais um grande passo para a padronização do linux.

Depois de tudo isso será que ainda faltam motivos para começarem a utilizar essa ferramenta? Os outros eu não sei, mas eu não vou perder tempo, já estou começando a trabalhar na nova distro e ela terá como sistema de pacotes o autopackage. Com isso será possível criar um repositório para atualizações ;)

Já falei bastante, se quiserem saber mais sobre o autopackage vão ler um pouquinho que isso não faz mal a ninguem:

Para quem apenas quer testar o funcionamento da instalação do autopackage, no site oficial já existem alguns pacotes prontos para a utilização, é só fazer o download do pacote e o rodar: sh pacote.package

Se você não tiver o autopackage instalado ele faz o download e instala para você ;)

Autor

  • '1c3_m4n - ( iceman{NOSPAM}underlinux com br)

Underlinux member: 1c3m4n

Horários baseados na GMT -3. Agora são 17:55.


Powered by vBulletin®
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd
SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.