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
.
# 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 -f
ao apt-get
irá fazer com que o APT deduza uma solução possível para o problema e depois
continue. O método dselect do APT fornece sempre a opção
-f
para permitir uma continuação fácil de scripts do
responsável com falhas.
No entanto, se for usada a opção -f
para corrigir um
sistema seriamente quebrado causado pelo primeiro caso, então é possível que
ou falhe imediatamente ou falhe na sequência de instalação. Em qualquer dos
casos é necessário usar o dpkg manualmente (possivelmente com opções de
forçar) para corrigir a situação o suficiente para permitir ao APT
continuar.
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
-f
e quaisquer outras atividades relevantes ao comando
que vai ser executado.
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 install
. Os pacotes listados são
geralmente o resultado de uma Auto instalação.
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 -f
é especialmente boa a gerar pacotes
para remover, portanto neste caso deve-se usar cuidados extremos. A lista
pode conter pacotes que vão ser removidos porque estão apenas parcialmente
instalados, possivelmente devido a uma instalação abortada.
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 apt-get install
ou
usando o dselect para resolver os seus problemas.
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-non-US/ stable/non-US/ 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-non-US/ 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 apt-get
update
estima a percentagem de pronto o que causa algumas
imprecisões.
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
102/10.2k
indicando que 102 bytes foram obtidos e são
esperados 10.2kilobytes. O tamanho total é sempre representado numa anotação
de 4 figuras para preservar espaço. Após a amostragem do tamanho está um
medidor de percentagem para o próprio ficheiro. O segundo último elemento é
a velocidade média instantânea. Estes valores são actualizados a cada 5
segundos e refletem a taxa de dados transferidos para esse
período. Finalmente é mostrado o tempo estimado de transferência. Isto é
actualizado regularmente e reflete o tempo para completar tudo ao ritmo de
transferência mostrado.
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 -q
para remover o
mostrador de estado.
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.