gerenciadores de pacotes gnu/linux

22
Gerenciadores de Pacotes no GNU/Linux Gilmar Sampaio de Oliveira Junior¹ ¹Aluno do curso de Segurança da Informação na FATEC São Caetano do Sul 14/09/2015 01. Introdução Um gerenciador de pacote é uma ferramenta utilizada para instalação, remoção e atualização de programas. Normalmente são encontrados em sistemas GNU/Linux, tendo em vista que tais sistemas consistem de milhares de pacotes distintos. Os programas são distribuídos através de pacotes, que estão ligados a metadados, estes metadados contém informações adicionais, tais como uma descrição do aplicativo e uma lista de dependências, que são programas necessárias para que o programa execute corretamente. Os programas e metadados podem ser encontrados em repositórios, que podem ser locais (CD, DVD ou disco rígido) ou online (servidores FTP). Após a instalação, os metadados são armazenados em um banco de dados local de pacotes que é usado para recuperar os pacotes do software. 02. Pacotes Um pacote de software é um arquivo, normalmente compactado de acordo com a distribuição, que contém todos os arquivos (binários, shell scripts, configuração, dados, bibliotecas, documentação, papeis de parede, icones e outros) necessários para a instalação de um software (aplicativo), além de todas as informações necessárias para a sua instalação, remoção, configuração e manutenção será usado pelo gerenciador de pacotes. Como um quebra cabeça, os sistemas GNU/Linux são formados por diversos pacotes. Um programa pode ser divido em vários pacotes, na qual você poderá instalar apenas as partes que lhe for conveniente, deixando o sistema mais enxuto. Basicamente em sistemas GNU/Linux temos dois tipos de pacotes:

Upload: gilmarsampaiojunior

Post on 20-Feb-2016

48 views

Category:

Documents


0 download

DESCRIPTION

Artigo sobre Gerenciadores de Pacotes GNU/Linux

TRANSCRIPT

Page 1: Gerenciadores de Pacotes GNU/Linux

Gerenciadores de Pacotes no GNU/Linux

Gilmar Sampaio de Oliveira Junior¹ ¹Aluno do curso de Segurança da Informação na FATEC São Caetano do Sul

14/09/2015 01. Introdução

Um gerenciador de pacote é uma ferramenta utilizada para instalação, remoção e atualização de programas. Normalmente são encontrados em sistemas GNU/Linux, tendo em vista que tais sistemas consistem de milhares de pacotes distintos.

Os programas são distribuídos através de pacotes, que estão ligados a metadados, estes metadados contém informações adicionais, tais como uma descrição do aplicativo e uma lista de dependências, que são programas necessárias para que o programa execute corretamente.

Os programas e metadados podem ser encontrados em repositórios, que podem ser locais (CD, DVD ou disco rígido) ou online (servidores FTP). Após a instalação, os metadados são armazenados em um banco de dados local de pacotes que é usado para recuperar os pacotes do software. 02. Pacotes

Um pacote de software é um arquivo, normalmente compactado de acordo com a distribuição, que contém todos os arquivos (binários, shell scripts, configuração, dados, bibliotecas, documentação, papeis de parede, icones e outros) necessários para a instalação de um software (aplicativo), além de todas as informações necessárias para a sua instalação, remoção, configuração e manutenção será usado pelo gerenciador de pacotes.

Como um quebra cabeça, os sistemas GNU/Linux são formados por diversos pacotes. Um programa pode ser divido em vários pacotes, na qual você poderá instalar apenas as partes que lhe for conveniente, deixando o sistema mais enxuto. Basicamente em sistemas GNU/Linux temos dois tipos de pacotes:

Page 2: Gerenciadores de Pacotes GNU/Linux

Código-fonte: conjunto de arquivos, código-fonte, documentação e arquivos de configuração, que deverão ser compilados para serem instalados no sistema;

Binários: pacote de código-fonte pré-compilados para uma distribuição ou arquitetura específica, juntamente com outros arquivos necessário para a utilização/instalação.

Nosso foco de estudo será os arquivos binários, comumente chamados apenas de pacotes, e sua instalação através da linha de comando, tendo em vista que alguns pacotes binários podem ser instalados baixando o pacote (compatível com seu sistema) e dando alguns cliques como no Windows, ou através de gerenciadores de pacote em modo gráfico.

As distribuições GNU/Linux utilizam softwares empacotados para facilitar a manipulação pelo gerenciador de pacotes. É muito mais fácil e rápido instalar o pacote de um software que já foi compilado e empacotado do que baixar o seu código-fonte, compilá-lo e instalá-lo manualmente. Da mesma forma, é muito fácil e rápido desinstalar o pacote desse software do que removê-lo manualmente.

Quando o pacote é executado, seus dados são descompactados e copiados para o sistema de arquivos do sistema operacional, criando links simbólicos onde for necessário, atalhos no menu e no desktop e, às vezes, oferecendo opções de configuração ao usuário.

Alguns pacotes podem depender de outros, ou seja, um certo pacote X precisa de uma biblioteca do pacote Y, isso é conhecido como dependência, e será tratada mais adiante.

Os pacotes são criados para uma versão específica de uma determinada distribuição, pois as dependências podem variar entre distribuições e versões de uma distribuição.

Há muitos formatos de pacotes. Os mais conhecidos são .tgz, .deb e .rpm. Uns menos comuns .pup, .pisi, .tazpkg e .mo. 03. Metadados do pacote

Nos repositórios, que são locais onde encontramos os pacotes, também encontramos informações adicionais dos pacotes, vulgarmente chamadas de

Page 3: Gerenciadores de Pacotes GNU/Linux

metadados, tais informação podem variar de acordo com o pacote e distribuição, e podem conter:

Um resumo; Uma descrição; Uma lista de arquivos contidos no pacote; A versão do software contido, bem como o número da versão do pacote; Quando, onde e por quem foi compilado; Para qual arquitetura foi compilado; Somas de verificação dos arquivos contidos no pacote (checksum); A licença do software contido; Outros pacotes que ele necessita para funcionar corretamente (dependências); etc.

Alguns metadados são armazenados localmente, e atualizados periodicamente, para que o sistema possua informações atualizadas sobre os pacotes instalados e disponíveis.

Cada distribuição chama os metadados de nomes diferentes, alguns serão citados ao longo desde artigo. 04. Dependências do pacote

Durante a instalação de algum pacote, podemos encontrar algum que dependa de outro pacote, esta dependência pode ser de uma ferramenta, biblioteca, etc. Para que a execução sejam bem sucedidas temos que resolver primeiramente a dependência. Exemplificando, o pacote A necessita que os pacotes B, C e D sejam instalados em ordem para funcionar corretamente.

Alguns aspectos importantes com relação as dependências de pacote: Dependências de pacote são transitivas. Isto significa que: se o pacote A

necessita do pacote B, e o pacote B necessita do pacote C, necessariamente o pacote A também necessita do pacote de C. Sendo este fato o porquê de, às vezes, se ter um monte de pacotes a instalar, embora se deseje apenas um aplicativo.

Dependências em bibliotecas (tipicamente pacotes que começam com "lib" em seus nomes) são muito comuns e praticamente todos os aplicativos individuais dependem de um conjunto de pacotes de bibliotecas.

Page 4: Gerenciadores de Pacotes GNU/Linux

Os pacotes e as dependências do pacote são aspectos muito importantes nas

distribuições GBU/Linux, pois fornecem uma maneira modular para criar e gerir um sistema operacional e seus aplicativos

É também uma maneira muito eficiente de manter um sistema estável e seguro. Assim, quando uma falha de segurança, exploit ou bug afeta uma biblioteca usada por um ou vários aplicativos, atualizar um pacote singular atualizará o sistema para todos aplicativos.

Como exemplo, o pacote openssl contém bibliotecas de criptografia que são usadas por muitas aplicações e outras bibliotecas (por exemplo, para a criptografia SSL). Quando uma nova do openssl está disponível, todas as aplicações que o usam se beneficiarão dela apenas pela atualização de um único. 05. Repositórios de pacotes

Os repositórios são coleções de pacotes tipicamente armazenados em um servidor remoto, mas que também podem residir localmente em um HD, CD-ROM, DVD e outras mídias de armazenamento. O importante é saber que os repositórios armazenam dados sobre pacotes em um formato específico, dependendo do gerenciador de pacotes.

Gerenciadores de pacotes utilizam os repositórios para instalar softwares no sistema. O gerenciador consulta uma “lista” dos repositórios em um arquivo do sistema. Cada distribuição mantem seus próprios repositórios on-line e seus arquivos estão em diretórios distintos dentro do sistema, tais “listas” podem ser modificadas de acordo com a distribuição que está sendo usando.

O gerenciador de pacotes, o formato dos pacotes e o repositório compõem um sistema de gerenciamento de pacotes.

Encontramos dois tipos de repositórios:

Repositórios de pacotes oficiais, que incluem os pacotes testados e suportados pela distribuição, que são mantidos pelos mantenedores da distribuição.

Repositórios adicionais (ou não oficiais) de pacotes administrados por terceiro. Os quais fornecem vários pacotes adicionais, alguns dos quais estão mais atualizados, embora tenham sido minimamente testados, ou que não podem

Page 5: Gerenciadores de Pacotes GNU/Linux

ser distribuídos juntamente com a destruição oficial por várias razões dentre elas fundamentação legal.

05.1. Entendo o arquivo de repositório

Em um sistema Debian você pode ver a lista de repositórios abrindo o arquivo /etc/apt/sources.list, a seguir um exemplo do que podemos encontraremos: # Pacotes Gerais deb http://ftp.br.debian.org/debian/ testing main contrib non-free # Pacotes com atualizações de segurança deb http://security.debian.org/ lenny/updates main contrib #Pacotes Multimídia deb http://www.debian-multimedia.org testing main

As linhas iniciadas com # são comentários e por isso são ignoradas pelo gerenciador.

Cada linha de configuração corresponde a uma fonte diferente, possuindo quatro partes cada, explicadas abaixo:

1ª parte (deb) - significa que você quer baixar pacotes de programas já compilados. Caso queira baixar os fontes do programa, você deve substituir pela palavra deb-src

2ª parte (endereço web) - É da onde o usuário irá baixar os programas. A primeira fonte tem o endereço onde ficam os pacotes gerais do Debian, a segunda é onde ficam os pacotes que sofreram pequenas, mas importantes, atualizações de segurança e a terceira fonte contém o endereço de programas específicos de multimídia, como players, codecs, etc.

3ª parte (testing) - significa de qual versão do Debian você quer baixar os pacotes. O Debian possui basicamente 4 versões: lenny (stable), squeeze (testing), SID (unstable) e experimental. A versão stable possui uma equipe muito maior de suporte e correções de erros, porém os programas dessa

Page 6: Gerenciadores de Pacotes GNU/Linux

versão são mais antigos. Os programas só entram para o repositório dessa versão depois de terem sido feitos vários testes com ele e com suas dependências. A versão testing possui os programas que futuramente serão da stable, mas o problema é que as vezes demoram anos para que esses programas sejam da stable. Muitas pessoas usam o Debian testing e não têm problemas com ele. A maioria das distribuições baseadas no Debian usam repositórios testing ou unstable, como: Kurumin, ubuntu, kubuntu, etc. A versão unstable possui programas que acabaram de ser lançados, mas devem passar por testes de estabilidade mínimos. Já a versão experimental contém pacotes que estão em fase de desenvolvimento, por exemplo programas em versão beta.

4ª parte (main contrib non-free) - significam de quais repositórios você quer fazer o download. O main significa pacotes totalmente livres, de acordo com a definição Debian de Software Livre. O Contrib são pacotes que dependem de pacotes da seção non-free e o non-free são pacotes que não são livres, como: sun-java, rar, NVIDIA, ATI, etc

Cada distribuição tem sua lista de repositório em diferentes diretórios. 06. Instalando programas a partir do código fonte

Apesar de não ser o foco do artigo, falarei brevemente como instalar um software a partir do código fonte.

Para instalar programas a partir do código fonte devemos ter um pacote de código fonte, normalmente nome_do_pacote.tar.gz ou nome_do_pacote.tar.bz2. O .tar significa que dentro desse arquivo existem outros arquivos e sub-pastas e o .gz ou .bz2 é o tipo de compactação que foi usada na criação do pacote.

A compilação nada mais é que transformar o código fonte em um formato executável pelo sistema e sua instalação não depende da distribuição, ou seja, pode ser instalada em qualquer distribuição.

Antes de iniciar a instalação, devemos descompactar nosso pacote, todo o processo de instalação é feita de maneira manual. Então use os seguintes comandos:

tar -zxvf nome-do-arquivo.tar.gz → desempacota o arquivo de extensão .tar.gz;

Page 7: Gerenciadores de Pacotes GNU/Linux

tar -jxvf nome-do-arquivo.tar.bz2 → desempacota o arquivo de extensão .tar.bz2

Saber a sintaxe do comando tar é muito importante nesse processo, porem está fora do escopo deste artigo. Após descompactar o pacote, entre no diretório criado e execute os seguintes comandos: $./configure $make # make install

O "./configure" executa um script (dentro da pasta do programa), que verifica o sistema, em busca dos componentes de que precisa.

O "make" cuida do trabalho pesado, fazendo a compilação propriamente dita. Ele se baseia nas informações deixadas pelo configure para encontrar os componentes de que precisa.

Finalmente, temos o "make install", que finalmente instala o programa, copiando os arquivos gerados pelo make para as pastas corretas do sistema. Ao contrário dos dois primeiros comandos, ele precisa ser executado como root, já que envolve fazer alterações no sistema.

Caso encontrar algum erro ou dificuldade durante a instalação leia INSTALL ou README que normalmente são encontrados dentro do diretório do pacote descompactado. 07. Gerenciadores de pacotes

Gerenciador de pacotes é uma coleção de ferramentas que nos permite instalar, atualizar, configurar e remover pacotes de um sistema operacional de forma simplificada e consistente. É tipicamente usado em sistemas operacionais GNU/Linux.

O gerenciador de pacotes, modernos, obtém os pacotes de software de repositórios (servidores online, CDs, DVDs, etc), resolve as dependências e os instala no seu sistema. O gerenciador de pacotes também facilita a remoção de pacotes ou a atualização dos mesmos. O número de pacotes disponíveis para instalação depende de quais repositórios você tem adicionado ao sistema.

Page 8: Gerenciadores de Pacotes GNU/Linux

Sistemas de gerenciamento de pacotes ficam incumbidos da tarefa de organizar todos os pacotes instalados no sistema. Funções típicas de um gerenciador de pacotes são:

Verificar checksum para ter certeza de que o pacote foi baixado sem erros; Verificar a assinatura digital para autenticar a origem dos pacotes; Atualizar um sistema e corrigir bugs (principalmente erros de segurança); Agrupar pacotes de acordo com suas funcionalidades para reduzir confusões; Gerir dependências para ter certeza de que um pacote só será instalado se

todas as suas dependências também estiverem, o que resolveu o problema conhecido como Inferno de dependências.

Nesta apresentação não demonstraremos gerenciadores de pacotes em modo gráfico, tendo em vista que são muito intuitivos. 7.1. PKGTOOL

Pkgtool é o gerenciador de pacotes padrão da distribuição Slackware. Foi desenvolvido por Patrick J. Volkerding. Ele é usado na instalação da distribuição e também pelo usuário para a remoção, instalação e atualização de pacotes. Não há verificação de dependências, nem conexão automática a repositórios.

Além das funcionalidades básicas necessárias para o gerenciamento de pacotes, o PKGTool também provê uma série de scripts de configuração que auxiliam muito para a realização de manutenções gerais do sistema.

O Slackware trabalha com um formato próprio de pacotes, o .tgz, que são basicamente pacotes com os programas pré-compilados, junto com um script de instalação que especifica os diretórios para onde os arquivos devem ser copiados, providencia a criação dos arquivos de configuração necessários, etc. É um sistema simples e funcional.

Para executar o utilitário, deveremos carregá-lo na linha de comando: #pkgtool

Page 9: Gerenciadores de Pacotes GNU/Linux

O PKGTool provê ao administrador uma interface texto com menus intuitivos e fácil de utilizar, basta apenas utilizar as opções básicas que se encontram em sua interface, as quais seguem: CURRENT → Instala os pacotes pertencentes ao diretório onde este utilitário é invocado. Por exemplo, se entrarmos em nosso diretório /mnt/pkg e utilizarmos esta opção, todos os pacotes nativos do Slackware presentes neste diretório serão instalados automaticamente. É muito útil para a instalação de pacotes extras de forma simples e automatizada, bastando apenas guardá-los em um diretório separado de acordo com o perfil utilizado. OTHER → Possui as mesmas finalidades da opção Current, porém solicita ao superusuário o endereço do diretório que contém os pacotes desejados para a instalação. FLOPPY → Realiza a instalação dos pacotes desejados que estão gravados em um disquete. Basta selecionar a unidade que possui o disquete com os pacotes desejados. REMOVE → Remove os pacotes desejados conforme uma seleção pré-realizada. VIEW →Exibe um conjunto de informações referentes ao pacote selecionado, onde será mostrado uma listagem de pacotes instalados no sistema. Da mesma forma que na instalação do Slackware, a opção Setup disponibiliza uma série de scripts para a configuração: Fontconfig: Instalação e configuração das fontes do sistema. Scrollkeeper: Atualização da documentação do Gnome. Install-kernel: Instalação de diferentes versões compiladas do kernel. Make-bootdisk: Criação de discos de inicialização para o sistema. Modem-device: Ajustes de device e permissões de hardmodems. Hotplug: Auto-detecção de periféricos. Liloconfig: Ajustes e configurações do LILO. Mouse: Configuração do mouse. Netconfig: Configuração da rede.

Page 10: Gerenciadores de Pacotes GNU/Linux

Services: Habilita/desabilita os serviços disponíveis. Setconsolefont: Ajustes das fontes do console. Timeconfig: Fuso horário. Xwmnconfig: Seleção do ambiente gráfico padrão do sistema. Ao baixar um pacote .tgz qualquer, você também pode instalá-lo diretamente usando o comando: # installpkg nome_do_pacote.tgz Para remover um pacote, que você saiba o nome, use o comando: # removepkg nome_do_pacote.tgz Para instalar uma versão mais recente de um pacote, atualizando a versão atualmente instalada no sistema, o comando é: # upgradepkg nome_do_pacote

Os pacotes .tgz são muito menos comuns do que os pacotes .rpm, usados pelo Red Hat, Mandrake, Conectiva e outras distribuições e que os pacotes .deb, usados no Debian. Geralmente você só encontrará pacotes .tgz no próprio FTP do Slackware, nos CDs de instalação e em alguns sites de usuários. O mais comum é encontrar os programas disponibilizados apenas em código fonte, os pacotes .tar.gz e em formato .rpm. 7.2. DPKG

O dpkg é uma ferramenta que é a base do sistema de gerenciamento de pacotes do sistema Debian e derivados. O dpkg é uma ferramenta de baixo nível, pois não baixa pacotes de repositórios e não resolvem dependências, diferentemente do APT.

Mas este programa tem apenas uma visão parcial do universo Debian: ele sabe o que está instalado no sistema, e o que for dado na linha de comando, mas não sabe nada dos outros pacotes disponíveis. Assim, ele vai falhar se uma dependência não for satisfeita.

Page 11: Gerenciadores de Pacotes GNU/Linux

Os principais comandos utilizados pelo gerenciador de pacotes dpkg são dpkg e dpkg-reconfigure. Sintaxe: dpkg [opções] nome_pacote Opções:

-i :: instalação simples. -r :: desinstala o pacote - exceto arquivos de configuração do pacote. -P :: desinstala o pacote - todos os arquivos do pacote. -l :: exibe os pacotes que estão instalados. -p :: exibe informações sobre o pacote instalado. -s :: exibe o status do pacote. -I :: exibe informações sobre pacotes não instalados. -S :: exibe o pacote do qual o arquivo faz parte. -L :: exibe os arquivos que fazem parte de um pacote instalado. -c :: exibe os arquivos que fazem parte de um pacote não instalado. --help :: exibe uma mensagem de ajuda.

Exemplos: Instala o pacote: #dpkg -i pacote.deb Desinstala o pacote, mas mantêm os seus arquivos de configuração: #dpkg -r pacote Desinstala o pacote, inclusive os seus arquivos de configuração: # dpkg -P pacote Exibe informações do pacote não instalado: # dpkg -I pacote.deb DPKG-RECONFIGURE Reconfigura pacotes ".deb" após terem sido instalados utilizando o debconf (sistema de configuração de pacotes ".deb"). Esse comando fará perguntas para reconfigurar o pacote.

Page 12: Gerenciadores de Pacotes GNU/Linux

Sintaxe: dpkg-reconfigure opções nome_pacote Opções:

-a ou --all :: reconfigura todos os pacotes -h ou --help :: exibe ajuda

Exemplo: Reconfigura o pacote ssh: # dpkg-reconfigure ssh 7.3. Advanced Packaging Tool (APT)

APT (Advanced Packaging Tool) é um conjunto de ferramentas usadas pelo Debian e suas respectivas derivações, para administrar os pacotes .deb de uma forma automática, de modo que quando um programa é instalado o APT instala e/ou atualiza também todos os pacotes que são necessários para um funcionamento do programa.

Em linha de comando, usa-se "apt-get" para baixar pacotes, o que fez muitos se referirem ao Apt como apt-get, o que não está correto.

O APT normalmente faz o download de arquivos .deb, que são instalados usando o dpkg, mas o APT também funciona com RPM, pelo APT-RPM.

Os arquivos de configuração do APT estão em /etc/apt/sources.list. Comandos

update - Adquire novas listas de pacotes; upgrade - Faz uma atualização; install - Instala novos pacotes; remove - Remove um pacote; source - Faz o download de arquivos fonte; build-dep - Configura as dependências de compilação de pacotes fonte; dist-upgrade - Atualiza a distribuição; dselect-upgrade - Segue as seleções do dselect; clean - Apaga arquivos baixados para instalação; autoclean - Apaga arquivos antigos baixados para instalação.

Page 13: Gerenciadores de Pacotes GNU/Linux

check - Verifica se não há dependências quebradas; purge - Remove pacotes e os arquivos dos pacotes de configuração.

Opções

-h Texto de ajuda; -q Saída logável, exceto para erros; -qq Sem saída, exceto para erros; -d Fazer o download apenas - NÃO instalar ou desempacotar arquivos; -s Não-agir. Executar simulação de ordenação; -y Assumir Sim para todas as perguntas, não pedir confirmação; -f Tenta continuar se a checagem de integridade falhar; -m Tenta continuar se os arquivos não podem ser localizados; -u Mostra uma lista de pacotes atualizados também; -b Constrói o pacote fonte depois de baixá-lo; -c=? Ler esse arquivo de configuração; -o=? Definir uma opção de configuração arbitrária, ex -o dir::cache=/tmp;

7.4. RPM

RPM é um acrônimo recursivo para Red Hat Packet Manager. O RPM é um formato e um gerenciador de pacotes. Nada mais é do que uma ótima ferramenta para a gerência de pacotes, podendo instalar, atualizar, remover, buscar e verificar status de pacotes.

O RPM utiliza um banco de dados para guardar informações sobre pacotes. Este banco fica em /var/lib/rpm. Embora muitas funções de alto nível tenham sido implementadas diretamente no RPM desde o início, como a verificação de dependências (mas não sua resolução), parece que não é tão fácil adicionar ao padrão RPM os recursos encontrados em outros sistemas de gerenciamento de pacotes modernos. Isso levou ao surgimento de novas ferramentas de gerenciamento de pacotes, como o YUM, deixando as rotinas de baixo nível por conta do RPM.

É o formato de pacotes padrão da LSB (a Linux Standard Base). Os pacotes RPMs têm nomes que obedecem o formato <nome-do-pacote>-<versão>-

Page 14: Gerenciadores de Pacotes GNU/Linux

<release>.<plataforma>.rpm. Um exemplo típico seria o pacote que permite conexões ADSL via PPPoE: rp-pppoe-3.5-1.i386.rpm. Aqui, rp-pppoe é o nome do pacote propriamente dito, 3.5 é a versão do software e 1 é o número do release, i386 é a plataforma que, neste caso, indica que o software em questão é compatível com os chips Intel 386 e posteriores.

A instalação de um pacote como este pode ser feita da seguinte forma: rpm -ivh rp-pppoe-3.5-1.i386.rpm O comando acima gerará uma saída semelhante a esta: Preparing ########################### [100%] 1: rp-pppoe ########################### [100%] O texto acima indica que o pacote foi instalado, sem erros ou problemas. Os parâmetros -ivh indicam, respectivamente INSTALL (para instalar o pacote), VERBOSE (para mostrar as mensagens informativas sobre o que está sendo feito) e HASH (responsável pela exibição dos sinais de sustenido apresentados durante o progresso da instalação). Parâmetros da Linha de Comando Ao comando RPM podemos passar os seguintes parâmetros: -i :: Install: instala o pacote -F :: Freshen: instala pacote apenas se uma versão prévia do pacote já existir -v :: Verbose: mostra mensagens explicativas na tela -U :: Upgrade: atualiza um pacote -h :: Hash: mostra o progresso da instalação -q :: Query: consulta se um pacote já está instalado -qa :: Query-All: mostra todos os pacotes instalados -qf <arquivo> :: Query-File: consulta o pacote do qual o arquivo faz parte -qp <pacote> :: Query-Package: consulta um pacote não instalado -qi <pacote> :: Query-Info: apresenta informações detalhadas sobre o pacote -ql <pacote> :: Query-List: lista os arquivos pertencentes ao pacote

Page 15: Gerenciadores de Pacotes GNU/Linux

-qd <pacote> :: Query-Doc: apresenta uma lista dos arquivos de documentação do pacote, como READMEs, páginas de manual (MAN), etc. -qc <pacote> :: Query-Config: apresenta uma lista dos arquivos de configuração. -V :: Verify: compara arquivos instalados cominformações disponíveis na base de dados RPM. Compara permissões, proprietário, tamanho e outras informações de cada arquivo. --force :: força a instalação de um pacote, sobrescrevendo arquivos e pacotes de mesmo nome já instalados --nodeps :: No Dependencies: não verifica se há dependências de arquivos antes de instalar um pacote. -e :: Erase: remove um pacote instalado --nobuild :: No Building: não instala o pacote em questão; apenas realiza uma verificação e reporta eventuais conflitos. 7.5. Yellow Dog Updater Modified (YUM)

Nascido do Yellow Dog Updater (YUP), o YUM é o gerenciador de pacotes dos sistemas baseados no Red Hat, e usa pacotes RPM. Ele se tornou o gerenciador de pacotes padrão do Red Hat Enterprise Linux 5. A modularidade é um dos principais recursos do YUM. Novos recursos podem ser adicionados ao YUM por meio de plugins e do pacote yum-utils.

Há quem critique, afirmando que o YUM não é uma ferramenta suficientemente integrada, e que o desempenho e a maturidade dos módulos varia. O fato é que sua ampla adoção atesta a boa qualidade desse sistema de gerenciamento de pacotes. Há tempos a Red Hat oferece um serviço de assinatura, a RHN (Red Hat Networks), que fornece atualizações e patches . A assinatura é um serviço importante para o plano de negócios da Red Hat, e por isso ela não dedicou muito tempo ao desenvolvimento de um serviço de gerenciamento de pacotes para não assinantes. Assim, o YUM foi desenvolvido por terceiros, antes de ser adotado pela Red Hat. O RPM é o gerenciador de pacotes tradicional da Red Hat, sucedido pelo up2date e agora substituído pelo YUM.

É um gerenciador de pacotes de arquivos similar ao APT que lida automaticamente com dependências computando-as e resolvendo o que deve ser feito para tratá-las.

Page 16: Gerenciadores de Pacotes GNU/Linux

O Yum faz o download do pacote especificado de algum repositório. Possui um simples arquivo de configuração. Faz um cálculo eficaz das dependências.

Como o yum sabe de onde fazer download? O ponto de partida é o diretório /etc/yum.repos.d/, que normalmente contém vários arquivos repo. Esse é o local padrão para repositórios, mas outros locais podem ser especificados no arquivo de configuração do YUM, que normalmente é o /etc/yum.conf.

O comando Yum possui várias sintaxes diferentes que iram te ajudar a manipular seus pacotes de software. Vamos conhecer algumas destas sintaxes: yum install nome_do_pacote Instalar um pacote. Durante a instalação podem ser pedidas confirmações se você desejar realizar a instalação do pacote dependente. Assim, você terá que apertar a tecla “y” de seu teclado seguido de “Enter” para que a instalação continue. Se você desejar pode adicionar um “-y” ao final do comando, informando assim ao yum que está de acordo com toda a instalação a ser realizada. Mas cuidado, só faça isso se você tiver certeza do pacote a ser instalado. # yum remove nome_do_pacote Este comando remove o pacote desejado. # yum update Através deste comando uma lista de todas as atualizações possíveis serem realizadas será exibida a você e sugere as instalação. Caso deseje você pode automaticamente o comando autorizado todas as instalações disponíveis, incluindo a “-y” Ex: “yum update –y”. # yum check-update Será feita uma verificação se existe alguma atualização disponível para instalação. # yum list Através deste comando você poderá obter várias informações sobre o pacote disponível. Ele possui alguns parâmetros adicionais que são: # yum list available : lista todos os pacotes que podem ser instalados; # yum list updates: lista todos os pacotes que podem ser atualizados;

Page 17: Gerenciadores de Pacotes GNU/Linux

# yum list installed: lista todos os pacotes que estão instalados em seu sistema; # yum list extras: Lista todos os pacotes instalados no seu sistema que não estão disponíveis nos repositórios listados pelo YUM no arquivo de configuração; # yum list obsoletes: lista os pacotes instalados no sistema que estão obsoletos em algum repositório do YUM. # yum search PALAVRA_CHAVE Através do search você pode localizar um pacote instalado em seu sistema utilizando uma palavra chave. O Yum irá localizar e listar para você todos os pacotes que possuam a palavra chave na descrição, sumário, nome do pacote ou em qualquer outro campo de informação da lista de pacotes RPM dos repositórios instalados em seu sistema. Este recurso é muito utilizado para poder localizar, pacotes onde nem sempre o nome é o mesmo do que você deseja. Exemplo do Search # yum search am Irá listas todos os pacotes que começam com “am” como o “amsn”. # yum info NOME_DO_PACOTE Este é usado para listar todas as informações disponíveis no pacote desejado. # yum deplist NOME_DO_PACOTE Este comando é usado para produzir uma lista de todas as dependências e quais pacotes necessários dependentes de um determinado pacote. # yum repolist Este comando mostra uma lista de repositórios configurados em seu sistema. Por padrão é listado todos os pacotes ATIVOS. Digite “yum repolist all” para listar os pacotes ATIVADOS e DESATIVADOS. #yum --help Menu de ajuda do Yum que irá te trazer informações primordiais para sua utilização. Plugins para Yum

Page 18: Gerenciadores de Pacotes GNU/Linux

Yum-Presto: Acelera o processamento e download dos pacote, fazendo o download da diferença entre o pacote novo e o pacote antigo. Para instala-lo, execute: yum install yum-presto Fastest Mirror Plugin: Através deste plugin, será buscado o espelho mais rápido para o download do pacote em questão. Para instalá-lo, execute: yum install yum-fastestmirror Security Plugin: Pesquisa e instala atualizações referente a segurança. É útil para servidores em modo de produção, evitando possíveis problemas de segurança. Para instalá-lo, execute: yum install yum-security Para aplicar, digite: yum --security update Allowdowngrade: Por padrão, o Yum apenas realizar upgrade dos pacotes existentes no sistema. Mas através deste plugin você poderá realizar downgrade, retornar o seu pacote a uma versão anterior. Para instalá-lo, execute: yum install yum-allowdowngrade Para aplicar, digite: yum update --allow-downgrade Você pode desativar este plugin, alterando a opção ativada no arquivo: vi /etc/yum/pluginconf.d/allowdowngrade.conf Download Order: Através deste plugin, todos os pacotes a serem baixados serão feitos de forma decrescente de tamanho, ou seja, dos maiores para os menores. Para instala-lo, execute: yum install yum-plugin-download-order LangPack: Plugin que faz com que o Yum identifique o idioma configurado no sistema no momento e realize o download dos pacotes no mesmo idioma do sistema. Para instala-lo, execute: yum install yum-langpacks

Page 19: Gerenciadores de Pacotes GNU/Linux

7.6. PACMAN

PACkage MANager é um software gerenciador de pacotes criado por Judd Vinet para o Arch Linux. O objetivo do pacman é tornar possível o fácil gerenciamento de pacotes tanto dos repositórios oficiais quanto do AUR*.

O pacman mantém o sistema atualizado sincronizando todos os pacotes com aqueles que estão atualmente nos servidores. Teoricamente, basta um simples comando para atualizar todos os pacotes (e consequentemente todo o sistema) para a última versão disponível.

O programa foi escrito em C e usa o formato .pkg.tar.xz para os pacotes. A sua configuração de repositórios é feita editando-se o /etc/pacman.conf. Os principais comandos são: Instalar pacote: # pacman -S nome_do_pacote Remover programas: # pacman -R nome_do_pacote Fazer o upgrade dos pacotes anteriormente instalados: # pacman -F nome_do_pacote Atualizar o Sistema (Upgrade System): # pacman -Syyuu Baixe um pacote sem instalá-lo: # pacman -Sw Instale um pacote de 'local' que não é de um repositório remoto (por exemplo, o pacote é a partir do AUR): #pacman -U /local de destino/package_name-version.pkg.tar.xz Pacman pode procurar por pacotes no banco de dados, ele busca tanto em nomes e descrições dos pacotes:

Page 20: Gerenciadores de Pacotes GNU/Linux

#pacman -Ss string1 string2 Para procurar os pacotes já instalados: #pacman -Qs string1 string2 Para exibir informações abrangentes sobre um determinado pacote: #pacman -Si pacote_nome Para obter uma lista dos arquivos instalados por um pacote: #pacman -Ql pacote_nome Para listar uma árvore de dependências de um pacote: #pactree pacote_nome *AUR (Arch User Repository) é um repositório comunitário e não oficial do Arch Linux para usuários. Ele contém apenas "arquivos de descrição" (chamados PKGBUILDS) que permitem compilar pacotes a partir de seu código fonte e instalá-los posteriormente com o pacman. Muitos pacotes novos no Arch Linux começam no AUR. Usuários podem votar contra ou a favor dos pacotes, para só então — depois de se tornarem populares o suficiente — serem movidos para o repositório oficial da comunidade. 7.7. SMART

SMART é um gerenciador de pacotes universal. A proposta do SMART é interessante, poder trabalhar com todas as distribuições e todos os tipos de pacotes binários, independente da extensão (DEB, RPM etc). O Smart trabalha diferente de outros instaladores. Ao invés de usar um repositório adicionado, por meio de um documento, um acesso à rede (chamado "canal"), ele encontra o repositório onde estão os pacotes RPM, e os localiza.

O Smart foi criado pelo brasileiro Gustavo Niemeyer em Maio de 2004, sendo um software livre e distribuído pelo licença GPL. Alguns comandos do SMART: $ smart --gui (abre o Smart com uma útil interface gráfica)

Page 21: Gerenciadores de Pacotes GNU/Linux

# smart update (atualiza a base de dados) # smart update && smart upgrade smart -y (atualiza a base de dados e o próprio smart) $ smart search nome do pacote (procura pelo pacote) # smart install -y nome do pacote (instala o pacote) $ smart channel --show (mostra os canais do Smart)

Uma característica interessante do Smart, é poder baixar e instalar automaticamente um pacote que esteja em um repositório da Internet. Você não precisaria nem baixá-lo previamente. Para isso, seria simples executar um comando do tipo abaixo: # smart install --y http://www.aquitáopacote.com/diretório do pacote/ nome do pacote.rpm 8. ALIEN

É uma ferramenta permite converte formatos de pacotes ".rpm", ".deb", ".tgz" e ".slp". Este comando deve ser utilizado com muito cuidado, pois nem todos os pacotes podem ser convertidos do seu formato original para outro. Os formatos suportados pelo alien são: RPM (Red Hat), DEB (Debian), TGZ (Slackware), PKG (Solaris) e SLP (Stampede Linux).

Sintaxe: alien opções nome_pacote Opções:

--to-tgz ou -t :: converte o pacote para o formato ".tgz". --to-rpm ou -r :: converte o pacote para o formato".rpm". --to-deb ou -d :: converte o pacote para o formato".deb".

Exemplo: Converte um pacote RPM para DEB: # alien -d nome_pacote.rpm 09. Fonte https://pt.opensuse.org/Gerenciamento_de_pacotes http://www.vivaolinux.com.br/dica/O-gerenciador-de-pacotes-dpkg

Page 22: Gerenciadores de Pacotes GNU/Linux

http://www.vivaolinux.com.br/artigo/O-gerenciador-de-pacotes-RPM http://www.vivaolinux.com.br/artigo/Instalando-programas-no-Linux-Completo-e-total http://www.hardware.com.br/dicas/gerenciamento-pacotes.html http://novatec.com.br/livros/pacotes/capitulo8575220896.pdf http://www.vivaolinux.com.br/artigo/Instalando-pacotes-.tar.gz-e-.tar.bz2 http://www.vivaolinux.com.br/dica/Comando-para-manipulacao-de-pacotes-PKGTool https://pt.wikipedia.org/wiki/Advanced_Packaging_Tool http://www.vivaolinux.com.br/dica/O-gerenciador-de-pacotes-dpkg https://pt.wikipedia.org/wiki/Dpkg http://www.alexandresmcampos.adm.br/informatica/linux/rpm.htm https://pt.wikipedia.org/wiki/RPM_(Linux) http://hgidc.com.br/blog/conhecendo-o-gerenciador-de-pacotes-yum/ https://pt.wikipedia.org/wiki/Yellowdog_Updater,_Modified http://www.ibm.com/developerworks/br/linux/library/l-lpic1-v3-102-5/ http://www.vivaolinux.com.br/artigo/Utilizando-o-alien-para-a-conversao-de-pacotes https://labix.org/smart http://www.vivaolinux.com.br/artigo/SMART-Package-Manager?pagina=4 http://www.vivaolinux.com.br/artigo/openSUSE-As-varias-formas-de-atualizalo-e-de-instalar-pacotes?pagina=7