SlideShare une entreprise Scribd logo
1  sur  17
Télécharger pour lire hors ligne
Como gerenciar de forma correta os pacotes em debian e distribuições derivadas
tutorfreebr.blogspot.com.br 1/16 Gerenciamento de Pacotes no Debian
Como gerenciar de forma correta os pacotes em Debian e Distribuições Derivadas
A gestão de pacotes em sistema GNU/Linux é uma das suas maiores virtudes, no
entanto o formato do empacotamento e a sua correspondente gestão varia de distribuição para
distribuição e por isso mesmo seria muito extenso falar de todos os métodos possíveis. Em Debian e
distribuições derivadas, o .deb é utilizado como sendo o formato de empacotamento e o apt e dpkg
são as ferramentas de trabalho.
Os mais céticos pensam no Synaptic como a forma de resolução para todas as tarefas
relacionadas com a gestão de pacotes, ou até numa outra GUI qualquer. Mesmo o Synaptic
Package Manager como sendo uma das melhores GUIs para estes procedimentos não responde de
forma satisfatória em algumas situações e por isso temos de ir para a CLI (Command Line
Interface).
apt-get
Muito provavelmente o apt-get é um dos comandos mais utilizados no Debian e
distribuições derivadas. O principal objetivo do apt-get é interagir com os repositórios remotos, os
quais são mantidos pela equipe de empacotamento da distribuição e depois realizar a execução de
ações sobre esses pacotes disponíveis.
O apt e suas variantes realizam a pesquisa de informações nos repositórios
remotamente numa cache mantida no sistema local. Também é utilizado para instalação e/ou
remoção de um determinado pacote ou vários no sistema.
O apt-get é largamente utilizado para atualizar a cache localmente e ao mesmo tempo
realizar todas as alterações necessárias ao sistema.
apt-cache
O apt-cache utiliza a cache local para consultar informações sobre todos os pacotes
disponíveis e as suas respectivas propriedades. Se for necessário realizar uma pesquisa por um
determinado pacote ou até uma ferramenta que executa uma determinada função no sistema, o apt-
tutorfreebr.blogspot.com.br 2/16 Gerenciamento de Pacotes no Debian
cahe é extremamente útil. Ao mesmo tempo, o apt-cache pode dar um manancial de informações
sobre qual a versão do pacote exato que vai ser o alvo desse mesmo procedimento. Também
devemos pensar em dependências e dependências reversas onde precisamente o apt-cache é a
melhor escolha.
aptitude
O aptitude tem a particularidade de combinar muitas das funcionalidades quer do nosso
já conhecido apt-get bem como do apt-cache.
No entanto, quando o aptitude se encontra a ser executado via CLI, a maioria dos
comandos vai espelhar de forma correta todas as potencialidades do apt-get e do apt-cache. Assim,
devido a esta capacidade conhecida como mirroring está de momento fora dos propósitos deste
artigo.
dpkg
As 3 ferramentas anteriormente descritas possuem o seu foco na gestão dos pacotes
mantidos nos repositórios, no entanto o dpkg pode ser utilizado para operar nos pacotes .deb
individuais, mas também é importante descrever, que o dpkg é o responsável pela maior parte dos
acontecimentos em backgroung via os comandos descritos acima.
Sendo assim, contrariamente aos comandos apt-*, o comando dpkg não possui a
capacidade de resolução de dependências de forma automática.
Mas então qual o trabalho do dpkg?
A sua principal característica é a capacidade que possui de poder trabalhar de forma
fácil com os pacotes .deb de forma totalmente direta e ainda ao mesmo tempo a capacidade de
poder dissecar qualquer pacote e descobrir toda a sua estrutura.
Embora seja possível ao dpkg recolher algumas informações sobre os pacotes instalados
no sistema, o seu objectivo principal reside sobre o nível do pacote individualmente.
tasksel
O tasksel é de um tipo de classe diferente de ferramentas existentes para a gestão de
software. Em lugar de exercer uma gestão de pacotes de forma individual, o tasksel, concentra-se
unicamente em grupos de software necessário para a realização de tarefas específicas (tasks).
Pessoalmente... não tenho muito adoração pelo tasksel, pois não permite uma
abordagem cirúrgica ao que desejamos realizar, no entanto pode ser bastante útil para se iniciar o
trabalho de uma forma bastante rápida.
VARIAÇÕES DO APT
Como alguns sabem, existem mais ferramentas para a gestão de pacotes que oferecem
diferentes funcionalidades ou até informações presentes em diferentes formas. Estou claramente
tutorfreebr.blogspot.com.br 3/16 Gerenciamento de Pacotes no Debian
referndo-me às ferramentas que se enquadram nesta categoria: apt-file, dselect e gdebi. Mais uma
vez lamento, mas está totalmente fora deste artigo, detalhar estas mesmas ferramentas.
Depois desta introdução, é o momento de passar às explicações práticas...
1. Atualizar a Cache de Pacotes e o Sistema
1.1 Atualizar a Cache de Pacotes Locais
Os repositórios remotos que empacotam as suas ferramentas contam com as
informações dos pacotes a serem atualizados em determinados intervalos de tempo. No entanto, é
importante referir que a grande maioria das ferramentas destinadas para a gestão de pacotes trabalha
com a informação existente previamente na cache local.
Assim sendo, uma das melhores práticas é precisamente a cada início da nossa sessão,
atualizar a cache de pacotes, antes de você executar outros comandos relacionados com pacotes.
A nossa finalidade aqui é assegurar que temos o nosso sistema Debian o mais atualizado
possível relativamente ao software disponível existente nessa máquina para evitar más surpresas.
Importa ao mesmo tempo evidenciar que alguns comandos podem falhar se estivermos operando
com informações de pacotes obsoletos.
1.2 Atualização de Pacotes sem a Remoção de Pacotes
Vale lembrar que o apt distingue dois tipos de procedimentos diferentes de atualização.
O primeiro procedimento pode e deve ser utilizado para atualizar quaisquer componentes do
sistema que não necessitem de remoção de componentes. Para se atualizar a cache local, executar:
sudo apt-get update
No momento será apresentada uma listagem devidamente atualizada com a totalidade
dos pacotes disponíveis existentes nos repositórios.
Este procedimento pode ser de enorme importância quando não desejamos a remoção de
quaisquer dos pacotes instalados em qualquer circunstância. A título de exemplo, posso nem estar
interessado em atualizar os drivers da minha placa de vídeo, nem sempre os drivers mais novos são
os que dão as maiores garantias.
1.3 Atualização / Remoção de Pacotes
Algumas atualizações envolvem a substituição de componentes do sistema ou a
realização da remoção de pacotes em regime de conflito. Este é por si mesmo um procedimento que
vai ignorar toda e qualquer atualização ou atualizações que requerem a remoção do pacote,
executar:
sudo apt-get upgrade
Logo após ter sido executada esta tarefa, qualquer atualização que não envolva a
remoção de pacotes vais ser de imediato aplicada ao sistema no seu todo.
tutorfreebr.blogspot.com.br 4/16 Gerenciamento de Pacotes no Debian
Este é o procedimento que atualizará a totalidade dos pacotes, mesmo aqueles que
exijam a remoção de pacotes, portanto isto é muita das vezes necessário realizar relativamente às
dependências que esses pacotes vão mudar / alterar.
Os pacotes a serem removidos são substituídos por outros pacotes equivalentes durante o
procedimento de atualização. Este é sem dúvidas um procedimento totalmente seguro de ser
executado.
Mas convém também recordar que é uma boa prática estarmos com a máxima atenção
sobre os pacotes a serem removidos, apenas no caso de alguns componentes essenciais se
encontrarem marcados para remoção. Logo devo executar:
sudo apt-get dist-upgrade
Agora que foi realizado o procedimento acima, a totalidade de pacotes existentes no
sistema serão atualizados na íntegra. Vale lembrar que este é o procedimento de atualização mais
completo, quando em comparação com o “apt-get upgrade”.
2. Download e Instalação de Pacotes
Uma das principais funções existentes nas ferramentas destinadas à gestão de pacotes é
facilitar o download e a instalação de um ou mais pacotes nesse sistema.
2.1 Pesquisar por Pacotes
Quando estamos realizando o download e instalação de pacotes, o primeiro
procedimento é a análise dos repositórios da nossa distribuição GNU/Linux para que dessa forma se
pesquise por pacotes de softwares.
A grande maioria dos comandos apt operam na cache de informações que é mantida na
máquina local, sendo que este procedimento permite uma execução mais rápida e menos tráfego de
rede.
A pesquisa por pacotes é uma operação que tem o seu alvo: a cache de informações dos
pacotes referentes à lista de repositórios do seu sources.list que encontra-se em “etc/apt/”.
O apt-cache search é o recurso necessário para a execução de pesquisa de pacotes
disponíveis. Logo é necessário garantir que a cache local se encontra devidamente atualizada antes
de se iniciar a pesquisa de pacotes, portanto para pesquisar, executar:
apt-cache search NomeDoPacote
Então não se utiliza o sudo?
Não são necessários privilégios especiais. Este procedimento apenas
consultará a informação e nada mais do que isso.
Utilizarei pesquisa sobre o pacote htop como exemplo demonstrativo, executar:
apt-cache search htop
tutorfreebr.blogspot.com.br 5/16 Gerenciamento de Pacotes no Debian
2.2 Instalação de Pacotes via Repositórios
Para que seja executada a instalação de um determinado pacote via repositórios, bem como ainda
todas as suas dependências obrigatórias e necessárias para a sua correta execução, utilizamos o
“apt-get install” + o nome do pacote, executar:
sudo apt-get install NomeDoPacote
É possível a instalação de vários pacotes, sendo que para se instalar múltiplos pacotes deve ser
inserido sempre um espaço entre cada pacote a ser instalado, executar:
sudo apt-get install package1 package2 package3 package4 package5
Vamos pensar se esses mesmos pacotes ou conjunto de pacotes a serem instalados requerem
obrigatoriamente dependências adicionais, assim estas vão certamente serem apresentadas, sendo
para tal necessário confirmar o procedimento. Para exemplo vou utilizar a instalação do Apache,
executar:
sudo apt-get install apache2
Vejamos o output com muita atenção:
Reading package lists... Done Building dependency tree Reading state information... Done The
following extra packages will be installed: apache2-data Suggested packages: apache2-doc
apache2-suexec-pristine apache2-suexec-custom apache2-utils The following NEW packages will
be installed: apache2 apache2-data 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 236 kB of archives. After this operation, 1,163 kB of additional disk space will be used.
Do you want to continue [Y/n]?
Embora o meu objetivo seja instalar o Apache, o pacote apache2-data, entre outros, são
necessários como dependências, ou seja, é necessária a instalação destes outros pacotes para que o
Apache venha a funcionar corretamente. Neste caso podemos continuar com a instalação
pressionando [ENTER], existe também a possibilidade de se abortar esse mesmo processo de
instalação, digitando n e teclando [ENTER].
2.3 Instalação de uma Versão Especifica de um Pacote via Repositórios
Sempre que existe a necessidade de se instalar uma versão específica de um determinado pacote,
essa mesma informação pode ser fornecida com a introdução do sinal de igualdade (=), executar:
sudo apt-get install NomeDoPacote=version
NOTA: 'version' deve coincidir com um dos números da versão do pacote disponível nesse
repositório.
2.4 Processo de Reconfiguração de Pacotes
Muitos pacotes possuem os seus próprios scripts de configuração pós-instalação, os
quais são sempre executados imediatamente após a instalação se encontrar completa. Estes incluem
muitas das vezes prompts para que o administrador do sistema possa realizar as escolhas
necessárias de acordo com as suas necessidades.
Caso exista a necessidade de serem executadas estas ou outras etapas de configuração
tutorfreebr.blogspot.com.br 6/16 Gerenciamento de Pacotes no Debian
num momento posterior, devemos utilizar o “dpkg-reconfigure”.
O dpkg-reconfiure analisará o pacote em causa e depois executará todos os comandos
de pós-configuração incluídos dentro da especificação desse mesmo pacote, executar:
sudo dpkg-reconfigure NomeDoPacote
IMPORTANTE: este procedimento apresentará uma quantidade substancial de perguntas para
serem respondidas.
2.5 Simulação de Execução do Pacotes
Aqui certamente vamos entrar numa das capacidades mais emblemáticas do apt.
Muitas, mas muitas vezes mesmo temos a necessidade de ver quais os efeitos colaterais de um
determinado procedimento, ainda antes de este ser executado para evitar o comprometimento do
sistema na sua globalidade.
Adicionando o parâmetro “-s”, o apt permite a simulação desse procedimento. Executar:
apt-get install -s package
Veremos todas as dependências e alterações no sistema. Mas tem
mais, um dos benefícios deste procedimento é que podemos verificar todos os
resultados de um processo que normalmente requerem privilégios de root, sem a
utilização do sudo.
Por exemplo, vamos novamente voltar ao Apache. Vamos avaliar o que iria ser instalado com o
apache2. Executar:
apt-get install -s apache2
NOTE: This is only a simulation! apt-get needs root privileges for real execution. Keep also in mind
that locking is deactivated, so don't depend on the relevance to the real current situation! [...]The
following extra packages will be installed: apache2-data Suggested packages: apache2-doc
apache2-suexec-pristine apache2-suexec-custom apache2-utils The following NEW packages will
be installed: apache2 apache2-data 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
[...]
Está demonstrado que foi possível a obtenção de todas as informações sobre os pacotes
e versões que seriam instalados, sem a necessidade de ser concluído o processo real.
Para os usuários mais curiosos: verifiquem a saída do “apt-get -s dist-upgrade”.
2.7 Correção de Dependências Quebradas
Existem situações em que uma instalação não pode ser concluída devido a dependências
ou outros problemas similares. Isto pode acontecer quando o dpkg não tem a capacidade de cuidar
das dependências da forma devida.
Mais uma vez o apt-get pode tentar resolver estes problemas com a inclusão do parâmetro -f.
Executar:
tutorfreebr.blogspot.com.br 7/16 Gerenciamento de Pacotes no Debian
apt-get install -f
O procedimento realizado acima vai apresentar quais são as dependências que não se
encontram satisfeitas e tentar instalar na tentativa de resolver o problema.
2.8 Download de Pacotes dos Repositórios
Existe situações em que pode ser bastante útil realizar o download de um pacote de um
repositório sem a necessidade de este ser instalado, sendo que este procedimento pode ser realizado
através do “apt-get download pacote”.
Como trata-se apenas de um simples download de um arquivo e não terá impacto algum no sistema,
os privilégios de administrador não são necessários, executar:
apt-get download pacote
O download vai ser realizado no diretório atual.
2.9 Download das sources via Repositório
Sabemos que o apt trabalha principalmente com pacotes no formato .deb, no entanto
existe a possibilidade de se obter somente o código fonte dos pacotes, desde que seu sources.list se
encontre devidamente configurada com essa opção. Assim para se realizar o download da source é
necessário existir a diretiva deb-src no repositório da sua sources.list.
Depois de termos os repositórios das sources devidamente configurados, é possível
realizar o download das sources de um pacote, para tal executar:
sudo apt-get source package
O procedimento executado acima realizará o download dos arquivos para o diretório
atual.
2.10 Instalação de um Pacote .deb
A grande maioria das distribuições GNU/Linux nos dias de hoje recomenda a instalação
de software a partir de seus repositórios oficiais. Mas isto não impede que um desenvolvedor
ofereça seu software para download no formato apropriado para uma fácil instalação. Para instalar
um pacote .deb de terceiros vamos utilizar o dpkg.
O dpkg é utilizado essencialmente para trabalhar com pacotes individuais, portanto não devemos
tentar em caso algum a execução da instalação via repositórios, por isso mesmo executar:
sudo dpkg --install Pacote.deb
É importa lembrar que o dpkg não implementará qualquer tipo de manipulação de
dependências, significando que se existirem quaisquer dependências não satisfeitas, a instalação vai
falhar ou mostrar alguma mensagem de alerta.
Mas nem tudo se encontra perdido, visto que o dpkg vai marcar as dependências necessárias, por
isso, se todas as dependências se encontrarem disponíveis nos repositórios, podemos de uma forma
tutorfreebr.blogspot.com.br 8/16 Gerenciamento de Pacotes no Debian
bastante fácil, solucionar este problema recorrendo novamente ao dpkg. Executar:
sudo apt-get install -f
O procedimento realizado acima executará a instalação da totalidade das dependências
não satisfeitas, as mesmas que foram anteriormente marcadas pelo dpkg.
2.11 Tasks e Tasksel
É possível executar a instalação de grandes conjuntos de grupos de pacotes de software
que estabelecem um ambiente quando instalado em conjunto. Assim e para ficarem mais cientes de
exemplos de tasks, estas incluem LAMP servers, ambientes desktop, servers de aplicações, etc.
Caso o tasksel não se encontre instalado nessa máquina, executar (como ROOT):
apt-get update
apt-get install tasksel
É possível selecionar diferentes grupos de pacotes de forma interativa, para tal executar:
tasksel
O procedimento realizado acima apresentará uma interface que permite selecionar
diferentes grupos de pacotes e aplicar as alterações necessárias.
Também existe a possibilidade de se visualizar uma lista de tasks disponíveis e o seu respectivo
estado. Executar:
tasksel --list-task
Seguidamente é possível optar por instalar as tasks via CLI, executar:
sudo tasksel install nome_da_task
3. Remoção de Pacotes
Obviamente que a execução de operações inversas à instalação e download de pacotes
também são possíveis de serem realizadas com o que se denomina por package managers.
3.1 Desinstalar um Pacote
Para remover um pacote previamente instalado devemos utilizar o “apt-get remove”,
sendo que este comando removerá a maioria dos arquivos desse mesmo pacote instalado no sistema,
mas com uma exceção notável.
IMPORTANTE: quando executamos o “apt-get remove” estamos somente removendo
esses pacotes, pois serão deixados os arquivos de configuração desses pacotes no seu devido lugar,
para que desse modo a configuração prévia fique sempre disponível, caso seja necessário voltar a
instalar posteriormente essa mesma aplicação.
Pessoalmente, acho bastante útil, porque significa que os arquivos de configuração previamente
personalizados não serão removidos, mesmo que esse mesmo pacote tenha sido apagado, executar:
sudo apt-get remove NomeDoPacote
tutorfreebr.blogspot.com.br 9/16 Gerenciamento de Pacotes no Debian
O pacote (package) serão integralmente desinstalados, mas os seus arquivos de
configuração continuarão perfeitamente disponíveis.
3.2 Desinstalar um Pacote e todos os arquivos de Configuração
Sempre que for necessário realizar a remoção de um pacote e todos os arquivos de
configuração que se encontrem associados devemos usar o “apt-get purge”.
Contrariamente à utilização do 'apt-get remove', o 'apt-get purge' remove tudo, tudo
mesmo, sendo este procedimento bastante útil, caso não se deseje guardar os arquivos de
configuração ou executar uma instalação limpa.
NOTA: Vale lembrar que uma vez estes arquivos de configuração terem sido excluídos,
NÃO HÁ a hipótese destes serem recuperados (a menos que exista um backup), executar:
sudo apt-get purge NomeDoPacote
Agora, se for necessário novamente a reinstalação do pacote, a configuração padrão vai
ser utilizada.
3.3 Remoção de Dependências Automáticas não Necessárias
Quando se remove pacotes do sistema com “apt-get remove” ou com “apt-get purge”, o
meta pacote também será removido. No entanto, nem todas as dependências que foram instaladas de
forma automática são descartadas completamente.
Com a finalidade de se remover de forma automática todos os pacotes que foram
instalados como dependências, deve ser usado o “apt-get autoremove”. Executar:
sudo apt-get autoremove
3.4 Apagar Pacotes Obsoletos
Como alguns pacotes são adicionados, mas não são removidos pelos responsáveis por
esses mesmos pacotes para essa mesma distribuição, alguns pacotes ficarão obsoletos.
Existe uma outra opção que deve ser realizada conjuntamente com o apt-get, usando para tal o
“autoclean”, sendo que este procedimento vai liberar espaço na máquina e ainda permitir que a
cache seja atualizada. Executar:
sudo apt-get autoclean
4. Obtenndo Informações dos Pacotes
Cada pacote contém uma enorme variedade de metadados que podem ser acessados
utilizando o conjunto apt.
tutorfreebr.blogspot.com.br 10/16 Gerenciamento de Pacotes no Debian
4.1 Apresentar as Informações de um Pacote
Para ser possível apresentar informações detalhas sobre um pacote presente nos repositórios da
nossa distribuição, podemos usar o show com o 'apt-cahe', executar:
apt-cache show NomeDoPacote
O comando acima informará os dados dos candidatos em questão. Assim cada candidato terá
informações sobre as suas dependências, versão, arquitetura, conflitos, novo do arquivo do pacote
real, o tamanho desse pacote, instalação e outras descrições mais detalhadas.
Para que seja possível apresentar as informações adicionais sobre cada um dos candidatos,
incluindo uma listagem completa das dependências reversas (lista de pacotes que dependem do
pacote consultado), utilizamos o showpkg. Isto incluirá uma quantidade de informações sobre este
pacote relativamente a outros. Executar:
apt-cache showpkg NomeDoPacote
4.2 Mostrar Informações sobre um Pacote .deb
Para se apresentar os detalhes sobre um pacote .deb, podemos utilizar o parâmetro --info, com o
dpkg, sendo que o alvo deste comando deve ser o caminho (/path) para o arquivo .deb, executar:
dpkg --info debfile.deb
O procedimento realizado acima apresentará alguns metadados sobre o pacote. Isso
inclui o nome do pacote e a sua versão, a arquitetura para o qual foi desenvolvido, o tamanho e as
dependências necessárias, descrição e conflitos.
4.3 Apresentação das Dependências e das Dependências Reversas
Para obter a lista de todas as dependências dee um determinado pacote e suas
dependências reversas utilizaremos o “apt-cache depends”.
Para visualizar as dependências de um determinado pacote, executar:
apt-cache depends NomeDoPacote
O procedimento realizado acima exibirá as informações sobre cada pacote que é
apresentado como sendo uma dependência, sugestão, recomendação ou conflito.
Caso seja necessário descobrir quais os pacotes dependem de um outro, devemos utilizar o
rdepends. Portanto executar:
apt-cache rdepends NomeDoPacote
4.4 Apresentar Pacotes Instalados e Versões Disponíveis
Muitas das vezes existem várias versões de um pacote dentro do repositório com um único pacote
padrão. Assim para se ver as versões de um pacote podemos utilizar o argumento policy, executar:
apt-cache policy NomeDoPacote
O comando acima apresentará a versão se encontra instalada (se existir), o candidato
tutorfreebr.blogspot.com.br 11/16 Gerenciamento de Pacotes no Debian
que será instalado por padrão junto a uma tabela de versões de pacotes indicando a prioridade de
cada uma delas. Mostra qual a versão vai ser instalada e quais as alternativas se encontram
disponíveis.
O procedimento também apresentará uma listagem sobre os repositórios onde cada
versão se encontra localizada, então este pode ser usado se existir algum repositório extra ou PPA
em substituição aos pacotes dos repositórios padrão.
4.5 Apresentação de Pacotes Instalados com o dpkg -l
Para que seja possível apresentar os pacotes instalados no sistema existem duas opções,
as quais dependem do formato e do output que iremos escolher. Podemos utilizar o dpkg ou o
dpkg-query com o parâmetro -l, sendo que o output de ambos é idêntico.
Sem a introdução de argumentos será apresentara uma listagem de todos os pacotes instalados no
sistema. Executar:
dpkg -l
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf­files/Unpacked/halF­conf/Half­inst/trig­aWait/Trig­pend
|/ Err?=(none)/Reinst­required (Status,Err: uppercase=bad)
||/   Name                                                                                 Version
Architecture Description
+++­=============================================
[...]
ii  lyx            2.0.6­1build amd64        document processor
ii  lyx­common     2.0.6­1build all          architecture­independent files fo
ii  lyx­dbg        2.0.6­1build amd64        debugging symbols for LyX
[...]
Esta saída é bastante extensa.
No início da saída do comando é possível visualizar o significado dos 3 primeiros caracteres em
cada linha. O primeiro caractere indica o estado desse mesmo pacote, o qual pode ser:
u -> desconhecido;
i -> instalado;
r -> removido;
p -> purge executado;
h -> versão realizada.
O segundo caractere indica o estado atual do pacote, como ele é conhecido pelo sistema de
empacotamento, os quais podem ser os seguintes:
n -> não instalado;
i -> instalado;
c -> existem arquivos de configuração presentes, mas a aplicação está desinstalada;
u -> descompactado, sendo que os arquivos estão descompactados mas não configurados ainda;
f -> pacote parcialmente instalado, o que desde já significa que existe uma grande probabilidade de
esse mesmo pacote, ser suspenso devido a alguma operação do sistema;
w -> o pacote encontra-se à espera de um desencadeamento de um pacote em separado;
p -> o pacote foi desencadeado por outro pacote.
tutorfreebr.blogspot.com.br 12/16 Gerenciamento de Pacotes no Debian
O terceiro caractere é um espaço em branco, para a grande maioria de pacotes tendo somente, uma
opção potencial:
r -> reinstalação necessária, sendo que isto por norma tende a significar que se encontra quebrado e
não se encontra funcional.
As colunas restantes contem o nome do pacote, versão, arquitetura e uma descrição.
4.6 Apresentar o Estado da Instalação e Pacotes Filtrados
Se formos adicionar um padrão de pesquisa após o -l, o dpkg apresentará todos os pacotes
(instalados ou não) que contêm esse mesmo padrão. Vamos pesquisar por Iceweasel, executar:
dpkg -l iceweasel*
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf­files/Unpacked/halF­conf/Half­inst/trig­aWait/Trig­pend
|/ Err?=(none)/Reinst­required (Status,Err: uppercase=bad)
||/ Nome           Versão       Arquitectura Descrição
+++­==============­============­============­=================================
ii  iceweasel      31.8.0esr­1~ amd64        Web browser based on Firefox
un  iceweasel­l10n <nenhuma>    <nenhuma>    (nenhuma descrição disponível)
ii  iceweasel­l10n 1:31.8.0esr­ all          Portuguese (Brazil) language pack
4.7 Apresentar os Pacotes Instalados com dpkg --get selections
Uma forma alternativa, para serem apresentados os pacotes que se encontram
instalados no sistema é precisamente recorrer ao parâmetro “--get selections” junto ao dpkg.
Isto fornecerá uma listagem de todos os pacotes instalados ou removidos, mas não os “purgados”,
executar:
dpkg --get-selections
Então, para se poder diferenciar entre dois estados, vou utilizar o awk para filtrar por estado e assim
para se visualizar somente os pacotes instalados, executar:
dpkg --get-selections | awk '$2 ~ /^install/`
Para obter uma lista de pacotes removidos que não tiveram os seus arquivos de configuração
purgados, executar:
dpkg --get-selections | awk '$2 !~ /^install/'
4.8 Pesquisa por Pacotes Instalados
Para procurar um pacote base instalado de um pacote específico é possível adicionar uma sequência
de filtros após a opção --get-selections e ainda recorrer à utilização de curingas. Novamente, este
procedimento vai apresentar todos os pacotes que se encontram instalados ou que ainda possuem
arquivo de configuração do sistema, executar:
dpkg --get-selections libz*
tutorfreebr.blogspot.com.br 13/16 Gerenciamento de Pacotes no Debian
4.9 Listagem de arquivos Instalados por Pacotes
Se for necessário descobrir qual pacote é responsável por um determinado pacote devemos utilizar o
parâmetro “-L” com o dpkg, executar:
dpkg -L NomeDoPacote
Será apresentado o path (caminho) absoluto de cada arquivo que é controlado pelo pacote em causa.
4.10 Pesquisar o que um Pacote Instala
Para pesquisar o que um pacote instala devemos utilizar o parâmetro “-S”, executar:
dpkg -S /path/to/file
4.11 Descobrir qual Pacote é Dono de Arquivo de Instalação
Para descobrir qual pacote é dono de um determinado arquivo de instalação, devemos
utilizar o parâmetro “-S”. No entanto, existem momentos em que é necessário saber qual o pacote
que fornece determinado arquivo ou comando, mesmo que o pacote associado não se encontre
instalado.
Para este procedimento é necessário a instalação do “apt-file”. Isto manterá a sua
própria BD de informações, o qual inclui o path de cada arquivo controlado por um pacote nessa
BD, executar:
sudo apt-get update
sudo apt-get install apt-file
Em seguida atualize o seu BD e faça a pesquisa, executar:
sudo apt-file update
sudo apt-file search /path/to/file
IMPORTANTE: só vai funcionar para os locais dos arquivos que são instalados diretamente por
um determinado pacote. Qualquer arquivo que seja criado via scripts de pós-instalação, não será
encontrado.
5. Transferência de Listas de Pacotes entre Sistemas
Algumas vezes é necessário realizar um backup da lista de pacotes instalados nesse
sistema e depois usar esse mesmo backup para se instalar um conjunto idêntico de pacotes numa
outra máquina.
5.1 Exportação da Lista de Pacotes
Para que seja possível replicar o conjunto de pacotes instalados num determinado
sistema para outro é necessário que seja exportada a lista de pacotes. Para esse mesmo efeito é
necessário o dpkg --get-selections, executar:
dpkg --get-selections > ~/packagelist.txt
tutorfreebr.blogspot.com.br 14/16 Gerenciamento de Pacotes no Debian
E tudo pronto para ser copiado para a segunda máquina.
Também é possível realizar um backup da lista de sources e de todas as keys confiáveis, executar:
mkdir ~/sources cp -R /etc/apt/sources.list* ~/sources
Relativamente às keys confiáveis, o backup, deve ser realizado da seguinte forma, executar:
apt-key exportall > ~/trusted_keys.txt
Agora é possível transferir o arquivo packagelist.txt, o diretório das sources e o trusted_keys.txt.
5.2 Importar Lista de Pacotes
Vamos imaginar que foi criado uma listagem de pacotes com “dpkg --get-selections”
como o realizado acima, agora é possível importar os pacotes para outra máquina com a ajuda do
dpkg.
Primeiramente é necessário adicionar as keys e implementar a sources.list que foi copiada da
primeira máquina. Assumindo que todos os dados dos quais foi realizado o backup foram
devidamente copiados para o diretório “home” da nova máquina, executar:
sudo apt-key add ~/trusted_keys.txt sudo cp -R ~sources/* /etc/apt/
Seguidamente devemos limpar todos os pacotes não essenciais nessa máquina. Este procedimento
irá assegurar que se aplicarão todas alterações de uma forma completamente limpa. Para se realizar
este procedimento é necessário realizar o procedimento como administrador, executar:
sudo dpkg --clear-selections
IMPORTANTE: todos os pacotes não essenciais vão ser marcados para serem desinstalados. É
altamente recomendável a realização de um update à lista de pacotes locais para que a instalação
possa ter os registros de todo o software que serão instalados. A atual instalação e o procedimento
de upgrade ficará a cargo do dselect.
O dselect deve estar instalado na máquina previamente. No entanto, vale lembrar que o dselect
mantém a sua própria base de dados, por isso mesmo é necessário realizar o update antes, executar:
sudo apt-get update
Em seguida, executar:
sudo apt-get install dselect
sudo dselect update
Seguidamente é possivel executar:
sudo dpkg --set-selections <packagelist.txt>
Para se aplicar as alterações é necessário realizar o dselect-upgrade, executar:
sudo apt-get dselect-upgrade
Será realizado o download e instalação de todos os pacotes necessários e ao mesmo
tempo removerá todos os pacotes marcados como não selecionados. Por fim, a lista de pacotes tem
de coincidir com a da máquina anterior, embora os arquivos de configuração devem ser necessários
tutorfreebr.blogspot.com.br 15/16 Gerenciamento de Pacotes no Debian
copiar ou até modificar.
6. Adicionar Repositórios e PPAs
Este é um tema que dá uma longa conversa e até motivo para algumas especulações,
sendo que umas com mais fundamento que outras. O conjunto padrão de repositórios fornecidos
pela maioria das distribuições de hoje contém no meu entendimento os pacotes suficientes para a
grande maioria dos usuários exercerem um excelente trabalho.
Existem momentos em que adicionar sources de “terceiros” pode ser a única opção,
como no caso de drivers proprietários para algum hardware ou em alguma aplicação especial.
6.1 Adicionar PPAs
Pessoalmente e para um sistema Debian like, NÃO aconselho a instalação de PPAs
existentes, sem que previamente seja realizada uma análise criteriosa relacionada à equipa de
desenvolvimento desse mesmo PPA. Além dos comentários de outros usuários relativos a questões
de segurança e as implicações no sistema como um todo.
Vale lembrar que os PPAs tiveram a sua gênese para a distribuição Ubuntu e NÃO para
a distribuição Debian, apesar de o Ubuntu apresentar o mesmo formato de empacotamento (.deb),
existem grandes diferenças em termos de filosofia.
Para que seja possível adicionar determinado PPA é necessário o comando “add-apt-repository”, o
qual tem de obedecer à sintaxe seguinte:
sudo add-apt-repository endereçoDoPPA
Seguidamente será solicitado que seja adicionado uma key para esse mesmo PPA e
depois esse PPA será de imediato adicionado ao sistema. A partir desse momento é possível a
instalação de toda e qualquer aplicação existente nesse mesmo repositório com a ajuda dos
comandos normais do apt.
Antes de ser realizada a pesquisa e/ou a instalação de um determinado pacote desse PPA, a cache
local deve ser atualizada, para tal executar:
sudo apt-get update
NOTA: por norma, são sempre mais credíveis em termos de segurança as aplicações existentes nos
repositórios oficiais da sua distribuição de trabalho, do que os repositórios de terceiros,
ressalvando, como é obvio, todas as exceções peculiares como sejam: kernel e drivers
proprietários, pois há um único fornecedor de cada um deles. Ao mesmo tempo, é importante que
se diga, que nem sempre as aplicações mais recentes obedecem aos critérios reais em termos de
performance e rentabilidade, mas cabe ao usuário fazer sua escolha.
6.2 Adicionar RepositóriosManualmente
Neste ponto específico, até onde sei, duas abordagens diferentes e ambas válidas. A
primeira dessas abordagens é precisamente editar a sources.list de forma direta, podendo ser
editado o arquivo /etc/apt/sources.list ou colocar essa nova lista no diretório
tutorfreebr.blogspot.com.br 16/16 Gerenciamento de Pacotes no Debian
/etc/apt/sources.list.d.
Se formos optar pela segunda opção, o nome do arquivo a ser criado deve SEMPRE terminar em
.list, executar:
sudo nano /etc/apt/sources.list.d/novoRepositorio.list
Dentro desse arquivo podemos adicionar a localização desse novo repositório, utilizando para tal a
sintaxe seguinte, executar:
deb url repositório NomeDaRelease component_names
ONDE:
deb (ou deb-src) -> identifica sempre o tipo de repositório, sendo que os repositórios convencionais
são marcados como deb, enquanto os repositórios relativos às sources começam sempre com deb-
src;
url -> identifica a URL (Uniform Resource Location) principal para esse repositório, sendo esta por
isso mesmo a localização desse repositório;
release name (ou suite) -> por norma este é sempre o nome do código de lançamento relativo à
distribuição, mas também pode ser qualquer outro nome para assim identificar um conjunto
específico de pacote ou pacotes criados para a versão dessa distribuição.
component names -> são as labels (man, contrib e non-free) para a seleção de pacotes que
desejamos ter disponível. Muitas das vezes contém informações da equipe de manutenção desse
repositório para assim informar sobre vários aspectos e como exemplo podem ser: confiança ou
licenciamento restrito do software que ele contém.
A segunda abordagem é via a utilização do comando add-apt-repository.
Na distribuição Ubuntu se encontra definido como sendo padrão previamente. Em Debian, deve ser
instalado com o pacote software-properties-common, então para Debian executar:
sudo apt-get update
sudo apt-get install software-properties-common
O repositório deve se encontrar no mesmo formato que foi utilizado para a adição em modo manual:
sudo add-apt-repository 'deb url release component'
A cache local de pacotes deve ser sempre atualizada depois de ser aplicado qualquer atualização de
repositórios para que dessa forma o sistema possa ter a noção dos novos pacotes disponíveis,
executar:
sudo apt-get update
Concluindo… eu sei que existem excelentes GUIs, mas nem sempre oferecem as mais variadas
funcionalidades que se deseja para os fins desejados.
Mais e melhores informações neste link.
Visite: tutorfreebr.blogspot.com.br

Contenu connexe

Tendances

Gerenciamento de Pacotes no Linux
Gerenciamento de Pacotes no LinuxGerenciamento de Pacotes no Linux
Gerenciamento de Pacotes no LinuxElexsandro Rangel
 
Gestão automática de configuração usando puppet
Gestão automática de configuração usando puppetGestão automática de configuração usando puppet
Gestão automática de configuração usando puppetDaniel Sobral
 
Mudança de runlevels e desligamento do sistema
Mudança de runlevels e desligamento do sistemaMudança de runlevels e desligamento do sistema
Mudança de runlevels e desligamento do sistemaSoftD Abreu
 
Oficina de infraestrutura como código (apresentando o Puppet)
Oficina de infraestrutura como código (apresentando o Puppet)Oficina de infraestrutura como código (apresentando o Puppet)
Oficina de infraestrutura como código (apresentando o Puppet)Jose Augusto Carvalho
 
php orientado_a_objetos
php orientado_a_objetosphp orientado_a_objetos
php orientado_a_objetosFer Nando
 
Introdução ao zend framework
Introdução ao zend frameworkIntrodução ao zend framework
Introdução ao zend frameworkMarcos Oliveira
 
Sistemas Operacionais - Gnu/Linux Gerenciando Processos
Sistemas Operacionais - Gnu/Linux Gerenciando ProcessosSistemas Operacionais - Gnu/Linux Gerenciando Processos
Sistemas Operacionais - Gnu/Linux Gerenciando ProcessosLuiz Arthur
 
Quero Arch! (Parte 1)
Quero Arch! (Parte 1)Quero Arch! (Parte 1)
Quero Arch! (Parte 1)Felipe Santos
 
Escalonamento no Windows
Escalonamento no WindowsEscalonamento no Windows
Escalonamento no WindowsFee Kosta
 
Trabalhando em ambientes php com docker
Trabalhando em ambientes php com dockerTrabalhando em ambientes php com docker
Trabalhando em ambientes php com dockerAlef Castelo
 
Ebook Apache Server: Guia Introdutório
Ebook Apache Server: Guia IntrodutórioEbook Apache Server: Guia Introdutório
Ebook Apache Server: Guia IntrodutórioFernando Palma
 
Estrategias de backup e recovery
Estrategias de backup e recoveryEstrategias de backup e recovery
Estrategias de backup e recoveryRodrigo Crespi
 
Quero Arch! (Parte 2)
Quero Arch! (Parte 2)Quero Arch! (Parte 2)
Quero Arch! (Parte 2)Felipe Santos
 
40 php orientado a objetos
40 php orientado a objetos40 php orientado a objetos
40 php orientado a objetosFrancisco Santos
 

Tendances (19)

Gerenciamento de Pacotes no Linux
Gerenciamento de Pacotes no LinuxGerenciamento de Pacotes no Linux
Gerenciamento de Pacotes no Linux
 
Puppet webcast 4linux
Puppet webcast 4linuxPuppet webcast 4linux
Puppet webcast 4linux
 
Gestão automática de configuração usando puppet
Gestão automática de configuração usando puppetGestão automática de configuração usando puppet
Gestão automática de configuração usando puppet
 
Mudança de runlevels e desligamento do sistema
Mudança de runlevels e desligamento do sistemaMudança de runlevels e desligamento do sistema
Mudança de runlevels e desligamento do sistema
 
Oficina de infraestrutura como código (apresentando o Puppet)
Oficina de infraestrutura como código (apresentando o Puppet)Oficina de infraestrutura como código (apresentando o Puppet)
Oficina de infraestrutura como código (apresentando o Puppet)
 
php orientado_a_objetos
php orientado_a_objetosphp orientado_a_objetos
php orientado_a_objetos
 
Introdução ao zend framework
Introdução ao zend frameworkIntrodução ao zend framework
Introdução ao zend framework
 
Reuse release equivalence principle
Reuse release equivalence principleReuse release equivalence principle
Reuse release equivalence principle
 
Sistemas Operacionais - Gnu/Linux Gerenciando Processos
Sistemas Operacionais - Gnu/Linux Gerenciando ProcessosSistemas Operacionais - Gnu/Linux Gerenciando Processos
Sistemas Operacionais - Gnu/Linux Gerenciando Processos
 
Mercurial hg
Mercurial hgMercurial hg
Mercurial hg
 
Lab ect 02 pt
Lab ect 02 ptLab ect 02 pt
Lab ect 02 pt
 
Quero Arch! (Parte 1)
Quero Arch! (Parte 1)Quero Arch! (Parte 1)
Quero Arch! (Parte 1)
 
Escalonamento no Windows
Escalonamento no WindowsEscalonamento no Windows
Escalonamento no Windows
 
Trabalhando em ambientes php com docker
Trabalhando em ambientes php com dockerTrabalhando em ambientes php com docker
Trabalhando em ambientes php com docker
 
Ebook Apache Server: Guia Introdutório
Ebook Apache Server: Guia IntrodutórioEbook Apache Server: Guia Introdutório
Ebook Apache Server: Guia Introdutório
 
Estrategias de backup e recovery
Estrategias de backup e recoveryEstrategias de backup e recovery
Estrategias de backup e recovery
 
Quero Arch! (Parte 2)
Quero Arch! (Parte 2)Quero Arch! (Parte 2)
Quero Arch! (Parte 2)
 
Tutorial memcached
Tutorial memcachedTutorial memcached
Tutorial memcached
 
40 php orientado a objetos
40 php orientado a objetos40 php orientado a objetos
40 php orientado a objetos
 

Similaire à Como gerenciar de forma correta os pacotes em debian e distribuições derivadas

Quebra de pacoes linux
Quebra de pacoes linux Quebra de pacoes linux
Quebra de pacoes linux alecsvupt
 
Seguranca da Informação - Firewall iptables
Seguranca da Informação - Firewall iptablesSeguranca da Informação - Firewall iptables
Seguranca da Informação - Firewall iptablesLuiz Arthur
 
Guia de referência Debian
Guia de referência DebianGuia de referência Debian
Guia de referência DebianDaniel Oliveira
 
Gerenciamento de pacotes no Debian
Gerenciamento de pacotes no DebianGerenciamento de pacotes no Debian
Gerenciamento de pacotes no DebianMarcos Oliveira
 
Funcionamento kernel
Funcionamento kernelFuncionamento kernel
Funcionamento kernelSENAC RIO
 
Instalação e Atualização Automática de Aplicações para Ambientes Corporativos
Instalação e Atualização Automática de Aplicações para Ambientes CorporativosInstalação e Atualização Automática de Aplicações para Ambientes Corporativos
Instalação e Atualização Automática de Aplicações para Ambientes CorporativosMauro Tapajós
 
Instalação do asterisk
Instalação do asteriskInstalação do asterisk
Instalação do asteriskVicente Nobre
 
Sistema Operacionais
Sistema OperacionaisSistema Operacionais
Sistema OperacionaisDavid Souza
 
Ubuntu 8.04 LTS 2008
Ubuntu 8.04 LTS 2008Ubuntu 8.04 LTS 2008
Ubuntu 8.04 LTS 2008SergioSouza
 
Linux Ubuntu 14.04 Desktop - Particoes
Linux Ubuntu 14.04 Desktop - ParticoesLinux Ubuntu 14.04 Desktop - Particoes
Linux Ubuntu 14.04 Desktop - ParticoesRui Lopes
 

Similaire à Como gerenciar de forma correta os pacotes em debian e distribuições derivadas (20)

Pacotes
PacotesPacotes
Pacotes
 
Como instalar tudo em ubuntu
Como instalar tudo em ubuntuComo instalar tudo em ubuntu
Como instalar tudo em ubuntu
 
I educar-manual-de-instalaao
I educar-manual-de-instalaaoI educar-manual-de-instalaao
I educar-manual-de-instalaao
 
Soa#cap4.1 gestor de pacotes
Soa#cap4.1   gestor de pacotesSoa#cap4.1   gestor de pacotes
Soa#cap4.1 gestor de pacotes
 
Soa#cap4.1 gestor de pacotes
Soa#cap4.1   gestor de pacotesSoa#cap4.1   gestor de pacotes
Soa#cap4.1 gestor de pacotes
 
Quebra de pacoes linux
Quebra de pacoes linux Quebra de pacoes linux
Quebra de pacoes linux
 
Seguranca da Informação - Firewall iptables
Seguranca da Informação - Firewall iptablesSeguranca da Informação - Firewall iptables
Seguranca da Informação - Firewall iptables
 
SlackWare - Leonel
SlackWare - LeonelSlackWare - Leonel
SlackWare - Leonel
 
Guia de referência Debian
Guia de referência DebianGuia de referência Debian
Guia de referência Debian
 
Gerenciamento de pacotes no Debian
Gerenciamento de pacotes no DebianGerenciamento de pacotes no Debian
Gerenciamento de pacotes no Debian
 
Ubuntu
UbuntuUbuntu
Ubuntu
 
Funcionamento kernel
Funcionamento kernelFuncionamento kernel
Funcionamento kernel
 
Instalação e Atualização Automática de Aplicações para Ambientes Corporativos
Instalação e Atualização Automática de Aplicações para Ambientes CorporativosInstalação e Atualização Automática de Aplicações para Ambientes Corporativos
Instalação e Atualização Automática de Aplicações para Ambientes Corporativos
 
Entendendo os pacotes DEB
Entendendo os pacotes DEBEntendendo os pacotes DEB
Entendendo os pacotes DEB
 
4 instalação no Ubuntu
4 instalação no Ubuntu4 instalação no Ubuntu
4 instalação no Ubuntu
 
Instalação do asterisk
Instalação do asteriskInstalação do asterisk
Instalação do asterisk
 
Sistema Operacionais
Sistema OperacionaisSistema Operacionais
Sistema Operacionais
 
Ubuntu 8.04 LTS 2008
Ubuntu 8.04 LTS 2008Ubuntu 8.04 LTS 2008
Ubuntu 8.04 LTS 2008
 
Linux Ubuntu 14.04 Desktop - Particoes
Linux Ubuntu 14.04 Desktop - ParticoesLinux Ubuntu 14.04 Desktop - Particoes
Linux Ubuntu 14.04 Desktop - Particoes
 
40 php orientado a objetos
40 php orientado a objetos40 php orientado a objetos
40 php orientado a objetos
 

Como gerenciar de forma correta os pacotes em debian e distribuições derivadas

  • 2. tutorfreebr.blogspot.com.br 1/16 Gerenciamento de Pacotes no Debian Como gerenciar de forma correta os pacotes em Debian e Distribuições Derivadas A gestão de pacotes em sistema GNU/Linux é uma das suas maiores virtudes, no entanto o formato do empacotamento e a sua correspondente gestão varia de distribuição para distribuição e por isso mesmo seria muito extenso falar de todos os métodos possíveis. Em Debian e distribuições derivadas, o .deb é utilizado como sendo o formato de empacotamento e o apt e dpkg são as ferramentas de trabalho. Os mais céticos pensam no Synaptic como a forma de resolução para todas as tarefas relacionadas com a gestão de pacotes, ou até numa outra GUI qualquer. Mesmo o Synaptic Package Manager como sendo uma das melhores GUIs para estes procedimentos não responde de forma satisfatória em algumas situações e por isso temos de ir para a CLI (Command Line Interface). apt-get Muito provavelmente o apt-get é um dos comandos mais utilizados no Debian e distribuições derivadas. O principal objetivo do apt-get é interagir com os repositórios remotos, os quais são mantidos pela equipe de empacotamento da distribuição e depois realizar a execução de ações sobre esses pacotes disponíveis. O apt e suas variantes realizam a pesquisa de informações nos repositórios remotamente numa cache mantida no sistema local. Também é utilizado para instalação e/ou remoção de um determinado pacote ou vários no sistema. O apt-get é largamente utilizado para atualizar a cache localmente e ao mesmo tempo realizar todas as alterações necessárias ao sistema. apt-cache O apt-cache utiliza a cache local para consultar informações sobre todos os pacotes disponíveis e as suas respectivas propriedades. Se for necessário realizar uma pesquisa por um determinado pacote ou até uma ferramenta que executa uma determinada função no sistema, o apt-
  • 3. tutorfreebr.blogspot.com.br 2/16 Gerenciamento de Pacotes no Debian cahe é extremamente útil. Ao mesmo tempo, o apt-cache pode dar um manancial de informações sobre qual a versão do pacote exato que vai ser o alvo desse mesmo procedimento. Também devemos pensar em dependências e dependências reversas onde precisamente o apt-cache é a melhor escolha. aptitude O aptitude tem a particularidade de combinar muitas das funcionalidades quer do nosso já conhecido apt-get bem como do apt-cache. No entanto, quando o aptitude se encontra a ser executado via CLI, a maioria dos comandos vai espelhar de forma correta todas as potencialidades do apt-get e do apt-cache. Assim, devido a esta capacidade conhecida como mirroring está de momento fora dos propósitos deste artigo. dpkg As 3 ferramentas anteriormente descritas possuem o seu foco na gestão dos pacotes mantidos nos repositórios, no entanto o dpkg pode ser utilizado para operar nos pacotes .deb individuais, mas também é importante descrever, que o dpkg é o responsável pela maior parte dos acontecimentos em backgroung via os comandos descritos acima. Sendo assim, contrariamente aos comandos apt-*, o comando dpkg não possui a capacidade de resolução de dependências de forma automática. Mas então qual o trabalho do dpkg? A sua principal característica é a capacidade que possui de poder trabalhar de forma fácil com os pacotes .deb de forma totalmente direta e ainda ao mesmo tempo a capacidade de poder dissecar qualquer pacote e descobrir toda a sua estrutura. Embora seja possível ao dpkg recolher algumas informações sobre os pacotes instalados no sistema, o seu objectivo principal reside sobre o nível do pacote individualmente. tasksel O tasksel é de um tipo de classe diferente de ferramentas existentes para a gestão de software. Em lugar de exercer uma gestão de pacotes de forma individual, o tasksel, concentra-se unicamente em grupos de software necessário para a realização de tarefas específicas (tasks). Pessoalmente... não tenho muito adoração pelo tasksel, pois não permite uma abordagem cirúrgica ao que desejamos realizar, no entanto pode ser bastante útil para se iniciar o trabalho de uma forma bastante rápida. VARIAÇÕES DO APT Como alguns sabem, existem mais ferramentas para a gestão de pacotes que oferecem diferentes funcionalidades ou até informações presentes em diferentes formas. Estou claramente
  • 4. tutorfreebr.blogspot.com.br 3/16 Gerenciamento de Pacotes no Debian referndo-me às ferramentas que se enquadram nesta categoria: apt-file, dselect e gdebi. Mais uma vez lamento, mas está totalmente fora deste artigo, detalhar estas mesmas ferramentas. Depois desta introdução, é o momento de passar às explicações práticas... 1. Atualizar a Cache de Pacotes e o Sistema 1.1 Atualizar a Cache de Pacotes Locais Os repositórios remotos que empacotam as suas ferramentas contam com as informações dos pacotes a serem atualizados em determinados intervalos de tempo. No entanto, é importante referir que a grande maioria das ferramentas destinadas para a gestão de pacotes trabalha com a informação existente previamente na cache local. Assim sendo, uma das melhores práticas é precisamente a cada início da nossa sessão, atualizar a cache de pacotes, antes de você executar outros comandos relacionados com pacotes. A nossa finalidade aqui é assegurar que temos o nosso sistema Debian o mais atualizado possível relativamente ao software disponível existente nessa máquina para evitar más surpresas. Importa ao mesmo tempo evidenciar que alguns comandos podem falhar se estivermos operando com informações de pacotes obsoletos. 1.2 Atualização de Pacotes sem a Remoção de Pacotes Vale lembrar que o apt distingue dois tipos de procedimentos diferentes de atualização. O primeiro procedimento pode e deve ser utilizado para atualizar quaisquer componentes do sistema que não necessitem de remoção de componentes. Para se atualizar a cache local, executar: sudo apt-get update No momento será apresentada uma listagem devidamente atualizada com a totalidade dos pacotes disponíveis existentes nos repositórios. Este procedimento pode ser de enorme importância quando não desejamos a remoção de quaisquer dos pacotes instalados em qualquer circunstância. A título de exemplo, posso nem estar interessado em atualizar os drivers da minha placa de vídeo, nem sempre os drivers mais novos são os que dão as maiores garantias. 1.3 Atualização / Remoção de Pacotes Algumas atualizações envolvem a substituição de componentes do sistema ou a realização da remoção de pacotes em regime de conflito. Este é por si mesmo um procedimento que vai ignorar toda e qualquer atualização ou atualizações que requerem a remoção do pacote, executar: sudo apt-get upgrade Logo após ter sido executada esta tarefa, qualquer atualização que não envolva a remoção de pacotes vais ser de imediato aplicada ao sistema no seu todo.
  • 5. tutorfreebr.blogspot.com.br 4/16 Gerenciamento de Pacotes no Debian Este é o procedimento que atualizará a totalidade dos pacotes, mesmo aqueles que exijam a remoção de pacotes, portanto isto é muita das vezes necessário realizar relativamente às dependências que esses pacotes vão mudar / alterar. Os pacotes a serem removidos são substituídos por outros pacotes equivalentes durante o procedimento de atualização. Este é sem dúvidas um procedimento totalmente seguro de ser executado. Mas convém também recordar que é uma boa prática estarmos com a máxima atenção sobre os pacotes a serem removidos, apenas no caso de alguns componentes essenciais se encontrarem marcados para remoção. Logo devo executar: sudo apt-get dist-upgrade Agora que foi realizado o procedimento acima, a totalidade de pacotes existentes no sistema serão atualizados na íntegra. Vale lembrar que este é o procedimento de atualização mais completo, quando em comparação com o “apt-get upgrade”. 2. Download e Instalação de Pacotes Uma das principais funções existentes nas ferramentas destinadas à gestão de pacotes é facilitar o download e a instalação de um ou mais pacotes nesse sistema. 2.1 Pesquisar por Pacotes Quando estamos realizando o download e instalação de pacotes, o primeiro procedimento é a análise dos repositórios da nossa distribuição GNU/Linux para que dessa forma se pesquise por pacotes de softwares. A grande maioria dos comandos apt operam na cache de informações que é mantida na máquina local, sendo que este procedimento permite uma execução mais rápida e menos tráfego de rede. A pesquisa por pacotes é uma operação que tem o seu alvo: a cache de informações dos pacotes referentes à lista de repositórios do seu sources.list que encontra-se em “etc/apt/”. O apt-cache search é o recurso necessário para a execução de pesquisa de pacotes disponíveis. Logo é necessário garantir que a cache local se encontra devidamente atualizada antes de se iniciar a pesquisa de pacotes, portanto para pesquisar, executar: apt-cache search NomeDoPacote Então não se utiliza o sudo? Não são necessários privilégios especiais. Este procedimento apenas consultará a informação e nada mais do que isso. Utilizarei pesquisa sobre o pacote htop como exemplo demonstrativo, executar: apt-cache search htop
  • 6. tutorfreebr.blogspot.com.br 5/16 Gerenciamento de Pacotes no Debian 2.2 Instalação de Pacotes via Repositórios Para que seja executada a instalação de um determinado pacote via repositórios, bem como ainda todas as suas dependências obrigatórias e necessárias para a sua correta execução, utilizamos o “apt-get install” + o nome do pacote, executar: sudo apt-get install NomeDoPacote É possível a instalação de vários pacotes, sendo que para se instalar múltiplos pacotes deve ser inserido sempre um espaço entre cada pacote a ser instalado, executar: sudo apt-get install package1 package2 package3 package4 package5 Vamos pensar se esses mesmos pacotes ou conjunto de pacotes a serem instalados requerem obrigatoriamente dependências adicionais, assim estas vão certamente serem apresentadas, sendo para tal necessário confirmar o procedimento. Para exemplo vou utilizar a instalação do Apache, executar: sudo apt-get install apache2 Vejamos o output com muita atenção: Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: apache2-data Suggested packages: apache2-doc apache2-suexec-pristine apache2-suexec-custom apache2-utils The following NEW packages will be installed: apache2 apache2-data 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Need to get 236 kB of archives. After this operation, 1,163 kB of additional disk space will be used. Do you want to continue [Y/n]? Embora o meu objetivo seja instalar o Apache, o pacote apache2-data, entre outros, são necessários como dependências, ou seja, é necessária a instalação destes outros pacotes para que o Apache venha a funcionar corretamente. Neste caso podemos continuar com a instalação pressionando [ENTER], existe também a possibilidade de se abortar esse mesmo processo de instalação, digitando n e teclando [ENTER]. 2.3 Instalação de uma Versão Especifica de um Pacote via Repositórios Sempre que existe a necessidade de se instalar uma versão específica de um determinado pacote, essa mesma informação pode ser fornecida com a introdução do sinal de igualdade (=), executar: sudo apt-get install NomeDoPacote=version NOTA: 'version' deve coincidir com um dos números da versão do pacote disponível nesse repositório. 2.4 Processo de Reconfiguração de Pacotes Muitos pacotes possuem os seus próprios scripts de configuração pós-instalação, os quais são sempre executados imediatamente após a instalação se encontrar completa. Estes incluem muitas das vezes prompts para que o administrador do sistema possa realizar as escolhas necessárias de acordo com as suas necessidades. Caso exista a necessidade de serem executadas estas ou outras etapas de configuração
  • 7. tutorfreebr.blogspot.com.br 6/16 Gerenciamento de Pacotes no Debian num momento posterior, devemos utilizar o “dpkg-reconfigure”. O dpkg-reconfiure analisará o pacote em causa e depois executará todos os comandos de pós-configuração incluídos dentro da especificação desse mesmo pacote, executar: sudo dpkg-reconfigure NomeDoPacote IMPORTANTE: este procedimento apresentará uma quantidade substancial de perguntas para serem respondidas. 2.5 Simulação de Execução do Pacotes Aqui certamente vamos entrar numa das capacidades mais emblemáticas do apt. Muitas, mas muitas vezes mesmo temos a necessidade de ver quais os efeitos colaterais de um determinado procedimento, ainda antes de este ser executado para evitar o comprometimento do sistema na sua globalidade. Adicionando o parâmetro “-s”, o apt permite a simulação desse procedimento. Executar: apt-get install -s package Veremos todas as dependências e alterações no sistema. Mas tem mais, um dos benefícios deste procedimento é que podemos verificar todos os resultados de um processo que normalmente requerem privilégios de root, sem a utilização do sudo. Por exemplo, vamos novamente voltar ao Apache. Vamos avaliar o que iria ser instalado com o apache2. Executar: apt-get install -s apache2 NOTE: This is only a simulation! apt-get needs root privileges for real execution. Keep also in mind that locking is deactivated, so don't depend on the relevance to the real current situation! [...]The following extra packages will be installed: apache2-data Suggested packages: apache2-doc apache2-suexec-pristine apache2-suexec-custom apache2-utils The following NEW packages will be installed: apache2 apache2-data 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. [...] Está demonstrado que foi possível a obtenção de todas as informações sobre os pacotes e versões que seriam instalados, sem a necessidade de ser concluído o processo real. Para os usuários mais curiosos: verifiquem a saída do “apt-get -s dist-upgrade”. 2.7 Correção de Dependências Quebradas Existem situações em que uma instalação não pode ser concluída devido a dependências ou outros problemas similares. Isto pode acontecer quando o dpkg não tem a capacidade de cuidar das dependências da forma devida. Mais uma vez o apt-get pode tentar resolver estes problemas com a inclusão do parâmetro -f. Executar:
  • 8. tutorfreebr.blogspot.com.br 7/16 Gerenciamento de Pacotes no Debian apt-get install -f O procedimento realizado acima vai apresentar quais são as dependências que não se encontram satisfeitas e tentar instalar na tentativa de resolver o problema. 2.8 Download de Pacotes dos Repositórios Existe situações em que pode ser bastante útil realizar o download de um pacote de um repositório sem a necessidade de este ser instalado, sendo que este procedimento pode ser realizado através do “apt-get download pacote”. Como trata-se apenas de um simples download de um arquivo e não terá impacto algum no sistema, os privilégios de administrador não são necessários, executar: apt-get download pacote O download vai ser realizado no diretório atual. 2.9 Download das sources via Repositório Sabemos que o apt trabalha principalmente com pacotes no formato .deb, no entanto existe a possibilidade de se obter somente o código fonte dos pacotes, desde que seu sources.list se encontre devidamente configurada com essa opção. Assim para se realizar o download da source é necessário existir a diretiva deb-src no repositório da sua sources.list. Depois de termos os repositórios das sources devidamente configurados, é possível realizar o download das sources de um pacote, para tal executar: sudo apt-get source package O procedimento executado acima realizará o download dos arquivos para o diretório atual. 2.10 Instalação de um Pacote .deb A grande maioria das distribuições GNU/Linux nos dias de hoje recomenda a instalação de software a partir de seus repositórios oficiais. Mas isto não impede que um desenvolvedor ofereça seu software para download no formato apropriado para uma fácil instalação. Para instalar um pacote .deb de terceiros vamos utilizar o dpkg. O dpkg é utilizado essencialmente para trabalhar com pacotes individuais, portanto não devemos tentar em caso algum a execução da instalação via repositórios, por isso mesmo executar: sudo dpkg --install Pacote.deb É importa lembrar que o dpkg não implementará qualquer tipo de manipulação de dependências, significando que se existirem quaisquer dependências não satisfeitas, a instalação vai falhar ou mostrar alguma mensagem de alerta. Mas nem tudo se encontra perdido, visto que o dpkg vai marcar as dependências necessárias, por isso, se todas as dependências se encontrarem disponíveis nos repositórios, podemos de uma forma
  • 9. tutorfreebr.blogspot.com.br 8/16 Gerenciamento de Pacotes no Debian bastante fácil, solucionar este problema recorrendo novamente ao dpkg. Executar: sudo apt-get install -f O procedimento realizado acima executará a instalação da totalidade das dependências não satisfeitas, as mesmas que foram anteriormente marcadas pelo dpkg. 2.11 Tasks e Tasksel É possível executar a instalação de grandes conjuntos de grupos de pacotes de software que estabelecem um ambiente quando instalado em conjunto. Assim e para ficarem mais cientes de exemplos de tasks, estas incluem LAMP servers, ambientes desktop, servers de aplicações, etc. Caso o tasksel não se encontre instalado nessa máquina, executar (como ROOT): apt-get update apt-get install tasksel É possível selecionar diferentes grupos de pacotes de forma interativa, para tal executar: tasksel O procedimento realizado acima apresentará uma interface que permite selecionar diferentes grupos de pacotes e aplicar as alterações necessárias. Também existe a possibilidade de se visualizar uma lista de tasks disponíveis e o seu respectivo estado. Executar: tasksel --list-task Seguidamente é possível optar por instalar as tasks via CLI, executar: sudo tasksel install nome_da_task 3. Remoção de Pacotes Obviamente que a execução de operações inversas à instalação e download de pacotes também são possíveis de serem realizadas com o que se denomina por package managers. 3.1 Desinstalar um Pacote Para remover um pacote previamente instalado devemos utilizar o “apt-get remove”, sendo que este comando removerá a maioria dos arquivos desse mesmo pacote instalado no sistema, mas com uma exceção notável. IMPORTANTE: quando executamos o “apt-get remove” estamos somente removendo esses pacotes, pois serão deixados os arquivos de configuração desses pacotes no seu devido lugar, para que desse modo a configuração prévia fique sempre disponível, caso seja necessário voltar a instalar posteriormente essa mesma aplicação. Pessoalmente, acho bastante útil, porque significa que os arquivos de configuração previamente personalizados não serão removidos, mesmo que esse mesmo pacote tenha sido apagado, executar: sudo apt-get remove NomeDoPacote
  • 10. tutorfreebr.blogspot.com.br 9/16 Gerenciamento de Pacotes no Debian O pacote (package) serão integralmente desinstalados, mas os seus arquivos de configuração continuarão perfeitamente disponíveis. 3.2 Desinstalar um Pacote e todos os arquivos de Configuração Sempre que for necessário realizar a remoção de um pacote e todos os arquivos de configuração que se encontrem associados devemos usar o “apt-get purge”. Contrariamente à utilização do 'apt-get remove', o 'apt-get purge' remove tudo, tudo mesmo, sendo este procedimento bastante útil, caso não se deseje guardar os arquivos de configuração ou executar uma instalação limpa. NOTA: Vale lembrar que uma vez estes arquivos de configuração terem sido excluídos, NÃO HÁ a hipótese destes serem recuperados (a menos que exista um backup), executar: sudo apt-get purge NomeDoPacote Agora, se for necessário novamente a reinstalação do pacote, a configuração padrão vai ser utilizada. 3.3 Remoção de Dependências Automáticas não Necessárias Quando se remove pacotes do sistema com “apt-get remove” ou com “apt-get purge”, o meta pacote também será removido. No entanto, nem todas as dependências que foram instaladas de forma automática são descartadas completamente. Com a finalidade de se remover de forma automática todos os pacotes que foram instalados como dependências, deve ser usado o “apt-get autoremove”. Executar: sudo apt-get autoremove 3.4 Apagar Pacotes Obsoletos Como alguns pacotes são adicionados, mas não são removidos pelos responsáveis por esses mesmos pacotes para essa mesma distribuição, alguns pacotes ficarão obsoletos. Existe uma outra opção que deve ser realizada conjuntamente com o apt-get, usando para tal o “autoclean”, sendo que este procedimento vai liberar espaço na máquina e ainda permitir que a cache seja atualizada. Executar: sudo apt-get autoclean 4. Obtenndo Informações dos Pacotes Cada pacote contém uma enorme variedade de metadados que podem ser acessados utilizando o conjunto apt.
  • 11. tutorfreebr.blogspot.com.br 10/16 Gerenciamento de Pacotes no Debian 4.1 Apresentar as Informações de um Pacote Para ser possível apresentar informações detalhas sobre um pacote presente nos repositórios da nossa distribuição, podemos usar o show com o 'apt-cahe', executar: apt-cache show NomeDoPacote O comando acima informará os dados dos candidatos em questão. Assim cada candidato terá informações sobre as suas dependências, versão, arquitetura, conflitos, novo do arquivo do pacote real, o tamanho desse pacote, instalação e outras descrições mais detalhadas. Para que seja possível apresentar as informações adicionais sobre cada um dos candidatos, incluindo uma listagem completa das dependências reversas (lista de pacotes que dependem do pacote consultado), utilizamos o showpkg. Isto incluirá uma quantidade de informações sobre este pacote relativamente a outros. Executar: apt-cache showpkg NomeDoPacote 4.2 Mostrar Informações sobre um Pacote .deb Para se apresentar os detalhes sobre um pacote .deb, podemos utilizar o parâmetro --info, com o dpkg, sendo que o alvo deste comando deve ser o caminho (/path) para o arquivo .deb, executar: dpkg --info debfile.deb O procedimento realizado acima apresentará alguns metadados sobre o pacote. Isso inclui o nome do pacote e a sua versão, a arquitetura para o qual foi desenvolvido, o tamanho e as dependências necessárias, descrição e conflitos. 4.3 Apresentação das Dependências e das Dependências Reversas Para obter a lista de todas as dependências dee um determinado pacote e suas dependências reversas utilizaremos o “apt-cache depends”. Para visualizar as dependências de um determinado pacote, executar: apt-cache depends NomeDoPacote O procedimento realizado acima exibirá as informações sobre cada pacote que é apresentado como sendo uma dependência, sugestão, recomendação ou conflito. Caso seja necessário descobrir quais os pacotes dependem de um outro, devemos utilizar o rdepends. Portanto executar: apt-cache rdepends NomeDoPacote 4.4 Apresentar Pacotes Instalados e Versões Disponíveis Muitas das vezes existem várias versões de um pacote dentro do repositório com um único pacote padrão. Assim para se ver as versões de um pacote podemos utilizar o argumento policy, executar: apt-cache policy NomeDoPacote O comando acima apresentará a versão se encontra instalada (se existir), o candidato
  • 12. tutorfreebr.blogspot.com.br 11/16 Gerenciamento de Pacotes no Debian que será instalado por padrão junto a uma tabela de versões de pacotes indicando a prioridade de cada uma delas. Mostra qual a versão vai ser instalada e quais as alternativas se encontram disponíveis. O procedimento também apresentará uma listagem sobre os repositórios onde cada versão se encontra localizada, então este pode ser usado se existir algum repositório extra ou PPA em substituição aos pacotes dos repositórios padrão. 4.5 Apresentação de Pacotes Instalados com o dpkg -l Para que seja possível apresentar os pacotes instalados no sistema existem duas opções, as quais dependem do formato e do output que iremos escolher. Podemos utilizar o dpkg ou o dpkg-query com o parâmetro -l, sendo que o output de ambos é idêntico. Sem a introdução de argumentos será apresentara uma listagem de todos os pacotes instalados no sistema. Executar: dpkg -l Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf­files/Unpacked/halF­conf/Half­inst/trig­aWait/Trig­pend |/ Err?=(none)/Reinst­required (Status,Err: uppercase=bad) ||/   Name                                                                                 Version Architecture Description +++­============================================= [...] ii  lyx            2.0.6­1build amd64        document processor ii  lyx­common     2.0.6­1build all          architecture­independent files fo ii  lyx­dbg        2.0.6­1build amd64        debugging symbols for LyX [...] Esta saída é bastante extensa. No início da saída do comando é possível visualizar o significado dos 3 primeiros caracteres em cada linha. O primeiro caractere indica o estado desse mesmo pacote, o qual pode ser: u -> desconhecido; i -> instalado; r -> removido; p -> purge executado; h -> versão realizada. O segundo caractere indica o estado atual do pacote, como ele é conhecido pelo sistema de empacotamento, os quais podem ser os seguintes: n -> não instalado; i -> instalado; c -> existem arquivos de configuração presentes, mas a aplicação está desinstalada; u -> descompactado, sendo que os arquivos estão descompactados mas não configurados ainda; f -> pacote parcialmente instalado, o que desde já significa que existe uma grande probabilidade de esse mesmo pacote, ser suspenso devido a alguma operação do sistema; w -> o pacote encontra-se à espera de um desencadeamento de um pacote em separado; p -> o pacote foi desencadeado por outro pacote.
  • 13. tutorfreebr.blogspot.com.br 12/16 Gerenciamento de Pacotes no Debian O terceiro caractere é um espaço em branco, para a grande maioria de pacotes tendo somente, uma opção potencial: r -> reinstalação necessária, sendo que isto por norma tende a significar que se encontra quebrado e não se encontra funcional. As colunas restantes contem o nome do pacote, versão, arquitetura e uma descrição. 4.6 Apresentar o Estado da Instalação e Pacotes Filtrados Se formos adicionar um padrão de pesquisa após o -l, o dpkg apresentará todos os pacotes (instalados ou não) que contêm esse mesmo padrão. Vamos pesquisar por Iceweasel, executar: dpkg -l iceweasel* Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf­files/Unpacked/halF­conf/Half­inst/trig­aWait/Trig­pend |/ Err?=(none)/Reinst­required (Status,Err: uppercase=bad) ||/ Nome           Versão       Arquitectura Descrição +++­==============­============­============­================================= ii  iceweasel      31.8.0esr­1~ amd64        Web browser based on Firefox un  iceweasel­l10n <nenhuma>    <nenhuma>    (nenhuma descrição disponível) ii  iceweasel­l10n 1:31.8.0esr­ all          Portuguese (Brazil) language pack 4.7 Apresentar os Pacotes Instalados com dpkg --get selections Uma forma alternativa, para serem apresentados os pacotes que se encontram instalados no sistema é precisamente recorrer ao parâmetro “--get selections” junto ao dpkg. Isto fornecerá uma listagem de todos os pacotes instalados ou removidos, mas não os “purgados”, executar: dpkg --get-selections Então, para se poder diferenciar entre dois estados, vou utilizar o awk para filtrar por estado e assim para se visualizar somente os pacotes instalados, executar: dpkg --get-selections | awk '$2 ~ /^install/` Para obter uma lista de pacotes removidos que não tiveram os seus arquivos de configuração purgados, executar: dpkg --get-selections | awk '$2 !~ /^install/' 4.8 Pesquisa por Pacotes Instalados Para procurar um pacote base instalado de um pacote específico é possível adicionar uma sequência de filtros após a opção --get-selections e ainda recorrer à utilização de curingas. Novamente, este procedimento vai apresentar todos os pacotes que se encontram instalados ou que ainda possuem arquivo de configuração do sistema, executar: dpkg --get-selections libz*
  • 14. tutorfreebr.blogspot.com.br 13/16 Gerenciamento de Pacotes no Debian 4.9 Listagem de arquivos Instalados por Pacotes Se for necessário descobrir qual pacote é responsável por um determinado pacote devemos utilizar o parâmetro “-L” com o dpkg, executar: dpkg -L NomeDoPacote Será apresentado o path (caminho) absoluto de cada arquivo que é controlado pelo pacote em causa. 4.10 Pesquisar o que um Pacote Instala Para pesquisar o que um pacote instala devemos utilizar o parâmetro “-S”, executar: dpkg -S /path/to/file 4.11 Descobrir qual Pacote é Dono de Arquivo de Instalação Para descobrir qual pacote é dono de um determinado arquivo de instalação, devemos utilizar o parâmetro “-S”. No entanto, existem momentos em que é necessário saber qual o pacote que fornece determinado arquivo ou comando, mesmo que o pacote associado não se encontre instalado. Para este procedimento é necessário a instalação do “apt-file”. Isto manterá a sua própria BD de informações, o qual inclui o path de cada arquivo controlado por um pacote nessa BD, executar: sudo apt-get update sudo apt-get install apt-file Em seguida atualize o seu BD e faça a pesquisa, executar: sudo apt-file update sudo apt-file search /path/to/file IMPORTANTE: só vai funcionar para os locais dos arquivos que são instalados diretamente por um determinado pacote. Qualquer arquivo que seja criado via scripts de pós-instalação, não será encontrado. 5. Transferência de Listas de Pacotes entre Sistemas Algumas vezes é necessário realizar um backup da lista de pacotes instalados nesse sistema e depois usar esse mesmo backup para se instalar um conjunto idêntico de pacotes numa outra máquina. 5.1 Exportação da Lista de Pacotes Para que seja possível replicar o conjunto de pacotes instalados num determinado sistema para outro é necessário que seja exportada a lista de pacotes. Para esse mesmo efeito é necessário o dpkg --get-selections, executar: dpkg --get-selections > ~/packagelist.txt
  • 15. tutorfreebr.blogspot.com.br 14/16 Gerenciamento de Pacotes no Debian E tudo pronto para ser copiado para a segunda máquina. Também é possível realizar um backup da lista de sources e de todas as keys confiáveis, executar: mkdir ~/sources cp -R /etc/apt/sources.list* ~/sources Relativamente às keys confiáveis, o backup, deve ser realizado da seguinte forma, executar: apt-key exportall > ~/trusted_keys.txt Agora é possível transferir o arquivo packagelist.txt, o diretório das sources e o trusted_keys.txt. 5.2 Importar Lista de Pacotes Vamos imaginar que foi criado uma listagem de pacotes com “dpkg --get-selections” como o realizado acima, agora é possível importar os pacotes para outra máquina com a ajuda do dpkg. Primeiramente é necessário adicionar as keys e implementar a sources.list que foi copiada da primeira máquina. Assumindo que todos os dados dos quais foi realizado o backup foram devidamente copiados para o diretório “home” da nova máquina, executar: sudo apt-key add ~/trusted_keys.txt sudo cp -R ~sources/* /etc/apt/ Seguidamente devemos limpar todos os pacotes não essenciais nessa máquina. Este procedimento irá assegurar que se aplicarão todas alterações de uma forma completamente limpa. Para se realizar este procedimento é necessário realizar o procedimento como administrador, executar: sudo dpkg --clear-selections IMPORTANTE: todos os pacotes não essenciais vão ser marcados para serem desinstalados. É altamente recomendável a realização de um update à lista de pacotes locais para que a instalação possa ter os registros de todo o software que serão instalados. A atual instalação e o procedimento de upgrade ficará a cargo do dselect. O dselect deve estar instalado na máquina previamente. No entanto, vale lembrar que o dselect mantém a sua própria base de dados, por isso mesmo é necessário realizar o update antes, executar: sudo apt-get update Em seguida, executar: sudo apt-get install dselect sudo dselect update Seguidamente é possivel executar: sudo dpkg --set-selections <packagelist.txt> Para se aplicar as alterações é necessário realizar o dselect-upgrade, executar: sudo apt-get dselect-upgrade Será realizado o download e instalação de todos os pacotes necessários e ao mesmo tempo removerá todos os pacotes marcados como não selecionados. Por fim, a lista de pacotes tem de coincidir com a da máquina anterior, embora os arquivos de configuração devem ser necessários
  • 16. tutorfreebr.blogspot.com.br 15/16 Gerenciamento de Pacotes no Debian copiar ou até modificar. 6. Adicionar Repositórios e PPAs Este é um tema que dá uma longa conversa e até motivo para algumas especulações, sendo que umas com mais fundamento que outras. O conjunto padrão de repositórios fornecidos pela maioria das distribuições de hoje contém no meu entendimento os pacotes suficientes para a grande maioria dos usuários exercerem um excelente trabalho. Existem momentos em que adicionar sources de “terceiros” pode ser a única opção, como no caso de drivers proprietários para algum hardware ou em alguma aplicação especial. 6.1 Adicionar PPAs Pessoalmente e para um sistema Debian like, NÃO aconselho a instalação de PPAs existentes, sem que previamente seja realizada uma análise criteriosa relacionada à equipa de desenvolvimento desse mesmo PPA. Além dos comentários de outros usuários relativos a questões de segurança e as implicações no sistema como um todo. Vale lembrar que os PPAs tiveram a sua gênese para a distribuição Ubuntu e NÃO para a distribuição Debian, apesar de o Ubuntu apresentar o mesmo formato de empacotamento (.deb), existem grandes diferenças em termos de filosofia. Para que seja possível adicionar determinado PPA é necessário o comando “add-apt-repository”, o qual tem de obedecer à sintaxe seguinte: sudo add-apt-repository endereçoDoPPA Seguidamente será solicitado que seja adicionado uma key para esse mesmo PPA e depois esse PPA será de imediato adicionado ao sistema. A partir desse momento é possível a instalação de toda e qualquer aplicação existente nesse mesmo repositório com a ajuda dos comandos normais do apt. Antes de ser realizada a pesquisa e/ou a instalação de um determinado pacote desse PPA, a cache local deve ser atualizada, para tal executar: sudo apt-get update NOTA: por norma, são sempre mais credíveis em termos de segurança as aplicações existentes nos repositórios oficiais da sua distribuição de trabalho, do que os repositórios de terceiros, ressalvando, como é obvio, todas as exceções peculiares como sejam: kernel e drivers proprietários, pois há um único fornecedor de cada um deles. Ao mesmo tempo, é importante que se diga, que nem sempre as aplicações mais recentes obedecem aos critérios reais em termos de performance e rentabilidade, mas cabe ao usuário fazer sua escolha. 6.2 Adicionar RepositóriosManualmente Neste ponto específico, até onde sei, duas abordagens diferentes e ambas válidas. A primeira dessas abordagens é precisamente editar a sources.list de forma direta, podendo ser editado o arquivo /etc/apt/sources.list ou colocar essa nova lista no diretório
  • 17. tutorfreebr.blogspot.com.br 16/16 Gerenciamento de Pacotes no Debian /etc/apt/sources.list.d. Se formos optar pela segunda opção, o nome do arquivo a ser criado deve SEMPRE terminar em .list, executar: sudo nano /etc/apt/sources.list.d/novoRepositorio.list Dentro desse arquivo podemos adicionar a localização desse novo repositório, utilizando para tal a sintaxe seguinte, executar: deb url repositório NomeDaRelease component_names ONDE: deb (ou deb-src) -> identifica sempre o tipo de repositório, sendo que os repositórios convencionais são marcados como deb, enquanto os repositórios relativos às sources começam sempre com deb- src; url -> identifica a URL (Uniform Resource Location) principal para esse repositório, sendo esta por isso mesmo a localização desse repositório; release name (ou suite) -> por norma este é sempre o nome do código de lançamento relativo à distribuição, mas também pode ser qualquer outro nome para assim identificar um conjunto específico de pacote ou pacotes criados para a versão dessa distribuição. component names -> são as labels (man, contrib e non-free) para a seleção de pacotes que desejamos ter disponível. Muitas das vezes contém informações da equipe de manutenção desse repositório para assim informar sobre vários aspectos e como exemplo podem ser: confiança ou licenciamento restrito do software que ele contém. A segunda abordagem é via a utilização do comando add-apt-repository. Na distribuição Ubuntu se encontra definido como sendo padrão previamente. Em Debian, deve ser instalado com o pacote software-properties-common, então para Debian executar: sudo apt-get update sudo apt-get install software-properties-common O repositório deve se encontrar no mesmo formato que foi utilizado para a adição em modo manual: sudo add-apt-repository 'deb url release component' A cache local de pacotes deve ser sempre atualizada depois de ser aplicado qualquer atualização de repositórios para que dessa forma o sistema possa ter a noção dos novos pacotes disponíveis, executar: sudo apt-get update Concluindo… eu sei que existem excelentes GUIs, mas nem sempre oferecem as mais variadas funcionalidades que se deseja para os fins desejados. Mais e melhores informações neste link. Visite: tutorfreebr.blogspot.com.br