• Olá Visitante, se gosta do forum e pretende contribuir com um donativo para auxiliar nos encargos financeiros inerentes ao alojamento desta plataforma, pode encontrar mais informações sobre os várias formas disponíveis para o fazer no seguinte tópico: leia mais... O seu contributo é importante! Obrigado.

[TUTURIAL] Dominando o Autopackage

cyber_wordl

GF Ouro
Membro Inactivo
Entrou
Set 26, 2006
Mensagens
2,023
Gostos Recebidos
0
Autopackage é um projeto criado com o intuito de simplificar a vida de quem está chegando ou já está no mundo Linux: ser um formato universal de instalação, porém não substituir o sistema de pacotes nativo, ou seja, ele é um gerenciador de pacotes complementar de cada sistema como o RPM ou o Deb. Contudo, o Autopackage verifica a presença de dependências no computador, bem como examina as informações do pacote, e isso reduz a incompatibilidade entre diferentes padrões de distribuições.

Ele foi criado para instalar apenas programas não-essenciais, como processadores de texto, navegadores, jogos e outros, já que para pacotes essenciais, é recomendável o uso do sistema nativo, para melhor velocidade e compatibilidade. Esse projeto, que iniciou suas atividades há mais de 14 meses, acabou sendo de grande ajuda para muitos desenvolvedores que, ao invés de compilarem vários pacotes para variadas distros, criavam um pacote apenas, de extensão .package. Outro quesito importante é a segurança: somente o Autopackage lê arquivos com esta extensão.

Esse sistema alternativo possui interface gráfica em QT e GTK, além do modo texto, e também tem um próprio gerenciador de pacotes instalados. Porém, o projeto anda "caindo" por vários motivos. Entre eles, está o pequeno número de desenvolvedores, o que naturalmente atrapalha o progresso. Outro fato é o conservadorismo das distribuições e dos usuários, que preferem usar o que já conhecem, os pacotes nativos, do que outras soluções.


Instalação e manipulação de pacotes

O Autopackage possui a vantagem de ser auto-instalável. Ou seja, quando for executar um programa .package na primeira vez, ele automaticamente baixará os arquivos necessários e já irá se integrar à sua distribuição Linux. Para isso, vamos entrar no site oficial e baixar um pacote, no caso o Kmess. Entrando em autopackage.org, clique em Packages:
img-9246c87d.png

Após efetuar o download, abra um terminal e dê permissão de execução no arquivo, com o comando:

$ chmod +x kmess-1.5pre1.x86.package

Ou, clicando com o botão direito, indo até "Propriedades" e depois "Permissões":
img-e465ab30.png

Um aspecto interessante no Autopackage é a possibilidade de instalação como root ou como usuário. Respectivamente, a instalação é feita no sistema, como qualquer outro pacote, ou dentro da pasta home do usuário. Para ficar disponíveis a todos do sistema, vamos fazer a instalação como root. Você pode abrir o Konqueror e simplesmente clicar sobre o arquivo, mas para ficar mais didático, vamos rodar num terminal:

$ su
[senha]

# ./kmess-1.5pre1.x86.package

Veja a saída do comando:
12
Note que ele faz uma pergunta, se você deseja instalar o ambiente gráfico. Verifique sua conexão à Internet e responda "Y", aguardando todo o processo. Após a instalação, ele abrirá uma interface gráfica, em GTK, instalando o KMess definitivamente. Veja o processo:

img-283ceaf1.png

img-f2e7dcf7.png

Depois da primeira instalação, não é mais necessário que você realize este procedimento toda vez que for instalar um pacote. O Autopackage se associa à extensão .package, bastando você simplesmente clicar sobre ele para iniciar o processo.

Bom, como uso KDE, prefiro que os programas tenham a linguagem QT, que se integra melhor ao ambiente e por isso são mais rápidos. Então, vamos instalar agora a interface nesta linguagem para o Autopackage. No próprio site, onde você baixou o KMess, está disponível o "Qt Frontend". Você pode fazer o download também pelo link:
Código:
http://ftp.sunsite.dk/projects/autopackage/1.2/autopackage-qt-1.2.package
img-38e2cd9b.png

Vamos remover o KMess e instalá-lo novamente para ver como é a interface em QT.

Todos os programas instalados pelo Autopackage têm suas entradas armazenadas num gerenciador próprio, acessível através do Sistema > Manage 3rd party software, para a interface em GTK, ou Sistema > Manage 3rd party software (QT), logicamente para a interface em QT:
img-389a0deb.png


Para exemplificar, cliquei no KMess, depois em Next e finalizei a instalação. Após isso, reinstalei-o, pagora pela interface em QT do Autopackage. Veja:

img-291fd6a3.png

img-ceae8b2c.png


Note a verificação de dependências na tela acima. Basicamente, esse é o funcionamento desse sistema alternativo de instalação de pacotes, que, se crescer popularmente, irá facilitar a vida tantos dos desenvolvedores quanto de usuários. O Autopackage traz todas as funções que sempre foram desejadas por vários Linuxers ao redor do mundo, porém, acaba não sendo muito usado principalmente por conservadorismo, como disse no início.

Aprendemos como se comportar diante do Autopackage como usuário, agora, vamos ver como criar tais pacotes.
*continuaçao
 

cyber_wordl

GF Ouro
Membro Inactivo
Entrou
Set 26, 2006
Mensagens
2,023
Gostos Recebidos
0
*continuaçao

Criando os arquivos .package
Código:
Primeiro, vamos instalar o Autopackage Development Environment, pacote necessário para a criação dos arquivos .package. Baixe-o em:

http://ftp.sunsite.dk/projects/autopackage/1.2.1/Autopackage%20Development%20Environment%201.2.1.package

E instale normalmente, como fizemos com o KMess. Agora que já temos as ferramentas para a criação de pacotes, vamos começá-la. Para isso, vou utilizar o exemplo dado no site UnderLinux (http://under-linux.org/wiki//index.php/Tutoriais/Adm/autopackage), que compilou e instalou o pacote vim.

Agora que já temos todas as ferramentas necessárias para começarmos a trabalhar, vamos criar o pacote do vim, uma versão com algumas melhores do vi, visualizador de arquivos em modo texto.

Num diretório de sua preferência, crie a pasta sources, onde vamos trabalhar:

$ mkdir sources
$ cd /sources

A seguir, baixe e extraia o código fonte do vim:

$ wget http://ftp.at.vim.org/pub/vim/unix/vim-6.3.tar.bz2
$ tar -xjvf vim-6.3.tar.bz2

No exemplo, vamos aplicar um patch de correção, que é opcional:

$ wget http://www.linuxfromscratch.org/blfs/downloads/svn/vim-6.3-security_fix-1.patch
$ cd vim63
$ patch -Np1 -i ../vim-6.3-security_fix-1.patch

Começaremos agora a criação de toda a configuração necessária para o pacote. Cria a pasta autopackage:

$ mkdir autopackage

Crie o arquivo de configuração:

$ makeinstaller --mkspec > autopackage/default.apspec

Esse comando irá criar um arquivo de configuração limpo, pronto para poder modificar e criar o próprio pacote. Agora, abra o Kedit ou outro editor que preferir, e deixe o arquivo autopackage/default.apspec 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

Você provavelmente não deve ter entendido nada do conteúdo deste arquivo, não é? Então, vamos às explicações. Segundo o Rafael Capovilla, "é mais simples do que parece" :-)

Se você já criou pacotes Debian pelo menos uma vez na vida, deve ter achado algo em comum com a seção [Meta]. Ela é uma seção bem tranquila, tirando as linhas RootName e AutopackageTarget.

RootName é onde ficam os chamados "arquivos esqueletos", voltaremos a falar nele mais adiante.

AutopackageTarget é a versão mínina necessária do Autopackage que deve estar instalado na máquina; tome cuidado com este campo. Se você colocar, por exemplo, 2.0, como não existe tal versão, o pacote não será instalado. A atual, enquanto escrevo, é a 1.2.1.

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

    Esse campo é similar ao ./configure para compilações normais, e aqui ele vai executar com as opções --enable-huge e irá usar o diretório padrão /usr, caso não fosse nada especificado, ele usaria o /usr/local.


[BuildUnprepare]
unprepareBuild

    Equivalente ao make clean


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

    Essa é a parte que se configura a verificação por dependências, neste caso o vim precisa do pacote libncurses e ncurses, especificando a versão 5. No caso, o libncurses é uma dependência automática do segundo, dispensando incluí-lo no campo. Para descobrir isso, somente lendo muito as documentações :-)


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

    Esse campo é similar ao make install, diferenciando que aqui é selecionável o que deseja instalar: manuais, binários, etc.

    Explicando melhor:

    installExec bin/* instalará os binários 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

    Similar ao comando make uninstall, porém, mesmo que o fonte não suporte tal comando, o Autopackage conseguirá desinstalá-lo.


[Imports]
echo '*' | import

Nesta parte o script seleciona quais arquivos serão incluídos no pacote a ser gerado. Para instalar todos, basta colocar o *, deixando como no exemplo acima.

Como dissemos, vamos para a parte dos "arquivos esqueleto", que falamos a pouco. No campo "RootName" estava descrito "@gnu.org/vim:SOFTWAREVERSION". Ou seja, temos que criar tal diretório e incluir o arquivo skeleton.1 nele:

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

Abra o arquivo vim/skeleton.1 e o deixe da seguinte maneira:

[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`

Note que ele é bem parecido com o outro que editamos há pouco tempo, tendo como novidade a seção [Test], que irá checar se realmente existe a biblioteca libncurses instalada.

Agora sim, depois de tanta configuração, vamos finalmente à criação do pacote:

$ cd /sources/vim63/
$ makeinstaller

No decorrer da criação algumas mensagens "Warning" poderão ser mostradas, mas não se preocupe com elas. Ao término do processo de compilação, o seguinte texto será exibido:

Package will be placed in vim-6.3.x86.package

Assim, terminamos nosso processo de criação de pacotes para o Autopackage. No início parece complicado, mas com prática, acabamos deixando tudo na ponta da língua.

Agora você tem toda a bagagem para o Autopackage: sabe manusear, instalar e criar pacotes em seu formato. Boa diversão!Autopackage: sabe manusear, instalar e criar pacotes em seu formato. Boa diversão!
 
Topo