Fink

Guia do usuário - 6. Usando a ferramenta fink a partir da linha de comando

6.1 Usando a ferramenta fink

A ferramenta fink usa vários comandos para operar em pacotes de uma distribuição de códigos abertos. Alguns comandos requerem o nome de ao menos um pacote mas podem operar em vários nomes de pacotes de uma vez só. Você pode especificar apenas o nome do pacote (por exemplo, gimp) ou um nome completamente qualificado com o número da versão (por exemplo, gimp-1.2.1) ou com os números de versão e revisão (por exemplo, gimp-1.2.1-3). O Fink irá escolher automaticamente a última versão e revisão disponível caso não tenham sido especificadas. Outros comandos possuem opções diferentes.

Apresentamos a seguir a lista de comandos da ferramenta fink.

6.2 Opções globais

Há algumas opções que são aplicáveis a todos os comandos do fink. Se você digitar fink --help você obterá a lista de opções:

(no contexto da versão fink-0.26.0)

-h, --help - exibe texto de ajuda.

-q, --quiet - faz com que o fink exiba menos informações, o contrário de --verbose. Sobrescreve a opção Verbose em fink.conf.

-V, --version - exibe informações sobre a versão.

-v, --verbose - faz com que o fink exiba mais informações, o contrário de --quiet. Sobrescreve a opção Verbose em fink.conf.

-y, --yes - nas perguntas interativas, responde automaticamente com a resposta padrão.

-K, --keep-root-dir - Faz com que o fink não remova o diretório raiz-[nome]-[versão]-[revisão] em Buildpath após compilar um pacote. Corresponde à opção KeepRootDir no arquivo fink.conf.

-k, --keep-build-dir - Faz com que o fink não remova o diretório [nome]-[versão]-[revisão] em Buildpath após compilar um pacote. Corresponde à opção KeepBuildDir no arquivo fink.conf.

-b, --use-binary-dist - faz o download de pacotes pré-compilados na distribuição de binários caso estejam disponíveis (por exemplo, para diminuir o tempo de compilação ou utilização do disco). Note que este modo instrui o fink a baixar a versão procurada caso ela esteja disponível para download; o modo não faz com que o fink escolha uma versão qualquer que esteja disponível sob a forma de binário. Corresponde à opção UseBinaryDist no arquivo fink.conf.

--no-use-binary-dist - Não usa pacotes binários pré-compilados da distribuição de binários, o oposto da opção --use-binary-dist. Este é o comportamento padrão a menos que haja sido sobrescrito por UseBinaryDist: true no arquivo de configuração fink.conf.

--build-as-nobody - Usa um usuário sem privilégios administrativos durante o processo de extrair, ajustar, compilar e instalar pacotes. Note que os pacotes compilados com esta opção podem não funcionar corretamente. Esta opção deve ser usada apenas para desenvolvimento de pacotes e depuração de erros.

-m, --maintainer (fink-0.25 e mais recentes) Executa ações úteis para mantenedores de pacotes: efetua a validação do arquivo .info antes de começar a compilação e no arquivo .deb após compilar um pacote; faz com que alguns avisos de tempo de compilação se tornem erros fatais; (fink-0.26 e mais recentes) executa as suítes de testes conforme especificado no campo, fazendo com que --tests e --validate estejam on.

--tests[=on|off|warn] - (fink-0.26.0 e mais recentes) Faz com que os campos InfoTest sejam ativados e as suítes de testes especificadas via TestScript sejam executadas (veja o Manual de empacotamento para o Fink). Se nenhum argumento for informado para esta opção ou se o argumento estiver on, então falhas nas suítes de testes serão consideradas erros fatais durante a compilação. Se o argumento for warn então as falhas serão tratadas como avisos.

--validate[=on|off|warn] - Faz com que os pacotes sejam validados durante a compilação. Se nenhum argumento for fornecido a esta opção ou se o argumento for on, então falhas de validação serão consideradas erros fatais durante a compilação. Se o argumento for warn, então falhas serão tratadas como avisos.

-l, --log-output - Guarda uma cópia da saída do terminal durante cada processo de compilação de pacote. Por padrão, o arquivo é armazenado em /tmp/fink-build-log_[nome]-[versão]-[revisão]_[data]-[hora] mas a opção --logfile pode ser usada para especificar um nome alternativo.

--no-log-output - Não guarda uma cópia da saída do terminal durante a compilação de pacotes, o oposto da opção --log-output. É o padrão.

--logfile=nomedearquivo - Guarda os logs de compilação de pacotes no arquivo nomedearquivo no lugar do arquivo padrão (veja a opção --log-output, que é implicitamente ativada pela opção --logfile). Você pode usar os códigos de expansão % para incluir automaticamente informações específicas do pacote. Uma lista completa de códigos de expansão está disponível no Manual de empacotamento do Fink; alguns códigos de expansão são:

-t, --trees=expr - Considera apenas os pacotes em árvores que casem com expr. O formato de expr é uma lista de especificações de árvores separadas por vírgula. Árvores listadas em fink.conf são comparadas com expr. Somente aquelas que casarem com pelo menos uma das especificações são consideradas pelo fink, na ordem da primeira especificação com que casarem. Se a opção --trees for usada, todas as árvores listadas em fink.conf são incluídas em ordem. Uma especificação de árvore pode conter o caracter barra (/), sendo que neste caso é necessário um casamento exato com uma árvore. Por exemplo, --trees=unstable/main casaria somente com a árvore unstable/main, enquanto que --trees=unstable casaria tanto com unstable/main quanto com unstable/crypto. Há algumas especificações mágicas que podem ser incluídas em expr:

Exclusão (ou falha de inclusão) dessas árvores mágicas só são suportadas atualmente para operações que não instalem ou removam pacotes.

-T, --exclude-trees=expr Considera apenas pacotes em árvores que não casem com expr. A sintaxe de expr é a mesma de --trees, incluindo as especificações mágicas. Entretanto, as árvores que casarem são excluídas no lugar de incluídas. Note que árvores que casem tanto com --trees quanto com --exclude-trees são excluídas.

Exemplos de --trees e --exclude-trees:

A maior parte destas opções são autoexplicativas. Várias também podem ser definidas no arquivo de configuração do Fink (fink.conf) caso queira defini-las permanentemente e não apenas para uma execução do fink em particular.

6.3 install

O comando install é usado para instalar pacotes. Ele baixa, configura, compila e instala os pacotes cujo nome você fornecer. Ele também instala automaticamente as dependências necessárias mas irá pedir-lhe confirmação antes de fazê-lo. Exemplo:

fink install nedit

Reading package info...
Information about 131 packages read.
The following additional package will be installed:
 lesstif
Do you want to continue? [Y/n]

O uso da opção --use-binary-dist com fink install pode aumentar significativamente a velocidade de compilação de pacotes complicados.

Apelidos para o comando install: update, enable, activate, use (a maior parte destes por motivos históricos).

6.4 remove

O comando remove elimina pacotes do sistema por intermédio do comando 'dpkg --remove'. A implementação possui uma falha: ela não verifica dependências por si própria mas sim delega toda a verificação para a ferramenta dpkg. Normalmente isto não causa problemas.

O comando remove somente elimina os arquivos do pacote (a menos dos arquivos de configuração), deixando intacto o arquivo .deb contendo o pacote. Isto significa que você pode reinstalar um pacote mais tarde sem precisar passar novamente pelo processo de compilação. Se você precisar liberar espaço em disco, você pode remover os arquivos .deb na árvore /opt/sw/fink/dists.

As opções a seguir podem ser usadas em conjunto com o comando fink remove.

-h,--help       - Exibe as opções disponíveis.
-r,--recursive  - Também remove pacotes que dependam do(s) pacote(s) a ser(em) removido(s)
                  (ou seja, uma solução para a falha mencionada acima).

Apelidos: disable, deactivate, unuse, delete.

6.5 purge

O comando purge elimina pacotes do sistema. Executa o mesmo que o comando remove e também elimina arquivos de configuração.

As seguintes opções são reconhecidas pelo comando:

-h,--help
-r,--recursive

6.6 update-all

Este comando atualiza todos os pacotes instalados para que estejam na versão mais recente. Ele não precisa de que você informe uma lista de pacotes, bastando digitar:

fink update-all

A opção --use-binary-dist também é útil para este comando.

6.7 list

Este comando produz uma lista dos pacotes disponíveis, exibindo o status de instalação, a versão mais recente e uma descrição curta. Caso você o execute sem parâmetros, ele listará todos os pacotes disponíveis. Você também pode passar um nome ou padrão do shell e o fink listará todos os pacotes que casarem.

A primeira coluna mostra o status da instalação com os seguintes significados:

    não instalado
 i  a versão mais recente está instalada
(i) instalado, mas uma versão mais recente está disponível
 p  um pacote virtual provido por um pacote que esteja instalado

A coluna de versão sempre lista a versão mais recente (maior) conhecida para um dado pacote independentemente de qual versão esteja instalada, caso esteja. Para ver todas as versões de um pacote disponíveis para o seu sistema, use o comando dumpinfo.

O comando fink list também aceita algumas opções:

-h,--help
	  Exibe as informações disponíveis.
-t,--tab
          Exibe a lista em formato delimitado por tabulações, útil para
          processar a saída através de um script.
-i,--installed
          Exibe apenas os pacotes que estejam instalados.
-o,--outdated
          Exibe apenas os pacotes que estejam desatualizados.
-u,--uptodate
          Exibe apenas os pacotes que estejam atualizados.
-n,--notinstalled
          Exibe apenas os pacotes que não estejam instalados.
-s expr,--section=expr
          Exibe apenas os pacotes cujas seções casem com a expressão
          regular expr.
-m expr,--maintainer=expr
          Exibe apenas os pacotes cujo mantenedor case com a expressão
          regular expr.
-w=xyz,--width=xyz
          Define a largura da tela de saída para a qual você deseja
          formatar a saída. xyz é ou um valor numérico ou auto.
          auto irá definir a largura com base na largura do terminal.
          O valor padrão é auto.

Alguns exemplos de uso:

fink list                 - lista todos os pacotes
fink list bash            - verifica se o bash está disponível e em que versão
fink list --tab --outdated | cut -f 2     
                          - lista apenas os nomes de pacotes desatualizados
fink list --section=kde   - lista os pacotes na seção kde
fink list --maintainer=fink-devel
                          - lista os pacotes sem mantenedores
fink --trees=unstable list --maintainer=fink-devel
                          - lista os pacotes sem mantenedores e que estejam
                            na árvore unstable
fink list "gnome*"        - lista todos os pacotes cujos nomes comecem com
                            'gnome'

As aspas no último exemplo são necessárias para impedir que o shell interprete o padrão.

6.8 apropos

Este comando se comporta de forma quase idêntica a fink list. A maior diferença é que o fink apropos também lê as descrições de pacotes para buscar pacotes. A segunda diferença é que a string de pesquisa precisa ser fornecida, não sendo opcional.

fink apropos irc          - lista os pacotes para os quais 'irc' aparece
			    no nome ou na descrição.
fink apropos -s=kde irc   - o mesmo que acima, mas restrito a pacotes que
			    estejam na seção kde.

6.9 describe

Este comando exibe uma descrição do pacote cujo nome você haja fornecido na linha de comando. Note que somente uma pequena parte dos pacotes possui uma descrição.

Apelidos: desc, description, info

6.10 plugins

Lista os plugins (opcionais) disponíveis para o programa fink. Atualmente lista os mecanismos de notificação e algoritmos para detecção de erros nos tarballs com códigos fontes.

6.11 fetch

Baixa os pacotes enumerados mas não os instala. Este comando irá baixar os tarballs mesmo que eles já tenham sido baixados previamente.

As seguintes opções podem ser usadas com o comando fetch:

-h,--help		Exibe as opções disponíveis.
-i,--ignore-restrictive	Não baixa pacotes com License: Restrictive.
                        Útil para espelhos porque alguns pacotes com licenças
                        restritivas não permitem que sejam espelhados.
-d,--dry-run		Exibe apenas informações sobre o(s) arquivo(s) que
                        seria(m) baixado(s) para baixar o pacote; não faça
                        efetivamente o download.
-r,--recursive		Baixe também pacotes que sejam dependências do(s)
                        pacote(s) a ser(s) baixado(s).

6.12 fetch-all

Baixa todos os arquivos com os códigos fontes dos pacotes. Da mesma forma que fetch, os tarballs são baixados mesmo que já o tenham sido anteriormente.

As seguintes opções podem ser usadas com o comando fink fetch-all:

-h,--help
-i,--ignore-restrictive
-d,--dry-run

6.13 fetch-missing

Baixa todos os arquivos com os códigos fontes de pacotes que estejam faltando. Este comando somente baixará arquivos que não estejam presentes no sistema.

Ass eguintes opções podem ser usadas com o comando fink fetch-missing:

-h,--help
-i,--ignore-restrictive
-d,--dry-run

6.14 build

Compila um pacote mas não o instala. Como de hábito, os tarballs contendo os códigos fontes são baixados caso não possam ser encontrados. O resultado deste comando é um arquivo de pacote .deb instalável que pode ser usado posteriormente para rapidamente instalar o pacote através do comando install. Este comando não fará nada caso o arquivo .deb já exista. Note que as dependências ainda são instaladas e não apenas compiladas.

A opção --use-binary-dist option pode ser usada com este comando.

6.15 rebuild

Compila um pacote (da mesma forma que o comando build) mas ignora e sobrescreve o arquivo .deb já existente. Se o pacote for instalado, o recém-criado arquivo .deb também pode ser instalado no sistema através do dpkg. Bastante útil durante o desenvolvimento de pacotes.

6.16 reinstall

Igual ao install porém o pacote será instalado via dpkg mesmo que ele já esteja instalado. Você pode usar este comando caso tenha acidentalmente apagado arquivos de um pacote ou mudado arquivos de configuração e queira ter a configuração inicial de volta.

6.17 configure

Roda novamente o processo de configuração do fink. Dentre outros, permite que você mude a configuração dos servidores espelhos ou de proxy.

Característica nova no fink-0.26.0: este comando também permite que você habilite árvores unstable caso queira.

6.18 selfupdate

Este comando automatiza o processo de atualização para uma nova versão do Fink. Ele verifica o site do Fink para ver se uma nova versão está disponível. Em seguida, ele baixa as descrições de pacotes e atualiza os pacotes básicos incluindo o próprio fink. Este comando pode fazer a atualização para versões regulares e também configurar seu diretório /opt/sw/fink/dists para atualizações diretas por meio de git ou rsync caso você tenha selecionado uma destas opções na primeira vez em que o comando for executado. Isto significa que você poderá portanto acessar as últimas versões de todos os pacotes.

Caso a opção --use-binary-dist esteja habilitada, a lista de pacotes disponíveis na distribuição de binários também será atualizada.

6.19 selfupdate-rsync

Use este comando para fazer com que fink selfupdate use o rsync para atualizar sua lsitagem de pacotes.

Esta é a forma recomendada para atualizar o Fink quando se compila a partir do código fonte.

Observação: atualizações via rsync somente atualizam as árvores ativas (por exemplo, se unstable não estiver habilitada no fink.conf então a lista de pacotes instáveis não será atualizada.

6.20 selfupdate-git

Use este comando para fazer com que fink selfupdate use acesso Git para atualizar sua listagem de pacotes.

A atualização do Rsync é preferida, exceto para desenvolvedores e pessoas que estão por trás de firewalls que não permitem o rsync.

6.21 index

Reconstrói o cache de pacotes. Normalmente você não precisa executar este comando manualmente já que o fink deveria detectar automaticamente se precisa ser atualizado.

6.22 validate

Este comando executa várias validações em arquivos .info e .deb. Mantenedores de pacotes devem rodar este comando em suas descrições de pacotes e pacotes compilados correspondentes antes de os submeter.

As seguintes opções facultativas podem ser usadas:

-h,--help            - Exibe as opções disponíveis.
-p,--prefix          - Simula um prefixo de diretório base alternativo nos
                       arquivos sendo validados.
--pedantic, --no-pedantic
                     - Controla a exibição de avisos de formatação.
                      --pedantic é o padrão.

Apelidos: check

6.23 scanpackages

Atualiza o banco de dados de .debs do apt-get. O padrão é atualizar todas as árvores mas isto pode ser restrito a uma ou mais árvores especificadas como argumentos.

6.24 cleanup

Remove arquivos obsoletos e temporários. Este comando pode liberar bastante espaço em disco. Um ou vários modos podem ser especificados:

--debs               - Remove arquivos .deb (pacotes de binários compilados)
                       correspondentes às versões de pacotes que não estejam nem
                       descritas por um arquivo de descrição de pacote (.info)
                       nas árvores ativas nem instaladas no momento.
--sources,--srcs     - Remove códigos fontes (tarballs, etc) que não estejam sendo
                       usadas por algum arquivo de descrição de pacotes (.info) nas
                       árvores ativas no momento.
--buildlocks, --bl   - Remove pacotes cuja compilação tenha travado.
--dpkg-status        - Remove do banco de dados de status do dpkg as entradas de
                       pacotes que não estejam instalados.
--obsolete-packages  - Tenta desinstalar todos os pacotes que estejam obsoletos
                       (característica nova no fink-0.26.0).
--all                - Todos os modos acima (característica nova no fink-0.26.0).

Caso nenhum modo tenha sido especificado, a ação padrão é --debs --sources.

Além disso, as seguintes opções podem ser usadas:

-k,--keep-src        - Move arquivos antigos com código fonte para /opt/sw/src/old no
                                        lugar de os remover.
-d,--dry-run         - Imprime os nomes dos arquivos que seriam removidos mas
                       não os remove de fato.
-h,--help            - Exibe os modos e opções disponíveis.

6.25 dumpinfo

Exibe como o fink analisa as partes de um arquivo de pacote .info. Vários campos e expansões de códigos serão exibidos conforme as opções abaixo:

-h, --help           - Exibe as opções disponíveis.
-a, --all            - Exibe todos os campos da descrição do pacote. É o modo
                       padrão quando nem --field ou --percent forem informados.
-f fieldname,        - Mostra os campos na ordem
  --field=fieldname    em que forem listados.
-p key,              - Mostra os códigos de expansão na
   --percent=key       ordem em que forem listados.

6.26 show-deps

Exibe uma lista legível das dependências, tanto de compilação quanto de execução (instalação), dos pacotes listados.