How-To :: Sbopkg (1ª parte)


Hoje falarei sobre a ferramenta padrão de meu dia a dia no Slackware junto ao pkgtool, falo do sbopkg que recentemente passou a ter um novo mantenedor e que agora está hospedado no GitHub.

Justificativas.

Alguns poderão perguntar porque falar sobre o sbopkg e não sobre o sbotools ou o queridinho da vez… o slpkg? porque neste ponto sou bastante tradicional; prefiro a simplicidade do sbopkg do que as firulas do slpkg ou slackpkg+, assim como sempre dei preferência ao apt-get em detrimento ao aptitude e hoje em dia o apt-get não tornou-se obsoleto e ainda incorporou algumas das coisas presentes no aptitude, mas isso é papo para outra conversa.

Voltando ao sbopkg, que embora seja simples pode ser “tunado” com uma ferramenta inclusa no próprio pacote, o sqg (que não vem habilitada por padrão, mas que na nova versão ao menos já está configurada para a release padrão do Slackware, a 14.1, bastando apenas criar seu link simbólico em /usr/bin.

Instalação.

# wget -nv https://github.com/sbopkg/sbopkg/releases/download/0.37.1/sbopkg-0.37.1-noarch-1_wsr.tgz
# installpkg sbopkg-0.37.1-noarch-1_wsr.tgz

sbopkg-001-install

Agora, configure o sqg, criando seu link para /usr/bin:

# ln -sf /usr/doc/sbopkg-0.37.1/contrib/sqg /usr/bin/sqg

sbopkg-002-sqg

sbopkg.conf.

Este é o arquivo responsável pela forma que o programa se comportará, abaixo demonstrarei apenas as opções presentes de forma a reduzir conteúdo, os quais descreverei na medida do possível:

export TMP=${TMP:-/tmp/SBo}
export OUTPUT=${OUTPUT:-/tmp}

LOGFILE=${LOGFILE:-/var/log/sbopkg/sbopkg-build-log}
QUEUEDIR=${QUEUEDIR:-/var/lib/sbopkg/queues}
REPO_ROOT=${REPO_ROOT:-/var/lib/sbopkg}
SRCDIR=${SRCDIR:-/var/cache/sbopkg}

export TMPDIR=${TMPDIR:-/tmp}

CLEANUP=${CLEANUP:-NO}
DEBUG_UPDATES=${DEBUG_UPDATES:-0}
KEEPLOG=${KEEPLOG:-YES}
MKDIR_PROMPT=${MKDIR_PROMPT:-YES}
NICE=${NICE:-10}
REPO_BRANCH=${REPO_BRANCH:-14.1}
REPO_NAME=${REPO_NAME:-SBo}

ALLOW_MULTI=${ALLOW_MULTI:-NO}

DIFF=${DIFF:-diff}
DIFFOPTS=${DIFFOPTS:--u}
RSYNCFLAGS="${RSYNCFLAGS:---verbose --timeout=30}"
WGETFLAGS="${WGETFLAGS:--c --progress=bar:force --timeout=30 --tries=5}"

As duas primeiras linhas indicam onde os pacotes serão compilados e empacotados (export TMP=${TMP:-/tmp/SBo}) e onde os pacotes serão salvos (export OUTPUT=${OUTPUT:-/tmp}).

As próximas quatro linhas definem se um log será usado (LOGFILE=${LOGFILE:-/var/log/sbopkg/sbopkg-build-log}), qual o diretório das QUEUES, que informam a lista de dependências de um SlackBuild (QUEUEDIR=${QUEUEDIR:-/var/lib/sbopkg/queues}), onde será salvo o repositório do SlackBuilds sincronizado via sbopkg -r (REPO_ROOT=${REPO_ROOT:-/var/lib/sbopkg}) e onde serão salvos o cache de código-fonte de pacotes (SRCDIR=${SRCDIR:-/var/cache/sbopkg}).

A próxima linha indica o diretório de trabalho (export TMPDIR=${TMPDIR:-/tmp}).

Já as seguintes, indicam se deverá ocorrer uma limpeza na pasta após a instalação do SlackBuild (CLEANUP=${CLEANUP:-NO}), como será a descrição dos updates ao rodar um sbopkg -c (DEBUG_UPDATES=${DEBUG_UPDATES:-0}), se um log deverá ser mantido (KEEPLOG=${KEEPLOG:-YES}), se deseja confirmar a criação de diretórios ao rodar o sbopkg (MKDIR_PROMPT=${MKDIR_PROMPT:-YES}), a prioridade que os processos serão executados (NICE=${NICE:-10}), o repositório a ser utilizado (REPO_BRANCH=${REPO_BRANCH:-14.1}), e o nome do mesmo (REPO_NAME=${REPO_NAME:-SBo}).

As linhas (DIFF=${DIFF:-diff}}) e (DIFFOPTS=${DIFFOPTS:–u}) que definem opções do diff, a linha (RSYNCFLAGS=”${RSYNCFLAGS:—verbose –timeout=30}”) define as do rsync e a última (WGETFLAGS=”${WGETFLAGS:–c –progress=bar:force –timeout=30 –tries=5}”) as do wget.

Encerrando aqui, demonstrarei meu sbopkg.conf, sobre o qual falarei um pouco. Examine-o e o compare com a configuração padrão:

export TMP=${TMP:-/tmp/SBo/sources}
export OUTPUT=${OUTPUT:-/home/edps/SlackBuilds/Packages}

LOGFILE=${LOGFILE:-/var/log/sbopkg/sbopkg-build-log}
QUEUEDIR=${QUEUEDIR:-/var/lib/sbopkg/queues}
REPO_ROOT=${REPO_ROOT:-/var/lib/sbopkg}
SRCDIR=${SRCDIR:-/var/cache/sbopkg}

export TMPDIR=${TMPDIR:-/tmp}

CLEANUP=${CLEANUP:-YES}
DEBUG_UPDATES=${DEBUG_UPDATES:-1}
KEEPLOG=${KEEPLOG:-NO}
MKDIR_PROMPT=${MKDIR_PROMPT:-NO}
NICE=${NICE:-10}
REPO_BRANCH=${REPO_BRANCH:-14.1}
REPO_NAME=${REPO_NAME:-SBo}

ALLOW_MULTI=${ALLOW_MULTI:-YES}

DIFF=${DIFF:-colordiff}
DIFFOPTS=${DIFFOPTS:--u}
RSYNCFLAGS="${RSYNCFLAGS:---verbose --timeout=30}"
WGETFLAGS="${WGETFLAGS:--c --no-check-certificate --progress=bar:force --timeout=30 --tries=5}"

Nas duas primeiras linhas indico para que os pacotes sejam compilados e empacotados em /tmp/SBo/sources) e salvos em /home/edps/SlackBuilds/Packages, este, um link simbólico que aponta para /mnt/backup/SLACKWARE/SlackBuilds/Packages.

As linhas LOGFILE=${LOGFILE:-/var/log/sbopkg/sbopkg-build-log}, QUEUEDIR=${QUEUEDIR:-/var/lib/sbopkg/queues}, REPO_ROOT=${REPO_ROOT:-/var/lib/sbopkg}, SRCDIR=${SRCDIR:-/var/cache/sbopkg} e export TMPDIR=${TMPDIR:-/tmp} não sofreram alterações.

A linha ALLOW_MULTI=${ALLOW_MULTI:-YES}, defino para que múltiplas instâncias do sbopkg sejam permitidas, útil quando se quer empacotar muita coisa, mas podem ocorrer problemas as vezes, não me ocorreu, mas se está como padrão, motivo se tem?

Em CLEANUP=${CLEANUP:-YES}, opto por realizar a limpeza após o empacotamento, em DEBUG_UPDATES=${DEBUG_UPDATES:-1}) escolho a opção que a meu ver é a melhor (vocês verão mais a frente), em KEEPLOG=${KEEPLOG:-NO}) escolho para não manter um log, em MKDIR_PROMPT=${MKDIR_PROMPT:-NO}), escolho por não me incomodarem com perguntas acerca de criação de diretórios, em NICE=${NICE:-10} não modifico nada, embora se quiser aumentar a prioridade podemos atribuir um valor maior que -10, exemplo: -15, -20 (aí pode dar ruim!) ou o inverso, onde 0 é a prioridade padrão de programas e 19 a menor prioridade possível. Em REPO_BRANCH=${REPO_BRANCH:-14.1} mantenho a release padrão, a 14.1 e o mesmo nome REPO_NAME=${REPO_NAME:-SBo}, porém, podemos usar a release -current, basta alterá-las por REPO_BRANCH=${REPO_BRANCH:-current} e REPO_NAME=${REPO_NAME:-SBo-git}.

E para finalizar defino o colordiff como o programa padrão das linhas DIFF=${DIFF:-colordiff}} e DIFFOPTS=${DIFFOPTS:–u}, na linha referente ao rsync: RSYNCFLAGS=”${RSYNCFLAGS:—verbose –timeout=30}” não altero nada, já na linha que se refere ao wget: adiciono a opção –no-check-certificate, necessária para baixar de alguns sites, assim ficou esta opção: WGETFLAGS=”${WGETFLAGS:–c –progress=bar:force –timeout=30 –tries=5}”.

Tendo concluído toda essa descrição do /etc/sbopkg/sbopkg.conf, hora de por a mão na massa!

Ajuda?

Sim, antes de utilizá-lo convém examinar sua documentação, que diz o seguinte ao executar um sbopkg -h:

sbopkg 0.37.1
Usage: sbopkg [OPTIONS] <packagename(s)>
Options are:
  -b pkg/queue(s) Build the specified package(s). If one or more queuefiles
                  are specified, build the packages they refer to.
  -B              Bulk process the queue without confirmation.
  -c              Check for updates to installed packages.
  -D localdir     Location of local copy of the repositories.
  -d pkg/queue(s) Like '-b', but only download sources.
  -e error_action Specify what sbopkg is supposed to do on build errors.
                  Valid options are: ask (default), continue, stop.
  -f file         Override default configuration file with specified file.
  -g package(s)   General search for packages matching string.
  -h              Display this help message.
  -i pkg/queue(s) Like '-b', but also install built packages.
  -k              Skip installed packages when building.
  -l              Display the repo's ChangeLog.txt and then quit.
  -o              Display the obsolete source files & prompt for deletion.
  -P              List uninstalled cached package files & prompt for deletion.
  -p              List installed packages from active repo.
  -q              Quiet some of the command-line output.
  -R              When combined with -b or -i, preview the READMEs of the
                  packages to be built/installed before starting the build
                  process. When combined with -p, show the READMEs of all
                  installed packages from the active repo.
  -r              Sync the remote repository with the local mirror and then
                  quit.
  -s package(s)   Specific search by specific package and, if found,
                  display package information.
  -u              Check for an update to sbopkg.
  -V repo/branch  Set the repository/branch. The repo is optional and, if
                  not given, sbopkg will try to make the best match,
                  starting with the default repo. For a list of valid repos,
                  issue '-V ?'
  -v              Print sbopkg's version on stdout.

Note: multiple arguments to -b, -g, -i, and -s must be quoted ("pkg1 pkg2") or
can be specified multiple times (-i foo -i bar). If using the latter syntax,
build options may also be passed on the command line on a per app basis using
the -b or -i flags in colon-separated groups (where whitespace must also be
quoted). For example, '-i app:opt1="arg1 arg2":opt2=arg1 app2'
slackware# 

Onde:

-b – apenas empacota;
-B – executa a queue sem confirmação;
-c – verifica os updates de sábado-a-noite rsrs;
-D – taí uma que nunca utilizei!;
-d – apenas baixa, não empacota ou instala;
-e – ação padrão em caso de erro!;
-f – sobrescreve a configuração padrão por um arquivo específico;
-g – procura por pacotes;
-h – esta ajuda;
-i – instala pacotes;
-k – não empacota pacotes já instalados;
-l – exibe a atual ChangeLog;
-o – examina por sources obsoleto e pergunta sobre sua remoção;
-P – lista sources de pacotes desinstalados e pergunta sobre sua remoção;
-p – lista os pacotes instalados;
-q – cala a boca mano! rsrs;
-R – exibe os READMEs quando combinado com -b ou -i;
-r – sincroniza com o repositório definido;
-s – pesquisa por pacotes;
-u – verifica atualização do sbopkg;
-V – especifica o repo/branch;
-v – exibe a versão do sbopkg.

Utilização básica.

Tendo já dito quase tudo o que sei a respeito do sbopkg (o que não é nada posso confessar!) rsrs, sincronize seu repositório com:

# sbopkg -r

sbopkg-003-sync

sbopkg-004-sync

Na primeira inicialização isto não faz diferença, mas acostume-se a remover o cache de pacotes obsoletos:

# sbopkg -o

sbopkg-005-obsoletes

sbopkg-006-obsoletes

E se já tem algum SlackBuild instalado, veja se há atualização para ele:

# sbopkg -c

sbopkg-007-updates

sbopkg-008-updates

e no modo colorido…

Saiba que o sbopkg também possui uma interface de gestão rsrs, tasca aí em seu terminal um puro e simples:

# sbopkg

Como dizem os gaúchos Tchê tu podes obter a lista de pacotes a serem atualizados:

Este slideshow necessita de JavaScript.

Podes adicionar os mesmos para a fila de atualização (queue):

Este slideshow necessita de JavaScript.

* vê-se um erro na compilação de um pacote, isto provavelmente se deve ao fato de não estar usando uma instalação completa do Slackware.

* os pacotes desmarcados automadicamente para não sofrerem downgrade, foram empacotados e atualizados por mim, por isto essa grande lista de updates.

Ao terminar, tecle ENTER em Back para retornar ao menu principal, onde tu podes também: verificar os utilitários disponíveis, os pacotes instalados entre outras opção, ao encerrar tecle ENTER em exit.

Este slideshow necessita de JavaScript.

E com isto, encerro essa pequena introdução sobre o Sbopkg, e peço que aguardem a 2ª parte, onde falarei sobre o que é possível fazer com o mesmo.

IntÉ!

Anúncios
How-To :: Sbopkg (1ª parte)

Um comentário sobre “How-To :: Sbopkg (1ª parte)

  1. Top mano, bem explicadinho, o legal é saber que muitas dessas configurações se tornaram automáticas no 14.02 , mas pra quem quer entender o funcionamento dessa ferramenta livre (que ainda é testing), é o melhor tuto em português, parabéns!

    Curtir

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s