Start presentation

Slide 1: Instalação por código-fonte

No GNU/Linux, por questões do licenciamento livre, todos aplicativos estão disponíveis na forma de código-fonte, assim todo usuário pode baixá-lo e compilá-los (transformar um código fonte em um executável) para poder utilizá-los. Mas em vários casos, compilar o código-fonte gasta-se um tempo considerável, assim as distribuições fornecem pacotes com os programas compilados e disponíveis para download. Os pacotes de aplicativos, são na verdade um conjunto de arquivos com os executáveis e bibliotecas já compilados previamente.

A maioria das distribuições GNU/Linux oferecem cada uma um sistema de gerenciamento de pacotes próprio. Os sistemas de gerenciamento de pacotes APT e RPM são os mais antigos e comuns, foram originados nas distribuições Debian e Red Hat, respectivamente; e foram adotados em outras distribuições bem populares como: Ubuntu e <nop>OpenSuSE.

A maioria dos arquivos fontes (os arquivos que implementam a funcionalidade do programa) estão disponíveis no formato *.tar.gz ( tarball ), que na realidade são programas prontos e scripts de instalação empacotados (tar - ferramenta tar) e compactado (gz - formato gzip). Esses arquivos são normalmente chamados de tarballs e geralmente precisam ser compilados. O que veremos no próximo tópico é como realizar a instalação de um programa a partir de um tarball.

Desempacotando um tarball

O primeiro passo para a instalação de um programa a partir de seu arquivo fonte é desempacotar o pacote. Para isso usaremos a seguinte sintaxe:

tar xvfz programa.tar.gz 

O significado do comando acima é:

tar ferramentado sistema operacional para empacotar e desempacotar arquivos
xvfz opções da ferramenta tar, na seguinte ordem: abrir o pacote, visualizar o tratamento dado, informa que será passado um arquivo e que o pacote está compactado pela ferramenta gzip
Read more Antes, porém, necessitamos de um pacote para ser instalado. Instalaremos o programa Gimp que serve para fazer edição de imagens. O programa pode ser encontrado dentro do site oficial do Gimp (http://www.gimp.org/downloads/) e pode ser copiado por download gratuitamente na forma tarball. O nome do pacote que vamos instalar no exemplo é:

gimp-2.6.0.tar.bz2   

Quando se deseja instalar uma nova ferramenta para o sistema o melhor lugar para isto é o /usr/local/src, que é um diretório reservado, por padrão, para ferramentas extras para o sistema. Como exemplo será instalado a versão gimp-2.6.8.tar.bz2 da ferramenta Gimp. Iremos desempacotar e acessar o novo diretório.

tar xvfj gimp-2.6.8.tar.bz2
cd gimp-2.6.8

Dentro do diretório descompactado normalmente existe um arquivo de leitura de tipo texto (.txt), que explica a instalação da ferramenta para o sistema ou um arquivo do tipo INSTALL, README ou LEIAME.

Com a leitura do arquivo será possível localizar mais facilmente os arquivos de configuração e instalação da ferramenta. O arquivo de configuração é o configure, que é apresentado como um arquivo comum, mas que na realidade será o responsável por toda a preparação para a instalação, checando bibliotecas e dependências, além de verificar se o sistema está preparado para receber a nova ferramenta. Nesta etapa será necessário fazer com que o sistema seja verificado pelo configure:

./configure

Uma vez feita a configuração e checagem do sistema será necessário compilar o código-fonte com a nova ferramenta e incluir bibliotecas finais que não estão presentes na mesma. Para essa etapa é utilizado o comando make:

make

Ao término do comando anterior, caso o usuário deseje, poderá passar o comando make check para fazer testes e verificar se foi tudo correto na passagem do comando make.

Se não ocorrer nenhum erro nessa etapa a nova ferramenta poderá ser instalada no sistema, pois os testes necessários foram feitos, e o que resta agora é tornar o programa residente no sistema:

make install

Pronto. O programa já estará instalado se em nenhuma dessas etapas ocorrer a falta de pacotes. No caso da falta de outros arquivos, o melhor é ir ao site oficial da distribuição do Linux que está sendo usado para a instalação, para buscar o nome dos pacotes necessários para o término da instalação. A solicitação de arquivos específicos só irá acontecer por dois motivos: porque está faltando uma biblioteca (ver sobre bibliotecas no próximo tópico), ou porque a versão do programa requer uma biblioteca mais atualizada do que a que está instalada.

Slide 2: Bibliotecas compartilhadas

Vários sistemas sejam Windows (que usa DLL's), Unix ou Linux necessitam de bibliotecas compartilhadas, para que os aplicativos que possuem necessidades em comum possam fazer uso de funcionalidades encontradas em bibliotecas. Ou seja, não é necessário recriar toda a parte que os programas possuem em comum, basta compartilhar essas partes utilizando as bibliotecas. Assim quando, por exemplo, desejamos criar algum aplicativo de rede não é necessário reescrever todo o aplicativo.

Diretórios de bibliotecas

As bibliotecas dentro do Linux ficam distribuídas em vários diretórios dentro do sistema, sendo os mais comuns:

  • /lib
    • armazena as principais bibliotecas para o funcionamento do sistema, sendo elas as mais genéricas. Dentro desse diretório pode ser encontrado o diretório modules que armazena módulos, especificamente drivers que permitem controlar dispositivos.
  • /usr/lib
    • armazena bibliotecas para ferramentas mais específicas, como ldap (ferramenta para centralização e armazenamento de diretórios e outras informações), jpeg, xml, entre outros. Também podem ser encontrados os diretórios de programas que são configurados na instalação do sistema e que armazenam bibliotecas específicas, como o kde, licq, qt, netscape, entre outros.
  • /usr/local/lib
    • nesse diretório são armazenadas as bibliotecas de programas que são instalados após a configuração do sistema. O seu conteúdo pode variar dependendo apenas dos programas que forem adicionados ao sistema pelo usuário.
  • /usr/X11R6/lib
    • responsável por armazenar as bibliotecas do ambiente gráfico como um todo, ou seja, informações necessárias para rodar o gráfico sem ficar preso a um gerenciador gráfico como o KDE , GNOME ou qualquer outro gerenciador.

Além dos caminhos padrões é possível indicar outros caminhos de bibliotecas para programas específicos através da configuração da variável de ambiente LD_LIBRARY_PATH, que indica localização de bibliotecas compartilhadas. Para saber mais, veja http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html

Slide 3: Configuração do caminho para bibliotecas

A seguir encontra-se a descrição de alguns arquivos que auxiliam no compartilhamento de bilbiotecas no sistema:

  • /lib/ld.so e ld-linux.so*
    • Esse geralmente é um link para um arquivo real como /lib/ld-versao.so e serve para controlar os links presentes dentro dos diretórios de bibliotecas. Ele carrega as bibliotecas dinamicamente. Assim, quando um programa procura uma biblioteca para inicializar, o /lib/ld.so carrega essa biblioteca, e se um outro programa for utilizar a mesma biblioteca será possível procurar esse arquivo sem a necessidade de ocupar mais espaço no sistema.
  • /etc/ld.so.conf
    • Mantém o caminho para alguns diretórios de bibliotecas que não sejam genéricas, ou seja, não se encontram dentro do diretório /lib. Normalmente esse arquivo indica as bibliotecas dentro do /usr e diretórios afins.

Read more Exemplo do conteúdo do arquivo ld.so.conf:
#cat /etc/ld.so.conf
/usr/local/lib
/usr/lib/krb5
/usr/X11R6/lib
/usr/lib/qt3/lib
/usr/lib/wine
/usr/lib/qt2/lib
/usr/lib/kde2/lib
/usr/lib/kde3/lib
/usr/lib/kde3/lib/kde3
/etc/ld.so.cache

ALERT! Porém esse arquivo somente tem efeito após o comando ldconfig.

  • lib*.so.versao bibliotecas*
    • esse não é um arquivo de configuração para bibliotecas, e sim um modelo de biblioteca. O asterisco ( * ) representa o nome da biblioteca. Normalmente dentro do arquivo são encontrados a estrutura lib*.so.versão e um link para o mesmo com o nome lib*.so.

Read more Por exemplo:

# ls -l libnss_nis.so.2
lrwxrwxrwx 1 root root 19 Abr 19 20:52 libnss_nis.so.2 -> libnss_nis-2.2.4.so

Pode-se notar que libnss nis.so.2 na realidade é um link para a biblioteca libnss_nis-2.2.4.so.

Slide 4: ldd

Uma biblioteca pode ser utilizada por vários programas, criando assim, uma dependência entre eles, não podendo um programa, isoladamente, apagar uma biblioteca. Para conseguir identificar o tipo de dependência entre um programa e outro, ou até mesmo entre duas bibliotecas é utilizado o comando ldd e o nome de uma biblioteca.

Read more Exemplo com uso de ldd:

# ldd libdl.so.1.9.9
/lib/libNoVersion.so.1 => /lib/libNoVersion.so.1 (0x40003000)
libc.so.5 => not found
libc.so.6 => /lib/libc.so.6 (0x40017000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)

No exemplo acima o comando ldd teve como parâmetro a biblioteca libdl.so.1.9.9 que está ligado a biblioteca libNoVersion.so.1, libc.so.6e a ld-linux.so.1.

O comando ldd apresenta a biblioteca associada ao comando binário.

Read more Por exemplo:

# ldd cp 
libc.so.6 => /lib/libc.so.6 (0x40029000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

Acima foi passado o comando cp (utilizado para fazer cópias de arquivos) e a ele está ligado a biblioteca libc.so.6 e a ld-linux.so.2.

Slide 5: ldconfig

O usuário, para trabalhar corretamente na linha de comandos, necessita dos comandos e sua sintaxe, assim como cada ferramenta instalada também o necessita. Para isso existem as bibliotecas que possuem informações sobre o que fazer e como fazer para cada ferramenta existente dentro do sistema. Caso falte alguma biblioteca para a instalação de uma ferramenta, será necessário a sua instalação.

Para o sistema reconhecer as bibliotecas existentes e ainda conseguir acessá-las existe o comando ldconfig que permite, além de gerenciar as bibliotecas, gerenciar os diretórios indicados em arquivos de configuração.

O comando ldconfig realiza esse gerenciamento, devendo o comando ser invocado a cada nova biblioteca instalada no sistema, para que o comando possa atualizar o mapa de bibliotecas do sistema, determinando na sua gerência, e determinando os links para as bibliotecas que estão no arquivo de configuração /etc/ld.so.conf e para os diretórios principais de bibliotecas (/lib e /usr/lib).

Ldconfig checa o cabeçalho e os arquivos das bibliotecas, determinando assim se ela pode ou não ser atualizada. Quando um programa é instalado no sistema é feita uma verificação para saber se a biblioteca já existe, caso exista o ldconfig simplesmente irá estabelecer uma ligação entre a biblioteca e a ferramenta, pois não é necessária a existência de bibliotecas repetidas.

Sintaxe:

ldconfig [-vq] [-f configuração] [-C cache] diretório
ldconfig -l [vq] biblioteca
ldconfig -p

Opções:
Opção Descrição
-v modo de visualização. Apresenta na saída padrão, a versão da biblioteca e cada diretório que ela esteja e cria um link.
-q não retorna avisos.
-f conf lê o arquivo conf em vez do /etc/ld.so.conf
-C cache armazena no arquivo cache todos os caminhos existentes para os links em vez de usar o /etc/ld.so.cache.
-l modo de biblioteca. Permite link e edição manual de bibliotecas individuais.
-p apresenta na saída padrão os diretórios e bibliotecas armazenados no arquivo cache.

Slide 6: Gerenciamento de pacotes

Existem muitos programas disponíveis para serem instalados em sistemas GNU/Linux. Cada distribuição desenvolveu um sistema para gerenciar seu software através de programas. O uso de pacotes de software garantem várias vantagens:
  • Instalar programas sem ter de compilar o código-fonte.
  • Instalação de bibliotecas e programas dependentes: o sistema de pacote informa ou avisa quais programas depende para funcionar.

Os sistemas de pacotes mais comuns são:
  • Pacotes Red Hat (Red Hat Package Management):
    • originado na distribuição Red Hat, utilizado em várias outras distribuições: OpenSuSE e CentOS, etc
    • o programa utilizado para controle é o rpm
    • pacotes possuem extensão .rpm
  • Pacotes Debian (Debian Package):
    • originado na distribuição Debian, utilizado em várias outras distribuições: Ubuntu e Linux Mint, etc
    • o programa utilizado para controle é o dpkg
    • pacotes possuem extensão .deb

Outro conceito importante é o repositório de pacotes de software: geralmente localizado na Internet, do qual é possível baixar e instalar pacotes de software em um distribuição GNU/Linux. Além disso, distribuições mantêm repositórios e utilizam programas específicos para manipulá-los:
  • Yum
    • é o programa de gerenciamento de pacotes via repositórios da Red Hat
  • APT
    • é o sistema de gerenciamento de pacotes de repositórios do Debian
    • o programa podem ser: apt-get, apt-cache, aptitude, ou simplesmente apt
  • Zypper
    • é o programa de gerenciamento de pacotes via repositórios da distribuição OpenSuSE

Slide 7: Pacotes RPM

As principais funções desse gerenciador de pacotes são: instalar, atualizar e desinstalar pacotes. O rpm permite manter fontes e binários de forma configurável dentro de um pacote.

  • Distribuições que suportam o rpm
    • Mandriva
    • Red Hat
    • Suse

ALERT! Hoje em dia distribuições Debian e Slackware já suportam rpm, apesar de não funcionarem tão bem quanto os pacotes nativos das mesmas (.deb e .tgz), podendo ocorrer alguns erros na instalação. Essas distribuições citadas acima têm como o gerenciador de pacotes nativo o RPM.

Formato dos Pacotes RPM

Os pacotes rpm apresentam a sua estrutura de forma organizada e padronizada, pois com ela é possível saber a versão que está sendo instalada, se é um pacote para teste e se a plataforma é a requerida. O nome dos arquivos rpm seguem o seguinte padrão:

nome-versão-release-plataforma

Exemplo
quota-1.66-8cl.i386.rpm 

onde:
  • quota : nome do arquivo
  • 1.66 : versão
  • 8 : release
  • i386 : plataforma

  • Nome do arquivo: é a principal parte de um pacote. Indica qual o pacote em questão.
  • Versão: é o valor no qual se baseia as melhoras e retiradas de "bugs" de um determinado pacote, quanto maior o seu valor mais recente é a versão.
  • Release: informa o tipo do pacote, com ele é possível saber se o programa em questão é fornecido como definitivo - se o valor for par - ou para teste - valor ímpar.
  • Plataforma: para os computadores comuns são utilizados os pacotes com plataforma i386, podendo o mesmo ser i486, i586, etc.

Sintaxe geral

A instalação de pacotes rpm, bem como as outras funções, são bem simples de serem utilizadas, tendo sempre que informar ao gerenciador de pacotes (RPM) o que se deseja fazer.

Sintaxe:
rpm [[opções][opções especiais]] [--parâmetros] pacote.rpm

As opções podem ser instalação, atualização, verificação, consulta e desinstalação.

As opções especiais podem ser:
v cuja função é apresentar os pacotes conforme estão sendo manipulados (esta opção é válida somente para a instalação, atualização e desinstalação) ou pastas que estão sendo criadas;
h não irá mais apresentar os arquivos ou pastas manipuladas, e sim a porcentagem que é apresentada em formato especial ( nesse caso hashs, # ) .
Parâmetros os parâmetros auxiliam na instalação, atualização e desinstalação. São vários, sendo que as apresentadas para a instalação também servem para atualização dos pacotes.
Exemplo:

# rpm -ivh Eterm-0.9-4cl.i386.rpm
Preparando...             ########################################### [100%]
   1:Eterm                ########################################### [100%]

No exemplo acima é mostrado o formato do hash para uma instalação. Os detalhes do comando serão explanados mais a frente. Para o hash aparecem duas linhas, a primeira “Preparando...” está fazendo testes no sistema, procurando por programas e bibliotecas necessários para a instalação, caso tudo esteja correto o pacote é instalado, o que foi simbolizado pela segunda linha: “1:Eterm”.

Instalação

A instalação é muito simples, mas podem ocorrer alguns erros que são tratados na instalação, tais como conflito, dependências, entre outros.

A opção para a instalação é:
-i

Portanto, quando for desejado instalar algum pacote basta informar para o gerenciador a opção -i. Contudo, ao ser solicitada diretamente a instalação sem outras opções pode ocorrer a perda da evolução da instalação. Por evolução pode se entender a listagem do que está acontecendo, ou seja, se o sistema está instalando ou sofreu algum travamento.

Exemplo de instalação do pacote quota-1.66-8cl.i386.rpm:

# rpm -ivh quota-1.66-8cl.i386.rpm
Preparando...              ########################################### [100%]
   1:quota                 ########################################### [100%]

Para o exemplo foi instalado um gerenciador de cotas de usuários. Caso o pacote já estivesse instalado seria retornada uma mensagem de aviso informando que o pacote já está instalado.

Se ocorresse algum problema na instalação poderia ser utilizado algum parâmetro extra para tentar agir sobre o pacote, como forçar a instalação, ou permitir a instalação de pacotes com o mesmo nome. Esse assunto será melhor explorado no tópico sobre Principais Parâmetros.

Atualização

A atualização é de suma importância porque com ela não necessitamos refazer todos os caminhos da instalação, pois ela altera somente os locais necessários, fazendo troca de informações antigas pelas novas ou as removendo "bugs".

Ao se executar uma atualização os arquivos editados anteriormente não perdem a sua modificação - feitas pelo administrador do sistema - evitando assim novos preenchimentos de arquivos.

A opção para atualização é:
-U

Observando sempre que essa opção deve estar em maiúsculo. Como ocorre na instalação, quando é solicitado somente a opção de atualização não é apresentada nenhuma informação do andamento da mesma. Para evitar que ocorra isso, basta utilizar as opções v e h como mencionadas no tópico sobre a sintaxe geral.

Exemplo de atualização do pacote quota-1.66-8cl.1386.rpm:

# rpm -Uvh  quota-3.01-1cl.i386.rpm
Preparando...              ########################################### [100%]
   1:quota                 ########################################### [100%]

Principais parâmetros

São apresentados, a seguir, os principais parâmetros a serem utilizados em uma instalação ou em uma atualização:

Parâmetro Descrição
--test Não instala o pacote, apenas verifica e avisa sobre possíveis conflitos.
--nodeps Não verifica as dependências do pacote.
--oldpackage Atualiza pacotes antigos sobre pacotes mais recentes.
--force Força a instalação ou atualização de um pacote, desde que o administrador saiba que não irá prejudicar o funcionamento do sistema ou de algum outro pacote.
--ignoreos Permite a instalação ou atualização mesmo que os sistemas operacionais do RPM binário e máquina não coincidam.
--replacepkgs Instala os pacotes mesmo que alguns deles já estejam instalados no sistema.
--replacefiles Instala mesmo com conflito de arquivos.
Os parâmetros mostrados acima são os mais importantes. Caso você queira conhecer mais destes parâmetros, leia o manual do rpmman rpm.

Desinstalação

A desinstalação de um determinado pacote geralmente ocorre quando o administrador verifica que tal ferramenta instalada é obsoleta, ou está necessitando de espaço, pois normalmente um pacote instalado não apresenta conflito com outros pacotes para o funcionamento do sistema.

A opção para a desinstalação é :

-e

Exemplo de desinstalação do pacote quota-1.66-8cl.1386.rpm:
#rpm -e quota-1.66-8cl

Caso não ocorra a falha em dependências do pacote, o mesmo será removido. Uma observação é que o nome do pacote não é mais o mesmo apresentado para a instalação. O nome do pacote fica sem o i386 e sem a sua extensão rpm. Se o nome do pacote contiver os trechos citados não será reconhecido.

Se for necessário remover mais de um pacote que possua o mesmo nome poderá ser utilizado o parâmetro --allmatches.

Consultas

As consultas a pacotes instalados no sistema são muito comuns, servindo de base para outras buscas como a data da instalação, quem criou o programa, onde obter maiores detalhes, etc.

Com as consultas é possível saber também a qual pacote determinado arquivo pertence, além de auxiliar o gerenciamento de pacotes.

Sintaxe:

rpm [[opção][opções especiais]] pacote

A opção é:

-q Através dele o computador fará a consulta sobre determinado pacote.
Opções especiais Se não for selecionado nenhuma opção especial, a ferramenta irá procurar pelo pacote selecionado.
a Busca em todo o sistema pelos pacotes instalados. Com essa opção não é necessário indicar o nome do pacote.
f Com essa opção é necessário passar o nome de um arquivo, e não mais o pacote, que a ferramenta rpm irá buscar pelo pacote ao qual o arquivo faz parte.
i Exibe informações sobre o pacote. (nome,versão,descrição).
R Lista os pacotes dos quais depende.
--provides Lista as capacidades que esse pacote fornece.
--changelog Exibe as informações sobre as mudanças desse pacote.
l Lista os arquivos contidos no pacote.
s Exibe os estados dos arquivos no pacote. O estado de cada arquivo é normal, instalado ou substituído.
c Lista apenas os arquivos de configuração.
Read more Exemplo:
# rpm -qa | grep php
mod_php4-4.0.6-3cl
php4-pgsql-4.0.6-3cl
php4-4.0.6-3cl
php4-devel-4.0.6-3cl
php4-doc-4.0.6-3cl
php4-ldap-4.0.6-3cl
php4-mysql-4.0.6-3cl
php4-imap-4.0.6-3cl

No exemplo acima foi utilizado a consulta a todos os pacotes, porém o que interessa, para o exemplo, são os pacotes referentes ao PHP, e para isso foi utilizado o | (pipe) e o grep que fazem a filtragem. Para maiores detalhes sobre filtragem veja o tópico referente a redirecionamento e pipes.

Read more Exemplo:

# rpm -qf /etc/httpd/conf/httpd.conf
apache-1.3.19-10cl

Para esse exemplo foi consultado a qual pacote o arquivo httpd.conf pertence. O resultado é apresentado na segunda linha.

Verificação

A verificação serve para informar se determinado pacote está instalado no sistema. É possível, também, optar por verificações mais avançadas, determinando até mesmo o tipo do arquivo, se é executável ou link.

Sintaxe:
rpm [[opção][opções especiais]] nome_do_pacote

A sua opção é:
-V

Para a verificação não deverá ser passado totalmente o nome do pacote. Deve ser retirado o .i386.rpm do nome do pacote. Se o pacote estiver instalado não será retornado nada, mas caso contrário, o sistema informará que o pacote não está instalado.

Read more Exemplo:
# rpm -V quota-1.66-8cl.i386.rpm
pacote quota-1.66-8cl.i386.rpm não está instalado

Para esse exemplo foi informado o nome de todo o pacote. Isso está errado, pois uma vez instalado, o pacote perde o sufixo .i386.rpm. Segue um exemplo com a forma correta:

# rpm -V quota-1.66-8cl

Como o nome do pacote foi informado corretamente não foi retornada nenhuma mensagem informando que o pacote selecionado está instalado.

  • Opções de verificação:

a Verifica todos os pacotes instalados
f Verifica um pacote que tenha um arquivo em especial.
Read more Exemplo:

# rpm -Vf /etc/httpd/conf/httpd.conf
S.5....T c /home/httpd/html/index.html
p   Para verificar um pacote instalado e o arquivo do pacote rpm.

Read more Exemplo:
# rpm -Vp quota-1.66-8cl.i386.rpm
SM5....T   /sbin/quotacheck
....L...   /sbin/quotaoff
SM5....T   /sbin/quotaon
SM5....T   /usr/bin/quota
SM5....T   /usr/sbin/edquota
SM5....T   /usr/sbin/quotastats
SM5....T   /usr/sbin/repquota
missing    /usr/sbin/warnquota
S.5....T   /usr/share/man/man1/quota.1.gz
S.5....T   /usr/share/man/man2/quotactl.2.gz
missing    /usr/share/man/man3/rquota.3.gz
S.5....T   /usr/share/man/man8/edquota.8.gz
S.5....T   /usr/share/man/man8/quotacheck.8.gz
S.5....T   /usr/share/man/man8/quotaon.8.gz
S.5....T   /usr/share/man/man8/repquota.8.gz

A opção de verificação pode ser importante no caso de ocorrer suspeita de que a base de dados RPM esteja corrompida.

A resposta do pedido de verificação vem em códigos. Abaixo está a tabela de códigos.

Código Significado
5 MD5 Checksum
S Tamanho do arquivo
L Link simbólico
T Modificação do arquivo
D Dispositivo
U Usuário
G Grupo
M Modo

Slide 8: Zypper

Desde o lançamento do OpenSuSE 10.2 foi introduzido o Zypper que é um gerenciador de pacotes em linha de comando. Assim, nas versões mais recentes ele já vem instalado como padrão. A distribuição Ark Linux também anunciou que começaria a utilizá-lo em 2 de junho de 2009 [http://wiki.arklinux.org/Marketing]. Sua utilização por linha de comando pode ser feita utilizando a interface zypper que é semelhante a de outros gerenciadores de pacotes, sendo bastante intuitiva. Seus principais comandos são:

zypper in pacote ou zypper install pacote Instala o pacote resolvendo suas dependências e é capaz, também, de remover determinados pacotes.
zypper update Faz o update de seu sistema com a possibilidade de atualizar toda a sua distribuição.
zypper list-updates Verifica a disponibilidade de atualização de novos pacotes.
zypper info Verifica o status de um pacote e exibe suas informação de forma detalhada. Similar ao rpm -qi ou dpkg -s.
zypper search ou zypper se Permite consultar no repositório, por nomes, todos os pacotes que você pode baixar.
zypper search ¦ grep -i pacote ou zypper search pacote Consulta por pacotes relacionados. Ele vai te retornar o nome dos pacotes bem como suas descrições.
O zypper possui uma opção muito interessante que é a possibilidade de você instalar um pacote A e automaticamente remover um pacote B. Por exemplo:

zypper in vim -emacs

Ele vai instalar o vim e automaticamente remover o emacs.

Slide 9: . Repositórios

Os principais comandos para se trabalhar com repositórios (locais de armazenamento de pacotes de software) com o zypper são:

zypper lr Lista todos os repositórios já definidos.
zypper ar repositório Adiciona um novo repositório.
zypper rr repositório Remove um repositório específico.

Pacotes Debian

As ferramentas preparadas para essa distribuição podem ser encontradas tanto no próprio CD utilizado para a instalação quanto no site da própria distribuição: www.debian.org.

. Utilitário dpkg

Instalando Pacote
Sintaxe:
dpkg -i nome_pacote

Read more Exemplo:Instalando o ssh no sistema – o ssh é uma ferramenta de acesso remoto muito útil para redes de todos os portes.
#dpkg -i ssh-1.2.3-9.3.deb

Removendo Pacote
Sintaxe:
dpkg -r nome_pacote

O parâmetro -r faz com que o pacote seja removido.

Read more Exemplo: Removendo o pacote nmap do sistema.

#dpkg -r nmap-3.75.deb

Read more Apesar de remover o pacote do sistema, o parâmetro -r não remove os arquivos de configuração criados por este pacote, então para removermos todo e qualquer tipo de arquivo criado pelo pacote instalado devemos utilizar a opção --purge . Exemplo:

#dpkg --purge amsn

Consulta Pacotes
Sintaxe:
dpkg -l nome_pacote

Read more Exemplo: Consultando se o pacote rp-pppoe esta instalado no sistema.

#dpkg -l rp-pppoe

Roteiro de APT - Advanced Packaging Tool

Slide 10: . Introdução

No início havia o .tar.gz. Os usuários tinham de penar para compilar cada programa usado em seu sistema GNU/Linux, ou outro qualquer. Os passos eram os seguintes:

#tar xvfz samba-2.4.0-8cl.tar.gz (desempacotamento e descompactação)
#./configure ( preparação para a instalação, checando bibliotecas e dependências) 
#make (testar o sistema com a nova ferramenta e incluir bibliotecas finais)
#makeinstall (reside o programa no sistema)

Quando o Debian foi criado, sentiu-se a necessidade de um sistema de gerenciamento de pacotes instalados no sistema. Deu-se a esse sistema o nome de dpkg. Assim surgiu o famoso "pacote":
#dpkg -i ssh-1.2.3-9.3.deb (instala)
#dpkg -r ssh-1.2.3-9.3.deb (remove)
#dpkg -l ssh-1.2.3-9.3.deb (consulta)

Logo após a Red Hat resolveu criar seu conhecido sistema rpm.
# rpm -ivh Eterm-0.9-4cl.i386.rpm (instala)
# rpm -Uvh Eterm-0.9-4cl.i386.rpm (faz um update)
# rpm -qa Eterm-0.9-4cl.i386.rpm (consulta)
# rpm -e Eterm-0.9-4cl.i386.rpm (remove)

Ainda existe a maneira de instalação e remoção para sistemas Slackware:
#installpkg nmap-3.75.tgz (instala)
#removepkg nmap-3.75.tgz (remove)

Rapidamente outro dilema tomou conta das mentes dos produtores de GNU/Linux. Uma maneira rápida, prática e eficiente de se instalar pacotes, gerenciando suas dependências automaticamente e tomando conta de seus arquivos de configuração quando atualizado. Assim, o Debian, pioneiro, criou o APT ou Advanced Packaging Tool, hoje portado por algumas outras distribuições.

Slide 11: O arquivo /etc/apt/sources.list

Para seu funcionamento, o APT utiliza-se de um arquivo que lista as "fontes" de onde ele obterá os pacotes. Esse arquivo é o /etc/apt/sources.list:

cat /etc/apt/sources.list
# 
# deb cdrom:[Ubuntu-Studio 9.10 _Karmic Koala_ - Release i386 (20091027)]/ karmic main multiverse restricted universe

#deb cdrom:[Ubuntu-Studio 9.10 _Karmic Koala_ - Release i386 (20091027)]/ karmic main multiverse restricted universe
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.

deb http://pt.archive.ubuntu.com/ubuntu/ karmic main restricted
deb-src http://pt.archive.ubuntu.com/ubuntu/ karmic main restricted

## Major bug fix updates produced after the final release of the
## distribution.
deb http://pt.archive.ubuntu.com/ubuntu/ karmic-updates main restricted
deb-src http://pt.archive.ubuntu.com/ubuntu/ karmic-updates main restricted

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL NOT receive any
## review or updates from the Ubuntu security team.
deb http://pt.archive.ubuntu.com/ubuntu/ karmic universe
deb-src http://pt.archive.ubuntu.com/ubuntu/ karmic universe
deb http://pt.archive.ubuntu.com/ubuntu/ karmic-updates universe
deb-src http://pt.archive.ubuntu.com/ubuntu/ karmic-updates universe
...
...

As palavras deb e deb-src indicam o tipo de repositório: se guarda pacotes binários (deb), ou seja, pacotes pré-compilados ou se guarda pacotes fonte (deb-src) que é a fonte original do programa mais o arquivo de controle Debian (.dsc) e o diff.gz.

As linhas desse arquivo apontam para fontes, repositório oficial e para atualizações de segurança. Para adicionar novos repositórios basta adicionar seus endereços nesse arquivo. Lembre-se de utilizar "apt-get update" depois de modificar o arquivo /etc/apt/sources.list. Você precisa fazer isso para que o APT obtenha as listas de pacotes das fontes que você especificou.

Slide 12: apt-get

O apt-get é uma ferramenta de gerenciamento de pacotes. Os softwares são, por natureza, modulares. Se você faz um software com interface gráfica que toca músicas, para ele funcionar você vai precisar: da biblioteca que desenha os gráficos, do servidor de som, dos codecs que interpretam os formatos de música, etc. A isso damos o nome de dependências. Para instalar o pacote, (rpm -ivh softexemplo.rpm / dpkgsoftexemplo.deb) será necessário instalar as dependências que o software provavelmente exigirá. Assim, teremos que instalar manualmente os pacotes de dependência. O apt-get tenta resolver estes conflitos e instalar automaticamente todas as dependências. No caso de dependências cruzadas de diversos softwares ou de versões diferentes de bibliotecas, será necessário resolver o conflito manualmente. O apt vêm instalado por padrão na distribuição Debian, onde lida com pacotes deb.

Mais que um comando, o apt-get é uma tecnologia, que hoje está disponível para qualquer que seja a distribuição Linux que você utilize. Lembrando que o APT é uma interface para o dpkg.

Slide 13: . Instalando pacotes

Da lista de opções do apt-get nos interessa agora as opções install e remove (para mais opções utilize o comando apt-get --help | more). Digite no terminal:

$apt-get install apt-howto-pt-br 
E: Não foi possível abri arquivo de trava /var/lib/dpkg/lock - open (13 Permissão negada) 
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root? 

Perceba que é preciso ser administrador para instalar softwares. Por isso é necessário se conectar como usuário root:

 
# su - 

O APT busca, quando solicitada a instalação, em seu banco de dados a versão mais nova do pacote e vai baixá-lo do repositório correspondente na sources.list. Caso esse pacote dependa de algum outro o APT irá conferir as dependências e instalar os pacotes necessários.

# apt-get install apt-howto-pt-br 
Reading Package Lists... Done 
Building Dependency Tree... Done 
The following NEW packages will be installed: 
apt-howto-pt-br 
0 upgraded, 1 newly installed, 0 to remove and 271 not upgraded. 
Need to get 0B/239kB of archives. 
After unpacking 393kB of additional disk space will be used. 
Selecting previously deselected package apt-howto-pt-br. 
(Reading database ... 52965 files and directories currently installed.) 
Unpacking apt-howto-pt-br (from .../apt-howto-pt-br_1.8.10.2-1_all.deb) ... 
Setting up apt-howto-pt-br (1.8.10.2-1) ... 

Tente, caso seja possível em sua distro, instalar os seguintes softwares:

  • # apt-get install gtkam
  • # apt-get install gphoto2

. Opção reinstall

Caso você de alguma forma danifique a instalação de um pacote excluindo algum arquivo de configuração, por exemplo, ou simplesmente deseja que os arquivos do pacote sejam repostos com a versão mais nova que estiver disponível, você pode usar a opção --reinstall da seguinte maneira:

# apt-get --reinstall install gdm
Reading Package Lists... Done
Building Dependency Tree... Done
0 packages upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 1  not upgraded.
Need to get 0B/182kB of archives. After unpacking 0B will be used.
Do you want to continue? [Y/n]
.....

. Localizando um pacote instalado

Para localizar um pacote instalado basta seguir o exemplo:

# dpkg -L apt-howto-pt-br 
/usr/share/doc/Debian/apt-howto/apt-howto.pt-br.html 

Para utilizar o how-to encontrado basta seguir os passos:

# mozilla /usr/share/doc/Debian/apt-howto/apt-howto.pt-br.html 

Slide 14: Removendo pacotes

Abaixo segue um exemplo de como remover um pacote e os seus dependentes:

# apt-get remove apt-howto-pt-br 
The following packages will be REMOVED: 
apt-howto-pt-br 
0 upgraded, 0 newly installed, 1 to remove and 271 not upgraded. 
Need to get 0B of archives. 
After unpacking 393kB disk space will be freed. 

Slide 15: Procurando pacotes

Mesmo não sabendo qual o nome de um pacote é possível instalá-lo. Para isso basta fazer uma busca pelo pacote como no exemplo a seguir:

#apt-cache search atari
atari-fdisk-cross - Partition editor for Atari (running on non-Atari)
circuslinux - The clowns are trying to pop balloons to score points!
madbomber - A Kaboom! clone
tcs - Character set translator.
atari800 - Atari emulator for svgalib/X/curses
stella - Atari 2600 Emulator for X windows
xmess-x - X binaries for Multi-Emulator Super System

Slide 16: Obtendo informações

Para obter mais informações sobre um pacote, podemos utilizar o comando apt-cache show , como mostrado no exemplo abaixo:

#apt-cache show stella  
Package: stella
Priority: extra
Section: non-free/otherosfs
Installed-Size: 830
Maintainer: Tom Lear <tom@trap.mtview.ca.us>
Architecture: i386
Version: 1.1-2
Depends: libc6 (>= 2.1), libstdc++2.10, xlib6g (>= 3.3.5-1)
Filename: dists/potato/non-free/binary-i386/otherosfs/stella_1.1-2.deb
Size: 483430
MD5sum: 11b3e86a41a60fa1c4b334dd96c1d4b5
Description: Atari 2600 Emulator for X windows
Stella is a portable emulator of the old Atari 2600 video-game console
written in C++.  You can play most Atari 2600 games with it.  The latest
news, code and binaries for Stella can be found at:
http://www4.ncsu.edu/~bwmott/2600

Slide 17: Verificando dependências

Para saber de quais pacotes um outro pacote depende, utilizamos o comando apt-cache depends. Observe o exemplo a seguir:

# apt-cache depends penguin-command
penguin-command
Depends: libc6
Depends: libpng2
Depends: libsdl-mixer1.1
Depends: libsdl1.1
Depends: zlib1g

Slide 18: Escolhendo a origem dos pacotes

É possível escolher de onde baixar os pacotes. Para listar os repositórios onde estão disponíveis os pacotes, utilizamos o comando apt-setup. Como no exemplo a seguir:

#apt-setup
-escolher o método de acesso (cdrom, http, ftp, filesystem, edit source list by hand)
-escolher o país ( Brazil)
-escolher o mirror debian para usar (ftp.br.debian.org)
Conecting 0% to ftp.br.debian.org

Observe que foram utilizados apenas dois comandos para atualização de todo o sistema e tudo isso sem a necessidade de reboots.

Slide 19: Atualizando as informações sobre os pacotes disponíveis

O Comando apt-get update procura pelas listas de pacotes nos repositórios indicados no seu arquivo /etc/apt/sources.list.

Reading Package Lists... Done Building Dependency Tree... Done W: Couldn't stat source package list 'http://people.debian.org unstable/ Packages' var/state/apt/lists/people.debian.org_%7ekov_debian_unstable_Packages) - stat (2 Arquivo ou diretório não encontrado) W: You may want to run apt-get update to correct these missing files E: Couldn't find package penguineyes </verbatim>

Ao tentar rodar o apt-get install pacote, se aparecer a mensagem acima, significa que você se esqueceu de rodar o apt-get update depois da sua última alteração no arquivo /etc/apt/sources.list. Para resolver o problema basta executar o apt-get update.

Slide 20: Atualizando pacotes

A atualização de pacotes é um grande trunfo do sistema APT. Podemos fazer as atualizações da seguinte maneira.

# apt-get -u upgrade
Reading Package Lists... Done
Building Dependency Tree... Done
The following packages have been kept back
cpp gcc lilo 
The following packages will be upgraded
adduser ae apt autoconf debhelper dpkg-dev esound esound-common ftp indent
ipchains isapnptools libaudiofile-dev libaudiofile0 libesd0 libesd0-dev
libgtk1.2 libgtk1.2-dev liblockfile1 libnewt0 liborbit-dev liborbit0
libstdc++2.10-glibc2.2 libtiff3g libtiff3g-dev modconf orbit procps psmisc 
29 packages upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
Need to get 5055B/5055kB of archives. After unpacking 1161kB will be used.
Do you want to continue? [Y/n]

apt-get ou aptitude?

Embora o apt-get seja a ferramenta mais tradicional e a mais usada, ele disputa o posto com o aptitude, um "sucessor" pelo qual vem sendo substituído. Os dois buscam resolver os mesmos problemas, mas o aptitude oferece algumas vantagens técnicas sobre o apt-get. Para usuários finais, a escolha entre o apt-get e o aptitude recai mais sobre suas preferências pessoais, já que são ferramentas destinadas a solucionar exatamente o mesmo problema.

Muitas das deficiências do apt-get, que levaram ao aparecimento do aptitude já foram solucionadas nas versões recentes, o que fez com que as duas ferramentas se tornassem mais e mais parecidas em termos de funções.

Os dois programas resolvem problemas de dependência de pacotes. Porém, durante a remoção de determinados pacotes o apt-get não remove todas as dependências, já o aptitude sim, desde que nenhum outro pacote necessite daquelas dependências.

Visto que o apt-get possui algumas deficiências e que está sendo aos poucos substituído pelo aptitude dê preferência ao comando aptitude.

Nota: Para que o aptitude funcione corretamente devemos primeiramente realizar um update, e somente depois instalar o pacote. Além disso não se pode esperar que instalando um pacote com apt-get conseguiremos resolver problemas de dependência na remoção com o aptitude.

Opções do aptitude

Opções de Atualização da lista de pacotes

aptitude update Atualiza a lista de pacotes dos repositórios. Deve ser o primeiro comando a ser executado quando se pretende gerenciar seus pacotes (Equivalente a apt-get update).
Instalação de pacotes

aptitude install pacote Instala um pacote de software e todas as suas dependências. Podemos instalar vários pacotes de uma só vez, usando a sintaxe: aptitude install pacote1 pacote2 pacote3. (Equivalente a apt-get install pacote).
aptitude reinstall pacote Re-instala um pacote, substituindo os arquivos. Bastante útil, quando se quer restaurar arquivos que tenham sido alterados. (Equivalente a apt-get install —reinstall pacote).
Atualização do sistema

aptitude safe-upgrade Instala todas a atualizações disponíveis, satisfazendo todas as dependências. (Equivalente a apt-get -u upgrade).

aptitude full-upgrade Instala todas a atualizações disponíveis, procedendo à instalação ou remoção de pacotes para satisfazer todas as dependências. (Equivalente a apt-get -u dist-upgrade).
Remoção de pacotes

aptitude remove pacote Remove um pacote. É possível remover vários pacotes de uma só vez, usando a sintaxe: apt-get remove pacote1 pacote2 pacote3. (Equivalente a apt-get remove pacote).
aptitude purge pacote Remove totalmente um pacote, incluindo os arquivos de configuração. (Equivalente a apt-get remove ou purge pacote).
Pesquisar por pacotes

aptitude search procura Procura na lista de pacotes e mostra as ocorrências. (Equivalente a apt-cache search procura)
Informações sobre pacotes

aptitude show pacote Mostra informações sobre os pacotes. (Equivalente a apt-cache show pacote)

Slide 21: Finalizando

Topic revision: r10 - 28 Oct 2016, AdminUser
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback