Referência Debian ----------------- Osamu Aoki Paulo Rogério Ormenese (líder: pt-br) Seção A.1, `Autores' CVS, Qui Jan 18 11:53:12 UTC 2007 ------------------------------------------------------------------------------- Resumo ------ Esta Referência Debian (http://qref.sourceforge.net/) dedica-se a fornecer uma visão ampla do sistema Debian como um _guia do usuário pós-instalação_. Ela abrange muitos aspectos de administração do sistema através de exemplos de _comando shell_. São proporcionados tutoriais básicos, dicas, e outras informações para temas incluindo conceitos fundamentais do sistema Debian, sugestões de instalação de sistema, administração de pacotes Debian, o kernel Linux sob o Debian, ajustes do sistema, construção de um gateway, editores de texto, CVS, programação, e GnuPG para _não-desenvolvedores_. Nota de Copyright ----------------- Copyright (C) 2001--2005 por Osamu Aoki . Copyright (Capítulo 2) (C) 1996-2001 por Software in the Public Interest. Este documento pode ser usado sob os termos da GNU General Public License versão 2 ou superior. (http://www.gnu.org/copyleft/gpl.html) É concedida a permissão para fazer e distribuir cópias literais deste documento contanto que o aviso de direito de cópia (copyright) e este aviso de permissão sejam preservados em todas as cópias. É garantida a permissão para copiar e distribuir versões modificadas deste documento sob as condições da cópia literal, contanto que o trabalho derivado resultante seja totalmente distribuído sob os termos de um aviso de permissão idêntico a este. É garantida a permissão para copiar e distribuir traduções deste documento em outro idioma sob as condições acima para versões modificadas, exceto que este aviso de permissão pode ser incluído em traduções aprovadas pela Free Software Foundation em vez de no inglês original. ------------------------------------------------------------------------------- Conteúdo -------- 1. Prefácio 1.1. Documento Oficial 1.2. Convenções do documento 1.3. Scripts de exemplo 1.4. Configuração básica 1.5. Básico das distribuições Debian 2. Fundamentos Debian 2.1. Os repositórios Debian 2.1.1. Estruturas de diretório 2.1.2. Distribuições Debian 2.1.3. A distribuição `stable' 2.1.4. A distribuição `testing' 2.1.5. A distribuição `unstable' 2.1.6. A distribuição `frozen' 2.1.7. Codinomes das distribuições Debian 2.1.8. Codinomes usados no passado 2.1.9. A origem dos codinomes 2.1.10. O diretório `pool' 2.1.11. Notas históricas sobre a Sid 2.1.12. Pacotes enviados para `incoming/' 2.1.13. Obtendo um pacote antigo 2.1.14. Seções de Arquiteturas 2.1.15. O código-fonte 2.2. O sistema de gerenciamento de pacotes Debian 2.2.1. Visão Geral dos pacotes Debian 2.2.2. Formato de pacotes Debian 2.2.3. Convenções de nomenclatura para nomes de arquivos de pacotes Debian 2.2.4. Preservação da configuração local 2.2.5. Scripts de manutenção Debian 2.2.6. Prioridade de pacotes 2.2.7. Pacotes virtuais 2.2.8. Dependências de pacotes 2.2.9. O significado de Pré-dependências 2.2.10. Estado do pacote 2.2.11. Evitando que pacotes sejam atualizados 2.2.12. Pacotes fonte 2.2.13. Construindo pacotes binários a partir de um pacote fonte 2.2.14. Criando novos pacotes Debian 2.3. Atualizando um sistema Debian 2.3.1. Métodos para atualizar um sistema Debian 2.3.2. Visão geral das ferramentas de gerenciamento de pacotes 2.3.3. `dpkg' 2.3.4. APT 2.3.5. `dselect' 2.3.6. Atualizando um sistema em execução 2.3.7. Arquivos `.deb' baixados e em cache 2.3.8. Mantendo registros para atualizações 2.4. O processo de inicialização Debian 2.4.1. O programa `init' 2.4.2. Níveis de execução 2.4.3. Personalizando o processo de inicialização 2.5. Suportando diversidades 2.6. Internacionalização 2.7. Debian e o kernel 2.7.1. Compilando um kernel a partir de um fonte não Debian 2.7.2. Ferramentas para construir kernels personalizados 2.7.3. Condições especiais para lidar com módulos 2.7.4. Desinstalação de um kernel antigo 3. Dicas para instalação do Sistema Debian 3.1. Dicas para instalação de sistemas Linux em geral 3.1.1. O básico sobre a compatibilidade de hardware 3.1.2. Determinando hardware e chip set de um PC 3.1.3. Determinando o hardware de um PC via Debian 3.1.4. Determinando o hardware de um PC por meio de outros SO's 3.1.5. Um mito sobre o Lilo 3.1.6. GRUB 3.1.7. Escolha dos disquetes de inicialização 3.1.8. Instalação 3.1.9. Hosts e IP a usar para LAN 3.1.10. Contas de usuário 3.1.11. Criando sistemas de arquivo 3.1.12. Guia sobre memória DRAM 3.1.13. Espaço de troca (swap) 3.2. Configuração do bash 3.3. Configuração do mouse 3.3.1. Mouses PS/2 3.3.2. Mouses USB 3.3.3. Touch pad 3.4. Configuração de NFS 3.5. Configuração do Samba 3.6. Configuração da Impressora 3.6.1. `lpr'/`lpd' 3.6.2. CUPS(TM) 3.7. Outras dicas de instalação no host 3.7.1. Instalar mais alguns pacotes após a instalação inicial 3.7.2. Módulos 3.7.3. Configuração básica de CD-RW 3.7.4. Memória grande e autodesligamento 3.7.5. Estranhos problemas de acesso a alguns websites 3.7.6. Configuração Dialup PPP 3.7.7. Outros arquivos de configuração para fuçar em `/etc/' 4. Tutoriais do Debian 4.1. Começando 4.1.1. Login em um prompt shell como root 4.1.2. Configurar um ambiente mínimo para novato 4.1.3. Adicionar uma conta de usuário 4.1.4. Alternar entre consoles virtuais 4.1.5. Como desligar 4.1.6. Hora do jogo 4.2. Midnight Commander (MC) 4.2.1. Melhorar o MC 4.2.2. Iniciar o MC 4.2.3. Gerenciador de arquivos no MC 4.2.4. Truques de linha de comando no MC 4.2.5. Editor no MC 4.2.6. Visualizador no MC 4.2.7. Recursos de auto início no MC 4.2.8. Sistema de arquivo virtual FTP no MC 4.3. Ambiente de trabalho semelhante ao Unix 4.3.1. Comandos de teclado especiais 4.3.2. Comandos Unix básicos 4.3.3. A execução de comando 4.3.4. Comando simples 4.3.5. Execução de comando e variável de ambiente 4.3.6. Caminho de busca de comando 4.3.7. Opções de linha de comando 4.3.8. Curingas (wildcards) de shell 4.3.9. Valor de retorno do comando 4.3.10. Seqüências de comando típicas 4.3.11. Apelido (alias) de comando 4.4. Processamento de texto em similares a Unix 4.4.1. Expressões regulares 4.4.2. Expressões de substituição 4.5. Sistema de arquivos em similares ao Unix 4.5.1. Básico de arquivos Unix 4.5.2. O conceito de sistema de arquivos no Debian 4.5.3. Permissões de acesso de arquivos e diretórios 4.5.4. Marcas de tempo 4.5.5. Ligações (links) 4.5.6. Pipes nomeados (FIFOs) 4.5.7. Soquetes 4.5.8. Arquivos de dispositivos 4.5.9. Sistema de arquivo `/proc' 4.6. Sistema X Window 4.6.1. Iniciar o Sistema X Window 4.6.2. Menu no Sistema X Window 4.6.3. Seqüência de teclado para o Sistema X Window 4.7. Estudos adicionais 5. Atualizando uma distribuição para a `testing' 5.1. Transição do APT para a versão Woody 5.2. Preparação para a transição (`stable' para `testing') 5.3. Atualizar o sistema Debian 5.3.1. Melhor prática de atualização usando o `dselect' 5.3.2. Prática ruim de atualização com o `apt-get' 6. Gerenciamento de pacotes Debian 6.1. Introdução 6.1.1. Ferramentas principais 6.1.2. Ferramentas úteis 6.2. Básico do gerenciamento de pacotes Debian 6.2.1. Instalar _tarefa_ com o `tasksel' ou `aptitude' 6.2.2. Configure o sistema APT 6.2.3. `dselect' 6.2.4. `aptitude' 6.2.5. Comandos `apt-cache' e `apt-get' 6.2.6. Seguindo um tipo da distribuição Debian 6.2.7. Rebaixando todos os pacotes para a `estável' 6.2.8. Visão geral do arquivo `/etc/apt/preferences' 6.3. Comandos de sobrevivência do Debian 6.3.1. Verificar bugs no Debian e procurar ajuda 6.3.2. Resolvendo problemas com atualização pelo APT 6.3.3. Resgate usando o `dpkg' 6.3.4. Recuperação dos dados de seleção de pacotes 6.3.5. Resgate do sistema após quebrar `/var' 6.3.6. Instalar um pacote em um sistema não iniciável 6.3.7. O que fazer se o comando `dpkg' estiver quebrado 6.4. Comandos de nirvana do Debian 6.4.1. Informação sobre um arquivo 6.4.2. Informação sobre um pacote 6.4.3. Instalação com APT sem acompanhamento 6.4.4. Reconfigurar pacotes instalados 6.4.5. Remover e eliminar (purge) pacotes 6.4.6. Mantendo pacotes antigos 6.4.7. Sistema híbrido `stable'/`testing'/`unstable' 6.4.8. Descartar arquivos de pacote em cache 6.4.9. Gravar/copiar a configuração do sistema 6.4.10. Portar um pacote para o sistema `stable' 6.4.11. Repositório local de pacotes 6.4.12. Converter ou instalar um pacote binário alien 6.4.13. Verificar arquivos de pacotes instalados 6.4.14. Otimizando o arquivo `sources.list' 6.5. Outras peculiaridades do Debian 6.5.1. O comando `dpkg-divert' 6.5.2. O pacote `equivs' 6.5.3. Comandos alternativos 6.5.4. `init' System-V e níveis de execução (runlevels) 6.5.5. Serviços daemon desabilitados 7. O kernel Linux no Debian 7.1. Recompilação do Kernel 7.1.1. Método Debian padrão 7.1.2. Método clássico 7.1.3. Cabeçalhos do kernel 7.2. O kernel 2.4 modularizado 7.2.1. PCMCIA 7.2.2. SCSI 7.2.3. Função de rede 7.2.4. Sistema de arquivos EXT3 ( > 2.4.17) 7.2.5. Suporte Realtek RTL-8139 no kernel 2.4 7.2.6. Suporte a porta paralela 7.3. Ajustando o kernel pelo sistema de arquivos proc 7.3.1. Muitos arquivos abertos 7.3.2. Intervalos de sincronização (flush) de disco 7.3.3. Máquinas de pouca memória antigas e lerdas 8. Dicas Debian 8.1. Iniciando o sistema 8.1.1. "Eu esqueci a senha do root !" (1) 8.1.2. "Eu esqueci a senha do root !" (2) 8.1.3. Não posso iniciar o sistema 8.1.4. "Deixe-me desabilitar o X na inicialização !" 8.1.5. Outros truques de inicialização com o prompt de inicialização 8.1.6. Definindo parâmetros de inicialização do GRUB 8.2. Gravando atividades 8.2.1. Gravando atividades shell 8.2.2. Gravando atividades no X 8.3. Copiar e arquivar um subdiretório inteiro 8.3.1. Comandos básicos para copiar um subdiretório inteiro 8.3.2. `cp' 8.3.3. `tar' 8.3.4. `pax' 8.3.5. `cpio' 8.3.6. `afio' 8.4. Backups diferenciais e sincronização de dados 8.4.1. Backup diferencial com rdiff 8.4.2. Backup diário com `pdumpfs' 8.4.3. Backup diferencial regular com RCS 8.5. Recuperação de sistema paralizado 8.5.1. Matar um processo 8.5.2. Alt-SysRq 8.6. Belos pequenos comandos para se lembrar 8.6.1. Paginador 8.6.2. Memória livre 8.6.3. Definir a hora (BIOS) 8.6.4. Definir a hora (NTP) 8.6.5. Como controlar recursos de console como o protetor de tela 8.6.6. Procurar na base de dados administrativa 8.6.7. Desabilitar o som (beep) 8.6.8. Mensagens de erro na tela do console 8.6.9. Definir o console para o tipo correto 8.6.10. Voltar o console ao estador normal 8.6.11. Converter um arquivo texto DOS para o estilo Unix 8.6.12. Substituição de expressões regulares 8.6.13. Editar arquivo no local usando um script 8.6.14. Extrair diferenças e juntar atualizações para os arquivos fonte 8.6.15. Converter um arquivo grande em arquivos pequenos 8.6.16. Extrair dados de uma tabela em arquivo texto 8.6.17. Pequenos scripts para ligar comandos 8.6.18. Pequenos scripts para fazer loop para cada arquivo 8.6.19. Loucura de script Perl curto 8.6.20. Obter texto ou arquivo de lista de discussão de uma página web 8.6.21. Imprimir de forma bonita uma página web 8.6.22. Imprimir de forma bonita uma página de manual 8.6.23. Juntar dois arquivos PostScript ou PDF 8.6.24. Contar o tempo de um comando 8.6.25. Comando `nice' 8.6.26. Agendar atividade (`cron', `at') 8.6.27. Mudança de console com `screen' 8.6.28. Testes de rede básicos 8.6.29. Fazer flush em mensagens do spool local 8.6.30. Remover mensagens congeladas do spool local 8.6.31. Reentregar conteúdo mbox 8.6.32. Limpar conteúdo de arquivo 8.6.33. Arquivos Falsos 8.6.34. `chroot' 8.6.35. Como checar ligações diretas (hard) 8.6.36. Usar `mount' em um arquivo de uma imagem de disco rígido 8.6.37. Samba 8.6.38. Utilitários para sistemas de arquivos não nativos 8.7. Erros típicos a serem notados 8.7.1. `rm -rf .*' 8.7.2. `rm /etc/passwd' 9. Ajustando um sistema Debian 9.1. Inicialização do sistema 9.1.1. Personalizando os scripts init 9.1.2. Personalizando o log do sistema 9.1.3. Otimizando o hardware 9.2. Restringindo o acesso 9.2.1. Restringindo logins com PAM 9.2.2. "Por que o GNU `su' não suporta o grupo `wheel'" 9.2.3. Propósitos de grupos padrões 9.2.4. Trabalhando de forma mais segura -- `sudo' 9.2.5. Restringindo acesso a serviços 9.2.6. Centralizando a autenticação -- LDAP 9.3. Gravadores de CD 9.3.1. Introdução 9.3.2. Alternativa 1: módulos + `lilo' 9.3.3. Alternativa 2: recompilar o kernel 9.3.4. Passos posteriores à configuração 9.3.5. Arquivo imagem de CD (inicializável) 9.3.6. Gravar CDs (R, RW): 9.3.7. Fazer um arquivo imagem de um CD 9.3.8. Imagens de CD do Debian 9.3.9. Fazer cópia de segurança do sistema em CD-R 9.3.10. Copiar um CD de músicas para CD-R 9.4. X 9.4.1. Pacotes do X 9.4.2. Detecção de hardware para o X 9.4.3. O servidor X 9.4.4. Clientes X 9.4.5. Sessões X 9.4.6. Usando o X sobre TCP/IP 9.4.7. Conectando a um servidor X remoto -- `xhost' 9.4.8. Conectando a um servidor X remoto -- `ssh' 9.4.9. O emulador de terminal X -- `xterm' 9.4.10. Recursos do X 9.4.11. Mapas de teclado e funções de botões do apontador no X 9.4.12. Obtendo root no X 9.4.13. Fontes TrueType no X 9.4.14. Navegadores Web no X 9.5. SSH 9.5.1. Básico do SSH 9.5.2. Redirecionamento de porta para tunelamento SMTP/POP3 9.5.3. Conectando com menos senhas -- RSA 9.5.4. Lidando com clientes SSH estranhos 9.5.5. Configurando o `ssh-agent' 9.5.6. Resolução de problemas de SSH 9.6. Correio 9.6.1. Agentes de transporte de correio (MTAs) 9.6.2. Baixando mensagens -- Fetchmail 9.6.3. Processando mensagens -- Procmail 9.6.4. Lendo mensagens -- Mutt 9.7. Localização 9.7.1. Básico da localização 9.7.2. Locales 9.7.3. Introdução a locales 9.7.4. Ativando suporte a locale 9.7.5. Ativando um locale específico 9.7.6. Locale de formato de data ISO 8601 9.7.7. Exemplo para os Estados Unidos (ISO-8859-1) 9.7.8. Exemplo para a França com o sinal de Euro (ISO-8859-15) 9.7.9. Exemplo para um sistema X window multi-idiomas 9.7.10. Métodos de entrada X alternativos 9.7.11. Emuladores de terminal no X 9.7.12. Exemplo para UTF-8 no X 9.7.13. Exemplo para UTF-8 em um console framebuffer 9.7.14. Além dos locales 10. Configuração de rede 10.1. Básico de rede IP 10.2. Configuração de rede de baixo nível 10.2.1. Configuração de rede de baixo nível -- `ifconfig' e `route' 10.2.2. Configuração de rede de baixo nível -- `ip' 10.2.3. Configurando uma interface Wi-Fi 10.2.4. Configurando uma interface PPP 10.3. Nomeando o computador 10.3.1. Nome do sistema (Hostname) 10.3.2. Nome de correio (Mailname) 10.4. Domain Name Service (DNS) (Serviço de Nome de Domínio) 10.4.1. O resolvedor (resolver) 10.4.2. Gerenciando informação do resolvedor de nomes -- `resolvconf' 10.4.3. Colocando em cache nomes consultados -- `dnsmasq' 10.4.4. Fornecendo Serviço de Nome de Domínio -- `bind' 10.5. Configurando interfaces de rede usando DHCP 10.6. Configuração de rede de alto nível no Debian 10.6.1. Configurando uma interface com um endereço IP estático 10.6.2. Configurando uma interface usando DHCP 10.6.3. Configurando uma interface Wi-Fi 10.6.4. Configurando uma interface PPP 10.6.5. Configurando uma interface PPPoE 10.6.6. Configurando múltiplas interfaces Ethernet para um gateway 10.6.7. Configurando interfaces virtuais 10.7. _Re_configuração de rede 10.8. Reconfiguração mágica de rede 10.8.1. guessnet 10.8.2. laptop-net 10.9. Gatilhando a reconfiguração de rede 10.9.1. Gatilhando a configuração de rede durante a inicialização 10.9.2. Gatilhando configuração de rede -- `hotplug' 10.9.3. Gatilhando a configuração de rede -- `ifplugd' 10.9.4. Gatilhando a configuração de rede -- `waproamd' 10.9.5. Configuração de rede e PCMCIA 10.10. Configuração de serviço de rede 10.11. Resolução de problemas com rede 10.12. Construindo um roteador gateway 10.12.1. Configuração do Netfilter 10.12.2. Gerenciar múltiplas conexões de rede 11. Editores 11.1. Editores populares 11.2. Editores de recuperação 11.3. Emacs e Vim 11.3.1. Dicas para o Vim 11.3.2. Dicas para o Emacs 11.3.3. Iniciando o editor 11.3.4. Resumo de comandos do Editor (Emacs, Vim) 11.3.5. Configuração do Vim 11.3.6. Ctags 11.3.7. Converter uma tela com sintaxe destacada em fonte HTML 11.3.8. Dividir a tela com o `vim' 12. Sistemas de Controle de Versão 12.1. Concurrent Versions System (CVS) (Sistema de Versões Concorrentes) 12.1.1. Instalando um servidor CVS 12.1.2. Exemplos de sessão CVS 12.1.3. Resolvendo problemas do CVS 12.1.4. Comandos CVS 12.2. Subversion 12.2.1. Instalando um servidor Subversion 12.2.2. Movendo um repositório CVS para Subversion 12.2.3. Exemplos de uso do Subversion 13. Programação 13.1. Onde começar 13.2. Shell 13.2.1. Bash -- o shell interativo padrão do _GNU_ 13.2.2. Shells POSIX 13.2.3. Parâmetros shell 13.2.4. Redirecionamento shell 13.2.5. Condicionais de shell 13.2.6. Processamento de linha de comando 13.3. Awk 13.4. Perl 13.5. Python 13.6. Make 13.7. C 13.7.1. Programa C simples (`gcc') 13.7.2. Depurando 13.7.3. Flex -- um Lex melhor 13.7.4. Bison -- um Yacc melhor 13.7.5. Autoconf 13.8. Preparação de documentos 13.8.1. Processamento de texto `roff' 13.8.2. SGML 13.8.3. TeX/LaTeX 13.8.4. Programação Letrada (Literate Programming) 13.9. Empacotamento 13.9.1. Empacotando um binário simples 13.9.2. Empacotando com ferramentas 14. GnuPG 14.1. Instalando GnuPG 14.2. Usando GnuPG 14.3. Gerenciando GnuPG 14.4. Usando GnuPG com aplicações 14.4.1. Usando GnuPG com Mutt 14.4.2. Usando GnuPG com o Vim 15. Suporte para o Debian 15.1. Referências 15.2. Descobrindo o significado de uma palavra 15.3. Descobrindo a popularidade de um pacote Debian 15.4. O sistema de gerenciamento de bugs Debian 15.5. Listas de discussão 15.6. Internet Relay Chat (IRC) 15.7. Mecanismos de busca 15.8. Sítios Web A. Apêndice A.1. Autores A.2. Garantias A.3. Retorno A.4. Formato do documento A.5. O labirinto do Debian A.6. As citações do Debian ------------------------------------------------------------------------------- 1. Prefácio ----------- Esta Referência Debian (http://qref.sourceforge.net/) tem como objetivo oferecer uma ampla visão do sistema Debian como um _guia do usuário pós-instalação_. O leitor alvo é alguém que esteja disposto a ler scripts shell. Espero que o leitor tenha conhecimentos anteriores em sistemas Unix-like antes de ler este documento. Tomei uma decisão consciente de _não_ explicar tudo em detalhes caso tais detalhes possam ser encontrados em uma _página de manual_, uma _página info_ ou um _documento HOWTO_. Ao invés de explicações completas, eu tentei oferecer informação prática mais diretamente fornecendo as _sequências de comandos exatas_ no texto principal ou _scripts de exemplo_ em http://www.debian.org/doc/manuals/debian-reference/examples/ como uma referência. Você deve entender o conteúdo dos exemplos antes de executá-los. Seu sistema pode requerer sequências de comandos ligeiramente diferentes. Muita informação incluída consiste de lembranças ou apontadores para as referências oficiais listadas em Seção 15.1, `Referências'. Isto é devido parcialmente a este documento ter sido originado como uma "_referência rápida_". _Matenha-o pequeno e simples_ (KISS) é meu princípio guia. Para ajuda com manutenção de emergência do sistema, pule imediamente para o Seção 6.3, `Comandos de sobrevivência do Debian'. 1.1. Documento Oficial ---------------------- O último documento oficial está nos repositórios Debian com o nome de pacote `debian-reference-pt-br' e está também disponível em http://www.debian.org/doc/manuals/debian-reference/. A última versão de desenvolvimento é http://qref.sourceforge.net/Debian/. O projeto é hospedado em http://qref.sourceforge.net/, onde este documento está disponível para download nos formatos texto puro, HTML, PDF, SGML e PostScript. 1.2. Convenções do documento ---------------------------- Este documento "Referência Debian" fornece informações através de pequenos comandos do shell Bash. Aqui estão algumas convenções usadas : # comando na conta root $ comando na conta do usuário ... descrição de ação Consulte Seção 13.2.1, `Bash -- o shell interativo padrão do _GNU_' para maiores informações sobre Bash. Referência para: * uma _página de manual Unix_ é indicada na forma bash(1). * uma _página GNU TEXINFO_ é indicado na forma `info libc'. * um _livro_ é indicado na forma _A linguagem de Programação C_. * uma _URL_ é indicada na forma http://www.debian.org/doc/manuals/debian-reference/. * um _arquivo_ no sistema é indicado na forma `/usr/share/doc/Debian/reference/'. As seguintes abreviações são usadas : * _LDP_ : Projeto de Documentação Linux (http://www.tldp.org/) * _DDP_ : Projeto de Documentação Debian (http://www.debian.org/doc/) Neste documento somente URLs são exibidas para documentos LDP, mas estes podem também ser obtidos como um pacote e instalados em `/usr/share/doc/HOWTO/'. Consulte Seção 15.1, `Referências'. 1.3. Scripts de exemplo ----------------------- Scripts de exemplo estão disponíveis no subdiretório de exemplos (http://www.debian.org/doc/manuals/debian-reference/examples/) instalado em `/usr/share/doc/Debian/reference/'; para arquivos ocultos, o "." inicial no nome do arquivo é convertido para caixa baixa "_". Uma extensão extra foi adicionada quando existem vários scripts de exemplo alternativos. 1.4. Configuração básica ------------------------ Caso o sistema esteja instalado com o mínimo de pacotes, certifique-se de executar os seguintes comandos para instalar alguns pacotes essenciais e alguns documentos chave : # aptitude install mc less ssh vim kernel-package \ manpages-dev doc-debian doc-linux-text \ debian-policy developers-reference maint-guide \ apt-howto harden-doc debian-reference \ libpam-doc glibc-doc samba-doc exim4-doc-html 1.5. Básico das distribuições Debian ------------------------------------ O Debian é oferecido em 3 "sabores" de distribuições : * `stable': Boa para usar em um servidor de produção. Chato para uma estação de trabalho (WS). Consulte Seção 2.1.3, `A distribuição `stable''. * `testing': Boa para usar em uma WS. Consulte Seção 2.1.4, `A distribuição `testing''. * `unstable': Nunca use-a cegamente. Consulte Seção 2.1.5, `A distribuição `unstable''. Leia pelo menos a lista de discussão chave `debian-devel-anounce@lists.debian.org' para atualizações sobre o estado do Debian. Em Março de 2002, estas três versões de distribuições correspondiam às versões de codinomes Potato (qualidade de produção), Woody (beta-teste, já bastante estável quando o lançamento era iminente), e Sid (alfa-teste). Em Agosto de 2002, logo após o lançamento do Woody, as distribuições correspondiam a Woody (qualidade de produção), Sarge (beta-teste, teria algumas arestas ruins por um tempo) e Sid (sempre alfa-teste). Quando os pacotes na `unstable' não possuem bugs críticos ao lançamento (RC) cadastrados para eles após a primeira semana ou mais, eles são automaticamente promovidos para a `testing'. Consulte Seção 2.1, `Os repositórios Debian'; Há duas maneiras de habilitá-lo a executar as últimas versões de software em um sistema. * Capítulo 5, `Atualizando uma distribuição para a `testing'' (principalmente para própositos de WS) * Seção 6.4.10, `Portar um pacote para o sistema `stable'' (principalmente para prósitos de servidor) Seguir o sabor `testing' do Debian tem o efeito colateral de obter correções de segurança muito lentamente. Então fique alerta. Se você misturar sabores do Debian, usando partes de `testing' ou `unstable' na `stable', você comumente será atualizado em muitos pacotes chaves de forma não intencional a partir da `testing' ou `unstable' que podem ter bugs. Então fique alerta. Executar os sabores `testing' ou `unstable' do Debian envolve um risco aumentado de encontrar bugs sérios. Esse risco pode ser gerenciado implementando um esquema de multi-inicialização com um sabor mais estável do Debian, ou implementando o truque legal de usar o `chroot' com o mais estável como descrito em Seção 8.6.34, ``chroot''. Esse último possibilitará executar diferentes sabores do Debian simultaneamente em consoles diferentes. Após explicar alguns fundamentos sobre a distribuição Debian em Capítulo 2, `Fundamentos Debian', apresentarei alguma informação básica para ajudá-lo a viver alegremente com o último software, tirando vantagem das distribuições `testing' e `unstable' do Debian. Os impacientes devem pular imediatamente para Seção 6.3, `Comandos de sobrevivência do Debian'. Feliz atualização ! ------------------------------------------------------------------------------- 2. Fundamentos Debian --------------------- Este capítulo fornece informação fundamental sobre o sistema Debian para não-desenvolvedores. Para informação oficial, consulte : * Manual de Políticas Debian * Referência do Desenvolvedor Debian * Guia do Novo Desenvolvedor Debian listados em Seção 15.1, `Referências'. Caso você esteja procurando por explicações "como-fazer" menos detalhadas, pule diretamente para Capítulo 6, `Gerenciamento de pacotes Debian' ou para outros capítulos relevantes. Este capítulo é baseado em documentos obtidos da "FAQ Debian", altamente reorganizados para permitir que o administrador de sistemas Debian comum possa começar. 2.1. Os repositórios Debian --------------------------- 2.1.1. Estruturas de diretório ------------------------------ O software que foi empacotado para o Debian está disponível em uma das diversas árvores de diretórios em cada site espelho Debian (http://www.debian.org/mirror/) através de FTP ou HTTP. Os seguintes diretórios podem ser encontrados em cada site espelho Debian sob o diretório `debian' : `dists/': Este diretório contém as "distribuições" e era a maneira canônica de acessar pacotes atuais disponíveis nas distribuições e pré-distribuições Debian. Alguns pacotes antigos, arquivos `Contents-*.gz', e arquivos `Packages.gz' ainda estão aqui. `pool/': A nova localização física para todos os pacotes das distribuições e pré-distribuições Debian. `tools/': Utilitários DOS para criação de discos de partida, particionamento de seu disco, compactação/descompactação de arquivos e inicialização do Linux. `doc/': A documentação básica do Debian, como o FAQ, instruções do sistema de relatos de bugs, etc. `indices/': O arquivo Maintainers e os arquivos override. `project/': em sua maioria materiais somente para desenvolvedores, como : `project/experimental/': Este diretório contém pacotes e ferramentas que ainda estão sendo desenvolvidos, e ainda estão em estágio alpha. Os usuários não deveriam estar usando pacotes daqui porque os mesmos podem ser perigosos e causarem danos mesmo para os mais experientes. `project/orphaned/': Pacotes que foram abandonados por seus antigos mantenedores e retirados da distribuição. 2.1.2. Distribuições Debian --------------------------- Nomalmente existem três distribuições Debian no diretório `dists'. Elas são nomeadas a distribuição `stable', a distribuição `testing' e a distribuição `unstable'. Algumas vezes existe também uma distribuição `frozen'. Cada distribuição é definida como uma ligação simbólica para a diretório real com um codinome no diretório `dists'. 2.1.3. A distribuição `stable' ------------------------------ As entradas de pacotes para a distribuição `stable', Debian Sarge (3.1r0), são mantidas no diretório `stable' (ligação simbólica para `sarge/'): * `stable/main/': Este diretório contém os pacotes que formalmente constituem a versão lançada mais recente do sistema Debian. Estes pacotes todos seguem as Linhas Guias Debian para o Software Livre (DFSG) (http://www.debian.org/social_contract#guidelines) (também disponível como `/usr/share/doc/debian/social-contract.txt' instalado por `debian-doc') e são todos livremente utilizáveis e livremente distribuídos. * `stable/non-free/': Este diretório contém pacotes da distribuição que são restritos de alguma forma que requer que os distribuidores tenham cuidado especial com requerimentos de direitos de cópia especificados. Por exemplo, alguns pacotes possuem licenças que proíbem sua distribuição comercialmente. Outros podem ser redistribuídos mas são de fato shareware e não software livre. As licenças de cada um desses pacotes devem ser estudadas, e possivelmente negociadas, antes que estes pacotes possam ser incluídos em qualquer redistribuição (por exemplo, em um CD-ROM). * `stable/contrib/': Este diretório contém pacotes que atendem aos requerimentos da DFSG e podem ser _livremente distribuídos_, mas de alguma forma dependem de um pacote que _não_ é livremente distribuível e portanto disponível somente na seção non-free. Agora, além das localizações acima, os pacotes físicos novos são localizados sob o diretório `pool' (Seção 2.1.10, `O diretório `pool''). O estado atual dos bugs da distribuição `stable' é relatado na página web Problemas da Stable (http://ftp-master.debian.org/testing/stable_probs.html). 2.1.4. A distribuição `testing' ------------------------------- As entradas de pacotes para a distribuição `testing', Debian Etch, são gravadas no diretório `testing' (ligação simbólica para `etch/') depois que os mesmos tenham passado por um certo nível de testes na `unstable'. Agora, além das localizações acima, novos pacotes físicos estão localizados sob o diretório `pool' (Seção 2.1.10, `O diretório `pool''). Existem também os subdiretótios `main', `contrib', e `non-free' na `testing', que têm as mesmas funções como na `stable'. Estes pacotes devem estar sincronizados em todas as arquiteturas onde eles foram compilados e não devem ter dependências que façam com que não seja possível instalá-los; eles também têm que possuir menos bugs críticos ao lançamento do que as versões atualmente na `unstable'. Dessa forma, esperamos que a `testing' esteja sempre perto de ser uma candidata ao lançamento. Maiores detalhes sobre o mecanismo da testing estão disponíveis em http://www.debian.org/devel/testing. O último estado da distribuição `testing' está relatado nestes sites : * desculpas de atualização (http://ftp-master.debian.org/testing/update_excuses.html) * problemas da testing (http://ftp-master.debian.org/testing/testing_probs.html) * bugs críticos ao lançamento (http://bugs.debian.org/release-critical/) * bugs do sistema básico (http://bugs.qa.debian.org/cgi-bin/base.cgi) * bugs em pacotes standard e em tarefas (http://bugs.qa.debian.org/cgi-bin/standard.cgi) * outros bugs e notas sobre festas de matança de bugs (http://bugs.qa.debian.org/) 2.1.5. A distribuição `unstable' -------------------------------- As entradas de pacotes para a distribuição `unstable', sempre com o codinome "Sid", são gravadas no diretório `unstable' (ligação simbólica para `sid/') depois que é feito o upload dos mesmos para o repositório Debian, e permanecem por lá até que são movidos para `testing/'. Novos pacotes físicos estão localizados sob o diretório `pool' (Seção 2.1.10, `O diretório `pool''). Existem também subdiretórios `main', `contrib' e `non-free' em `unstable/', que têm as mesmas funções como na `stable/'. A distribuição `unstable' contém um snapshot do sistema de desenvolvimento mais recente. Os usuários podem usar e testar estes pacotes, mas são alertados de seu estado de preparação. A vantagem de usar a distribuição `unstable' é que você está sempre em dia no projeto de software Debian --- mas se ele quebra, você tem que arrumar as coisas você mesmo :-) O estado atual dos bugs da distribuição `unstable' é relatado na página web Problemas da Unstable (http://ftp-master.debian.org/testing/unstable_probs.html). 2.1.6. A distribuição `frozen' ------------------------------ Quando a distribuição `testing' está madura o bastante, ela é congelada, o que significa que nenhum código novo é aceito, somente correções de bugs, caso necessário. Uma nova árvore testing também é criada no diretório `dists' e lhe é atribuído um novo nome. A distribuição frozen passa por alguns meses de testes, com atualizações intermitentes e congelamentos profundos chamados "ciclos de testes". Mantemos um registro dos bugs na distribuição frozen que podem atrasar o lançamento de um pacote ou bugs que possam atrasar o lançamento por completo. Uma vez que essa contagem de bugs seja minimizada até um valor aceitável, a distribuição frozen se torna estável, é lançada, e a distribuição stable anterior se torna obsoleta (e é movida para o repositório). 2.1.7. Codinomes das distribuições Debian ----------------------------------------- Nomes físicos de diretórios no diretório `dists/', como `sarge/' e `etch/', são somente "codinomes". Quando uma distribuição Debian está no estágio de desenvolvimento, ela não possui número de versão e sim um codinome. O propósito destes codinomes é tornar o espelhamento das distribuições Debian mais fácil (caso um diretório como `unstable' seja de repente mudado para `stable/', o download de uma porção de coisas teria que ser feito de novo desnecessariamente). Atualmente, `stable' é uma ligação simbólica para `sarge/' e `testing' é uma ligação simbólica para `etch/'. Isto significa que `Sarge' é a atual distribuição estável e `Etch' é a atual distribuição de testes. `unstable' é uma ligação simbólica permanente para `sid/', uma vez que Sid é sempre a distribuição instável. 2.1.8. Codinomes usados no passado ---------------------------------- Outros codinomes que já foram usados são : "Buzz" para a versão 1.1, "Rex" para a versão 1.2, "Bo" para as versões 1.3.x, "Hamm" para a versão 2.0, "Slink" para a versão 2.1, "Potato" para a versão 2.2, "Woody" para a versão 3.0, e "Sarge" para a versão 3.1. 2.1.9. A origem dos codinomes ----------------------------- Até agora eles foram personagens tirados do filme _Toy Story_ feito pela Pixar. * _Buzz_ (Buzz Lightyear) era o homem do espaço, * _Rex_ era o tiranossauro, * _Bo_ (Bo Peep) era a garota que cuidava do rebanho, * _Hamm_ era o porquinho cofre, * _Slink_ (Slinky Dog) era o cachorro de brinquedo, * _Potato_ era, claro, o Sr. Cabeça de Batata, * _Woody_ era o cowboy, * _Sarge_ era o líder dos Homens do Exército de Plástico Verde, * _Etch_ (Etch-a-Sketch) era o blackboard, * _Sid_ era o garoto da porta ao lado que destruía os brinquedos. 2.1.10. O diretório `pool' -------------------------- Historicamente, os pacotes eram mantidos em um subdiretório de `dists' correspondendo à distribuição que os continha. Isso acabou trazendo vários problemas, como um alto consumo de banda nos espelhos quando mudanças maiores eram feitas. Os pacotes são agoras mantidos em uma grande "piscina" (pool), estruturada de acordo com o nome do pacote fonte. Para que isso seja gerenciável, a piscina é subdividida por seções (`main', `contrib' e `non-free') e pela primeira letra do nome do pacote fonte. Estes diretórios contêm diversos arquivos: os pacotes binários para cada arquitetura, e os pacotes fontes a partir dos quais os pacotes binários foram gerados. Você pode descobrir onde cada pacote é colocado executando um comando como `apt-cache showsrc ' e olhando na linha "Directory:". Por exemplo, os pacotes do `apache' estão armazenados em `pool/main/a/apache/'. Como há muitos pacotes `lib*', esses são tratados especialmente: por exemplo, os pacotes `libpaper' estão armazenados em `pool/main/libp/libpaper/'. Os diretórios `dists' ainda são usados pelos arquivos de índice usados por programas como o `apt'. Além disso, no momento que escrevo, distribuições antigas não foram convertidas para usar piscinas portanto você verá caminhos contendo nomes de distribuições como `potato' ou `woody' no campo "Diretório" do cabeçalho. Normalmente, você não terá que se preocupar com isto, uma vez que o novo `apt' e provavelmente o antigo `dpkg-ftp' (consulte Seção 2.3.1, `Métodos para atualizar um sistema Debian') irão gerenciar isso sem problemas. Caso você queira mais informações, veja a RFC: implementation of package pools (http://lists.debian.org/debian-devel-announce/2000/debian-devel-announce-200010/msg00007.html). 2.1.11. Notas históricas sobre a Sid ------------------------------------ Quando a atual Sid não existia, a organização do site do repositório Debian tinha uma grande falha: existia uma pressuposição de que quando uma arquitetura era criada no `unstable/' atual, ela seria lançada quando esta distribuição virasse a nova `stable'. Para muitas arquiteturas esse não era o caso, e como resultado todos aqueles diretórios tiveram de ser movidos na época de lançamento. Isto era impraticável pois a movimentação comeria muita banda. Os administradores do repositório resolveram este problema por diversos anos colocando binários para arquiteturas não lançadas em um diretório especial chamado `sid'. Para aquelas arquiteturas ainda não lançadas, a primeira vez que as mesmas foram lançadas existia uma ligação do atual `stable/' para `sid/', e a partir de então elas eram criadas dentro da árvore `unstable/' como de costume. Este layout era de certa forma confuso para os usuários. Com o advento das piscinas de pacotes (consulte Seção 2.1.10, `O diretório `pool'') durante o desenvolvimento da distribuição Woody, pacotes binários começaram a ser armazenados em uma localização canônica na piscina, não importando a distribuição, assim lançar uma distribuição não mais causava grade consumo de banda nos espelhos (existe, porém, uma porção de consumo gradual de banda durante o processo de desenvolvimento). 2.1.12. Pacotes enviados para `incoming/' ----------------------------------------- Os pacotes enviados estão primeiro localizados em http://incoming.debian.org/ antes de serem checados para assegurar que eles realmente vieram de um desenvolvedor Debian (e são colocados no subdiretório `DELAYED' caso tenham sido enviados por um não-desenvolvedor (Non-Mantainer Upload - NMU)). Uma vez por dia, eles são movidos de `incoming/' para `unstable/'. Em uma emergência, você pode querer instalar pacotes de `incoming/' antes que eles atinjam `unstable/'. 2.1.13. Obtendo um pacote antigo -------------------------------- Enquanto a maioria das distribuições Debian atuais são mantidas sob o diretório `debian' em cada site espelho Debian (http://www.debian.org/mirror/), repositórios para distribuições Debian mais antigas como a Slink são mantidos em http://archive.debian.org/ ou sob o diretório `debian-archive' em cada site espelho Debian. Os pacotes antigos da `testing' e da `unstable' podem ser encontrados em http://snapshot.debian.net/. 2.1.14. Seções de Arquiteturas ------------------------------ Dentro de cada árvore maior de diretórios (`dists/stable/main', `dists/stable/contrib', `dists/stable/non-free', `dists/unstable/main/', etc.), as entradas do pacote binário residem em subdiretórios cujos nomes indicam a arquitetura do chip para o qual eles foram compilados. * `binary-all/', para pacotes que são independentes de arquitetura. Estes incluem, por exemplo, scripts Perl ou documentação pura. * `binary-/', para pacotes que executam em uma plataforma binária particular. Por favor note que os pacotes binários atuais para a `testing' e `unstable' não mais residem nestes diretórios, mas em um diretório de alto nível `pool'. Os arquivos de índice (`Packages' e `Packages.gz') foram mantidos, porém, para compatibilidade anterior. Para conhecer as arquiteturas binárias suportadas atualmente, consulte as Notas de Lançamento para cada distribuição. Elas podem ser localizadas nos sites das Notas de Lançamento para a stable (http://www.debian.org/releases/stable/releasenotes) e para a testing (http://www.debian.org/releases/testing/releasenotes). 2.1.15. O código-fonte ---------------------- O código-fonte está incluído para tudo no sistema Debian. Além disso, os termos das licenças da maioria dos programas no sistema _requerem_ que o código-fonte seja distribuído junto com os programas, ou que uma oferta para fornecer o código-fonte acompanhe os programas. Normalmente o código-fonte é distribuído nos diretórios `source', os quais são paralelos a todos os diretórios de binários para arquiteturas específicas ou, mais recentemente, no diretório `pool' (consulte Seção 2.1.10, `O diretório `pool''). Para obter o código-fonte sem ter estar familiarizado com a estrutura do repositório Debian , tente um comando como `apt-get source '. Alguns pacotes, notavelmente `pine', estão somente disponíveis como pacotes fonte devido a suas limitações de licenciamento. (Recentemente o pacote `pine-tracker' foi fornecido para facilitar a instalação do Pine.) Os procedimentos descritos em Seção 6.4.10, `Portar um pacote para o sistema `stable'' e Seção 13.9, `Empacotamento' fornecem meios para construir um pacote manualmente. O código-fonte pode ou não estar disponível para pacotes nos diretórios `contrib' e `non-free', os quais não são formalmente parte do sistema Debian. 2.2. O sistema de gerenciamento de pacotes Debian ------------------------------------------------- 2.2.1. Visão Geral dos pacotes Debian ------------------------------------- Pacotes geralmente contêm todos os arquivos necessários para implementar um conjunto de comandos relacionados ou recursos. Existem dois tipos de pacotes Debian : * _Pacotes binários_, os quais contém executáveis, arquivos de configuração, páginas de manual/info, informação de copyright e outra documentação. Estes pacotes são distribuídos em um formato de arquivo específico Debian (consulte Seção 2.2.2, `Formato de pacotes Debian'); eles são normalmente identificados por terem uma extensão de arquivo `.deb'. Pacotes binários podem ser desempacotados usando o utilitário Debian `dpkg'; detalhes são dados em sua página de manual. * _Pacotes fonte_, os quais consistem de um arquivo `.dsc' descrevendo o pacote fonte (incluindo os nomes dos arquivos a seguir), um arquivo `.orig.tar.gz' que contém o fonte original não modificado em formato tar e compactado com o gzip, e normalmente um arquivo `.diff.gz' que contém as mudanças específicas do Debian feitas em relação ao fonte original. O utilitário `dpkg-source' empacota e desempacota arquivos fonte Debian; detalhes são fornecidos em sua página de manual. A instalação de software pelo sistema de pacotes utiliza "dependências" que são cuidadosamente especificadas pelos mantenedores dos pacotes. Estas dependências estão documentadas no arquivo `control' associado a cada pacote. Por exemplo, o pacote contendo o compilador GNU C (`gcc') "depende" do pacote `binutils' que inclui o ligador e o montador. Caso um usuário tente instalar o `gcc' sem ter instalado primeiro o `binutils', o sistema de gerenciamento de pacotes (dpkg) emitirá uma mensagem de erro dizendo que ele precisa também do `binutils' e parará de instalar o `gcc'. (Porém, esta facilidade pode ser circulada pelo usuário insistente, consulte dpkg(8).) Para detalhes adicionais, consulte Seção 2.2.8, `Dependências de pacotes' abaixo. As ferramentas de empacotamento Debian podem ser usadas para : * manipular e gerenciar pacotes ou partes de pacotes, * auxiliar o usuário na separação de pacotes que devem ser transmitidos através de uma mídia de tamanho limitado, como disquetes, * auxiliar desenvolvedores na construção de repositórios de pacotes, e * auxiliar usuários na instalação de pacotes que se encontram em um site repositório Debian. 2.2.2. Formato de pacotes Debian -------------------------------- Um "pacote" Debian, ou um arquivo Debian, contém os arquivos executáveis, bibliotecas e documentação associada a um programa em particular ou a uma suíte ou conjunto de programas relacionados. Normalmente, um arquivo Debian tem um nome de arquivo finalizando em `.deb'. [1] Os detalhes do formato de pacote binário Debian estão descritos na página de manual deb(5). Devido a este formato interno estar sujeito a mudanças (entre versões maiores do Debian), sempre utilize o dpkg-deb(1) para manipular arquivos `.deb'. Pelo menos para a distribuição Sarge, todos os arquivos Debian são manipuláveis pelos comandos Unix padrões `ar' e `tar', mesmo quando comandos dpkg não estão disponíveis. [1] O projeto `debian-installer' introduziu nomes de arquivos de pacotes que terminam em `.udeb'. Resumidamente, isso é um formato micro-`.deb' que não precisa seguir a política Debian exatamente, faltando conteúdos como documentação e é dedicado a ser usado apenas pelo `debian-installer', o novo instalador Debian que está sendo desenvolvido para o lançamento do Sarge. Os formatos de arquivo `.deb' e `.udeb' são idênticos. O programa `udpkg' usado para manipular pacotes `.udeb' tem capacidade mais limitada que o `dpkg' padrão e suporta menos relacionamentos entre pacotes. A diferença no nome é porque os mantenedores de repositórios Debian não estavam contentes com `.deb's no repositório que não seguiam a política, então um nome diferente foi escolhido para destacar isso e diminuir a possibilidade das pessoas instalá-los inconscientemente em sistemas reais. Os `.udeb's são usados em um ramdisk inicial durante a instalação básica apenas para criar um sistema Debian muito restrito. 2.2.3. Convenções de nomenclatura para nomes de arquivos de pacotes Debian -------------------------------------------------------------------------- Os nomes de arquivos de pacotes Debian seguem a seguinte convenção : _-.deb onde representa o nome do pacote. Como uma checagem, pode-se determinar o nome do pacote associado a um arquivo Debian em particular (arquivo `.deb') em uma das seguintes maneiras : * inspecione o arquivo "Packages" no diretório onde o mesmo foi armazenado em um site repositório Debian . Este arquivo contém uma estrofe descrevendo cada pacote; o primeiro campo de cada estrofe é o nome formal do pacote. * use o comando `dpkg --info .deb' (onde e são a versão e a revisão do pacote em questão, respectivamente). Isto exibe, entre outras coisas, o nome do pacote do arquivo sendo desempacotado. O componente é o número de versão especificado pelo desenvolvedor original (upstream). Não existem padrões ditando números de versão, portanto eles podem ter formatos tão diferentes como "19990513" e "1.3.8pre1". O componente é um número de revisão Debian e é especificado pelo desenvolvedor Debian (ou um usuário individual caso o mesmo escolha construir o pacote ele mesmo). Este número corresponde ao nível de revisão do pacote Debian; portanto, um novo nível de revisão geralmente significa mudanças no Makefile Debian (`debian/rules'), no arquivo de controle Debian (`debian/control'), nos scripts de instalação ou remoção (`debian/p*') ou nos arquivos de configuração usados pelo pacote. 2.2.4. Preservação da configuração local ---------------------------------------- A preservação dos arquivos configuráveis pelo usuário é habilitada através do mecanismo "conffiles" do Debian. Arquivos de configuração do usuário (normalmente colocados em `/etc/') são especificados no `conffiles' dentro do sistema de pacotes Debian. O sistema de gerenciamento de pacotes garante a não sobreescrita destes arquivos quando o pacote é atualizado. Para determinar exatamente quais arquivos são preservados durante uma atualização, execute : dpkg --status e olhe em "Conffiles:". Detalhes sobre o conteúdo de um arquivo `confffiles' Debian são fornecidos no Manual de Políticas Debian, seção 11.7 (consulte Seção 15.1, `Referências'). 2.2.5. Scripts de manutenção Debian ----------------------------------- Os scripts de manutenção Debian são scripts executáveis que são automaticamente executados antes ou depois que um pacote é instalado. Junto com um arquivo de nome `control', todos esses arquivos são parte da seção "control" de um arquivo Debian. Os arquivo individuais são: preinst Este script é executado antes que seu pacote seja desempacotado de seu arquivo Debian (`.deb'). Muitos scripts "preinst" param serviços para os pacotes que estão sendo atualizados até que sua instalação ou atualização esteja completa (seguindo a execução com sucesso do script "postinst"). postinst Este script tipicamente completa qualquer configuração requerida de um pacote uma vez que o mesmo tenha sido desempacotado de seu arquivo Debian (`.deb'). Geralmente, scripts 'postinst' fazem perguntas aos usuários e/ou avisam o usuário que caso o mesmo aceite valores padrões ele deverá se lembrar de voltar e reconfigurar o pacote conforme a necessidade. Muitos scripts "postinst" executam então quaisquer comandos necessários para iniciar ou reiniciar um serviço uma vez que o novo pacote foi instalado ou atualizado. prerm Este script tipicamente pára quaisquer daemons que estão associados com um pacote. Ele é executado antes da remoção de arquivos associados com um pacote. postrm Este script tipicamente modifica ligações ou outros arquivos associados com um pacote e/ou remove arquivos criados pelo pacote. (Consulte também Seção 2.2.7, `Pacotes virtuais'.) Atualmente todos os arquivos de controle podem ser encontrados no `/var/lib/dpkg/info'. Os arquivos relevantes ao pacote `foo' iniciam com o nome "foo" e possuem extensões de arquivos "preinst", "postinst", etc, de acordo. O arquivo `foo.list' neste diretório lista todos os arquivos que foram instalados com o pacote `foo'. (Note que a localização destes arquivos é algo interno do dpkg, e pode estar sujeita a mudanças.) 2.2.6. Prioridade de pacotes ---------------------------- A cada pacote Debian é atribuído uma _prioridade_ pelos mantenedores da distribuição, como um auxílio ao sistema de gerenciamento de pacotes. As prioridades são : * Pacotes _Required_ são necessários para o funcionamento correto do sistema. Isso inclui todas as ferramentas necessárias para reparar defeitos no sistema. Você não deve remover esses pacotes ou seu sistema pode vir a se tornar completamente quebrado e você poderá provavelmente não ser capaz de usar o dpkg para colocar as coisas de volta em seus lugares. Sistemas somente com pacotes Required são provavelmente inutilizáveis para muitos propósitos, mas possuem funcionalidade o suficiente para permitir que o administrador do sistema inicie o sistema e instale mais software. * Pacotes _Important_ devem ser encontrados em qualquer sistema parecido com Unix. Outros pacotes sem os quais o sistema não funcionará bem ou não será muito útil se encaixam aqui. Isso _não_ inclui o Emacs ou X11 ou TeX ou quaisquer outras grandes aplicações. Esses pacotes constituem somente a infraestrutura mínima. * Pacotes _Standard_ são padrão em qualquer sistema Linux, incluindo um sistema em modo caracter razoavelmente pequeno mas não muito limitado. Isso é o que será instalado por padrão caso os usuários não selecionem mais nada. Isso não inclui muitas grandes aplicações, mas inclui o Emacs (ele é mais uma peça da infraestrutura do que uma aplicação) e um subconjunto razoável do Tex e LaTeX (caso isso seja possível sem o X). * Pacotes _Optional_ incluem todos aqueles pacotes que você poderia razoavelmente querer instalar mesmo caso não esteja familiarizado com eles e caso você não possua requerimentos especializados. Isso inclui X11, uma distribuição completa TeX e uma porção de aplicações. * Pacotes _Extra_ são pacotes que conflitam com outros pacotes com prioridades mais altas provavelmente, terão pouco uso para usuários que não são familiarizados a eles, ou têm requerimentos especiais que não os deixam ser encaixados em "Optional". 2.2.7. Pacotes virtuais ----------------------- Um pacote virtual é um nome genérico que se aplica a qualquer um de um grupo de pacotes, todos os quais oferecem funcionalidade básica similar. Por exemplo, os programas `tin' e `trn' são leitores de notícias e devem portanto satisfazer quaisquer dependências de um programa que requer um leitor de notícias no sistema para que funcione ou seja útil. É portanto dito que eles fornecem um "pacote virtual" chamado `news-reader'. Similarmente, o `exim' e o `sendmail' oferecem ambos a funcionalidade de um agente de transporte de mensagens, É portanto dito que eles fornecem o pacote virtual `mail-transport-agent'. Caso um dos dois esteja instalado, então qualquer programa que depende da instalação de um agente de transporte de mensagens estará satisfeito pela existência desse pacote virtual. O Debian possui um mecanismo que, se mais de um pacote que fornece o mesmo pacote virtual estiver instalado em um sistema, o administrador do sistema pode definir um como o pacote preferido. O comando relevante é `update-alternatives' e é descrito mais adiante em Seção 6.5.3, `Comandos alternativos'. 2.2.8. Dependências de pacotes ------------------------------ O sistema de pacotes Debian possui uma faixa de "dependências" de pacotes que é desenvolvida para indicar (com uma sinalização única) o nível no qual o Programa A pode operar independentemente da existência do Programa B em um dado sistema : * O Pacote A _depende_ do Pacote B se B precisar absolutamente estar instalado para que A possa ser executado. Em alguns casos, A depende não somente de B, mas de uma versão específica de B. Nestes casos, a dependência da versão é normalmente um limite mínimo, no sentido de que A depende em qualquer versão de B mais recente do que alguma versão especificada. * O Pacote A _recomenda_ o Pacote B caso o mantenedor do pacote julgue que a maioria dos usuários não iriam querer A sem também ter a funcionalidade fornecida por B. * O Pacote A _sugere_ o Pacote B caso B contenha arquivos que estejam relacionados a (e normalmente melhorem) a funcionalidade de A. * O Pacote A _conflita_ com o Pacote B quando A não funciona caso B esteja instalado no sistema. Na maioria das vezes, conflitos são casos onde A contém arquivos que são uma melhora daqueles em B. "Conflicts" (conflita) são normalmente combinados com "replaces" (substitui). * O Pacote A _substitui_ o Pacote B quando arquivos instalados por B são removidos e (em alguns casos) sobrescritos por arquivos em A. * O Pacote A _fornece_ o Pacote B quando todos os arquivos e as funcionalidades de B estão incorporadas em A. Este mecanismo oferece uma maneira para usuários com pouco espaço em disco obterem somente aquela parte do pacote A que realmente precisam. Informação mais detalhada sobre o uso de cada um desses termos pode ser encontrada no _Manual de Empacotamento_ e no _Manual de Políticas_. Note que o `dselect' possui um controle mais refinado sobre os pacotes especificados por _recomendações_ e _sugestões_ do que o `apt-get', o qual simplesmente pega todos os pacotes especificados como _dependências_ e deixa para trás os pacotes especificados como _recomendados_ e _sugestões_. Ambos os programas em sua forma moderna usam o APT como motor. 2.2.9. O significado de Pré-dependências ---------------------------------------- "Pre-depends" (pré-dependências) é uma dependência especial. No caso de um pacote comum, o `dpkg' irá desempacotar seu arquivo (ou seja, seu arquivo `.deb') independentemente dos arquivos dos quais este depende existirem ou não no sistema. Desempacotar significa que o `dpkg' irá extrair os arquivos de seu arquivo que foi criado para ser instalado em seu sistema e colocá-los nos lugares. Caso estes pacotes _dependam_ da existência de outros pacotes em seu sistema, o `dpkg' se recusará a completar a instalação (executando sua ação "configure") até que os outros pacotes sejam instalados. Porém, para alguns pacotes, o `dpkg' se recusará até mesmo a desempacotá-los até que certas dependências estejam resolvidas. É dito que tais pacotes "pré-dependem" da presença de outro(s) pacote(s). O projeto Debian forneceu este mecanismo para suportar a atualização segura do formato `a.out' para o formato `ELF', onde a ordem na qual os pacotes eram desempacotados era crítica. Existem outras situações de grandes atualizações onde este método é útil, por exemplo, para pacotes com prioridade "required" e sua dependência libc. Novamente, informação mais detalhada sobre isso pode ser encontrada no _Manual de Empacotamento_. 2.2.10. Estado do pacote ------------------------ O estado do pacote pode ser "unknow", "install", "remove", "purge" ou "hold". Estas flags "want" dizem o que o usuário quis fazer com o pacote (como indicado pelas ações do usuário na seção "Selecionar" do `dselect' ou pelas invocações diretas do `dpkg'). Seus significados são : * _unknown_ - o usuário nunca indicou se ele queria o pacote. * _install_ - o usuário quer o pacote instalado ou atualizado. * _remove_ - o usuário quer o pacote removido, mas não quer remover quaisquer arquivos de configuração. * _purge_ - o usuário quer que o pacote seja removido completamente, incluindo os arquivos de configuração. * _hold_ - o usuário quer que esse pacote não seja processado, ou seja, ele quer manter a versão atual no estado atual seja este qual for. 2.2.11. Evitando que pacotes sejam atualizados ---------------------------------------------- Existem dois mecanismos para evitar que pacotes sejam atualizados : através do `dpkg' ou, começando no Woody, através do APT. Com o `dpkg', exporte primeiro a lista de seleções de pacotes : dpkg --get-selections \* > Edite então o arquivo resultante `' mudando a linha contendo o pacote que você desejaria evitar que fosse atualizado, por exemplo, `libc6', disso: libc6 install para isso : libc6 hold Salve o arquivo e recarregue-o na base de dados do `dpkg' usando : dpkg --set-selections < Ou, caso você conheça o nome do pacote a ser mantido (hold), simplesmente execute : echo libc6 hold | dpkg --set-selections Este processo mantém pacotes no processo de instalação de cada arquivo de pacote. O mesmo efeito pode ser obtido através do `dselect'. Simplesmente entre na tela [S]elecionar, encontre o pacote que você deseja manter em seu estado atual e pressione a tecla `=' (ou `H'). As modificações serão válidas imediatamente depois que você sair da tela [S]elecionar. O sistema APT na distribuição Woody possui um novo mecanismo alternativo para manter pacotes durante o processo de obtenção do arquivo usando `Pin-Prioriry'. Consulte a página de manual apt_preferences(5), e também http://www.debian.org/doc/manuals/apt-howto/ ou o pacote `apt-howto'; Seção 6.2.8, `Visão geral do arquivo `/etc/apt/preferences'' também contém uma explicação breve. 2.2.12. Pacotes fonte --------------------- Pacotes fonte são distribuídos em um diretório chamado `source' e você pode fazer o download dos mesmos manualmente ou use apt-get source para obtê-los (consulte a página de manual apt-get(8) para maiores informações sobre como configurar o APT para fazer isso). 2.2.13. Construindo pacotes binários a partir de um pacote fonte ---------------------------------------------------------------- Para um pacote `', você precisará de todos os arquivos `.dsc', `.tar.gz' e `.gz' para compilar o fonte (nota: não existe `.diff.gz' para um pacote nativo Debian). Uma vez que você os tenha, caso você possua o pacote `dpkg-dev' instalado, o comando dpkg-source -x .dsc irá extrair o pacote em um diretório chamado `'. Execute os seguintes comandos para criar o pacote binário: $ cd foo-versão $ su -c "apt-get update ; apt-get install fakeroot" $ dpkg-buildpackage -rfakeroot -us -uc E então, # su -c "dpkg -i ../.deb" para instalar o novo pacote construído. Veja Seção 6.4.10, `Portar um pacote para o sistema `stable''. 2.2.14. Criando novos pacotes Debian ------------------------------------ Para uma descrição mais detalhada, leia o _Guia dos Novos Mantenedores_, disponível no pacote `maint-guide' ou em http://www.debian.org/doc/manuals/maint-guide/. 2.3. Atualizando um sistema Debian ---------------------------------- Um dos objetivos do Debian é oferecer um caminho de atualização consistente e um processo de atualização seguro, e nós sempre fazemos o máximo possível para que uma nova versão seja facilmente atualizável para quem atualiza da versão anterior. Pacotes irão alertar o usuário quando existirem notícias importantes durante o processo de atualização e irão frequentemente oferecer uma solução para um possível problema. Você deve também ler as Notas de Lançamento, o documento que descreve os detalhes de atualizações específicas, fornecido em todos os CDs Debian e disponível na WWW em http://www.debian.org/releases/stable/releasenotes ou http://www.debian.org/releases/testing/releasenotes. Um guia prático para atualizações está disponível em Capítulo 6, `Gerenciamento de pacotes Debian'. Esta seção descreve os detalhes fundamentais. 2.3.1. Métodos para atualizar um sistema Debian ----------------------------------------------- É possível simplesmente executar uma chamada FTP anônima ou usar o `wget' em um repositório Debian, procurar atentamente até que seja encontrado o arquivo desejado, fazer o download do mesmo e finalmente instalá-lo usando o `dpkg'. Note que o `dpkg' irá instalar arquivos de atualização em seus lugares, mesmo em um sistema em execução. Algumas vezes, um pacote revisado irá requerer a instalação de uma nova versão revisada de outros pacotes e neste caso a instalação irá falhar até que/a menos que os outros pacotes sejam instalados. Muitas pessoas acham que este método consome muito tempo, uma vez que o Debian se desenvolve tão rapidamente --- tipicamente, uma dúzia ou mais pacotes são disponibilizados toda semana. Este número é maior logo antes de um lançamento de uma versão maior. Para lidar com esta avalanche, muitas pessoas preferem usar um programa automatizado para atualizar. Diversas ferramentas de gerenciamento de pacotes especializadas estão disponíveis para este propósito. 2.3.2. Visão geral das ferramentas de gerenciamento de pacotes -------------------------------------------------------------- O sistema de gerenciamento de pacotes possui dois objetivos : a manipulação do arquivo de pacote propriamente dito e obtenção de arquivos de pacotes do repositório Debian. O `dpkg' executa a primeira tarefa e o APT e o `dselect' a última. 2.3.3. `dpkg' ------------- Este é o principal programa para manipular arquivos de pacotes; leia dpkg(8) para um descrição completa. O `dpkg' é fornecido com diversos programas suplementares primitivos. * dpkg-deb: Manipula arquivos `.deb'. dpkg-deb(1) * dpkg-ftp: Um antigo comando de obtenção de arquivos de pacotes. dpkg-ftp(1) * dpkg-mountable: Um antigo comando de obtenção de arquivos de pacotes. dpkg-mountable(1) * dpkg-split: Divide um pacote grande em arquivos menores. dpkg-split(1) O `dpkg-ftp' e `dpkg-mountable' ficaram obsoletos com a introdução do sistema APT. 2.3.4. APT ---------- O APT (Advanced Packaging Tool) é uma avançada interface para o sistema de gerenciamento de pacotes Debian, consistindo de vários programas cujos nomes tipicamente começam com "apt-". O `apt-get', `apt-cache' e o `apt-cdrom' são ferramentas de linha de comando para gerenciar pacotes. Eles também funcionam como programas "back-end" do usuário para outras ferramentas, como o `dselect' e o `aptitude'. Para maiores informações, instale o pacote `apt' e leia apt-get(8), apt-cache(8), apt-cdrom(8), apt.conf(5), sources.list(5), apt_preferences(5) (Woody), e `/usr/share/doc/apt/guide.html/index.html'. Uma fonte alternativa de informação é o APT HOWTO (http://www.debian.org/doc/manuals/apt-howto/). Este pode ser instalado pelo pacote `apt-howto' em `/usr/share/doc/Debian/apt-howto/'. `apt-get upgrade' e `apt-get dist-upgrade' instalam apenas os pacotes listados em "Depends:" e ignoram os pacotes listados em "Recommends:" e "Suggests:". Para evitar isso use o `dselect'. 2.3.5. `dselect' ---------------- Este programa é uma interface de usuário baseada em menus para o sistema de gerenciamento de pacotes Debian. Ele é particularmente útil para primeiras instalações e atualizações em larga escala. Veja Seção 6.2.3, ``dselect'' Para maiores informações, instale o pacote `install-doc' e leia `/usr/share/doc/install-doc/dselect-beginner.en.html' ou Documentação para Iniciantes do dselect (http://www.debian.org/releases/woody/i386/dselect-beginner). 2.3.6. Atualizando um sistema em execução ----------------------------------------- O kernel (sistema de arquivos) em sistemas Debian suporta a troca de arquivos mesmo quando estes estão sendo usados. Oferecemos também um programa chamado `start-stop-daemon' que é usado para iniciar daemons em tempo de inicialização da máquina ou para parar daemons quando o nível de execução do kernel é mudado (exemplo, de multiusuário para usuário único ou para halt). O mesmo programa é usado pelos scripts de instalação quando um novo pacote contendo um daemon é instalado, para parar daemons em execução, e reiniciá-los quando necessário. Note que o sistema Debian não requer o uso do modo de usuário único para atualizar um sistema em execução. 2.3.7. Arquivos `.deb' baixados e em cache ------------------------------------------ Caso você tenha feito o download de arquivos para seu disco (o que não é absolutamente necessário, veja acima a descrição de `dpkg-ftp' ou APT), depois de instalar os pacotes você pode removê-los de seu sistema. Caso o APT seja usado, esses arquivos são colocados em cache no diretório `/var/cache/apt/archives/'. Você pode apagá-los depos da instalação (`apt-get clean') ou copiá-los para o diretório `/var/cache/apt/archives/' de outra máquina para economizar tempo de download durante instalações subseqüentes. 2.3.8. Mantendo registros para atualizações ------------------------------------------- O `dpkg' mantém um registro dos pacotes que foram desempacotados, configurados, removidos e/ou expurgados, mas não mantém (atualmente) um log da atividade do terminal que ocorreu enquanto um pacote esteve sendo manipulado. A maneira mais simples de contornar isso é executar suas sessões `dpkg', `dselect', `apt-get', etc., dentro do programa script(1). 2.4. O processo de inicialização Debian --------------------------------------- 2.4.1. O programa `init' ------------------------ Como todos os Unices, o Debian inicia executando o programa `init'. O arquivo de configuração para o `init' (que é `/etc/inittab') especifica que o primeiro script a ser executado deve ser o `/etc/init.d/rcS'. Esse script executa todos os scripts em `/etc/rcS.d/' através do source ou fork de subprocessos, dependendo de sua extensão de arquivo, para executar a inicialização como a checagem e a montagem de sistemas de arquivos, carregamento de módulos, início de serviços de rede, configuração do relógio, etc. Então, por compatibilidade, ele também executa os arquivos (exceto aqueles com um `.' em seu nome) em `/etc/rc.boot' . Quaisquer scripts no diretório posterior são normalmente reservados para o uso do administrador do sistema e usá-los em pacotes é obsoleto. Veja Seção 9.1, `Inicialização do sistema' e Níveis de execução de Sistema e scripts init.d (http://www.debian.org/doc/debian-policy/ch-opersys#s-sysvinit) no Manual de Políticas Debian para maiores informações. 2.4.2. Níveis de execução ------------------------- Depois de completar o processo de inicialização, o `init' executa todos os scripts de inicialização em um diretório especificado pelo nível de execução padrão (este nível de execução é dado pela entrada para o `id' em `/etc/inittab'. Como a maioria dos Unices compatíveis com System V, o Linux possui 7 níveis de execução : * 0 (parar o sistema), * 1 (modo de usuário único), * 2 through 5 (vários modos multiusuário), e * 6 (reinicia o sistema). Sistemas Debian vêm com o valor `id=2', o que indica que o nível de execução padrão será 2 quando o estado multiusuário for iniciado e que os scripts em `/etc/rc2.d/' serão executados. De fato, os scripts em quaisquer dos diretórios em `/etc/rc.d/' são apenas ligações simbólicas que apontam para scripts em `/etc/init.d/'. Porém, os _nomes_ dos arquivos em cada um dos diretórios `/etc/rc.d/' são selecionados para indicar a _maneira_ que os scripts em `/etc/init.d/' serão executados. Especificamente, antes de entrar em qualquer nível de execução, todos os scripts iniciados com `K' são executados; esses scripts matam (param) serviços. Então todos os scripts iniciados com `S' são executados; esses scripts iniciam serviços. O número de dois dígitos seguido de `K' ou `S' indica a ordem na qual o script é executado. Scripts de menor valor numérico são executados primeiro. Esse método funciona porque todos os scripts em `/etc/init.d/' aceitam um argumento que pode ser "start" (iniciar), "stop" (parar), "reload" (recarregar), "restart" (reiniciar) ou "force-reload" (forçar-recarregar) e irão portanto cumprir a tarefa indicada pelo argumento. Esses scripts podem ser usados mesmo depois que um sistema tenha sido iniciado para controlar vários processos. Por exemplo, com o argumento "reload" o comando # /etc/init.d/exim4 reload envia ao daemon exim4 um sinal para que o mesmo releia seu arquivo de configuração. 2.4.3. Personalizando o processo de inicialização ------------------------------------------------- O Debian não utiliza o diretório `rc.local' no estilo BSD para personalizar o processo de inicialização; ao invés disso ele fornece o seguinte mecanismo de personalização. Suponha que um sistema precisa executar o script `foo' na inicialização da máquina ou ao entrar em um nível de execução (System V) em especifíco. O administrador do sistema deverá então : 1. Colocar o script `foo' dentro do diretório `/etc/init.d/'. 2. Executar o comando Debian `update-rc.d' com os argumentos apropriados para criar as ligações entre os diretórios (especificados na linha de comando) `rc.d' e `/etc/init.d/foo'. Aqui, é um número de 0 a 6 que corresponde a um dos níveis de execução System V. 3. Reiniciar o sistema. O comando `update-rc.d' criará as ligações entre os arquivos nos diretórios `rc.d' e o script em `/etc/init.d/'. Cada ligação iniciará com um `S' ou um `K', seguido por um número, seguido pelo nome do script. Quando o sistema entra em um nível de execução , scripts que iniciam com `K' em `/etc/rc.d/' são executados com `stop' como seu argumento, seguido por aqueles começando com `S' em `/etc/rc.d' com `start' como seu argumento. Alguém poderia, por exemplo, fazer com que o script `foo' seja executado na inicialização do sistema colocando-o em `/etc/init.d/' e instalando as ligações com o comando `update-rc.d foo defaults 19'. O argumento `defaults' se refere aos níveis de execução padrões, que são do nível 2 até o nível 5. O argumento `19' assegura que `foo' seja chamado antes de quaisquer scripts contendo números 20 ou superiores. 2.5. Suportando diversidades ---------------------------- O Debian suporta diversas maneiras de acomodar os desejos do administrador do sistema sem prejudicar o sistema. * `dpkg-divert', veja Seção 6.5.1, `O comando `dpkg-divert''. * `equivs', veja Seção 6.5.2, `O pacote `equivs''. * `update-alternative', veja Seção 6.5.3, `Comandos alternativos'. * `make-kpkg' pode acomodar muitos gerenciadores de inicialização. Consulte make-kpkg(1) e Seção 7.1.1, `Método Debian padrão'. Quaisquer arquivos sob `/usr/local/' pertencem ao administrador do sistema e o Debian não irá tocá-los. A maioria (ou todos) dos arquivos sob `/etc' são `conffiles' e o Debian não irá sobrescrevê-los em atualizações a menos que o administrador do sistema explicitamente peça isso. 2.6. Internacionalização ------------------------ O sistema Debian é internacionalizado e oferece suporte para a exibição e entrada de caracteres em muitos idiomas, seja no console ou sob o X. Muitos documentos, páginas de manual e mensagens do sistema foram traduzidos para um número crescente de idiomas. Durante a instalação o Debian pede ao usuário para escolher um idioma para ser usado na instalação (e algumas vezes o variante local do idioma). Caso seu sistema instalado não suporte todos os recursos do idioma que você precisa ou caso você precise mudar entre idiomas ou instalar um teclado diferente para suportar seu idioma, consulte Seção 9.7, `Localização'. 2.7. Debian e o kernel ---------------------- Consulte Capítulo 7, `O kernel Linux no Debian'. 2.7.1. Compilando um kernel a partir de um fonte não Debian ----------------------------------------------------------- Você precisa entender o política Debian em relação a cabeçalhos. As bibliotecas C Debian são construídas com as versões _estáveis_ mais atuais dos cabeçalhos do _kernel_. Por exemplo, a versão Debian-1.2 usou a versão 5.4.13 dos cabeçalhos. Esta prática contrasta com os pacotes fontes do kernel Linux distribuídos em todos os repositórios de sites FTP Linux, que usam as versões mais recentes até mesmo dos cabeçalhos. Os cabeçalhos do kernel distribuídos com os fontes do kernel estão localizados em `/usr/include/linux/include/'. Caso você precise compilar um programa com cabeçalhos de kernel que sejam mais novos do que aqueles fornecidos pelo pacote `lib6-dev', você deve então adicionar `-I/usr/src/linux/include/' a sua linha de comando quando compilar. Isto ocorreu em um momento, por exemplo, com o empacotamento do daemon automounter (`amd'). Quando novos kernels mudaram internamente em relação a lidar com NFS, o `amd' precisava saber disso. Para isso foi necessário incluir os últimos cabeçalhos do kernel. 2.7.2. Ferramentas para construir kernels personalizados -------------------------------------------------------- Usuários que desejam (ou precisam) construir um kernel personalizado são encorajados a fazer o download do pacote `kernel-package'. Este pacote contém o script para construir o pacote do kernel e oferece a capacidade de criar um pacote kernel-image Debian somente executando o comando # make-kpkg kernel_image no diretório de nível principal dos fontes do kernel. Ajuda é fornecida executando o comando # make-kpkg --help e através da página de manual make-kpkg(1) e Capítulo 7, `O kernel Linux no Debian'. Os usuários devem fazer o download separadamente do código fonte do kernel mais atual (ou o kernel de sua escolha) a partir de seu site repositório Linux favorito, a menos que um pacote kernel-source- esteja disponível (onde significa a versão do kernel). O script de inicialização `initrd' Debian requer um patch de kernel especial chamado `initrd'; consulte http://bugs.debian.org/149236. Informações detalhadas para o uso do pacote `kernel-package' são fornecidas no arquivo `/usr/doc/kernel-package/README'. 2.7.3. Condições especiais para lidar com módulos ------------------------------------------------- O pacote Debian `modconf' oferece um script shell (`/usr/sbin/modconf') que pode ser usado para personalizar a configuração dos módulos. Este script apresenta uma interface baseada em menus, perguntando ao usuário por detalhes sobre os controladores de dispositivos carregáveis em seu sistema. As respostas são usadas para personalizar o arquivo `/etc/modules.conf' (que lista apelidos e outros argumentos que devem ser usados em conjunto com outros módulos) através de arquivos em `/etc/modutils/' e `/etc/modules' (que listam os módulos que devem ser carregados em tempo de inicialização da máquina). Como os (novos) arquivos `Configure.help' que estão agora disponíveis para suportar a construção de kernels personalizados, o pacote `modconf' vem com uma série de arquivos de ajuda (em `/usr/share/modconf/') que oferecem informações detalhadas para cada um dos módulos. Consulte Seção 7.2, `O kernel 2.4 modularizado' para ver exemplos. 2.7.4. Desinstalação de um kernel antigo ---------------------------------------- O script `kernel-image-.prerm' checa se o kernel que está em execução atualmente é o mesmo que o kernel que você está tentando desinstalar. Portanto você pode remover pacotes de imagens kernel indesejáveis com segurança usando esse comando : # dpkg --purge --force-remove-essential kernel-image- (É claro, substitua pela versão de seu kernel e seu número de revisão) ------------------------------------------------------------------------------- 3. Dicas para instalação do Sistema Debian ------------------------------------------ A documentação oficial para instalação da Debian se encontra em http://www.debian.org/releases/stable/, e http://www.debian.org/releases/stable/installmanual. As versões em desenvolvimento são encontradas em http://www.debian.org/releases/testing/, e http://www.debian.org/releases/testing/installmanual (trabalho em progresso, pode algumas vezes não existir). Embora este capítulo tenha sido inicialmente escrito nos dias do lançamento do instalador da Potato, a maior parte dos seus conteúdos foi atualizada para o instalador do Woody e são instaladores muito similares. Como o Sarge usará um instalador totalmente novo, por favor, use isso como ponto de referência para o instalador do Sarge. 3.1. Dicas para instalação de sistemas Linux em geral ----------------------------------------------------- Não esqueça de conferir http://www.debian.org/CD/netinst/ se você está procurando uma imagem de CD compacto para o instalador Debian. Usar os sabores `testing' ou `unstable' do Debian aumenta o risco de ter bugs sérios. O risco pode ser gerenciado implementando um esquema de multi-inicialização com um sabor mais estável do Debian ou implementando o truque legal do `chroot' com o mais estável como descrito em Seção 8.6.34, ``chroot''. O último permitirá que você execute diferentes sabores do Debian simultaneamente em consoles diferentes. 3.1.1. O básico sobre a compatibilidade de hardware --------------------------------------------------- Linux é compatível com o hardware de muitos PC's e pode ser instalado frequentemente em qualquer sistema. Para mim foi tão fácil quanto instalar Windows 95/98/Me. E a lista de hardwares compatíveis parece continuar crescendo. Se você tem um PC portátil (laptop), confira Linux on Laptops (http://www.linux-laptop.net/) para instalação dos ponteiros (pointers) por marca e modelo. Minha recomendação sobre hardware para PC de mesa (desktop) é "Apenas seja conservador": * SCSI ao invés de IDE para o trabalho, disco rígido IDE/ATAPI para uso privado. * IDE/ATAPI CD-ROM (ou CD-RW). * PCI ao invés de ISA, especialmente para placas de rede (NIC). * Use uma placa de rede barata. Tulip para PCI, NE2000 para ISA são boas escolhas. * Evite PCMCIA (portátil) em sua primeira instalação Linux. * Sem teclados USB, mouse ... a menos que você queira aventurar-se. Se você tem uma máquina lenta, tirar fora o disco rígido e colocá-lo em outra máquina mais rápida é uma boa idéia. 3.1.2. Determinando hardware e chip set de um PC ------------------------------------------------ Durante a instalação, lhe será pedido que identifique o hardware ou chip set do PC. Às vezes esta informação pode não parecer fácil de encontrar. Aqui vai um método: 1. Abra o gabinete de seu PC e dê uma olhada dentro. 2. Anote os códigos de identificação dos chips grandes na placa de vídeo, placa de rede, chip próximo às portas seriais, chip próximo às portas IDE. 3. Anote o número de cartões impressos no verso das placas PCI e ISA. 3.1.3. Determinando o hardware de um PC via Debian -------------------------------------------------- Os comandos a seguir devem dar alguma idéia da configuração e hardware presentes num sistema Linux. $ lspci -v |pager $ pager /proc/pci $ pager /proc/interrupts $ pager /proc/ioports $ pager /proc/bus/usb/devices Estes comandos podem ser rodados durante o processo de instalação num terminal virtual teclando Alt-F2. Usos típicos de interrupções: * IRQ0: saída do temporizador (8254) * IRQ1: controlador de teclado * IRQ2: cascata para IRQ8--IRQ15 no PC-AT * IRQ3: porta serial secundária (io-port=0x2F8) (`/dev/ttyS1') * IRQ4: porta serial primária (io-port=0x3F8) (`/dev/ttyS0') * IRQ5: livre (era a interrupção do HD no XT) * IRQ6: controlador de disquetes (io-port=0x3F0) (`/dev/fd0', `/dev/fd1') * IRQ7: porta paralela (io-port=0x378) (`/dev/lp0') * IRQ8: rtc * IRQ9: interrupção de software (int 0x0A), redireciona para IRQ2 * IRQ10: livre * IRQ11: livre * IRQ12: Mouse PS/2 * IRQ13: livre (era do co-processador matemático 80287) * IRQ14: controlador IDE primário (`/dev/hda', `/dev/hdb') * IRQ15: controlador IDE secundário (`/dev/hdc', `/dev/hdd') Para dispositivos USB, as classes de dispositivos são listadas em `/proc/bus/usb/devices' como `Cls=': * Cls=00 : Sem uso * Cls=01 : Audio (alto-falante etc.) * Cls=02 : Comunicação (MODEM, NIC, ...) * Cls=03 : HID (Dispositivo de interface humana: teclado, mouse, joystick) * Cls=07 : Impressora * Cls=08 : Armazenamento de massa (FDD, drive CD/DVD, HDD, Flash, ...) * Cls=09 : Hub (hub USB) * Cls=255 : Específico de fabricante Se a classe de um dispositivo não for 255, o Linux tem suporte ao dispositivo. 3.1.4. Determinando o hardware de um PC por meio de outros SO's --------------------------------------------------------------- A informação sobre o hardware pode ser obtida a partir de outros SO's: Instale outra distribuição comercial Linux. A detecção de hardware tende, por ora, a ser melhor nestas do que é na Debian. (Esta situação deve mudar assim que o `debian-installer' for introduzido com a Sarge. Instale Windows. A configuração do hardware pode ser obtida pressionando o botão direito do mouse em "My Computer" para obter Propriedades / Gerenciador de Dispositivos. Anote todas as informações sobre os recursos tais como IRQ, endereço de porta I/O e DMA. Algumas placas ISA antigas podem precisar ser configuradas sob o DOS e usadas em conformidade. 3.1.5. Um mito sobre o Lilo --------------------------- "O Lilo está limitado a 1024 cilindros." Errado! O `lilo' mais recente, usado após a Debian Potato tem suporte a lba32. Se o BIOS de sua placa mãe é suficientemente recente para suportar lba32, o `lilo' deve ser capaz de carregar além da limitação do cilindro 1024. Apenas certifique-se de adicionar a linha "lba32" em algum lugar próximo ao início de seu arquivo `lilo.conf' se você tem mantido um `lilo.conf.' antigo. Confira `/usr/share/doc/lilo/Manual.txt.gz' 3.1.6. GRUB ----------- O novo carregador de inicialização `grub' do projeto GNU HURD pode ser instalado no sistema Debian Woody: # apt-get update # apt-get install grub-doc # mc /usr/share/doc/grub-doc/html/ ... leia o conteúdo # apt-get install grub # pager /usr/share/doc/grub/README.Debian.gz ... leia-o :) Para editar o menu do GRUB, edite `/boot/grub/menu.lst'. Veja Seção 8.1.6, `Definindo parâmetros de inicialização do GRUB' para saber como configurar os parâmetros de inicialização durante esta, pois é ligeiramente diferente da configuração do `lilo'. 3.1.7. Escolha dos disquetes de inicialização --------------------------------------------- Para Potato, gostava do conjunto de discos IDEPCI para instalação normal em um computador de mesa (desktop). Para Woody, gosto do conjunto de discos de inicialização bf2.4. Ambos usam uma versão de `boot-floppies' para criar os disquetes de inicialização. Se você tem uma placa de rede PCMCIA, você precisa usar o conjunto padrão de discos de inicialização (o maior número de disquetes mas todos os módulos disponíveis) e configurar a NIC na configuração PCMCIA; não tente configurar uma placa NIC no diálogo de configuração padrão da rede. Para sistemas especiais, você pode precisar criar um disco de recuperação otimizado. Isto pode ser feito substituindo a imagem do kernel denominada "linux" no disco de recuperação Debian sobrescrevendo-a com outra imagem comprimida do kernel compilada para a máquina fora do sítio (off-site). Detalhes são documentados em `readme.txt' no disco de recuperação. O disquete de recuperação usa o sistema de arquivos MS-DOS, assim você pode usar qualquer sistema para lê-lo e editá-lo. Isto deve tornar mais fácil a vida das pessoas com uma placa de rede especial, etc. Para o Sarge, espera-se usar o `debian-installer' e/ou `pgi' para criar os disquetes de inicialização. 3.1.8. Instalação ----------------- Siga as instruções oficiais encontradas em http://www.debian.org/releases/stable/installmanual ou http://www.debian.org/releases/testing/installmanual (trabalho em progresso; pode, às vezes, não existir). Se você está instalando um sistema usando os `boot-floppies' da distribuição `testing', você pode precisar abrir um terminal durante a instalação pressionando Alt-F2 e edite manualmente as entradas de `/etc/apt/sources.list', substituindo "stable" por "testing" para ajustar as fontes do APT. Costumo instalar o `lilo' em lugares como `/dev/hda3', e instalo `mbr' em `/dev/hda'. Isto diminui o risco de sobrescrever a informação de inicialização. Aqui está o que escolho durante o processo de instalação. * MD5 passwords "yes" * shadow passwords "yes" * Install "advanced" (dselect **) e selecione * Exclua emacs (se selecionado), nvi, tex, telnet, talk(d); * Inclua mc, vim e nano-tiny ou elvis-tiny. Veja Seção 6.2.3, ``dselect''. Mesmo que você seja fã do Emacs, evite-o por enquanto e se contente com nano durante a instalação. Evite também instalar grandes pacotes tais como TeX (Potato fazia isto) nesta fase. Veja Seção 11.2, `Editores de recuperação' para entender as razões que justificam instalar nano-tiny ou elvis-tiny aqui. * Para todas as perguntas de configuração durante o diálogo de instalação de cada pacote: "y" (substitua versão atual). * `exim': seleciono 2 para a máquina pois envio correio eletrônico através do servidor SMTP de meu provedor de internet. Para mais informações sobre dselect, veja Seção 6.2.3, ``dselect''. 3.1.9. Hosts e IP a usar para LAN --------------------------------- Exemplo de configuração de uma LAN (C subnet: 192.168.1.0/24): Internet | +--- ISP externo fornece serviço POP (acessado pelo fetchmail) | ISP de ponto de acesso fornece serviço DHCP e retransmissão SMTP | : Cable modem (Dialup) | : Porta externa da máquina gateway da LAN: eth0 (IP dado pelo DHCP do ISP) use PC portátil antigo (IBM Thinkpad, 486 DX2 50 MHz, 20MB RAM) rode kernel Linux 2.4 com sistema de arquivos ext3. rode o pacote "ipmasq" (com as correções (patch) mais fortes, NAT e firewall) rode o pacote "dhcp-client" configurado para eth0 (sobrescreve a configuração de DNS) rode o pacote "dhcp" configurado para eth1 rode "exim" como e modo de host auxiliar (smarthost, mode 2) rode "fetchmail" em longos períodos (fallback) rode "bind" como o cache do servidor de nomes para a Internet a partir da LAN como servidor de nomes autoritativo para o domínio da LAN a partir da LAN rode "ssh" na porta 22 e 8080 (conecte de qualquer lugar) rode "squid" como o servido de cache para o arquivo Debian (para APT) Porta interna da máquina gateway da LAN: eth1 (IP = 192.168.1.1, fixo) | +--- LAN Switch (100base T) ---+ | | Alguns clientes de IP fixos na LAN Alguns clientes DHCP na LAN (IP = 192.168.1.2-127, fixo) (IP = 192.168.1.128-200, dinâmico) Veja Capítulo 10, `Configuração de rede' para detalhes de configuração da rede. Veja Seção 10.12, `Construindo um roteador gateway' para detalhes de configuração do servidor gateway da LAN. 3.1.10. Contas de usuário ------------------------- Para manter a consistência entre diferentes máquinas, as primeiras contas são sempre as mesmas em meu sistema. Sempre crio a primeira conta de usuário com um nome como "admin" (uid=1000). Eu reenvio todo email para o root para lá. Esta conta está associada ao grupo `adm' (veja Seção 9.2.2, `"Por que o GNU `su' não suporta o grupo `wheel'"'), para o qual pode ser dado um grande número de privilégios root através do programa `su' usando PAM ou o comando `sudo'. Veja Seção 4.1.3, `Adicionar uma conta de usuário' para detalhes. 3.1.11. Criando sistemas de arquivo ----------------------------------- 3.1.11.1. Partição do disco rígido ---------------------------------- Eu prefiro usar partições diferentes em diferentes árvores de diretório para limitar o estrago numa eventual quebra do sistema. Por exemplo, / == (/ + /boot + /bin + /sbin) == 50MB+ /tmp == 100MB+ /var == 100MB+ /home == 100MB+ /usr == 700MB+ com X /usr/local == 100MB O tamanho do diretório `/usr' depende muito das aplicações do sistema X Window e da documentação. `/usr/' pode ter 300MB se rodamos apenas um terminal console, enquanto 2GB--3GB não é um tamanho incomum se temos muitas aplicações Gnome instaladas. Quando `/usr' ficar muito grande, mover `/usr/share/' para uma partição diferente é o remédio mais efetivo. Com os novos grandes kernels Linux 2.4 pré-empacotados, pode ser necessário mais do que 200MB. Por exemplo, o estado atual de minha máquina gateway para Internet é o seguinte (saída do comando `df -h'): Filesystem Size Used Avail Use% Mounted on /dev/hda3 300M 106M 179M 38% / /dev/hda7 100M 12M 82M 13% /home /dev/hda8 596M 53M 513M 10% /var /dev/hda6 100M 834k 94M 1% /var/lib/cvs /dev/hda9 596M 222M 343M 40% /usr /dev/hda10 596M 130M 436M 23% /var/cache/apt/archives /dev/hda11 1.5G 204M 1.2G 14% /var/spool/squid (A grande área reservada para `/var/spool/squid/' é para um proxy cache dos pacotes baixados.) Segue abaixo a saída de `fdisk -l' que fornece uma idéia da estrutura de particionamento: # fdisk -l /dev/hda # comentário /dev/hda1 1 41 309928+ 6 FAT16 # DOS /dev/hda2 42 84 325080 83 Linux # (não usada) /dev/hda3 * 85 126 317520 83 Linux # Principal /dev/hda4 127 629 3802680 5 Extended /dev/hda5 127 143 128488+ 82 Linux swap /dev/hda6 144 157 105808+ 83 Linux /dev/hda7 158 171 105808+ 83 Linux /dev/hda8 172 253 619888+ 83 Linux /dev/hda9 254 335 619888+ 83 Linux /dev/hda10 336 417 619888+ 83 Linux /dev/hda11 418 629 1602688+ 83 Linux Há poucas partições não usadas. São para instalação de uma segunda distribuição Linux ou para expandir árvores de diretórios crescentes. 3.1.11.2. Montar sistema de arquivos ------------------------------------ A montagem do sistema de arquivos acima é realizada corretamente com o seguinte `/etc/fstab': # /etc/fstab: informação de sistema de arquivos estático # # file system mount point type options dump pass /dev/hda3 / ext2 defaults,errors=remount-ro 0 1 /dev/hda5 none swap sw 0 0 proc /proc proc defaults 0 0 /dev/fd0 /floppy auto defaults,user,noauto 0 0 /dev/cdrom /cdrom iso9660 defaults,ro,user,noauto 0 0 # # manter partições separadas /dev/hda7 /home ext2 defaults 0 2 /dev/hda8 /var ext2 defaults 0 2 /dev/hda6 /var/lib/cvs ext2 defaults 0 2 # noatime aumentará velocidade de acesso a arquivo para leitura /dev/hda9 /usr ext2 defaults,noatime 0 2 /dev/hda10 /var/cache/apt/archives ext2 defaults 0 2 # partição muito grande para cache do proxy /dev/hda11 /var/spool/squid ext2 rw 0 2 # DOS inicializável de segurança (backup) /dev/hda1 /mnt/dos vfat rw,noauto 0 0 # sistema Linux inicializável de segurança (backup) (não feito) /dev/hda2 /mnt/linux ext2 rw,noauto 0 0 # # montagens nfs mickey:/ /mnt/mickey nfs ro,noauto,intr 0 0 goofy:/ /mnt/goofy nfs ro,noauto,intr 0 0 # minnie:/ /mnt/minnie smbfs ro,soft,intr,credentials={filename} 0 2 Para NFS, uso `noauto,intr' combinada com a opção padrão `hard'. Deste modo, é possível safar-se de um processo congelado devido a uma conexão morta usando Ctrl-C. Para uma máquina Windows conectada com Samba (smbfs), `rw,auto,soft,intr' pode ser uma boa idéia. Veja Seção 3.5, `Configuração do Samba'. Para os disquetes, `noauto,rw,sync,user,exec' ao contrário previne contra a corrupção de arquivos após a ejeção acidental do disquete antes de desmontá-lo, mas isto retarda o processo de escrita. 3.1.11.3. Montagem autofs ------------------------- Pontos chave para a montagem automática: * Carregue o módulo `vfat' para permitir que `/etc/auto.misc' contenha `-fstype=auto': # modprobe vfat # antes da tentativa de acesso ao disquete ... ou, para automatizar esta configuração, # echo "vfat" >> /etc/modules ... e reinicialize o sistema. * Configure `/etc/auto.misc' como se segue: floppy -fstype=auto,sync,nodev,nosuid,gid=100,umask=000 :/dev/fd0 ... onde gid=100 é "users". * Crie os links `cdrom' e `floppy' em `/home/', que apontem para `/var/autofs/misc/cdrom' e `/var/autofs/misc/floppy' respectivamente. * Adicione o um membro do grupo "users". 3.1.11.4. Montagem NFS ---------------------- O servidor NFS Linux (goofy) fica atrás de um firewall (gateway). Eu tenho uma política de segurança bastante aberta em minha LAN já que sou eu o único usuário. Para permitir acesso NFS, o lado do servidor precisa adicionar a `/etc/exports' o seguinte: # /etc/exports: the access control list for file systems which may be # exported to NFS clients. See exports(5). / (rw,no_root_squash) Isto é necessário para ativar o servidor NFS, além de instalar e ativar os pacotes de servidor e cliente NFS. Por simplicidade, normalmente crio uma partição única de 2GB para uma instalação experimental ou secundária de Linux. Opcionalmente, compartilho a partição de troca (swap) e a partição `/tmp' para estas instalações. Um esquema multipartição também é usado nestes casos. Se é necessário apenas um simples sistema console, 500MB pode ser mais do que suficiente. 3.1.12. Guia sobre memória DRAM ------------------------------- O que se segue é um guia grosseiro sobre DRAM. 4MB: Mínimo para o kernel Linux funcionar. 16MB: Mínimo para um sistema console razoável. 32MB: Mínimo para um sistema X simples. 64MB: Mínimo para o sistema X com GNOME/KDE. 128MB: Confortável para o sistema X com GNOME/KDE. 256MB: Por que não se você pode se dar ao luxo disto? DRAM é barata. Usando a opção de inicialização `mem=4m' (ou lilo `append="mem=4m"') mostrará como o sistema funcionaria com 4MB de memória instalada. É necessário o parâmetro de inicialização do lilo para sistemas que contém mais do que 64 MB de memória e um BIOS antigo. 3.1.13. Espaço de troca (swap) ------------------------------ Eu uso o seguinte guia para o espaço de troca: * Cada partição de troca é < 128MB (antigo kernel 2.0), < 2GB (em kernels recentes) * Total = ou 1 a 2 vezes a RAM instalada ou de 128MB a 2GB como orientação * Espalhe-as nos diferentes discos e monte-as com as opções `sw,pri=1' em `/etc/fstab'. Isto garante que o kernel faça um striping RAID das partições de troca (swap) e ofereça o máximo de performance na troca. * Use uma porção central do disco rígido, quando possível. Mesmo que você nunca precise disto, algum espaço de troca (128MB) é desejável pois assim o sistema ficará lento antes de congelar com um programa que consuma a memória. 3.2. Configuração do bash ------------------------- Eu modifico os scripts shell de inicialização a meu gosto no sistema: /etc/bash.bashrc Utilize sua cópia privada /etc/profile Mantenha a cópia da distribuição ( \w -> \W) /etc/skel/.bashrc Utilize sua cópia privada /etc/skel/.profile Utilize sua cópia privada /etc/skel/.bash_profile Utilize sua cópia privada ~/.bashrc Utilize sua cópia privada para todas as contas ~/.profile Utilize sua cópia privada para todas as contas ~/.bash_profile Utilize sua cópia privada para todas as contas Veja detalhes nos meus scripts de exemplo (http://www.debian.org/doc/manuals/debian-reference/examples/). Gosto de um sistema transparente, por isto configuro `umask' para 002 ou 022. `PATH' é configurado pelos seguintes arquivos de configuração, nesta ordem: /etc/login.defs - antes o shell configura PATH /etc/profile (pode chamar /etc/bash.bashrc) ~/.bash_profile (pode chamar ~/.bashrc) 3.3. Configuração do mouse -------------------------- 3.3.1. Mouses PS/2 ------------------ No caso de um mouse com conector do tipo PS/2 em uma placa mãe ATX, o fluxo do sinal deveria ser: mouse -> /dev/psaux -> gpm -> /dev/gpmdata = /dev/mouse -> X Aqui, um link simbólico para `/dev/mouse' é criado e aponta para `/dev/gpmdata' para tornar alguns utilitários de configuração felizes e mais a reconfiguração mais fácil. (Por exemplo, se você decide não usar o daemon `gpm', apenas aponte o link simbólico `/dev/mouse' para `/dev/psaux' após livrar-se do daemon `gpm'.) Este fluxo de sinal permite que o teclado e o mouse sejam desplugados e reinicializados com o `gpm' sendo rodado novamente na reconexão. O X permanecerá vivo! O protocolo do fluxo de sinal entre a saída do `gpm' e a entrada do X pode ser implementado de dois modos, mutuamente exclusivos, como "ms3" (usa o protocolo Microsoft 3-button serial mouse) ou "raw" (usa o mesmo protocolo do mouse que está conectado), e esta escolha determina a escolha do protocolo usado na configuração do X. Abaixo, mostrarei os exemplos de configuração usando um mouse Logitech 3-button (mouse Unix-style tradicional) PS/2 como modelo. Se você é um dos desafortunados cuja placa de vídeo não é suportada pelo novo X4 e precisa usar o antigo X3 (algumas placas ATI 64 bit), configure `/etc/X11/XF86Config' ao invés de `/etc/X11/XF86Config-4' nos exemplos a seguir e instale os pacotes X3. 3.3.1.1. A perspectiva do protocolo ms3 --------------------------------------- /etc/gpm.conf | /etc/X11/XF86Config-4 =========================+====================================== device=/dev/psaux | Section "InputDevice" responsiveness= | Identifier "Configured Mouse" repeat_type=ms3 | Driver "mouse" type=autops2 | Option "CorePointer" append="" | Option "Device" "/dev/mouse" sample_rate= | Option "Protocol" "IntelliMouse" | EndSection Se esta perspectiva é usada, o ajuste do tipo de mouse é feito apenas editando `gpm.conf' e a configuração do X permanece a mesma. Veja meus scripts de exemplo (http://www.debian.org/doc/manuals/debian-reference/examples/). 3.3.1.2. A perspectiva do protocolo raw --------------------------------------- /etc/gpm.conf | /etc/X11/XF86Config-4 =========================+====================================== device=/dev/psaux | Section "InputDevice" responsiveness= | Identifier "Configured Mouse" repeat_type=raw | Driver "mouse" type=autops2 | Option "CorePointer" append="" | Option "Device" "/dev/mouse" sample_rate= | Option "Protocol" "MouseManPlusPS/2" | EndSection Se esta perspectiva é usada, o ajuste do tipo de mouse é feito editando `gpm.conf' assim como ajustando a configuração do X. 3.3.1.3. Como ajustar um mice diferente --------------------------------------- O tipo de dispositivo do `gpm' `autops2' provavelmente autodetecta muitos dos mouses PS/2 no mercado. Infelizmente, nem sempre funciona e não está disponível nas versões pré-Woody. Para tais casos, tente usar `ps2', ou `imps2' em `gpm.conf' ao invés de `autops2'. Para descobrir quais tipos de mouse o `gpm' reconhece: `gpm -t help'. Veja gpm(8). Se um mouse PS/2 de 2 botões é usado, configure o X para habilitar `Emulate3Buttons'. A diferença de protocolo entre o mouse de 2 botões e o mouse de 3 botões é autodetectada a auto-ajustada para o `gpm' após apertar o botão central uma vez. Para o protocolo X com Seção 3.3.1.2, `A perspectiva do protocolo raw' ou com `gpm', use: * `IntelliMouse': mouse serial (repetidor `gpm' com "ms3") * `PS/2': mouse PS/2 (sempre teste este primeiro) * `IMPS/2': mouses PS/2 (2, 3, ou mouses de rolagem, melhor) * `MouseManPlusPS/2': mouse Logitech PS/2 * `...' Veja mais em Suporte a Mouse no XFree86 (http://www.xfree86.org/current/mouse.html). Sab-se que mouses de rolagem Microsoft típicos funcionam melhor com: /etc/gpm.conf | /etc/X11/XF86Config-4 =========================+====================================== device=/dev/psaux | Section "InputDevice" responsiveness= | Identifier "Configured Mouse" repeat_type=raw | Driver "mouse" type=autops2 | Option "CorePointer" append="" | Option "Device" "/dev/mouse" sample_rate= | Option "Protocol" "IMPS/2" | Option "Buttons" "5" | Option "ZAxisMapping" "4 5" | EndSection Para alguns pequenos portáteis Toshiba novos, ativar `gpm' antes do PCMCIA no script de inicialização System-V pode ajudar a prevenir o travamento do sistema. Estranho mas verdadeiro. 3.3.2. Mouses USB ----------------- Certifique-se que você tem todas as funções do kernel necessárias ativadas através de configurações feitas durante a compilação do kernel ou em módulos: * Em "Input core support": * "Input core support" (CONFIG_INPUT, `input.o'), * "Mouse support" (CONFIG_INPUT_MOUSEDEV, `mousedev.o'), * Em "USB support": * "Support for USB" (CONFIG_USB, `usbcore.o'), * "Preliminary USB device filesystem" (CONFIG_USB_DEVICEFS), * "UHCI" or "OHCI" (CONFIG_USB_UHCI || CONFIG_USB_UHCI_ALT || CONFIG_USB_OHCI, `usb-uhci.o' || `uhci.o' || `usb-ohci.o'), * "USB Human Interface Device (full HID) support" (CONFIG_USB_HID, `hid.o'), e * "HID input layer support" (CONFIG_USB_HIDINPUT) Aqui, nomes em minúsculas são nomes de módulos. Se você não está usando dvfs, crie um dispositivo nó (node) `/dev/input/mice' com major 13 e minor 63 como se segue: # cd /dev # mkdir input # mknod input/mice c 13 63 Para mouses _USB_ com roda típicos, as combinações de configuração deveriam ser: /etc/gpm.conf | /etc/X11/XF86Config-4 =========================+====================================== device=/dev/input/mice | Section "InputDevice" responsiveness= | Identifier "Generic Mouse" repeat_type=raw | Driver "mouse" type=autops2 | Option "SendCoreEvents" "true" append="" | Option "Device" "/dev/input/mice" sample_rate= | Option "Protocol" "IMPS/2" | Option "Buttons" "5" | Option "ZAxisMapping" "4 5" | EndSection Veja o Linux USB Project (http://www.linux-usb.org/) para mais informações. 3.3.3. Touch pad ---------------- Apesar de o touch pad no computador laptop emular um mouse de 2 botões PS/2 como seu comportamento padrão, o pacote `tpconfig' possibilita controle total do dispositivo. Por exemplo, configurando `OPTIONS="--tapmode=0"' no arquivo `/etc/default/tpconfig', desabilita-se o incômodo comportamento de "clique por batida leve". Configure o arquivo `/etc/gpm.conf' como a seguir para usar tanto o touch pad como o mouse USB externo no console: device=/dev/psaux responsiveness= repeat_type=ms3 type=autops2 append="-M -m /dev/input/mice -t autops2" sample_rate= 3.4. Configuração de NFS ------------------------ Habilite NFS configurando `/etc/exports'. # echo "/ *.domainname-for-lan-hosts(rw,no_root_squash,nohide)" \ >> /etc/exports Veja meus scripts de exemplo para detalhes (http://www.debian.org/doc/manuals/debian-reference/examples/). 3.5. Configuração do Samba -------------------------- Referências: * http://www.samba.org/ * `samba-doc' package Configurar o Samba com modo "share" é muito mais fácil pois este cria discos compartilhados tipo WfW. Mas é preferível configurá-lo com mode "ser". O Samba pode ser configurado através de `debconf' ou `vi': # dpkg-reconfigure --priority= samba # em Woody # vi /etc/samba/smb.conf Veja meus scripts de exemplo para detalhes (http://www.debian.org/doc/manuals/debian-reference/examples/). Pode-se adicionar um novo usuário ao arquivo `smbpasswd' via `smbpasswd': $su -c "smbpasswd -a username" Certifique-se de usar senhas criptografadas para uma compatibilidade excelente. Configure `os level' de acordo com o seguinte sistema de equivalências (maior o número, maior a prioridade como servidor): 0: Samba com uma atitude folgada (nunca se tornará um navegador mestre) 1: Wfw 3.1, Win95, Win98, Win/me? 16: Win NT WS 3.51 17: Win NT WS 4.0 32: Win NT SVR 3.51 33: Win NT SVR 4.0 255: Samba com enorme poder Certifique-se de que usuários sejam membros do grupo dono do diretório que deu acesso compartilhado e que o caminho do diretório tenha seu bit de execução configurado para acesso. 3.6. Configuração da Impressora ------------------------------- O método tradicional é `lpr'/`lpd'. Há um novo sistema: CUPS(TM) (Common UNIX Printing System). PDQ é outra opção. Veja Linux Printing HOWTO (http://www.tldp.org/HOWTO/Printing-HOWTO.html) para mais informações. 3.6.1. `lpr'/`lpd' ------------------ Para os spoolers do tipo `lpr'/`lpd' (`lpr', `lprng', e `gnulpr'), configure `/etc/printcap' como se segue, deste que conectado a um impressora PostScript ou somente texto (o básico): |:\ :sd=/var/spool/lpd/:\ :mx#0:\ :sh:\ :lp=/dev/lp0: Significado das linhas acima: * Linha cabeçalho: -- nome do spool, = alias * mx#0 -- tamanho máximo do arquivo é ilimitado * sh -- suprime a impressão da primeira página do cabeçalho * lp=/dev/lp0 -- dispositivo de impressora local, ou porta@host, se remota Esta é uma boa configuração se você está conectado a uma impressora PostScript. Além disto, quando imprimir a partir de uma máquina Windows através do Samba, esta é uma boa configuração para qualquer impressora suportada por Windows (nenhuma comunicação bidirecional é suportada). Você tem d e selecionar a configuração da impressora correspondente na máquina Windows. Se você não tem uma impressora PostScript, você precisa configurar um sistema de filtros usando `gs'. Há várias ferramentas para autoconfiguração com a finalidade de configurar `/etc/printcap'. Quaisquer destas combinações é uma opção: * `gnulpr', (`lpr-ppd') e `printtool' ---eu uso isto. * `lpr' e `apsfilter' * `lpr' e `magicfilter' * `lprng' e `lprngtool' * `lprng' e `apsfilter' * `lprng' e `magicfilter' Para rodar uma ferramenta de configuração GUI, tal como `printtool', veja Seção 9.4.12, `Obtendo root no X' para obter privilégios de root. Impressoras spools criadas com `printtool' usam `gs' e agem como impressoras PostScript. Assim, quando as acessar, use drivers de impressora PostScript. Na perspectiva do Windows, "Apple LaserWriter" é o único padrão. 3.6.2. CUPS(TM) --------------- Instale o Sistema de Impressão Comum UNIX (Common UNIX Printing System) (ou CUPS(TM)): # apt-get install cupsys cupsys-bsd cupsys-client cupsys-driver-gimpprint # apt-get install foomatic-db-engine foomatic-db-hpijs # apt-get install foomatic-filters-ppds foomatic-gui Então configure o sistema usando qualquer navegador web: $ http://localhost:631 Por exemplo, para adicionar sua impressora em alguma porta à lista de impressoras acessíveis: * clique "Printers" na página principal e, e então "Add Printer", * tecle "root" para o nome de usuário e sua senha, * adicione a impressora seguindo os prompts, * volte para a página "Printers" e clique "Configure Printer", e * configure o tamanho do papel, resolução, e outros parâmetros. Mais informação em http://localhost:631/documentation.html e http://www.cups.org/cups-help.html. 3.7. Outras dicas de instalação no host --------------------------------------- 3.7.1. Instalar mais alguns pacotes após a instalação inicial ------------------------------------------------------------- Desde que você já o tenha feito, já terá um pequeno mas funcional sistema Debian. É um bom momento para instalar pacotes maiores. * Rode `tasksel'. Veja Seção 6.2.1, `Instalar _tarefa_ com o `tasksel' ou `aptitude''. Você pode escolher estes, se necessário: * End-user (usuário final) -- X Window System * Development (desenvolvimento) -- C and C++ * Development -- Python * Development -- Tcl/Tk * Miscellaneous -- TeX/LaTeX environment * Para outros, eu prefiro usar o `tasksel' como um guia, olhando os componentes listados sob e instalando-os seletivamente através do `dselect'. * Rode `dselect'. Aqui, a primeira coisa que talvez você queira é selecionar seu editor favorito e quaisquer programas que você necessitar. Você pode instalar muitas variações do Emacs ao mesmo tempo. Veja Seção 6.2.3, ``dselect'' e Seção 11.1, `Editores populares'. Você pode também substituir alguns dos pacotes padrões por outros com muitos recursos. * ... * ... Normalmente, eu edito `/etc/inittab' para desligar facilmente. ... # O que fazer quando CTRL-ALT-DEL é pressionado. ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -h now ... 3.7.2. Módulos -------------- Módulos para os gerenciadores de dispositivo são configurados durante a instalação inicial. Posteriormente `modconf' oferece um modo de configuração dos módulos que é gerenciado por menus. Este programa é muito útil quando alguns módulos foram esquecidos na instalação inicial ou um novo kernel foi instalado após esta. O nome dos módulos pré-carregados devem ser listados em `/etc/modules'. Eu também uso `lsmod' e `depmod' para controlá-los manualmente. Certifique-se, também de adicionar algumas linhas em `/etc/modules' para lidar com mascaramento de IP (FTP, etc.) em kernels 2.4. Veja Seção 7.2, `O kernel 2.4 modularizado', especificamente Seção 7.2.3, `Função de rede'. 3.7.3. Configuração básica de CD-RW ----------------------------------- Edite os seguintes arquivos: /etc/lilo.conf (adicione append="hdc=ide-scsi ignore=hdc", rode lilo para ativar) /dev/cdrom (symlink # cd /dev; ln -sf scd0 cdrom) /etc/modules (adicione "ide-scsi" e "sg". Se necessário, "sr" após isto.) Veja Seção 9.3, `Gravadores de CD' para detalhes. 3.7.4. Memória grande e autodesligamento ---------------------------------------- Edite o `/etc/lilo.conf' como se segue para configurar os parâmetros de inicialização para memória grande (para kernels 2.2) e autodesligamento (para APM): append="mem=128M apm=on apm=power-off noapic" Rode o `lilo' para instalar estas configurações. `apm=power-off' é necessário para um kernel SMP e `noapic', para evitar problemas com meu hardware SMP cheio de bugs. O mesmo pode ser feito diretamente, inserindo as opções no prompt de inicialização. Veja Seção 8.1.5, `Outros truques de inicialização com o prompt de inicialização'. Se o APM está compilado como um módulo, como nos kernels 2.4 padrão da Debian, rode `insmod apm power_off=1' após a inicialização ou configure `/etc/modules' com: # echo "apm power_off=1" >>/etc/modules Alternativamente, ao compilar suporte a ACPI obtém-se o mesmo resultado com kernels mais novos e parece ser mais SMP-amigável (isto requer uma placa mãe mais nova). O kernel 2.4 em placas mãe mais novas detecta corretamente grandes memórias. CONFIG_PM=y CONFIG_ACPI=y ... CONFIG_ACPI_BUSMGR=m CONFIG_ACPI_SYS=m e adicione as seguintes linhas em `/etc/modules' nesta ordem: ospm_busmgr ospm_system Ou recompile o kernel com todas as opções acima configuradas como "y". De qualquer maneira, nenhum destes parâmetros de inicialização são necessários com ACPI. 3.7.5. Estranhos problemas de acesso a alguns websites ------------------------------------------------------ Kernels linux mais novos habilitam ECN por padrão (default), o que pode causar problemas de acesso em alguns websites com roteadores ruins. Para checar o status ECN: # cat /proc/sys/net/ipv4/tcp_ecn ... ou # sysctl net.ipv4.tcp_ecn Para desabilitá-lo, use: # echo "0" > /proc/sys/net/ipv4/tcp_ecn ... ou # sysctl -w net.ipv4.tcp_ecn=0 Para desabilitar TCP ECN em toda inicialização, edite `/etc/sysctl.conf' e adicione: net.ipv4.tcp_ecn = 0 3.7.6. Configuração Dialup PPP ------------------------------ Instale o pacote `pppconfig' para configurar o acesso dial-up PPP. # apt-get install pppconfig # pppconfig ... siga as instruções para configurar dialup PPP # adduser dip ... permita que acesse dialup PPP Acesso dialup PPP pode ser iniciado pelo usuário (): $ pon # inicia o acesso PPP a seu ISP ... navegue na Internet $ poff # encerra o acesso PPP, opcional Veja `/usr/share/doc/ppp/README.Debian.gz' para mais detalhes. Alternativamente, o pacote `wvdial' pode ser usado para configurar o acesso dialup PPP. Por favor, note que há um bug http://bugs.debian.org/82095 bem conhecido, que algumas vezes impede que usuários não-root façam a discagem (dialing). Todos os discadores (dialers) usam o daemon `pppd', que inicia os programas encontrados em `/etc/ppp/ip-up.d/' ou `/etc/ppp/ip-down.d' depois de conectar ou desconectar. Isso é usado para receber e enviar mensagens. 3.7.7. Outros arquivos de configuração para fuçar em `/etc/' ------------------------------------------------------------ Você pode querer adicionar um arquivo `/etc/cron.deny' que não venha na instalação da distribuição Debian padrão (você pode copiar `/etc/at.deny'). ------------------------------------------------------------------------------- 4. Tutoriais do Debian ---------------------- Essa seção fornece uma orientação básica para o mundo Debian para o