Criando pacotes com o createpkg

Criar pacotes atualmente não é uma atividade tão complicada como já foi a alguns anos atrás. Atualmente, na maioria dos programas, o simples conjunto de comandos ./configure && make && make install são suficientes. Mas ainda há aquelas ocasiões em que é necessário muita ginástica para compilar o programa. Neste texto apresento um componente do pacote Simplepkg, createpkg. Com este aplicativo você constrói pacotes .tgz para o seu Slackware com um único comando.

Sumário

1 Introdução

Nas palavras de meu amigo Rhatto: “O simplepkg é um sistema de gerenciamento de sistemas Slackware que roda sobre o pkgtool. Ele é composto por vários scripts que desempenham funções de administração e desenvolvimento de sistemas do tipo Slackware, procurando fechar um circuito de produção, envolvendo a construção, a instalação de pacotes e até mesmo a instalação do sistema de forma automatizada”[1].

Neste texto vou dar atenção apenas a um dos aplicativos deste sistema, o createpkg.

2 Instalando

A instalação do simplepkg é bem simples. Baixe o pacote simplepkg-0.6pre18-noarch-1rha.tgz, ou a versão mais nova na página

http://slack.sarava.org/packages/noarch/

ou baixe a última versão com o comando abaixo:

wget `lynx -dump http://slack.sarava.org/packages/noarch/ | sed '/simplepkg.*\.tgz$/ ! d; s/.* \(.*\)/\1/'`

em seguida instale com o installpkg,

installpkg simplepkg-0.6pre18-noarch-1rha.tgz

Em princípio não é necessário nenhuma configuração especial para os aplicativos funcionarem, mas algumas personalizações podem ser interessantes. Dê uma olhada no arquivo /etc/simplepkg/simplepkg.conf e edite o que achar conveniente. Por exemplo, se você está usando o Slamd64, ou outro port do Slackware, altere as variáveis abaixo:

DEFAULT_ARCH="x86_64"      # ou i686 para Slackware 32bits
...
DEFAULT_VERSION="12.0"     # deixe a última versão do port que está usando
...
CREATE_ARCH="x86_64"       # esta variável diz ao createpkg qual a arquitetura
                           # padrão para a construção dos pacotes
...
COLOR_MODE="color"         # habilita cores a saída do createpkg e mkbuild

Se achar conveniente, ainda pode alterar as variáveis SLACKBUILDS_DIR, MKBUILDS_DIR, MAKEPKG_REPOS e SOURCE_DIR. Por exemplo:

MAKEPKG_REPOS="/home/ftp/simplepkg/repos_64"

para armazenar os pacotes compilados para o x86_64

3 Compilando Pacotes com o createpkg

O createpkg é bem simples de usar. Um help com as instruções de uso pode ser alcançado com a opção --help, ou simplesmente chamando o createpkg sem argumento:

createpkg
Createpkg version 1.1.10

Usage: createpkg [--install/-i] package_name
       createpkg --all/-a
       createpkg --no-deps/-np package_name
       createpkg --search/-s package_name
       createpkg --info/-f package_name
       createpkg --list/-l
       createpkg --sync
       createpkg --help/-h

O primeiro passo é baixar os scripts de construção, os SlackBuilds, do repositório Slack.Sarava. Isto é feito com a opção --sync:

createpkg --sync

Para procurar com um pacote, utilize a opção --search:

createpkg --search scilab
/var/simplepkg/slackbuilds/sci/mathematics/scilab/scilab.SlackBuild

Para compilar e instalar o pacote, use a opção --install:

createpkg --install scilab
...

A primeira ação do createpkg é verificar se o pacote possui alguma dependência e a resolve, chamando o createpkg -i programa_dependência. A resolução de dependência pode ser desabilitada, passando a opção --no-deps ao createpkg.

Em seguida a fonte do programa será baixada, configurada, compilada, empacotada, armazenada em MAKEPKG_REPOS e por fim instalada com o installpkg.

Para conhecer mais sobre o pacote que irá instalar, você pode usar a opção --info:

createpkg --info scilab
SCILAB:
 scilab by Slack.Sarava

 Scilab is a scientific software package for numerical computations
 providing a powerful open computing enviroanment for engineering and
 scientific applications. Developed since 1990 by researchers from
 INRIA and ENPC, it is now maintained and developed by Scilab
 Consortium since its creation in May 2003.
 Distributed freely and open source (see the license and the
 trademark license) via the Internet since 1994, Scilab is currently
 being used in educational and industrial environments around the
 world.

slack-required
 # Dependency list to scilab
 #
 # dependency [condition] [version]]
 gtk+2

esta opção apresentará a descrição do pacote e suas dependências declaradas.

Para conhecer todos os pacotes atualmente suportados pelo createpkg, use a opção --list. No momento da escrita deste texto, haviam 437 SlackBuilds nos repositórios do Slack.Sarava.

4 Opções Avançadas

Além dos comandos apresentados acima, os SlackBuilds ainda permitem a declaração externa de variáveis, passadas aos scripts. Por exemplo, você pode alterar a arquitetura de compilação, declarando a variável ARCH, ao chamar o createpkg como segue:

ARCH="i686" createpkg scilab

Dentre as possibilidades com a declaração de variáveis:


  • é possível alterar as opções passadas ao configure, e assim configurar características específicas para os programas;

  • alterar a versão de compilação, para compilar as versões mais recentes de um programa. Não é garantido que a alteração da versão do pacote irá funcionar, pois as opções, dependência e outras características do aplicativo podem alterar de uma versão para outra;

  • alterar a url das fontes, geralmente necessário quando se altera a versão do pacote;

  • alterar o PREFIX, local de instalação do pacote. Em geral os pacotes são instalados em /usr, mas para teste, pode ser conveniente instalar um pacote em outros lugares como /usr/local.

  • outros …

Para conhecer todas as variáveis suportadas pelos SlackBuilds, é aconselhável verificar o script do programa em questão, pois as variáveis podem mudar de um SlackBuild para outro. A seção de declaração de variáveis é chamada de Set variables.

Abaixo é apresentado a seção de declaração de variáveis do scilab.SlackBuild:

# Set variables
CWD="$(pwd)"
SRC_NAME="scilab"
PKG_NAME="scilab"
ARCH=${ARCH:=i486}
SRC_VERSION=${VERSION:=4.1.2}
PKG_VERSION="$(echo "$SRC_VERSION" | tr '[[:blank:]-]' '_')"
BUILD=${BUILD:=1rra}
SRC_DIR=${SRC_DIR:=$CWD}/$PKG_NAME
TMP=${TMP:=/tmp}
PKG=${PKG:=$TMP/package-$PKG_NAME}
REPOS=${REPOS:=$TMP}
PREFIX=${PREFIX:=/usr}
PKG_WORK="$TMP/$SRC_NAME"
CONF_OPTIONS=${CONF_OPTIONS:="--with-gfortran --prefix=/usr
--with-tcl-library=/usr/lib64"}
NUMJOBS=${NUMJOBS:="-j4"}

Referências Bibliográficas


1 simplepkg: Gerenciamento de Instalações e Metapacotes: http://slack.sarava.org/simplepkg

About this document …

Criando pacotes com o createpkg

This document was generated using the
LaTeX2HTML translator Version 2002-2-1 (1.71)

Copyright © 1993, 1994, 1995, 1996,
Nikos Drakos,
Computer Based Learning Unit, University of Leeds.

Copyright © 1997, 1998, 1999,
Ross Moore,
Mathematics Department, Macquarie University, Sydney.

The command line arguments were:

latex2html -split 0 -nonavigation -show_section_numbers createpkg.tex

The translation was initiated by on 2008-03-08



2008-03-08

Deixe um comentário

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.