
                          Guia de Utilizador do APT


-----------------------------------------------------------------------------
                                      
                               Jason Gunthorpe

                              <jgg@debian.org>

                                Versão 2.7.6

-----------------------------------------------------------------------------

Copyright © 1998 Jason Gunthorpe

Aviso de Licença

    "APT" e este documento são software livre; você pode distribuí-lo e/ou
    modifica-lo sob os termos da GNU General Public License como publicada
    pela Free Software Foundation; seja na versão 2 da Licença, ou (por sua
    opção) qualquer versão posterior.

    Para mais detalhes em sistemas Debian, veja o ficheiro /usr/share/
    common-licenses/GPL para a licença completa.

Resumo

Este documento disponibiliza uma visão geral de como usar o gestor de pacotes
APT.

-----------------------------------------------------------------------------

Índice

1. Geral
    1.1. Anatomia do Sistema de Pacotes
2. apt-get
3. DSelect
4. A Interface
    4.1. Arranque
    4.2. O Relatório de Estado
        4.2.1. A lista de Pacotes Extra
        4.2.2. Os Pacotes para Remover
        4.2.3. A lista de Novos Pacotes
        4.2.4. A lista Kept Back
        4.2.5. Aviso de Pacotes Segurados
        4.2.6. Sumário final
    4.3. O Mostrador de Estado
    4.4. Dpkg

Capítulo 1. Geral

Índice

1.1. Anatomia do Sistema de Pacotes

    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.

1.1. Anatomia do Sistema de Pacotes

    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.

Capítulo 2. apt-get

    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. Por exemplo,

    # apt-get update
    Get http://ftp.de.debian.org/debian-non-US/ 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:

    upgrade

        Upgrade irá tentar actualizar gentilmente todo o sistema. Upgrade
        nunca irá instalar um pacote novo ou remover um pacote existente, nem
        nunca irá actualizar um pacote que possa causar a quebra de outro
        pacote. Isto pode ser usado diariamente para actualizar o sistema com
        relativa segurança. Upgrade ira listar todos os pacotes que não pode
        actualizar, isto geralmente significa que eles dependem de novos
        pacotes ou entram em conflito com algum outro pacote. dselect ou
        apt-get install podem ser usados para forçar estes pacotes a
        instalar.

    install

        Install é usado para instalar pacotes pelo nome. O pacote é obtido
        automaticamente e instalado. Isto pode ser útil se você já conhecer o
        nome do pacote a instalar e não quer ir para uma GUI para o
        selecionar. Podem ser passados qualquer número de pacotes para
        instalar, todos eles serão obtidos. Install tenta automaticamente
        resolver problemas de dependências com os pacotes listados e irá
        escrever um sumário e pedir confirmação se algo mais que os seus
        argumentos serão alterados.

    dist-upgrade

        Dist-upgrade é um atualizador completo desenhado para simplificar a
        actualização entre lançamentos da Debian. Usa um algoritmo
        sofisticado para determinar o melhor conjunto de pacotes a instalar,
        actualizar ou remover para obter o máximo do sistema para o novo
        lançamento. Em algumas situações pode ser desejável usar o
        dist-upgrade em vez de passar o tempo a resolver dependências
        manualmente no dselect. Assim que o dist-upgrade tiver terminado
        então pode ser usado o dselect para instalar quaisquer pacotes que
        tenham ficado de fora.

        É importante observar de perto o que o dist-upgrade vai fazer, as
        suas decisões podem por vezes ser bastante surpreendentes.

    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 é -d que não instala os pacotes
    obtidos, Se o sistema tiver que descarregar um grande número de pacotes
    seria indesejável começar a instala-los no caso de algo correr mal.
    Quando se usa -d os arquivos descarregados podem ser instalados
    simplesmente ao correr de novo comando que s descarregou mas sem o -d.


-----------------------------------------------------------------------------

    ^[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)

Capítulo 3. DSelect

    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,
          ftp://ftp.debian.org/debian,
          http://ftp.de.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 non-US

     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. 
    non-US apenas está disponível em alguns mirrors e refere-se a pacotes que
    contém tecnologia de encriptação ou outras coisas que não podem ser
    exportadas dos Estados Unidos. No entanto importar estes pacotes para os
    US é legal.

     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
    apt-get update que torna a informação obtida disponível ao dselect. Deve
    ser executado o [U]pdate mesmo que tenha sido feito apt-get update antes.

    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 Dselect::clean "prompt"; em /etc/apt/apt.conf.

Capítulo 4. A Interface

Índice

4.1. Arranque
4.2. O Relatório de Estado
    4.2.1. A lista de Pacotes Extra
    4.2.2. Os Pacotes para Remover
    4.2.3. A lista de Novos Pacotes
    4.2.4. A lista Kept Back
    4.2.5. Aviso de Pacotes Segurados
    4.2.6. Sumário final
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.

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

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

