Capítulo 4. A Interface

Índice

4.1. Arranque
4.2. O Relatório de Estado
4.3. O Mostrador de Estado
4.4. Dpkg

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 reflecte o tipo de operações a ser executadas mas há vários elementos comuns. Em todos os casos a lista reflecte o estado final das coisas, tendo em conta a opção -f e quaisquer outras actividades relevantes ao comando que vai ser executado.

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 reflectem a taxa de dados transferidos para esse período. Finalmente é mostrado o tempo estimado de transferência. Isto é actualizado regularmente e reflecte 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.



[2] O método dselect na verdade é um conjunto de scripts wrapper para o apt-get. O método disponibiliza mais funcionalidades que aquelas presentes no apt-get sozinho.

[3] No entanto o APT considera todas as dependências conhecidas e tenta prevenir pacotes quebrados