Versão 3.1.3
Copyright © 1998 Jason Gunthorpe
Resumo
Este documento disponibiliza uma visão geral de como usar o gestor de pacotes APT.
O pacote APT contém actualmente duas secções, o método dselect do APT e a interface de utilizador de linha de comandos apt-get. Ambos disponibilizam uma maneira de instalar e remover pacotes assim como descarregar novos pacotes da Internet. |
O sistema de pacotes Debian tem uma grande quantidade de informação associada a cada pacote para ajudar a assegurar que este se integra de modo limpo e fácil no sistema. A mais proeminente das suas funcionalidades é o sistema de dependências. |
O sistema de dependências permite a programas individuais fazerem uso de elementos partilhados no sistema tais como as bibliotecas. Facilita a colocação de porções de um programa usadas raramente em pacotes separados para reduzir o número de coisas que é necessário instalar ao utilizador médio. Também permite opções em agentes de transporte de mail, servidores X e mais. |
O primeiro passo para compreender o sistema de dependências é pegar no conceito de uma dependência simples. O significado de uma dependência simples é que um pacote requer outro pacote seja instalado ao mesmo tempo para funcionar correctamente. |
Por exemplo, mailcrypt é uma extensão do emacs que ajuda a encriptar mail com GPG. Sem o GPGP instalado o mailcrypt é inútil, então o mailcrypt tem uma dependência simples do GPG. Também, porque é uma extensão do emacs, tem uma dependência simples do emacs, e sem o emacs é completamente inútil. |
A outra dependência importante a compreender é a dependência de conflito. Significa que um pacote, quando instalado com outro pacote, não irá funcionar e pode ser extremamente prejudicial para o sistema. Como exemplo considere um agente de transporte de mail como o sendmail, exim ou qmail. Não é possível ter dois agentes de transporte de mail instalados porque ambos precisam de escutar na rede para receberem mail. Tentar instalar dois irá danificar seriamente o sistema, por isso todos os agentes de transporte de mail têm uma dependência de conflito com todos os outros agentes de transporte de mail. |
Como uma complicação adicional existe a possibilidade de um pacote fingir ser outro pacote. Considere que exim e sendmail para muitas intenções são idênticos, ambos entregam mail e compreendem uma interface comum. Por isso, o sistema de pacotes tem um modo para eles declararem que são ambos mail-transport-agents. Portanto, ambos exim e sendmail declaram que disponibilizam um mail-transport-agent e outros pacotes que precisam de um agente de transporte de mail dependem de um mail-transport-agent. Isto pode adicionar uma grande confusão quando se tenta corrigir pacotes manualmente. |
Em qualquer altura uma única dependência pode ser satisfeita por pacotes que já estão instalados ou podem não estar. O APT tenta ajudar a resolver problemas com dependências ao disponibilizar um número de algoritmos automáticos que ajudam a selecionar os pacotes para instalação. |
apt-get fornece uma maneira simples de instalar pacotes a partir da linha de comandos. Ao contrário do dpkg, o apt-get não compreende os ficheiros .deb, funciona com o nome próprio do pacote e apenas pode instalar arquivos .deb a partir de uma Source. |
O primeira [1] coisa que deve ser feita
antes de usar apt-get é obter as listas de pacotes a
partir das Sources para que ele saiba que pacotes estão
disponíveis. Isto é feito com |
# apt-get update Get http://ftp.de.debian.org/debian/ stable/binary-i386/ Packages Get http://llug.sep.bnl.gov/debian/ testing/contrib Packages Reading Package Lists... Done Building Dependency Tree... Done |
Uma vez actualizado existem vários comandos que podem ser usados: |
|
apt-get tem várias opções de linha de comandos que estão
detalhados no seu manual,
apt-get(8).
A opção mais útil é |
[1] se você está a usar um servidor proxy http você tem que definir a variável de ambiente http_proxy primeiro, veja sources.list(5) |
O método dselect do APT disponibiliza o sistema APT completo com a GUI de selecção de pacotes dselect. O dselect é usado para selecionar os pacotes a serem instalados ou removidos e o APT instala-os. |
Para activar o método APT você precisa de selecionar [A]ccess no dselect e depois escolher o método APT. Ser-lhe-à perguntado por um conjunto de Sources que são os lugares de onde obter os arquivos. Estes podem ser sites remotos da Internet, mirrors Debian locais ou CD-ROMs. Cada source pode disponibilizar um fragmento do arquivo Debian total. O APT irá automaticamente combina-los para formar um conjunto completo de pacotes. Se tem um CD-ROM, então é boa ideia especifica-lo em primeiro lugar e depois especificar um mirror para ter acesso às correções de bugs mais recentes. O APT irá automaticamente usar os pacotes no seu CD-ROM antes de descarregar da Internet. |
Configurar uma lista de localizações fonte da distribuição
Por favor forneça o URL base da distribuição Debian.
Os esquemas de acesso que conheço são: http file
Por exemplo:
file:/mnt/debian,
https://deb.debian.org/debian,
http://deb.debian.org/debian,
URL [http://llug.sep.bnl.gov/debian]:
|
A configuração de Sources começa por perguntar pela base do arquivo Debian, usando por predefinição um mirror HTTP. Depois pergunta qual a distribuição a obter. |
Por favor forneça a etiqueta da distribuição a obter ou um caminho para o ficheiro package terminando com um /. As etiquetas da distribuição são tipicamente algo como: stable unstable testing Distribution [stable]: |
A distribuição refere-se à versão Debian no arquivo, stable refere-se à última versão lançada e unstable refere-se à versão de desenvolvimento. |
Por favor forneça os componentes a obter Tipicamente os componentes são algo como: main contrib non-free non-free-firmware Componentes [main contrib non-free non-free-firmware]: |
A lista de componentes refere-se à lista das sub-distribuições a obter. A distribuição é dividida baseando-se nas licenças do software, sendo main pacotes livres DFSG enquanto contrib e non-free contêm coisas que têm várias restrições colocadas no seu uso e distribuição. |
Pode ser adicionado qualquer número de fontes, o script de configuração irá continuar a perguntar-lhe até que tenha especificado todas as que deseja. |
Antes de começar a usar o dselect é necessário actualizar
a lista disponível ao selecionar [U]pdate no menu. Isto é um super-conjunto
do |
Você pode depois fazer as suas selecções usando [S]elect e depois executar a instalação usando [I]nstall. Quando se usa o método APT os comandos [C]onfig e [R]emove não fazem sentido, o comando [I]nstall executa ambos juntamente. |
Por predefinição o APT irá automaticamente remover o ficheiro de pacote
(.deb) assim que ele tenha sido instalado com sucesso. Para alterar este
comportamento coloque |
Índice
Ambos método dselect do APT e apt-get partilham a mesma interface. É um sistema simples que geralmente lhe diz o que vai fazer e depois fá-lo. [2] Após escrever um sumário do que vai acontecer, o APT depois irá escrever algumas mensagens de estado informativo para que você possa estimar o progresso e quanto falta fazer. |
Antes de todas as operações, excepto a update, o APT executa um número de
acções para preparar o seu estado interno. Também faz algumas verificações
do estado do sistema. A qualquer altura estas operações pode ser executadas
correndo |
# apt-get check Reading Package Lists... Done Building Dependency Tree... Done |
A primeira coisa que faz é ler todos os ficheiros de pacotes para a memória. O APT usa um esquema de cache para que esta operação seja mais rápida na segunda vez que é executada. Se alguns dos ficheiros de pacotes não forem encontrados serão ignorados e será mostrado um aviso quando o apt-get terminar. |
A operação final executa uma análise detalhada das dependências do sistema. Verifica cada dependência de cada pacote instalado ou desempacotado e considera se está OK. Caso isto encontre um problema, então é escrito um relatório e o apt-get recusa-se a funcionar. |
# apt-get check
Reading Package Lists... Done
Building Dependency Tree... Done
You might want to run 'apt --fix-broken install' to correct these.
Sorry, but the following packages have unmet dependencies:
9fonts: Depends: xlib6g but it is not installed
uucp: Depends: mailx but it is not installed
blast: Depends: xlib6g (>= 3.3-5) but it is not installed
adduser: Depends: perl-base but it is not installed
aumix: Depends: libgpmg1 but it is not installed
debiandoc-sgml: Depends: sgml-base but it is not installed
bash-builtins: Depends: bash (>= 2.01) but 2.0-3 is installed
cthugha: Depends: svgalibg1 but it is not installed
Depends: xlib6g (>= 3.3-5) but it is not installed
libreadlineg2: Conflicts:libreadline2 (<< 2.1-2.1)
|
Neste exemplo o sistema tem muitos problemas, incluindo um sério problema com libreadlineg2. Para cada pacote que tem dependências não satisfeitas, é escrita uma linha indicando o pacote com o problema e as dependências que não estão satisfeitas. É também incluída uma explicação curta de porquê o pacote tem um problema de dependência. |
Existem duas maneiras de um sistema entrar num estado de quebra como este. A primeira é causada pelo dpkg que não vê algumas relações subtis entre pacotes quando executa actualizações. [3]. A segunda é se uma instalação de pacote falha durante uma operação. Nesta situação um pacote pode ter sido desempacotado sem que as suas dependências tenham sido instaladas. |
A segunda situação é muito menos séria que a primeira porque o APT coloca
certos constrangimentos na ordem que os pacotes são instalados. Em ambos os
casos, fornecer a opção |
No entanto, se for usada a opção |
Antes de prosseguir, o apt-get irá apresentar um
relatório do que irá acontecer. Geralmente o relatório reflete o tipo de
operações a ser executadas mas há vários elementos comuns. Em todos os casos
a lista reflete o estado final das coisas, tendo em conta a opção
|
Os seguinte pacotes extra serão instalados: libdbd-mysql-perl xlib6 zlib1 xzx libreadline2 libdbd-msql-perl mailpgp xdpkg fileutils pinepgp zlib1g xlib6g perl-base bin86 libgdbm1 libgdbmg1 quake-lib gmp2 bcc xbuffy squake pgp-i python-base debmake ldso perl libreadlineg2 ssh |
A lista de Pacotes Extra mostra todos os pacotes que irão ser instalados ou
actualizados em excesso daqueles mencionados na linha de comandos. É apenas
gerada para um comando |
Os seguintes pacotes irão ser REMOVIDOS: xlib6-dev xpat2 tk40-dev xkeycaps xbattle xonix xdaliclock tk40 tk41 xforms0.86 ghostview xloadimage xcolorsel xadmin xboard perl-debug tkined xtetris libreadline2-dev perl-suid nas xpilot xfig |
A lista Pacotes para Remover mostra todos os pacotes que irão ser removidos
do sistema. Pode ser mostrada para qualquer das operações e deve ser-lhe
dada uma inspeção cuidadosa para assegurar que nada de importante vai ser
removido. A opção |
Os seguintes pacotes NOVOS irão ser instalados: zlib1g xlib6g perl-base libgdbmg1 quake-lib gmp2 pgp-i python-base |
A lista de Novos Pacotes é simplesmente um lembrete do que vai acontecer. Os pacotes listados não estão instalados presentemente no sistema mas irão estar quando o APT terminar. |
Os seguintes pacotes formam mantidos na versão antiga compface man-db tetex-base msql libpaper svgalib1 gs snmp arena lynx xpat2 groff xscreensaver |
Sempre que todo o sistema é actualizado existe a possibilidade que novas
versões de pacotes não possam ser instaladas porque requerem coisas novas ou
entram em conflito com coisas já instaladas. Nestes casos o pacote irá
aparecer na lista Kept Back. A melhor maneira de convencer os pacotes
listados aqui a instalarem é com o |
Os seguintes pacotes segurados irão ser alterados: cvs |
Por vezes você pode pedir ao APT para instalar um pacote que está retido, nestes casos ele mostra um aviso que o pacote segurado vai ser alterado. Isto apenas deve acontecer durante um dist-upgrade ou install. |
Finalmente, o APT irá escrever um sumário de todas as alterações que irão acontecer. |
206 pacotes actualizados, 8 instalados de novo, 23 para remover e 51 não actualizados. 12 pacotes não totalmente instalados ou removidos. É necessário obter 65.7M/66.7M de arquivos. Após desempacotamento será usado 26.5M. |
A primeira linha do sumário é simplesmente uma versão reduzida de todas as listas e inclui o número de actualizações - que é os pacotes já instalados que têm novas versões disponíveis. A segunda linha indica o número de pacotes mal configurados, possivelmente o resultado de uma instalação abortada. A linha final mostra os requisitos de espaço que a instalação precisa. O primeiro par de número refere-se ao tamanho dos ficheiros de arquivos. O primeiro número indica o número de bytes que precisam ser obtidos a partir das localizações remotas e o segundo indica o tamanho total do todos os arquivos necessários. O número seguinte indica a diferença de tamanho entre os pacotes presentemente instalados e os pacotes instalados de fresco. É aproximadamente equivalente ao espaço requerido em /usr após tudo estar feito. Se forem removidos um grande número de pacotes então o valor pode indicar a quantidade de espaço que irá ser libertado. |
Outros relatórios podem ser gerados ao usar a opção -u para mostrar os pacotes a actualizar, e são semelhantes aos exemplos prévios. |
Durante a descarga dos arquivos e ficheiros de pacotes, o APT escreve uma série de mensagens de estado. |
# apt-get update Get:1 http://ftp.de.debian.org/debian/ stable/main Packages Get:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages Hit http://llug.sep.bnl.gov/debian/ testing/main Packages Get:4 http://ftp.de.debian.org/debian/ unstable/binary-i386/ Packages Get:5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages 11% [5 testing/non-free `Waiting for file' 0/32.1k 0%] 2203b/s 1m52s |
A linhas iniciadas com Get são escritas quando o APT
começa a obter um ficheiro enquanto a última linha indica o progresso da
descarga. O primeiro valor percentual na linha de progresso indica a
percentagem total completa de todos os ficheiros. Infelizmente como o
tamanho dos ficheiros de Pacotes é desconhecido o |
A secção seguinte da linha de estado é repetida para cada processo de descarga e indica a operação a ser executada e alguma informação útil acerca do que está a acontecer. Por vezes esta secção irá simplesmente ler Forking o que representa que o SO está a carregar o módulo de download. A primeira palavra após o [ é o número de obtenção como mostrado nas linhas de histórico. A palavra seguinte é o nome em formato curto do objecto a ser descarregado. Para os arquivos irá conter o nome do pacote que está a ser descarregado. |
Dentro da única citação está uma string de informação que indica o progresso
da fase de negociação do download. Progride tipicamente de A
Ligar para À espera do ficheiro para
A descarregar ou A resumir. O
valor final é o número de bytes descarregados a partir do site remoto. Uma
vez começado a descarga isto é representado como
|
O mostrador de estado actualiza-se a cada meio segundo para disponibilizar
uma informação de retorno constante do progresso de descarga enquanto as
linhas Get deslocam-se para trás sempre que uma nova linha é iniciada. Como
o mostrador de estado é constantemente actualizado não é apropriado para
registar num ficheiro, use a opção |
O APT usa o dpkg para instalar os arquivos e irá mudar para a interface do dpkg assim que a descarga estiver completa. O dpkg irá também fazer um número de perguntas conforme vai processando os pacotes e os próprios pacotes podem também fazer várias questões. Antes de cada pergunta há geralmente uma descrição do que se está a perguntar e as perguntas são demasiado variadas para serem discutidas aqui. |