Capítulo 4. A Interface
Anterior |  |

# Capítulo 4. A Interface

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.

## 4.1. Arranque

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.

## 4.2. O Relatório de Estado

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.

### 4.2.1. A lista de Pacotes Extra

    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.

### 4.2.2. Os Pacotes para Remover

    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.

### 4.2.3. A lista de Novos Pacotes

    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.

### 4.2.4. A lista Kept Back

    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.

### 4.2.5. Aviso de Pacotes Segurados

    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.

### 4.2.6. Sumário final

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.

## 4.3. O Mostrador de Estado

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 `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.

## 4.4. Dpkg

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

Anterior |  |
Capítulo 3. DSelect | Início |