Gerenciamento de pacotes e repositórios no OpenSolaris
TUTORIAL
OpenSolaris, parte 4
O gerenciamento de pacotes no OpenSolaris é diferente
daquele do Linux, mas isso não significa que seja difícil.
por Alexandre Borges
Agata Urbaniak – www.sxc.hu
S
em dúvida, uma importante
modificação em termos de
tecnologia implementada no
OpenSolaris é o gerenciamento de
pacotes usando o IPS (Image Packaging System, Sistema de Empacotamento de Imagens). Esse novo
sub-sistema muda completamente
a forma como se faz o gerenciamento de pacotes em relação ao
procedimento no Solaris e torna
tudo muito mais simples.
O modo mais adequado de abordar
esse assunto é lidar com a parte ope-
Listagem 1: Comando pkg list
# pkg list | more
NAME (AUTHORITY)
BRCMbnx
FSWxorg-fonts-core
NVDAgraphics
SUNW1394
SUNWDTraceToolkit
SUNWPython
SUNWPython-extra
SUNWTcl
SUNWTiff
SUNWTk
SUNWa2ps
SUNWaac
54
VERSION
0.5.11-0.101
0.5.11-0.101
0.5.11-0.101
0.5.11-0.101
0.5.11-0.101
2.4.4-0.101
0.5.11-0.101
8.4.18-0.101
0.5.11-0.101
8.4.18-0.101
4.13-0.101
0.5.11-0.101
STATE
installed
installed
installed
installed
installed
installed
installed
installed
installed
installed
installed
installed
UFIX
––––––––––––-
racional e, durante a demonstração,
ver alguns conceitos importantes. O
objetivo não é, obviamente, esgotar
o assunto, mas apenas comentar sobre alguns aspectos principais para
que o leitor possa trabalhar melhor
com seu sistema.
Sempre é necessário saber, em
primeiro lugar, quais pacotes estão
instalados no sistema. A listagem 1
mostra o uso do comando pkg list.
Observe a coluna STATE. Um pacote
instalado possui a palavra installed
nesse campo.
Também é possível listar todos os
pacotes instalados e os disponíveis
para instalação. O comando é quase o mesmo, exceto por uma opção:
pkg list -a (listagem 2). Os pacotes
cujo campo STATE contenha a palavra known são aqueles disponíveis
para instalação. Quando é necessário fazer uma busca para verificar se
um pacote específico está instalado,
deve-se executar uma variação do
comando acima:
http://www.linuxmagazine.com.br
OpenSolaris | TUTORIAL
# pkg list SUNWzone
É provável que sejam necessárias mais informações sobre um
determinado pacote instalado. Para
isso, usa-se o comando pkg info (lis­
tagem 3). Algumas linhas necessitam
de explicação adicional:
Authority: indica qual site (repositório) disponibiliza o pacote;
Branch Version: indica um número
de controle do desenvolvimento
do pacote. Pode ser útil no caso
de alterações ao software;
F MRI: fault management resource identifier. É uma maneira de
descrever recursos do OpenSolaris, introduzida no Solaris 10.
Pode apontar para um hardware,
um serviço ou ainda um pacote,
como no caso anterior.
Neste ponto, é fundamental não
confundir os conceitos de autoridade e repositório. Vale salientar que
a autoridade é uma pessoa, grupo
ou corporação que disponibiliza um
pacote, enquanto que um repositório
é o local onde esses pacotes estão
disponíveis, geralmente indicado
por uma URL.
Vamos analisar a FMRI do pacote especificado, pkg:/SUNWzfs@­
0.5.11,5.11-0.­101:20081119T231630Z:
pkg: indica tratar-se de um pacote;
S UNWzfs: indica o nome do pacote;
0 .5.11: conhecido como “component version”, especifica a versão
do projeto usada para criação do
pacote;
5.11: versão base do sistema operacional usado para criar o pacote.
Muitas vezes, ela é necessária para
determinar a compatibilidade do
software, pois representa a versão
mínima do sistema operacional
na qual este pacote pode ser instalado. Neste caso, o OpenSolaris
serve como base do futuro Solaris
11 a ser lançado pela Sun;
0 .101: número de controle para
o desenvolvimento do pacote;
Linux Magazine #57 | Agosto de 2009
20081119T231630Z: data e hora em
que este pacote foi adicionado
no repositório de pacotes.
Pode ser preciso ver as informações
de um pacote disponível (com o valor
known no campo STATE). A listagem 4
Listagem 2: Comando pkg list -a
# pkg list -a
NAME (AUTHORITY)
SUNWesu
SUNWesws2
SUNWesxwsvr
SUNWeu8os
SUNWeuluf
SUNWeupdatemgru
SUNWeuxwe
SUNWevolution
SUNWevolution-data-server
SUNWevolution-exchange
VERSION
0.5.11-0.101
0.5.11-0.101
0.5.11-0.101
0.5.11-0.101
0.5.11-0.101
0.5.11-0.101
0.5.11-0.101
0.5.11-0.101
0.5.11-0.101
0.5.11-0.101
STATE
installed
known
known
known
known
known
known
installed
installed
installed
UFIX
–––––––––-
Listagem 3: Comando pkg info
# pkg info SUNWzfs
Name: SUNWzfs
Summary: ZFS
Category: System/File System
State: Installed
Authority: opensolaris.org
Version: 0.5.11
Build Release: 5.11
Branch: 0.101
Packaging Date: Wed Nov 19 23:16:30 2008
Size: 4.21 MB
FMRI: pkg:/[email protected],5.11-0.101:20081119T231630Z
Listagem 4: Informações de um pacote
# pkg info -r SUNWGtk
Name: SUNWGtk
Summary: GTK - The GIMP Toolkit
Category: Applications/Graphics and Imaging
State: Not installed
Authority: opensolaris.org
Version: 1.2.10
Build Release: 5.11
Branch: 0.101
Packaging Date: Wed Nov 19 21:39:37 2008
Size: 1.34 MB
FMRI: pkg:/[email protected],5.11-0.101:20081119T213937Z
55
TUTORIAL | OpenSolaris
demonstra essa situação. Note que
o campo State desse pacote indica
que ele não está instalado.
Eventualmente, quando se suspeita de que algo não está funcionando como esperado, é conveniente verificar se o pacote foi
realmente instalado de forma cor-
reta e se nada está atrapalhando
sua operação:
# pkg verify SUNWTk
Uma saída vazia significa que o
pacote foi instalado corretamente
e não há qualquer erro associado a
Listagem 5: Listar o conteúdo de um pacote
# pkg contents SUNWcups
PATH
etc
etc/cups
etc/cups/command.types
etc/cups/cupsd.conf
etc/cups/interfaces
etc/cups/mime.convs
etc/cups/mime.types
etc/cups/ppd
etc/cups/snmp.conf
etc/cups/ssl
etc/dbus-1
etc/dbus-1/system.d
etc/dbus-1/system.d/cups.conf
etc/security
usr
usr/bin
usr/bin/cups-config
Listagem 6: Listagem completa do conteúdo do pacote
# pkg contents –m SUNWcups
license 03c3b684dcac3c8b4701f01800c661bc7e59970a chash=279cd69cf7802
9639d3058ca9ffcfc248c23191d license=SUNWcupsr.copyright pkg.
csize=13998 pkg.size=51314 transaction_id=1227131953_
pkg%3A%2FSUNWcups%401.3.7%2C5.11-0.101%3A20081119T215913Z
license 03c3b684dcac3c8b4701f01800c661bc7e59970a chash=279cd69cf7802
9639d3058ca9ffcfc248c23191d license=SUNWcupsu.copyright
pkg.csize=13998 pkg.size=51314 transaction_id=1227131953_
pkg%3A%2FSUNWcups%401.3.7%2C5.11-0.101%3A20081119T215913Z
set name=description value=CUPS
set name=info.classification value=org.opensolaris.
category.2008:System/Printing
set name=authority value=opensolaris.org
set name=fmri value=pkg:/[email protected],5.11-0.101:20081119T215913Z
depend [email protected] type=require
depend [email protected] type=require
56
esta operação. Não é incomum o
comando pkg verify apontar algum
erro. Neste caso, sugere-se corrigir
a situação com o comando pkg fix
da seguinte maneira:
# pkg fix SUNWtk
Em geral, este comando corrige
qualquer erro associado à instalação
do pacote em questão.
Todo pacote é composto por
arquivos, diretórios, links e ações
(operações que o IPS executa e
aplica ao sistema quando um pacote é instalado ou removido). Para
observar o conteúdo de um pacote
listando apenas os arquivos, deve-se
usar o comando pkg contents (lista­
gem 5). Para listar todo o conteúdo,
incluindo as ações que fazem parte
deste pacote, basta usar a opção -m,
como na listagem 6.
No início da saída do comando,
há o aspecto do licenciamento. Caso
seja interessante ter informações
sobre licenças de um determinado
pacote, o comando pkg info pode
oferecer mais detalhes:
# pkg info -license -r SUNWcups
A saída desse comando é bem
longa e explica os termos da licença
aplicada ao pacote.
Instalação
Até agora não foi explicado o mais
importante: como instalar um pacote.
Esta tarefa é bem simples, mas é importante conferir, antes dela, se um
pacote está ou não disponível para
instalação. A listagem 7 demonstra
a procura do software Subversion.
Ela mostra que existem múltiplos
pacotes do Subversion, mas só temos
interesse em um deles – SUNWsvn.
Uma outra maneira ainda mais fácil
é entrar no site de pacotes do OpenSolaris [1] e usar o mecanismo de
busca disponibilizado pela comunidade do OpenSolaris.
http://www.linuxmagazine.com.br
OpenSolaris | TUTORIAL
Para instalar o pacote SUN­Wsvn,
executa-se o seguinte comando:
# pkg install SUNWsvn
Caso o pacote possua algum tipo
de dependência, ela será resolvida e
instalada juntamente com ele.
Além do repositório principal do
OpenSolaris [2] – que possui uma
autoridade responsável pelo seu
gerenciamento –, que permite procurar e instalar pacotes, há vários
outros, como Blastwave [3], o de
desenvolvimento [4], o de pacotes
contribuídos pela comunidade [5]
e o de softwares livres distribuídos
pela Sun [6].
Eles oferecem uma ampla diversidade de pacotes, bastando apontar para qualquer um deles, buscar
um pacote e em seguida instalá-lo
(listagem 8). Depois da busca, o
procedimento de instalação deve
ser seguido da mesma forma descrita anteriormente.
Apesar de improvável, é possível
que o índice de procura esteja corrompido por algum motivo. Se isso
ocorrer, o comando pkg search irá
acusar o erro; em seguida, deve-se
reconstruir o índice com o seguinte comando:
seja excluído do sistema, sendo que,
para forçar sua remoção e de todas
as dependências, é necessário usar
o comando:
# pkg uninstall –r nome_do_pacote
Repositórios
Vale a pena mencionar que todos os
pacotes, por padrão, são obtidos a
partir do mesmo repositório. Todavia,
é possível adicionar outros repositórios no OpenSolaris de forma que,
deste ponto em diante, operações
de procura sejam feitas em todos os
repositórios incluídos.
Para verificar quais repositórios estão presentes, basta usar o comando
pkg authority (listagem 9).
Para adicionar um novo repositório
(com sua respectiva autoridade), o comando adequado é o pkg set-authority (listagem 10). E para removê-lo:
Listagem 7: Busca do pacote do Subversion
# pkg search SUNWsvn*
INDEX
ACTION VALUE
depend depend [email protected]
depend depend [email protected]
depend depend [email protected]
depend depend [email protected]
PACKAGE
pkg:/[email protected]
pkg:/[email protected]
pkg:/[email protected]
pkg:/[email protected]
Listagem 8: Busca de pacote num repositório
# pkg search -s http://blastwave.network.com:10000 nessus
INDEX
ACTION VALUE
PACKAGE
basename dir
opt/csw/include/nessus pkg:/[email protected]
basename dir
opt/csw/var/nessus
pkg:/[email protected]
basename file
opt/csw/bin/nessus
pkg:/[email protected]
basename dir
opt/csw/var/nessus
pkg:/
[email protected]
# pkg rebuild-index
Remoção
Listagem 9: Listagem dos repositórios ativos
Foi apresentado anteriormente o
procedimento de instalação de pacotes. Vejamos agora como remover
um pacote. De forma simplificada,
o comando é:
# pkg authority
AUTHORITY
opensolaris.org (preferred)
# pkg uninstall SUNWsvn
Listagem 10: Adição de um novo repositório
Infelizmente, a remoção de pacotes não é tão simples quando
a instalação, já que muitas vezes
existem dependências associadas
ao pacote. Nesses casos, o OpenSolaris não permite que o pacote
Linux Magazine #57 | Agosto de 2009
URL
http://pkg.opensolaris.org/release/
# pkg set-authority –O http://pkg.sunfreeware.com:9000 sunfreeware.com
# pkg authority
AUTHORITY
URL
opensolaris.org (preferred)
http://pkg.opensolaris.org/release/
sunfreeware.com
http://pkg.sunfreeware.com:9000/
57
TUTORIAL | OpenSolaris
# pkg unset-authority sunfreeware.
com
Gerenciamento
gráfico
Não menos importante do que todos esses comandos, ainda é possível (como descrito no primeiro
artigo desta série [7]) fazer todo o
gerenciamento de pacotes usando
o utilitário gráfico Package Manager (figura 1). Para acessá-lo, basta
ir ao menu System | Administration
| Package Manager.
O gerenciamento de pacotes no
OpenSolaris não é diferente daquele do Solaris. Já no gerenciamento
de patches existem diferenças. No
Solaris, toda vez que é necessário
aplicar um patch ao sistema, devemos fazer o download do patch
e aplicá-lo usando o comando
patchadd.
No OpenSolaris existe uma ferramenta chamada Update Manager
(figura 2) que pode ser utilizada
de maneira a atualizar todo o sistema; ou seja, não é mais necessário aplicar patches ao sistema
individualmente.
Para executar o UpdateManager,
basta acessar o menu System | Administration | Update Manager.
A mesma operação de atualização
pode ser feita pela linha de comando
com o comando:
# pkg image-update
IPS avançado
Em muitos momentos, principalmente num ambiente de desenvolvimento
intenso onde múltiplas modificações
ocorrem a todo instante, talvez seja
necessário manter um repositório de
pacotes próprio para atuar como ponto focal, no qual todos os pacotes em
desenvolvimento possam ser obtidos
de forma a facilitar sua distribuição
dentro da empresa.
Existem duas formas de criar
um repositório próprio: a primeira
é utilizar o comando pkg.depotd e a
segunda é usar comandos SMF (Service Management Facility – vamos
abordar este assunto em mais detalhes em um artigo futuro).
Comando pkg.depotd
Figura 1Gerenciador de pacotes Package Manager.
Listagem 11: Criação de um repositório
# svcadm enable application/pkg/server
# /usr/lib/pkg.depotd –d /tmp/linuxmagazine –p 11111
[12/Apr/2009:17:46:24]
[12/Apr/2009:17:46:24]
[12/Apr/2009:17:46:24]
[12/Apr/2009:17:46:24]
[12/Apr/2009:17:46:24]
[12/Apr/2009:17:46:24]
TimeoutMonitor’.
[12/Apr/2009:17:46:24]
[12/Apr/2009:17:46:24]
58
INDEX Search Available
ENGINE Listening for SIGHUP.
ENGINE Listening for SIGTERM.
ENGINE Listening for SIGUSR1.
ENGINE Bus STARTING
ENGINE Started monitor thread ‘_
ENGINE Serving on 0.0.0.0:11111
ENGINE Bus STARTED
A primeira coisa a fazer é iniciar
o serviço de repositórios e criar o
repositório que será utilizado para
armazenar os pacotes (listagem 11).
Logo em seguida, é aconselhável verificar com o navegador se o endereço http://localhost:11111 apresenta
uma tela anunciando o repositório
(figura 3).
Outra maneira de verificar se
realmente tudo ocorreu bem é demonstrada na listagem 12.
Comandos smf
O procedimento para criação de um
repositório por meio dos comandos
smf é tão simples quanto o anterior
e também é composto por poucos
comandos:
# svccfg –s application/pkg/server
setprop pkg/port=22222
http://www.linuxmagazine.com.br
OpenSolaris | TUTORIAL
# svccfg –s application/pkg/server
setprop pkg/inst_root=/tmp
/linuxmagazine2
# svcadm refresh application/pkg
/server
# svcadm restart application/pkg
/server
do
date
sleep 2
done
A terceira etapa é uma das mais
críticas, pois é obrigatório informar
as ações que devem ser tomadas
para adicionar o pacote com sucesso. Então, precisamos criar um
manifesto com um conjunto dessas
ações (listagem 13). O conteúdo do
arquivo é bem simples e totalmente
auto-explicativo.
Do mesmo modo que antes, para
averiguar se o repositório foi criado
da forma correta, pode-se apontar o
navegador para http://localhost:22222
ou executar um simples:
ls -l /tmp/linuxmagazine2
Pacotes no repositório
Depois de criar um repositório particular de uma das duas formas diferentes, vamos adicionar pacotes a ele.
Aparentemente, pode ser intimidador incluir pacotes no repositório.
Entretanto, a chave do processo é
que esta inserção tem basicamente
duas etapas:
p
reparação do pacote;
e nvio do pacote.
O envio do pacote, por sua vez,
é subdividido em:
a bertura da transação;
e nvio do pacote em si;
fechamento da transação.
Figura 2Gerenciador de atualizações Update Manager.
Assim são realizadas essas etapas:
Primeiramente, crie alguns diretórios para armazenamento do pacote:
#
#
#
#
mkdir /var/linuxmagazine
cd /var/linuxmagazine
mkdir mypackage
cd mypackage
Em seguida, crie um script ou arquivo binário com qualquer nome
para incluir no pacote:
# vi alexandreborges.sh
#!/bin/bash
while true
Linux Magazine #57 | Agosto de 2009
Figura 3A tela indica que o repositório foi criado com sucesso.
59
TUTORIAL | OpenSolaris
A quarta etapa consiste na exportação do diretório que contém o
pacote. Será necessário especificar
tanto um número de versão para o
pacote quanto um segundo número de versão (subversão). No nosso
exemplo, vamos utilizar a versão 1.0
e a subversão 0.1. Mas cuidado: as
versões e as subversões não podem
ser alteradas depois do comando.
# pkgsend -s http://
localhost:11111 open
[email protected]
O quinto passo é a execução das
ações contidas no manifesto:
# pkgsend -s http://
localhost:11111 send mypackage.ips
Enfim, após as cinco etapas anteriores, é hora de fechar a transação:
# pkgsend –s http://
localhost:11111 close
Se tudo funcionou como previsto,
sem qualquer mensagem de erro,
para instalar nosso pacote devemos
percorrer os seguintes passos:
# pkg set-authority –O http://
localhost:11111 minhaautoridade
# pkg refresh
# pkg contents –r mypackage
# pkg install mypackage
# ls –l /usr/bin/alexandreborges.sh
# /usr/bin/alexandreborges.sh
Conclusão
O OpenSolaris apresenta uma fantástica oportunidade no mundo open
source. O gerenciamento de pacotes
é bastante amigável, colocando o
OpenSolaris ao lado do Linux como
um sistema operacional fácil de usar,
útil para as tarefas do dia a dia tanto
para o usuário corporativo quanto
para o usuário doméstico e, acima
de tudo, extremamente rápido. n
60
Listagem 12: Verificação do repositório
# ls /tmp/linuxmagazine
total 28
drwxr-xr-x 2 root root 107
-rw-r--r-- 1 root root 503
drwxr-xr-x 2 root root 69
drwxr-xr-x 2 root root 503
drwxr-xr-x 2 root root 69
drwxr-xr-x 2 root root 69
drwxr-xr-x 2 root root 69
2009-04-12
2009-04-12
2009-04-12
2009-04-12
2009-04-12
2009-04-12
2009-04-12
17:46
17:46
17:46
17:46
17:46
17:46
17:46
catalog
cfg_cache
file
index
pkg
trans
updatelog
Listagem 13: Arquivo de manifesto
# cd /var/linuxmagazine
# vi mypackage.ips
dir mode=0755 owner=root group=bin path=/var/linuxmagazine/mypackage
file mypackage/alexandreborges.sh mode=0555 owner=root group=bin
path=/var/linuxmagazine/mypackage/alexandreborges.sh
link path=/usr/bin/alexandreborges.sh target=/var/linuxmagazine/
mypackage /alexandreborges.sh
depend type=require fmri=SUNWbash
Mais informações
[1]Pacotes para OpenSolaris:
http://pkg.opensolaris.org/release/en/index.shtml
[2]Repositório de pacotes do OpenSolaris:
http://pkg.opensolaris.org/release
[3]Repositório Blastwave: http://blastwave.network.com:10000
[4]Repositório de desenvolvimento: http://pkg.opensolaris.org/dev
[5]Repositório de pacotes contribuídos pela comunidade:
http://pkg.opensolaris.org/contrib
[6]Repositório de softwares livres da Sun:
http://pkg.sunfreeware.com:9000
[7]Alexandre Borges, “OpenSolaris 2008.11”:
http://lnm.com.br/article/2753
Gostou do artigo?
Queremos ouvir sua opinião. Fale conosco em
[email protected]
Este artigo no nosso site:
http://lnm.com.br/article/2969
http://www.linuxmagazine.com.br
Download

OpenSolaris, parte 4