CURSO DE PÓS-GRADUAÇÃO “LATO SENSU” (ESPECIALIZAÇÃO) A DISTÂNCIA ADMINISTRAÇÃO EM REDES LINUX
LINUX INTERMEDIÁRIO
Joaquim Quinteiro Uchôa Luiz Eduardo Simeone Matheus Garcia Barbosa Figueiredo Samuel Pereira Dias
UFLA - Universidade Federal de Lavras FAEPE - Fundação de Apoio ao Ensino, Pesquisa e Extensão Lavras – MG
PARCERIA UFLA – Universidade Federal de Lavras FAEPE – Fundação de Apoio ao Ensino, Pesquisa e Extensão REITOR Fabiano Ribeiro do Vale VICE-REITOR Antônio Nazareno Guimarães Mendes DIRETOR DA EDITORA Marco Antônio Rezende Alvarenga PRÓ-REITOR DE PÓS-GRADUAÇÃO Luiz Edson Mota de Oliveira PRÓ-REITOR ADJUNTO DE PÓS-GRADUAÇÃO “LATO SENSU” Antônio Ricardo Evangelista COORDENADOR DO CURSO Joaquim Quinteiro Uchôa PRESIDENTE DO CONSELHO DELIBERATIVO DA FAEPE Antônio Eduardo Furtini Neto EDITORAÇÃO Grupo Ginux (http://ginux.comp.ufla.br/) IMPRESSÃO Gráfica Universitária/UFLA Ficha Catalográfica preparada pela Divisão de Processos Técnicos da Biblioteca Central da UFLA Linux Intermediário / Joaquim Quinteiro Uchôa, Luiz Eduardo Simeone, Matheus Garcia Barbosa Figueiredo, Samuel Pereira Dias. – Lavras: UFLA/FAEPE, 2003. 130 p.: il. - Curso de Pós-Graduação “Lato Sensu” (Especialização) a Distância: Administração em Redes Linux Bibliografia. 1. Linux. 2. UNIX. 3. Sistemas Operacionais 4. Interface Homem-Máquina 5. Informática. I. DCC II. Universidade Federal de Lavras. III. Fundação de Apoio ao Ensino, Pesquisa e Extensão. IV. Título. CDD-005.43 Nenhuma parte desta publicação pode ser reproduzida, por qualquer meio ou forma , sem a prévia autorização.
SUMÁRIO
1 Introdução
11
2 Introdução ao Linux 2.1 Kernel e Linux . . . . . . . . . . . . . . 2.2 Distribuições e Suas Características . . 2.2.1 O que é uma Distribuição . . . . 2.2.2 Slackware . . . . . . . . . . . . . 2.2.3 Distribuições Baseadas em RPM 2.2.4 Debian . . . . . . . . . . . . . . 2.3 Modo Gráfico x Modo Texto . . . . . . . 2.4 Instalando o Linux . . . . . . . . . . . .
. . . . . . . .
13 13 14 14 14 14 15 15 16
. . . . . . . . . . . . . . . . . . . . . . . . . .
17 17 18 19 19 20 21 24 24 25 26 27 28 35 40 41 41 44 46 48 48 49 53 53 55 58 60
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
3 GUI - Graphical User Interface 3.1 O Servidor Gráfico . . . . . . . . . . . . . . . . . . 3.2 Gerenciadores de Janela e de Ambiente . . . . . . 3.3 Gerenciadores de Janela mais comuns . . . . . . 3.3.1 KDE . . . . . . . . . . . . . . . . . . . . . . 3.3.2 GNOME . . . . . . . . . . . . . . . . . . . . 3.3.3 WindowMaker . . . . . . . . . . . . . . . . 3.3.4 TWM . . . . . . . . . . . . . . . . . . . . . 3.3.5 FVWM . . . . . . . . . . . . . . . . . . . . . 3.3.6 XFce . . . . . . . . . . . . . . . . . . . . . . 3.4 Aplicativos Gráficos em Linux . . . . . . . . . . . . 3.4.1 Editores de Texto . . . . . . . . . . . . . . . 3.4.2 Software para Internet . . . . . . . . . . . . 3.4.3 Aplicativos e Pacotes para Escritório . . . . 3.4.4 IDEs - Integrated Development Enviroment 3.4.5 Glimmer . . . . . . . . . . . . . . . . . . . . 3.4.6 Depuradores . . . . . . . . . . . . . . . . . 3.5 Editores HTML . . . . . . . . . . . . . . . . . . . . 3.5.1 SCREEM . . . . . . . . . . . . . . . . . . . 3.6 Editores Gráficos . . . . . . . . . . . . . . . . . . . 3.6.1 Editores Bitmap . . . . . . . . . . . . . . . 3.6.2 Editores Vetoriais . . . . . . . . . . . . . . . 3.7 Visualizadores . . . . . . . . . . . . . . . . . . . . 3.7.1 Visualizadores de Imagens . . . . . . . . . 3.7.2 Visualizadores PostScript e PDF . . . . . . 3.8 Aplicativos de Música, Vídeo e Entretenimento . . 3.9 Comentários Finais . . . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
4 O Console Linux 4.1 Conceitos Básicos . . . . . . . . . . . . . . . . . . . . 4.2 Comandos para Manipulação de Arquivos e Diretórios 4.2.1 Comando cd . . . . . . . . . . . . . . . . . . . 4.2.2 Comando pwd . . . . . . . . . . . . . . . . . . 4.2.3 Comando ls . . . . . . . . . . . . . . . . . . . 4.2.4 Comando mkdir . . . . . . . . . . . . . . . . . 4.2.5 Comando rmdir . . . . . . . . . . . . . . . . . 4.2.6 Comando rm . . . . . . . . . . . . . . . . . . . 4.2.7 Comando mv . . . . . . . . . . . . . . . . . . . 4.2.8 Comando cp . . . . . . . . . . . . . . . . . . . 4.2.9 Comando touch . . . . . . . . . . . . . . . . . 4.2.10 Comando ln . . . . . . . . . . . . . . . . . . . 4.2.11 Comando chmod . . . . . . . . . . . . . . . . . 4.2.12 Comando chown . . . . . . . . . . . . . . . . . 4.2.13 Comando chgrp . . . . . . . . . . . . . . . . . 4.2.14 Comando mount . . . . . . . . . . . . . . . . . 4.2.15 Comando umount . . . . . . . . . . . . . . . . 4.3 Comandos de Transição do MS-DOS para Linux . . . 4.3.1 Comando mdir . . . . . . . . . . . . . . . . . 4.3.2 Comando mcopy . . . . . . . . . . . . . . . . . 4.3.3 Comando mformat . . . . . . . . . . . . . . . 4.4 Comandos de Visualização, Busca e Ordenação . . . 4.4.1 Comando less . . . . . . . . . . . . . . . . . 4.4.2 Comando cat . . . . . . . . . . . . . . . . . . 4.4.3 Comando tail . . . . . . . . . . . . . . . . . 4.4.4 Comando head . . . . . . . . . . . . . . . . . 4.4.5 Comando find . . . . . . . . . . . . . . . . . 4.4.6 Comando locate . . . . . . . . . . . . . . . . 4.4.7 Comando sort . . . . . . . . . . . . . . . . . 4.4.8 Comando wc . . . . . . . . . . . . . . . . . . . 4.4.9 Comando grep . . . . . . . . . . . . . . . . . 4.5 Comandos de Compactação . . . . . . . . . . . . . . 4.5.1 Comandos zip e unzip . . . . . . . . . . . . 4.5.2 Comandos gzip e gunzip . . . . . . . . . . . 4.5.3 Comandos bzip2 e bunzip2 . . . . . . . . . 4.5.4 Comando tar . . . . . . . . . . . . . . . . . . 4.6 Comandos para Gerenciamento de Processos . . . . 4.6.1 Comandos ps e top . . . . . . . . . . . . . . . 4.6.2 Comandos nice e renice . . . . . . . . . . . 4.6.3 Comando kill . . . . . . . . . . . . . . . . . 4.7 Comandos Diversos do Console . . . . . . . . . . . . 4.7.1 Comando exit . . . . . . . . . . . . . . . . . 4.7.2 Comando clear . . . . . . . . . . . . . . . . . 4.7.3 Comando date . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
63 63 64 64 65 65 65 67 68 69 69 70 71 72 73 74 75 75 76 77 77 78 78 79 80 80 81 82 83 83 83 85 85 86 87 88 88 89 90 91 92 93 93 94 94
4.7.4 Comando who . . . . . . . . . . 4.7.5 Comando cal . . . . . . . . . . 4.7.6 Comando passwd . . . . . . . . Pipes . . . . . . . . . . . . . . . . . . . Editores de Texto no Terminal . . . . . . 4.9.1 VIM . . . . . . . . . . . . . . . . 4.9.2 JOE . . . . . . . . . . . . . . . . 4.9.3 Pico . . . . . . . . . . . . . . . . 4.9.4 GNU nano . . . . . . . . . . . . Aplicativos Diversos em Modo Terminal 4.10.1 Pine . . . . . . . . . . . . . . . . 4.10.2 Lynx . . . . . . . . . . . . . . . . 4.10.3 Links . . . . . . . . . . . . . . . . 4.10.4 Mutt . . . . . . . . . . . . . . . . Outros Aplicativos em Modo Texto . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
95 96 97 97 97 97 99 99 101 101 101 102 103 103 103
5 Obtendo Ajuda 5.1 Páginas man . . . . . . . . . . . . . . . 5.2 Infos . . . . . . . . . . . . . . . . . . . . 5.3 Ajuda por Linha de Comando . . . . . . 5.4 Documentação on-line . . . . . . . . . . 5.4.1 Grupos de discussão da Usenet 5.4.2 Listas de Discussão . . . . . . . 5.4.3 O LDP . . . . . . . . . . . . . . . 5.4.4 O Rau-Tu da Unicamp . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
107 107 108 110 110 111 112 113 114
. . . . . . . . . . . . .
115 115 117 120 121 121 122 122 123 123 125 125 126 126
4.8 4.9
4.10
4.11
6 Instalação de Aplicativos 6.1 Conceitos Básicos . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2 Instalando Pacotes . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3 Removendo Pacotes Indesejados . . . . . . . . . . . . . . . . . 6.4 Atualizando Pacotes Instalados . . . . . . . . . . . . . . . . . . . 6.5 Consultas Básicas aos Pacotes . . . . . . . . . . . . . . . . . . . 6.5.1 Listando Todos os Pacotes Instalados . . . . . . . . . . . 6.5.2 Consultando um Pacote não Instalado . . . . . . . . . . . 6.5.3 Consultando Informações de um Pacote . . . . . . . . . . 6.5.4 Consultando as Dependências de um Pacote . . . . . . . 6.5.5 Consultando as Capacidades de um Pacote . . . . . . . 6.5.6 Consultado os Arquivos Instalados por um Pacote . . . . 6.5.7 Consultando qual Pacote Instalou um Arquivo Específico 6.6 Onde Encontrar Pacotes e Dependências . . . . . . . . . . . . . Referências Bibliográficas
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
129
LISTA DE FIGURAS
3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 3.15 3.16 3.17 3.18 3.19 3.20 3.21 3.22 3.23 3.24 3.25 3.26 3.27 3.28 3.29 3.30 3.31 3.32 3.33 3.34 3.35 3.36 3.37 3.38 3.39 3.40 3.41
Servidor X com 4 Clientes Conectados . . . . . . . . Sessão KDE com Aplicativos . . . . . . . . . . . . . Gerenciador de Janelas GNOME . . . . . . . . . . . Gerenciador de Janelas WindowMaker . . . . . . . . Dock e Clip . . . . . . . . . . . . . . . . . . . . . . . Ferramenta de Preferências do WindowMaker . . . TWM – Um dos Primeiros Gerenciadores de Janelas Gerenciador de Janelas FVWM . . . . . . . . . . . . Ambiente XFce . . . . . . . . . . . . . . . . . . . . . Gedit – Editor de Texto do GNOME . . . . . . . . . . Editor de texto XEmacs . . . . . . . . . . . . . . . . Tela inicial do Mozilla . . . . . . . . . . . . . . . . . . Navegador Galeon . . . . . . . . . . . . . . . . . . . Navegador Konqueror . . . . . . . . . . . . . . . . . Cliente de E-mail do Evolution . . . . . . . . . . . . Leitor de E-mail Balsa . . . . . . . . . . . . . . . . . Cliente de E-mail Kmail . . . . . . . . . . . . . . . . gFTP . . . . . . . . . . . . . . . . . . . . . . . . . . OpenOffice.org: Janela Principal do Writer . . . . . KWord, Processador de Textos do KOffice . . . . . . Planilha do pacote de escritório SIAG . . . . . . . . Processador de Textos AbiWord . . . . . . . . . . . Planilha Gnumeric . . . . . . . . . . . . . . . . . . . Ambiente de Desenvolvimento Anjuta . . . . . . . . Ambiente de Desenvolvimento Glimmer . . . . . . . GDB – GNU Debugger . . . . . . . . . . . . . . . . . GVD – GNU Visual Debugger . . . . . . . . . . . . . KDbg – KDE Debugger . . . . . . . . . . . . . . . . DDD – Data Display Debugger . . . . . . . . . . . . Editor de HTML Quanta . . . . . . . . . . . . . . . . Editor de HTML Bluefish . . . . . . . . . . . . . . . . Editor de HTML SCREEM . . . . . . . . . . . . . . . Editor de Folhas de Estilos do SCREEM . . . . . . . GIMP . . . . . . . . . . . . . . . . . . . . . . . . . . ImageMagick . . . . . . . . . . . . . . . . . . . . . . Xfig . . . . . . . . . . . . . . . . . . . . . . . . . . . Sketch . . . . . . . . . . . . . . . . . . . . . . . . . . Sodipodi . . . . . . . . . . . . . . . . . . . . . . . . . OpenOffice Draw . . . . . . . . . . . . . . . . . . . . Dia – Editor de Diagramas . . . . . . . . . . . . . . . Eletric Eyes . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18 20 21 22 22 23 24 25 26 27 28 30 30 31 32 33 34 35 36 37 38 39 39 40 41 42 43 43 44 45 46 47 47 48 49 50 51 51 52 52 54
3.42 3.43 3.44 3.45 3.46 3.47 3.48 3.49
GQview . . . . . . . . . . . . . Xpdf . . . . . . . . . . . . . . . Acrobat Reader . . . . . . . . . gv . . . . . . . . . . . . . . . . GGv . . . . . . . . . . . . . . . XMMS - X Multimedia System . Xine . . . . . . . . . . . . . . . Jogo Bzflag . . . . . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
54 55 56 57 57 58 59 60
4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11 4.12 4.13 4.14 4.15 4.16 4.17 4.18 4.19 4.20 4.21 4.22 4.23 4.24 4.25 4.26 4.27 4.28 4.29 4.30 4.31 4.32 4.33 4.34 4.35 4.36
Exemplos de Uso do cd . . . . . . . . . . . . . . . . . . . . . . . Exemplos de Uso do pwd . . . . . . . . . . . . . . . . . . . . . . Exemplos de Uso do ls . . . . . . . . . . . . . . . . . . . . . . . Exemplos de Uso do mkdir . . . . . . . . . . . . . . . . . . . . . Exemplo de Uso do rmdir . . . . . . . . . . . . . . . . . . . . . Exemplo de Uso do rmdir – uso de caracteres “coringa” . . . . Exemplo de Uso do rm . . . . . . . . . . . . . . . . . . . . . . . . Exemplos de Uso do mv . . . . . . . . . . . . . . . . . . . . . . . Exemplos de Uso do cp . . . . . . . . . . . . . . . . . . . . . . . Exemplos de Uso do touch . . . . . . . . . . . . . . . . . . . . . Exemplos de Uso do ln . . . . . . . . . . . . . . . . . . . . . . . Exemplos de Uso do Comando chmod – Opções por Caracteres Exemplos de Uso do Comando chmod . . . . . . . . . . . . . . . Exemplos de Uso do Comando chown . . . . . . . . . . . . . . . Exemplo de Uso do chgrp . . . . . . . . . . . . . . . . . . . . . Exemplos de uso do mount . . . . . . . . . . . . . . . . . . . . . Exemplos de Uso do umount . . . . . . . . . . . . . . . . . . . . Exemplos de Uso do mdir . . . . . . . . . . . . . . . . . . . . . Exemplos de Uso do mcopy . . . . . . . . . . . . . . . . . . . . . Exemplos de Uso do mformat . . . . . . . . . . . . . . . . . . . Exemplos de Uso do less . . . . . . . . . . . . . . . . . . . . . Exemplos de Uso do cat . . . . . . . . . . . . . . . . . . . . . . Exemplos de Uso do tail . . . . . . . . . . . . . . . . . . . . . Exemplos de Uso do head . . . . . . . . . . . . . . . . . . . . . Exemplos de Uso do find . . . . . . . . . . . . . . . . . . . . . Exemplos de Uso do locate . . . . . . . . . . . . . . . . . . . . Exemplos de Uso do sort . . . . . . . . . . . . . . . . . . . . . Exemplos de Uso do wc . . . . . . . . . . . . . . . . . . . . . . . Exemplos de Uso do grep . . . . . . . . . . . . . . . . . . . . . Exemplos de Uso do zip e do unzip . . . . . . . . . . . . . . . Exemplos de Uso do gzip e do gunzip . . . . . . . . . . . . . . Exemplos de Uso do tar . . . . . . . . . . . . . . . . . . . . . . Programa top em Execução . . . . . . . . . . . . . . . . . . . . Exemplos de Uso do ps . . . . . . . . . . . . . . . . . . . . . . . Exemplo de Uso do renice . . . . . . . . . . . . . . . . . . . . Exemplo de Uso do kill . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
64 65 66 67 67 67 68 69 70 71 72 73 74 74 75 76 76 78 78 79 79 81 81 81 82 83 84 84 86 86 88 89 90 91 92 93
4.37 4.38 4.39 4.40 4.41 4.42 4.43 4.44 4.45 4.46 4.47 4.48 4.49 4.50 4.51
Exemplos de Uso do exit . . . . . . Exemplo de Uso do clear . . . . . . Exemplos de Uso do date . . . . . . Exemplos de Uso do who . . . . . . . Exemplos de Uso do cal . . . . . . . Exemplos de Uso de Pipes . . . . . . Editor de Textos VIM . . . . . . . . . . Editor de Textos VIM – Versão Gráfica Editor de Textos JOE . . . . . . . . . . Editor de Textos Pico . . . . . . . . . . Editor de Textos GNU nano . . . . . . Cliente de E-mail Pine . . . . . . . . . Navegador Web Lynx . . . . . . . . . Navegador Web Links . . . . . . . . . Cliente de E-mail Mutt . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
94 94 95 96 97 98 98 99 100 100 101 102 103 104 104
5.1 5.2 5.3 5.4
Exemplos de Uso do man . . . . . . . Manual do Programa man . . . . . . . Página Info do Programa info . . . . Obtendo Ajuda por Linha de Comando
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
108 109 110 111
6.1 6.2 6.3 6.4 6.5 6.6 6.7
Listando Pacotes RPMs Instalados . . . . . . Consultando um Pacote RPM Instalado . . . Consultando um Pacote RPM Não-Instalado Consultando Dependências de um Pacote . . Consultando Capacidades de um Pacote . . Listando Arquivos Instalados por um Pacote . Consultando o Pacote de um Dado Arquivo .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
122 123 124 124 125 126 126
LISTA DE TABELAS
4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11 4.12 4.13 4.14 4.15 4.16 4.17 4.18 4.19 4.20 4.21 4.22 4.23 4.24 4.25 4.26 4.27 4.28 4.29 4.30
Parâmetros do Comando cd . . . . . . . . . . . . . . Parâmetros do Comando pwd . . . . . . . . . . . . . . Parâmetros do Comando ls . . . . . . . . . . . . . . Parâmetros do Comando rm . . . . . . . . . . . . . . Parâmetros do Comando mv . . . . . . . . . . . . . . Parâmetros do Comando cp . . . . . . . . . . . . . . Parâmetros do Comando touch . . . . . . . . . . . . Permissões de Arquivo . . . . . . . . . . . . . . . . . Parâmetros do comando mount . . . . . . . . . . . . Parâmetros do Comando umount . . . . . . . . . . . Parâmetros do Comando mdir . . . . . . . . . . . . . Parâmetros do Comando mcopy . . . . . . . . . . . . Parâmetros do Comando mformat . . . . . . . . . . . Comandos de Navegação do less . . . . . . . . . . . Parâmetros do Comando cat . . . . . . . . . . . . . . Parâmetros do Comando find . . . . . . . . . . . . . Parâmetros do Comando locate . . . . . . . . . . . Parâmetros do Comando sort . . . . . . . . . . . . . Parâmetros do Comando wc . . . . . . . . . . . . . . Parâmetros do Comando grep . . . . . . . . . . . . . Parâmetros dos Comandos zip e unzip . . . . . . . Parâmetros dos Comandos gzip e gunzip . . . . . . Parâmetros do Comando tar . . . . . . . . . . . . . . Parâmetros do Comando ps . . . . . . . . . . . . . . Parâmetros do Comando renice . . . . . . . . . . . Principais Sinais Enviados pelo kill . . . . . . . . . Parâmetros do Comando date . . . . . . . . . . . . . Especifição de Formatos de Saída do Comando date Parâmetros do Comando who . . . . . . . . . . . . . . Parâmetros do Comando cal . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
64 65 66 68 69 70 71 73 75 76 77 77 79 80 80 82 83 84 84 85 87 87 89 91 92 93 94 95 96 96
5.1 Comandos para Navegação em Páginas man . . . . . . . . . . . . . . . . . . 108 5.2 Comandos para Navegação em Páginas info . . . . . . . . . . . . . . . . . . 109 5.3 Grupos de Discussão e Assuntos Abordados . . . . . . . . . . . . . . . . . . 112 6.1 Parâmetros do Comando rpm . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
1 INTRODUÇÃO
Este texto tem por principal objetivo instruir o seu leitor nos passos básicos necessários ao uso de uma estação Linux. Por estação, em geral, compreende-se qualquer computador que esteja direcionado ao usuário final. Isso implica que, na maioria dos casos, um servidor não é considerado uma estação. Ao restringir-se ao uso, esta apostila não está preocupada com o processo de configuração e instalação. Detalhes de instalação, cada vez mais simples, podem ser obtidos na documentação da distribuição Linux escolhida pelo usuário. O processo de configuração, por sua vez pode ser visto em detalhes em: (NEMETH, 1995), (NEMETH, 2001), (STANFIELD; SMITH, 2001), (WIRZENIUS; OJA; STAFFORD, 2001), (FRAMPTON, 1999), (KIRCH; DAWSON, 2000). Merecem especial destaque (SICA; UCHÔA, 2003) e (UCHÔA; SIMEONE; SICA, 2003). Este texto foi escrito pensando em um usuário básico do sistema operacional Linux (ou equivalente). Ele foi produzido principalmente a partir da experiência adquirida pelos autores em administração de laboratórios e uso de diversos sistemas operacionais. Essa experiência em administração de sistemas foi enriquecida pela leitura de diversos materiais, como as citadas anteriormente. A essas referências devem ser acrescidos vários Howtos1 disponibilizados pela The Linux Documentation Project 2 . O texto encontra-se organizado de forma a levar o usuário das tarefas mais simples às mais avançadas. Assim, o Capítulo 2 apresenta o Linux e suas características básicas. O Capítulo 3 mostra a interface gráfica do Linux, incluíndo-se os aplicativos gráficos mais comuns. Já o Capítulo 4 mostra o console do Linux, mostrando ao leitor os principais comandos necessários à operação do Linux em modo texto. O Capítulo 5 apresenta ao usuário básico os principais mecanismos de obtenção de ajuda e, por último, o Capítulo 6 mostra os principais passos para instalação de aplicativos em distribuições baseadas no formato RPM. Joaquim Quinteiro Uchôa é licenciado em Matemática pela Universidade Federal de Mato Grosso (UFMT), com mestrado em Ciência da Computação pela Universidade Fede1
Um Howto é um pequeno guia que ensina um usuário a configurar um serviço ou fazer uma dada tarefa. The Linux Documentation Project: http://www.tldp.org/. A tradução de parte dos documentos desse projeto podem ser encontrados em http://br.tldp.org/. 2
12
EDITORA - UFLA/FAEPE - Linux Intermediário
ral de São Carlos (UFSCar). Antes de adotar o Linux, em 1998, já havia trabalhado com Solaris, MS-DOS (lembram-se do CISNE?) e OS/2, passando, obviamente pelos Windows 2.0, Windows 3.1 (e 3.11) e Windows 95. Segundo amigos, ele já superou o trauma do uso desses três últimos aplicativos (que alguns insistem em chamar de sistemas operacionais), apesar de ter desenvolvido aversão a alguns tipos de janelas. Foi o responsável pela instalação do primeiro laboratório baseado em Linux na UFLA e um dos maiores disseminadores desse sistema operacional na universidade. Professor da UFLA, desde 1997, atua principalmente nas áreas de Teoria da Computação e Inteligência Artificial. É o principal responsável pela criação do ARL, sendo seu atual coordenador. Luiz Eduardo Simeone é Bacharelando em Ciência da Computação pela Universidade Federal de Lavras. Teve o primeiro contato com Linux em 2000, incentivado por professores. Trabalhou com suporte ao usuário no Departamento de Administração e Economia da UFLA, com sistemas Windows 95, Windows 98 e Windows NT Workstation. Em seguida foi administrador da rede do Centro de Tecnologia em Informática da UFLA - UFLATEC, onde foi responsável pela implantação do servidor de e-mail utilizando Linux, e integrando os servidores Windows 2000 e Linux com estações Windows 2000 e Linux. Atualmente trabalha na equipe técnica do ARL, administrando servidores do curso e do Departamento de Ciência da Computação. Matheus Garcia Barbosa de Figueiredo é Bacharelando em Ciência da Computação pela Universidade Federal de Lavras. Teve o primeiro contato com o Linux em 2000, ao entrar na universidade. Atualmente trabalha na equipe técnica do ARL, no desenvolvimento do CD-ROM “Recursos” e de ferramentas de apoio ao ensino à distância para o ARL. Samuel Pereira Dias é Bacharelando em Ciência da Computação pela Universidade Federal de Lavras. O contato efetivo com Linux ocorreu em 1999, após frustrações com as versões iniciais da Conectiva. Trabalhou com suporte de rede para os usuários do Departamento de Medicina Veterinária, em uma rede ponto-a-ponto baseada em Windows. Também realizou estágio no CEFET/Bambuí (ex-Escola Agrotécnica Federal de Bambuí), instalando um servidor Linux para a intranet local e a criação de políticas de uso e segurança da rede local. Atualmente trabalha na equipe técnica do ARL como administrador do servidor do curso, juntamente com Luiz Simeone, além do gerenciamento dos serviços de banco de dados e ambientes virtuais de ensino (TelEduc) e desenvolvimento de ferramentas de apoio ao ensino a distância para o ARL. Os autores se sentirão realizados com a escrita desta obra se ela contribuir para disseminar ainda mais o uso de Linux no Brasil e desejam um bom aprendizado ao leitor.
2 INTRODUÇÃO AO LINUX
2.1
KERNEL E LINUX
Linux é um sistema operacional UNIX-like, compatível com o POSIX1 , licenciado sob a Licença Pública GNU (GPL)2 . Inicialmente ele foi desenvolvido por um então estudante da Universidade de Helsinque, Finlândia, chamado Linus Torvalds. Ele adicionou tantas funcionalidades a um aplicativo de comunicação em rede que estava desenvolvendo, visando torná-lo compatível com o sistema de arquivos do Minix, que desconfiou que estava fazendo um novo sistema operacional (SO), o que realmente estava acontecendo. O Minix3 era um sistema operacional construído para fins educativos por Andrew Tanembaum, e serviu de base para o desenvolvimento desse novo SO. A primeira versão do Linux foi liberada em 1991 e desde então ele não parou de crescer, com a contribuição de centenas de programadores ao redor do mundo. Provavelmente o Linux é um dos maiores, senão o maior, projeto colaborativo de desenvolvimento de software no mundo. Mais detalhes sobre a história do Linux podem ser encontrados em (TORVALDS; DIAMOND, 2001) e (LINUX ONLINE INC., 2003). Mas o Linux é apenas o kernel do sistema operacional. E os outros aplicativos? Eles são formados, em sua maioria, por software livre. Muitos deles são softwares GNU, ou seja, tem o apoio da Free Software Foundation4 . Alguns exemplos desse software são o sistema de janelas (X Window System)5 , o sistema de editoração eletrônica LATEX6 , o compilador C da GNU (GCC)7 , o editor de textos emacs8 , e o Bourne Again SHell (BASH)9 . Além disso, a intenção do projeto GNU é construir um sistema operacional livre similar ao UNIX, com 1
http://www.pasc.org/#POSIX http://www.magnux.org/doc/GPL-pt_BR.txt 3 http://www.cs.vu.nl/~ast/minix.html 4 http://www.fsf.org/ 5 http://www.xfree86.org/ e http://www.x.org/ 6 http://www.latex-project.org 7 http://gcc.gnu.org/ 8 http://www.gnu.org/software/emacs/emacs.html 9 http://www.gnu.org/software/bash/bash.html 2
14
EDITORA - UFLA/FAEPE - Linux Intermediário
um kernel próprio chamado HURD10 . Mas o Linux ficou pronto primeiro. Então porque não utilizar o Linux para fazer um sistema operacional livre similar ao UNIX? Foi assim que nasceu o GNU/LINUX, que é uma denominação mais correta do sistema operacional em questão nesta apostila.
2.2 2.2.1
DISTRIBUIÇÕES E SUAS CARACTERÍSTICAS O que é uma Distribuição
Distribuição de um sistema GNU/Linux é basicamente um conjunto de pacotes de software que contém o kernel Linux, aplicativos adicionais, como a GNU libc, por exemplo, documentação e o código fonte dos programas livres distribuídos. No início, era só o kernel, o compilador C, e algumas outras ferramentas bem simples. Com o tempo e o aumento de usuários e de software disponível, algumas universidades, empresas e usuários começaram a colocar no sistema operacional pacotes de sua preferência ou necessidade. Assim nasceram as distribuições. Hoje existem vários tipos de distribuições diferentes: voltadas para servidores, ambientes corporativos, usuários domésticos, sem necessidade de instalação, em apenas um disquete, etc. 2.2.2
Slackware
A Slackware11 foi a primeira distribuição Linux independente, ou seja, diferente da feita por Linus Torvalds. É a mais parecida com o UNIX, e sempre tem procurado manter esta semelhança. Também é uma distribução não-comercial, ou seja, a organização que mantem a Slackware não tem fins lucrativos. Esta distribuição é recomendada para os usuários que tem grande conhecimento de UNIX. Um dos grandes problemas da Slackware é a ausência de um sistema de tratamento de dependência entre os pacotes. Os pacotes da Slackware são no formato .tgz, que só guarda informações sobre onde os arquivos devem ser colocados. Isso dificulta a manutenção do sistema, principalmente por parte de novos usuários. 2.2.3
Distribuições Baseadas em RPM
O RPM (RPM Package Manager)12 é um sistema de gerenciamneto de dependência entre pacotes. A primeira distribuição a utilizar o RPM foi a Red Hat Linux13 . A Red Hat é uma distribuição comercial construída a partir da Slackware, e atualmente é uma das mais utilizadas no mundo. A partir do Red Hat foram construídas várias outras distribuições 10
http://www.gnu.org/software/hurd/ http://www.slackware.com/ 12 http://www.rpm.org/ 13 http://www.redhat.com/ 11
Introdução ao Linux
15
como Mandrake14 , Conectiva15 , Yellow Dog16 , SuSE17 e UnitedLinux18 . Essas distribuições são conhecidas como Red Hat-like. O RPM facilita muito a manutenção e atualização do sistema, e facilita a adaptação de novos usuários, por esse motivo tem sido um dos formatos mais aceitos no mercado. 2.2.4
Debian
Uma outra distribuição de uso comum que merece destaque é a Debian19 , que utiliza um sistema de pacotes próprio: o DEB. Essa distribuição, que não é ligada a nenhuma empresa comercial, tenta ater-se ao máximo às diretrizes do movimento Software Livre. Dessa maneira, ela raramente inclui em sua distribuição aplicativos que não sejam distribuídos com licença de código aberto. Uma das reclamações de usuários iniciantes sobre o Debian é que ela não é uma distribuição de fácil instalação.
2.3
MODO GRÁFICO X MODO TEXTO
No princípio, a única interface disponível em UNIX ao usuário disponível era o terminal20 (muitas vezes apenas um terminal ”burro”, ou seja, sem processamento local). Então foram desenvolvidas muitas aplicações modo texto, ou seja, projetadas para rodar em um terminal com 25 linhas por 80 colunas. Todos os usuários tinham que conhecer uma infinidade de comandos diferentes para poder operar o sistema. Isso tornava o sistema pouco amigável ao usuário leigo e fazia do computador um ”bicho de sete cabeças”. Com o advento das GUIs (Graphical User Interface), o sistema se tornou mais amigável e os antigos usuários leigos puderam se aproximar do ”bicho” computador. Mas existe o outro lado da moeda: as aplicações GUI tem um déficit de desepenho muito grande para aplicações similares em modo texto. Os velhos micros tinham dificuldade de rodar o servidor X, principalmente aqueles com hardware mais barato. Muitas ferramentas não estão ainda disponíveis para o modo gráfico, e muitos dos programas gráficos que trabalham com configuração tornam os arquivos simplesmente ilegíveis após serem alterados. Além disso, em algumas aplicações, como roteadores por exemplo, não é fundamental a presença de um sistema de janelas. Nesse caso, o sistema de janelas é inclusive depreciado, por questões de segurança, o que é visto em mais detalhes em (UCHÔA, 2003). Também não é muito simples jogar fora muitos anos de aplicações desenvolvidas, que fun14
http://www.linux-mandrake.com/ http://www.conectiva.com.br/ 16 http://www.yellowdoglinux.com/ 17 http://www.suse.com/ 18 http://www.unitedlinux.com/ 19 http://www.debian.org/ 20 No ambiente Windows, o terminal é a janela de comando do DOS, também chamado de prompt do DOS 15
16
EDITORA - UFLA/FAEPE - Linux Intermediário
cionam bem e custaram alguns milhões, somente porque existia uma nova inteface com o usuário. No Linux, o sistema de janelas X é um serviço extra como qualquer outro (gerencimento de impressão, serviços WWW ou de e-mail, etc.). Isso torna possível fazer uma instalação que só tenha disponível o modo texto. Mas não é possível fazer uma instalação sem o modo texto. É muito importante para os usuários avançados (como os administradores de rede) conhecerem e serem capazes de utilizar as as ferramentas disponíveis no modo texto com certa habilidade. Também é muito importante conhecer o ambiente gráfico, mas esse é de aprendizado mais fácil, intuitivo e rápido. O modo gráfico é abordado com mais detalhes no Capítulo 3.
2.4
INSTALANDO O LINUX
O processo de instalação de um sistema Linux varia de uma distribuição para outra. A maioria das distribuições atuais de uso geral possuem interface gráfica de instalação, tornando o processo relativamente simples. Mesmo alguns instaladores em modo texto não oferecem dificuldade. De uma forma sintética, uma instalação Linux consiste em três passos: 1. particionamento do disco e formatação dos sistemas de arquivo, o que é visto com detalhes em (SICA; UCHÔA, 2003); 2. seleção, por parte do usuário, de quais aplicativos (pacotes) serão instalados inicialmente; 3. estabelecimento de configurações básicas, como senha de root e informações de rede. Em geral, as distribuições mais conhecidas disponibilizam bons manuais (impressos ou eletrônicos) que orietam o processo de instalação. Dada a existência dessa documentação, aliada às diferenças de instalação entre as distribuições, este texto não se aterá a esse ponto. Consulte o manual de sua distribuição para maiores detalhes.
3 GUI - GRAPHICAL USER INTERFACE
3.1
O SERVIDOR GRÁFICO
Contrariando alguns sistemas operacionais e seguindo a filosofia UNIX de oferecer serviços numa arquitetura cliente/servidor, a interface gráfica do Linux é gerenciada por um servidor próprio. Essa interface não integra o kernel do Linux, sendo executado em um nível superior, no espaço de usuários. Dessa maneira, não é responsabilidade do kernel o controle da interface gráfica, como na maioria dos sistemas operacionais do mercado. Existem vários servidores gráficos para UNIX. O mais conhecido e utilizado é o X Window System1 , também conhecido como X Window, ou simplesmente X. A implementação do X utilizada no Linux é o XFree862 . O XFree86 possui seu código-fonte liberado sob uma licença própria, derivada da “Licença X11”3 , criada pelo Massachusetts Institute of Technology X11/X Consortium, que não impõe qualquer restrição na modificação ou redistribuição do código-fonte, desde que as notas de copyright e licença sejam mantidas inalteradas. A função do X é criar uma interface cliente/servidor capaz de oferecer os serviços gráficos. O servidor gerencia interface entre o hardware de entrada/saída primários (mouse, teclado e monitores de vídeo), enquanto o ambiente de trabalho (Seção 3.2) faz o papel de cliente, enviando as solicitações do usuário através de uma interface de programação padronizada. A interface de programação citada anteriormente é um conjunto de bibliotecas que formam uma API – Application Programming Interface utilizada por qualquer programa que utilize o ambiente gráfico. Essa API oferece recursos para “desenhar” e posicionar as janelas na tela, além do tratamento de entrada e saída. Através dessa API o cliente envia as requisições do usuário para desenhar as janelas, adicionando funcionalidades como bordas, barras de título, controle de redimensionamento, etc. O XFree86 é independente de plataforma, rodando em vários sistemas, como os sistemas baseados em UNIX (Linux, variações do BSD, Sun Solaris para plataforma x86), Mac 1
http://www.x.org/ http://www.xfree86.org/ 3 http://www.xfree86.org/legal/licence.html 2
18
EDITORA - UFLA/FAEPE - Linux Intermediário
OS X (via Darwin), entre outras, algumas requerendo bibliotecas especiais de compatibilidade O X também pode ser usado em rede, fazendo com que um único servidor possa atender várias estações clientes usando o protocolo TCP/IP. A maioria das instalações configura o servidor na mesma máquina onde o cliente (aplicações do usuário) serão executadas. Entretanto, é cada vez maior o número de terminais gráficos em algumas corporações, como o caso de máquinas servidoras potentes e clientes gráficos com baixo poder de processamento, tais como micros antigos. A Figura 3.1 ilustra uma máquina executando um servidor gráfico (host A) com quatro clientes conectados. Um deles é executado localmente e conecta-se usando UNIX Domain Sockets. Os outros clientes são executados em máquinas diferentes, conectando-se ao servidor através do protocolo TCP/IP. As duas formas de conexão são detalhadas em (LOOSEMORE, 2001). A conexão por TCP/IP também é abordada em (CORREIA; ABREU SILVA, 2002). Observe que o próprio servidor X é responsável por separar as solicitações do cliente e lhe encaminhar apenas as janelas que tenha solicitado. Maiores detalhes sobre o X e sua configuração podem ser encontrados em (SICA; UCHÔA, 2003). Host A
Host B Cliente remoto
Host C Cliente remoto
Conex
Servidor X
ão TC
P/IP
P/IP
ão TC
Conex
/IP
CP
Host D
ex
n
Co
T ão
Cliente remoto
Conexão local via socket
Cliente local
Figura 3.1: Servidor X com 4 Clientes Conectados
3.2
GERENCIADORES DE JANELA E DE AMBIENTE
Como dito na seção anterior, o servidor gráfico oferece apenas uma API para posicionar e “desenhar” as janelas de aplicativos na tela do usuário, independente da localização do servidor ou do aplicativo. Assim, algumas características da janela são definidas por um
GUI - Graphical User Interface
19
programa intermediário, que de acordo com os recursos que oferece pode ser chamado de gerenciador de janelas ou gerenciador de ambiente. Esse aplicativo é responsável por receber os cliques de mouse e pressionamento de teclas do usuário e convertê-los em chamadas de biblioteca do servidor gráfico. Apesar de ser possível executar um programa sem um destes gerenciadores, tal programa deveria ser escrito de uma forma que detectasse e tratasse a maioria das ações do usuário, desde o redimensionamento de uma janela até o controle de partes de uma janela que seja total ou parcialmente encoberta por outra. Um gerenciador de janelas, como o próprio nome indica, oferece mecanismos para o controle das janelas exibidas, sem oferecer muitos recursos. Normalmente, ele define o formato e posicionamento de barras de menu, barra de título, aparência e manipulação da janela (movimentação na tela, maximização, minimização, redimensionamento, etc.). As alterações desse tipo feitas pelo usuário são comunicadas ao servidor gráfico, que por sua vez vai exibi-la, segundo as características visuais oferecidas pelo gerenciador. Existem vários gerenciadores de janela disponíveis, como o WindowMaker (http:// www.windowmaker.org/), o Blackbox (http://blackboxwm.sourceforge.net/), o FVWM (http://www.fvwm.org/) e o TWM (http://www.xfree86.org/), com recursos mais ou menos semelhantes. Entre esses recursos, é comum o uso de áreas de trabalho (desktops) múltiplas e independentes, organizando o Por outro lado, os gerenciadores de ambiente têm tornado-se muito comuns nos últimos tempos, por oferecerem tudo o que um gerenciador de janela oferece, acrescido de funcionalidades ou aplicativos extras, que facilitam a vida do usuário. Por exemplo, XFce (http://www.xfce.org/), KDE (http://www.kde.org/) e GNOME (http:// www.gnome.org/) oferecem aplicativos para as mais diversas finalidades, como editores de texto integrados, formatadores de disco, recursos multimídia, leitores de e-mail e até mesmo pacotes de escritório completos.
3.3 3.3.1
GERENCIADORES DE JANELA MAIS COMUNS KDE
O KDE (K Desktop Environment) é um gerenciador de ambiente bastante utilizado por usuários novatos em Linux, por sua interface agradável e recursos oferecidos para usuários que não estão habituados a utilizar com freqüência o modo texto. Segundo rumores na internet, o “K” do nome não possui significado algum, os desenvolvedores queriam que o ambiente não ficasse limitado ao uso em sistemas Linux e escolheram a letra anterior ao “L” no alfabeto. Trata-se de um ambiente transparente em rede, ou seja, não importa se a aplicação está sendo executada por um cliente na própria máquina ou em qualquer máquina da rede
20
EDITORA - UFLA/FAEPE - Linux Intermediário
(até mesmo na internet). O ambiente é acompanhado por uma ampla gama de aplicativos, desde editores de texto simples (KWrite), multimídia, etc., até uma suíte de escritórios completa (KOffice), passando por várias ferramentas de desenvolvimento (KDevelop). A Figura 3.2 mostra uma sessão KDE com alguns aplicativos do ambiente. Para maiores informações sobre o mesmo, consulte o site oficial do projeto em http://www.kde.org/.
Figura 3.2: Sessão KDE com Aplicativos
3.3.2
GNOME
O GNOME (GNU Network Object Model Environment) é um projeto GNU que tem por objetivo fazer um ambiente de trabalho gráfico, livre (free software) e amigável ao usuário. Além disso, o GNOME é platafoma de desenvolvimento para outras aplicações, que usam as suas bibliotecas como base. O GNOME permite ao usuário definir vários tipos de borda de janela, o número de ambientes viruais e configurar os aplicativos que são usados como padrão para certos tipos de arquivo. O navegador de disco é integrado com outras aplicações GNOME como Gedit, GGv (GNOME GhostView), dentre outras. Esse recurso permite que vários tipos de arquivo sejam abertos na mesma janela do navegador de disco, sem a necessidade de abrir uma nova janela. Outro recurso interessante é o automount. O automount detecta qundo um CD-ROM é inserido na unidade, montando-o automaticamente. Também é possível montar
GUI - Graphical User Interface
21
outros sistemas de arquivos apenas com um clique do mouse. Os recursos, aliados com a interface amigável, fazem do GNOME o gerenciador de janelas preferido por boa parte dos usuários. Na Figura 3.3 temos uma imagem do GNOME com o navegador de disco.
Figura 3.3: Gerenciador de Janelas GNOME
3.3.3
WindowMaker
Criado pelo brasileiro Alfredo Kojima, o WindowMaker é um gerenciador de janelas rápido, rico em recursos e bastante fácil de configurar e usar. Inclui opções de compatibilidade que permitem funcionar com outros ambientes populares, como GNOME e KDE. A Figura 3.4 mostra um ambiente de trabalho do WindowMaker. Duas das mais importantes e populares características do Window Maker são mostradas na Figura 3.5: o Dock e o Clip. O Dock serve como um lançador e detentor de aplicações, permitindo que ícones de aplicações (appicons) sejam anexados a ele e mantenhamse visíveis em todos os ambientes. Pode ser posicionado verticalmente à esquerda ou à direita da tela. O Clip serve como um extensão do Dock, sendo muito mais flexível. Com ele é possível alternar entre ambientes, anexar appicons em um determinado ambiente, deixando-os visíveis apenas nesse ambiente e atrair appicons e mini-janelas, formando um grupo, além de outros usos adicionais
22
EDITORA - UFLA/FAEPE - Linux Intermediário
Figura 3.4: Gerenciador de Janelas WindowMaker
Figura 3.5: Dock e Clip
A diferença entre um appicon e uma mini-janela é que mini-janelas representam cada janela que é mostrada na tela, enquanto um appicon representa a aplicação em si. Cada mini-janela é identificada por uma barra de título com o mesmo título da janela. Window Maker pode ser configurado para que janelas similares possam ser consolidadas em uma única mini-janela, ou mesmo desabilitá-las. Pode-se associar uma ação a cada appicon
GUI - Graphical User Interface
23
tanto no Dock quanto no Clip, sendo a ação realizada sobre qualquer objeto que for arrastado sobre o ícone. Os três pontos no canto inferior esquerdo de um appicon indicam que ele pode ser executado, desaparecendo assim que o programa estiver em execução. O Window Maker é altamente personalizável, permitindo a aplicação de estilos em barras de título, appicons e menus. Inclui suporte para temas, que permitem que o usuário modifique a aparência de sua área de trabalho, como a imagem de fundo, texturas da barra de título e menu, e ícones para o Dock e o Clip. Pemite ainda qua o usuário crie seu próprio tema e o salve em um arquivo, que pode ser compartilhado com outros usuários. Há uma variedade de temas para o Window Maker em http://wm.themes.org/. Outra característica destacável do Window Maker é seu sistema poderoso e flexível de menus. Os itens podem ser editados e associados a teclas de atalho, e os menus podem ser fixados à área de trabalho, ficando visíveis até serem explicitamente fechados. Isso é importante em casos como o menu de ambientes e o menu de janelas abertas, permitindo acesso direto a cada aplicação. A ferramenta de configuração do sistema é o WPrefs, mostrado na Figura 3.6. Com ela, é possível modificar várias características do sistema sem ter que editar diretamente arquivos de configuração. As alterações se tornam válidas no momento em que são salvas, não sendo necessário reiniciar o gerenciador de janelas.
Figura 3.6: Ferramenta de Preferências do WindowMaker
24
3.3.4
EDITORA - UFLA/FAEPE - Linux Intermediário
TWM
O TWM (Tab Window Manager, também conhecido como Tom’s Window Manager, em homenagem a seu principal desenvolvedor, Tom LaStrange provê barras de títulos, gerenciamento de ícones e algumas funcionalidades. Trata-se de um gerenciador de janelas extremamente simples, com escassos recursos, se comparado a outros gerenciadores, mas é distribuído junto com o XFree86 e, por razões históricas, ainda é relembrado por alguns usuários. Muitas de suas idéias foram usadas por outros gerenciadores de janelas, como o FVWM (próxima seção). A Figura 3.7 ilustra uma sessão do TMW sendo executado. Para maiores informações, consulte o site http://www.plig.org/xwinman/vtwm.html.
Figura 3.7: TWM – Um dos Primeiros Gerenciadores de Janelas
3.3.5
FVWM
O FVWM foi desenvolvido por Robert Nation e foi um dos principais gerenciadores de janelas do Linux. Foi baseado no TWM, desenvolvido para minimizar o consumo de memória, provê um único desktop virtual e janelas com decorações tridimensionais. É um gerenciador utilizado por alguns usuários que desejam o menor impacto de transição de outros sistemas operacionais e não possui recursos computacionais para executar um ambiente do porte do GNOME ou KDE. A Figura 3.8 traz uma imagem extraída do site
GUI - Graphical User Interface
25
oficial do projeto (http://www.fvwm.org/), com um tema que imita o comportamento e visual do MS Windows R 95.
Figura 3.8: Gerenciador de Janelas FVWM (extraído de http://www.fvwm.org/)
3.3.6
XFce
Segundo seus desenvolvedores, o XFce foi desenvolvido para ser um gerenciador de ambientes “livre de colesterol” para Linux. Com isso, o XFce busca oferecer um ambiente rápido, exigindo poucos recursos de processamento. Assim, ele vai contra a tendência dos gerenciadores de ambientes que tornam-se vorazes consumidores de recursos à medida em que oferecem mais características gráficas e aplicativos. O XFce possui uma interface bastante prática e vários aplicativos funcionais, o que o torna extremamente atrativo em máquinas com menos recursos de processamento. Mas mesmo para máquinas mais robustas, ele ainda pode ser uma excelente escolha, pois liberará os recursos para outras aplicações, mas oferecendo excelente funcionalidade. Não é à toa que o XFce é o gerenciador preferido e mais usado pelos técnicos e tutores do ARL. Ele se integra perfeitamente com KDE e GNOME, localizando os programas para esses ambientes e adicionando-os a um menu especial. Quanto às aplicações que o acom-
26
EDITORA - UFLA/FAEPE - Linux Intermediário
panham, não há tanta variedade como nos gerenciadores maiores, mas oferece recursos razoáveis para um usuário intermediário em Linux. O que o difere de outros ambientes é sua barra de aplicações, permitindo ao usuário adicionar programas conforme sua conveniência, e seu gerenciamento de múltiplas áreas de trabalho, selecionadas com um clique no botão que a identifica. A Figura 3.9 mostra o ambiente, com destaque para o menu de aplicações e as configurações do ambiente em primeiro plano, além do navegador de disco ao fundo.
Figura 3.9: Ambiente XFce
3.4
APLICATIVOS GRÁFICOS EM LINUX
O objetivo desta seção é apresentar alguns dos aplicativos gráficos de uso mais comum em Linux. A lista não está completa e privilegia os aplicativos de maior uso e conhecimento pela equipe do ARL. Isso não significa que não existam outros aplicativos na mesma área e muito menos que esses sejam os melhores. Além disso, dada a extensão desta apostila, apenas as áreas de maior uso são cobertas, deixando-se para o leitor a tarefa de busca de aplicações para situações específicas.
GUI - Graphical User Interface
3.4.1
27
Editores de Texto
Gedit O Gedit é um editor de textos distribuído com o GNOME. Apesar de sua simplicidade, ele tem vários recursos como visualizar impresão, suporte a texto internacionalizado (UTF-8) e um sistema de busca e substituição de palavras. A entrada de dados via pipes é suportada, e existe suporte a plugins. Em suma, o Gedit é um editor simples, porém poderoso e altamente configurável. Na Figura 3.10, é apresentado uma tela do Gedit em processo de edição.
Figura 3.10: Gedit – Editor de Texto do GNOME
Emacs e XEmacs Dentre os diversos editores de texto disponíveis para Linux, raros se destacam como os editores GNU Emacs e XEmacs. O primeiro, é um conceituado editor de propósito geral da Free Software Foundation4 , distribuído para várias plataformas, entre elas, o próprio Linux. O segundo é uma versão gráfica baseada no tradicional GNU Emacs, mas há algum tempo os projetos divergiram e existe uma certa discussão entre os desenvolvedores. Os dois são ambientes completos edição, compilação e depuração de programas, altamente configuráveis. Além disso, oferecem recursos para gerenciamento de e-mail e 4
http://www.fsf.org/
28
EDITORA - UFLA/FAEPE - Linux Intermediário
news. Entre seus destaques, estão o syntax highlighting para diversas linguagens e a capacidade de expansão através de pacotes desenvolvidos em LISP. A Figura 3.11 traz uma janela de uma em sua versão mais recente do XEmacs, editando o arquivo LATEX deste texto.
Figura 3.11: Editor de texto XEmacs
3.4.2
Software para Internet
Mozilla Mozilla é um conjunto de aplicações incluindo um navegador de Internet, um cliente de correio eletrônico, um compositor de páginas, um cliente de IRC (chat) e um conjunto de ferramentas de desenvolvimento Web. De código aberto, é rápido, razoavelmente seguro,
GUI - Graphical User Interface
29
cheio de recursos e altamente configurável. Mozilla suporta todos os recursos necessários para uma navegação, obedecendo os padrões estabelecidos pelo W3C5 , bem como a maioria dos novos padrões emergentes. No aspecto de suporte aos padrões W3C, inclusive, é bastante superior a seu principal concorrente6 . O conjunto de aplicações do Mozilla têm vários recursos para tornar fácil e rápida a navegação e o acesso ao email, permitindo a abertura de novas janelas em forma de abas na janela principal, bloqueio de janelas pop-up, várias contas de email, controle de spam, gerenciamento de privacidade e um controle sofisticado sobre o histórico de navegação. Possui também suporte a temas e extensões, e um sistema de ajuda online bastante completo. O navegador possui ainda recursos para salvar senha e um gerenciador de formulários, chamado wallet, que permite guardar dados de um formulário preenchido e utilizá-los para preencher automaticamente outros formulários que solicitem os mesmos dados. Além disso, inclui suporte para plugins de Java, Flash, Acrobat e Real Player, dentre outros. O Mozilla também fornece uma plataforma sofisticada para o desenvolvimento de aplicações para internet e intranet, incluindo ferramentas avançadas, como Inspetor DOM, depurador de JavaScript e suporte a XML, DHML, XUL, SOAP, XSLT e outros. Assim, ele é uma excelente opção para o desenvolvimento de aplicações para a Web. A Figura 3.12 mostra o Mozilla em execução. Galeon O Galeon é um navegador construído com as bibliotecas do GNOME, e usa o motor de renderização do Mozilla (Gecko), possuindo inteface agradável e leve. Por usar o motor de renderização do Mozilla, o Galeon suporta os mesmos recursos que estão instalados no Mozilla. Por exemplo, para usar Java no Galeon, basta instalá-lo no Mozilla. O mesmo vale para qualquer plugin suportado pelo Mozilla. Um dos grandes atributos do Galeon é a navegação por abas, recurso que foi incorporado antes que no Mozilla, que permite que sejam abertas várias páginas em uma mesma janela. Outros grandes atributos são o bloqueio de janelas pop-up e de javascript. Essa facilidade, aliada com a performance, faz do Galeon o navegador preferido dos membros da equipe técnica do ARL e de alguns tutores também. Uma restrições do Galeon é a de ser apenas um browser, por isso, ferramentas como o Mozilla Mail e o Chatzilla não estão disponíveis. A Figura 3.13 apresenta uma imagem do Galeon com vários sites abertos em abas distintas. 5
http://www.w3c.org/ Isso pode ser verificado visitando-se a página do curso, http://www.ginux.comp.ufla.br/arl/ usando o Mozilla e o Internet Explorer. Esse último, por não suportar corretamente o CSS, não mostra a página da forma mais adequada. Note que isso ocorre apesar da Microsoft fazer parte do grupo que definiu esse padrão. 6
30
EDITORA - UFLA/FAEPE - Linux Intermediรกrio
Figura 3.12: Tela inicial do Mozilla
Figura 3.13: Navegador Galeon
GUI - Graphical User Interface
31
Konqueror O Konqueror é uma aplicação para o KDE altamente configurável, que combina funcionalidades de um gerenciador de arquivos com um navegador de internet. Ele permite a configuração de aplicativos para visualizar determinados formatos de arquivo e possui um visualizador interno para arquivos texto. Possui ainda um emulador de terminal embutido, permitindo a execução de comandos dentro do próprio programa. Como navegador, o Konqueror foi projetado para suportar todos os padrões da internet especificados pelo W3C e OASIS7 , possuindo ainda suporte extra para outros recursos. Possui suporte para funções como bookmarks, preenchimento automático de formulários, TSL/SSL para comunicação segura, e suporta plugins de Flash, Real Audio e Vídeo, dentre outros, além de suporte a Java e JavaScript. Possui ferramentas para auxiliar a navegação, como lente de aumento, visualização em tela cheia e um agente de usuário, que permite definir as informações que o browser envia quando vai acessar uma página.
Figura 3.14: Navegador Konqueror
7
http://oasis-open.org/
32
EDITORA - UFLA/FAEPE - Linux Intermediário
Evolution
O Evolution não é somente um cliente gráfico para servidores de e-mail POP e IMAP. O Evolution é um PIM (Personal Information Manager ou Gerenciador de Informações Pessoais). O cliente de e-mail suporta múltiplos servidores, tanto POP quanto IMAP. A agenda de compromissos é flexível, suporta lembretes de vários tipos e é compatível com o formato iCalendar, usado pelo Microsoft Outlook e pelo Lotus Notes. Além disso o Evolution tem uma lista de tarefas pendentes (to-do list), suporte à conexões com Palm, suporte à base de dados LDAP e criptografia PGP/GPG e SSL. Emfim, o Evolution não deixa nada a desejar em relação aos seus concorrentes de código proprietário. Na Figura 3.15, temos o cliente de e-mail do Evolution.
Figura 3.15: Cliente de E-mail do Evolution
GUI - Graphical User Interface
33
Balsa Balsa é um cliente gráfico de e-mail, integrado ao ambiente GNOME e em franco desenvolvimento. Atualmente, apresenta como características o suporte a protocolos IMAP e POP3, gerenciamento de correio local (checagem automática de recebimento, impressão, visualização de anexos), entre outros. Sua principal vantagem é a integração ao seu ambiente nativo, que o torna atraente para os usuários já habituados aos aplicativos que acompanham o GNOME. A Figura 3.16 ilustra a janela principal do aplicativo.
Figura 3.16: Leitor de E-mail Balsa
Kmail Seguindo a linha dos aplicativos do KDE, o Kmail é um cliente de email bastante amigável, com uma barra de ferramentas com as funções mais comuns, sendo uma boa escolha para usuários iniciantes no sistema. Ele permite visualização de mensagens em formato texto ou HTML, indicando co cores o status de cada mensagem. O Kmail também permite ao usuário definir modos de visualização de cabeçalhos e anexos, buscar mensagens de um determinado endereço, e também definir filtros de mensagens, entre outros.
34
EDITORA - UFLA/FAEPE - Linux Intermediário
Um recurso interessante do Kmail é sua capacidade de exibir mensagens em thread, que agrupa mensagens e respostas em corrente, bastante útil em listas de discussão. O Kmail permite acesso a múltiplas contas de email, sendo possível definir o nível de segurança desejado para cada uma delas. A Figura 3.17 mostra uma sessão do Kmail em execução.
Figura 3.17: Cliente de E-mail Kmail
gFTP O gFTP é um programa gráfico para transferência de arquivos pela rede. Ele suporta os protocolos HTTP, FTP e SSH, pode fazer várias transferências simultâneamente e transfere arquivos entre duas máquinas remotas. Também é possível continuar uma transferência interrompida, usar o recurso de favoritos, para acesso rápido às conexões mais usadas, e, finalmente, transferir arquivos de um host até outro apenas arrastando o arquivo de um local para o outro (drag-n-drop). Na Figura 3.18, há uma imagem do gFTP em funcionamento.
GUI - Graphical User Interface
35
Figura 3.18: gFTP
3.4.3
Aplicativos e Pacotes para Escritório
O uso de aplicativos de escritório – como editores de texto, planilhas eletrônicas e apresentações – representa uma boa fatia das atividades desempenhadas com os microcomputadores. Para Linux, existem várias opções desses aplicativos isolados, mas sem dúvidas, as suítes integradas são a opção preferida pela maioria dos usuários. Para Linux, destacam-se o KOffice – integrado ao ambiente KDE – e o OpenOffice.org, ambos open source. Mas vários outros pacotes e aplicativos distribuídos isoladamente vão auxiliar o uso do Linux nesse tipo de tarefa.
OpenOffice.org Entre os pacotes de escritório merece destaque o OpenOffice.org, sucessor gratuito do StarOffice, que atualmente é comercializado pela Sun Microsystems. Trata-se de uma suíte completa e em excelente estágio de desenvolvimento, compatível com as principais suítes do mercado. A Figura 3.19 mostra uma das janelas do OpenOffice Writer, processador de textos da suíte. Ele é composto por processador de textos (OpenOffice Writer),
36
EDITORA - UFLA/FAEPE - Linux Intermediário
planilha eletrônica (OpenOffice Calc), gerenciador de apresentações (OpenOffice Impress) e ferramenta para desenho vetorial (OpenOffice Draw), além de ferramentas integradas para criação de fórmulas, gráficos, etc. É o pacote de escritório adotado pelo GNOME.
Figura 3.19: OpenOffice.org: Janela Principal do Writer
KOffice KOffice é o pacote de escritório desenvolvido para o ambiente KDE. Consiste em um processador de textos (KWord), uma planilha (KSpread), um programa de apresentações (KPresenter), um sistema de fluxogramas (Kivio), uma ferramenta de desenho vetorial (Karbon14), um programa de manipulação de imagens (Krita), além de outras ferramentas. A Figura 3.20 mostra o processador de textos Kword. Observe que apesar de ser integrado ao ambiente KDE, isso não implica que o usuário precise estar usando esse gerenciador de ambiente para usar o KOffice.
GUI - Graphical User Interface
37
Figura 3.20: KWord, Processador de Textos do KOffice
SIAG SIAG é um pacote de escritório gratuito e fortemente integrado. Consiste em uma planilha, um processador de textos, um programa de animações, um editor de textos, um gerenciador de arquivos e uma ferramenta de visualização. A Figura 3.21 mostra a execução da planilha do SIAG. Seus aplicativos não possuem todos os recursos de seus principais concorrentes, mas como exige poucos recursos, é boa opção para máquinas mais antigas. AbiWord Com uma interface bastante amigável, o AbiWord é um processador de textos estável, cheio de recursos e multiplataforma. Oferece praticamente todos os recursos que se pode esperar de um processador de textos moderno, como a habilidade de importar/exportar documentos, incorporação de imagens, suporte a verificação ortográfica e possibilidades ilimitadas de desfazer/refazer ações. O projeto AbiWord começou com o desejo de se criar um processador de texto estável, cheio de recursos e não limitado a uma única plataforma ou a formatos proprietários. Hoje em dia AbiWord é compilado como uma aplicação nativa em várias plataformas e consegue tratar uma grande quantidade de formatos de arquivo.
38
EDITORA - UFLA/FAEPE - Linux Intermediário
Figura 3.21: Planilha do pacote de escritório SIAG (extraído de http://siag.nu/)
O AbiWord usa XML em seu formato de arquivo, tendo sido um dos primeiros processadores a fazer esse tipo de adoção. É um aplicativo que exige poucos recursos computacionais. Sua única restrição, pelo menos até a versão disponibilizada quando da escrita desta apostila, é o fato de não suportar tabelas. Em não havendo essa necessidade, é um excelente aplicativo, ideal para edição de pequenos textos (como cartas ou memorandos). A Figura 3.22 mostra uma tela de edição do AbiWord. Gnumeric Gnumeric é uma planilha de código aberto desenvolvida para o ambiente GNOME. É capaz de importar dados de várias outras ferramentas, como o MS-Excel, 1-2-3, Applix e XBase Quattro Pro, dentre outras. A Figura 3.23 mostra a execução do Gnumeric. Essa planilha exige poucos recursos computacionais. Por outro lado, oferece mais que os recursos básicos exigidos desse tipo de aplicativo, podendo ser uma escolha melhor, inclusive, que as planilhas disponibilizadas nos pacotes de escritório.
GUI - Graphical User Interface
39
Figura 3.22: Processador de Textos AbiWord
Figura 3.23: Planilha Gnumeric
40
3.4.4
EDITORA - UFLA/FAEPE - Linux Intermediário
IDEs - Integrated Development Enviroment
Ambientes integrados de desenvolvimento (IDE) são aplicativos voltados para a edição e controle de códigos de programação. A maior parte busca integrar a edição do código com destaque de palavras-chave (syntax highlighting), alguns oferecendo recursos como depurador (debugger) e compilação integrada, com salto para linhas com erro, etc. Entre essas IDEs, podem ser acrescidos o Emacs e o Xemacs, já apresentados na Seção 3.4.1. Esses dois editores são excelentes IDEs para uma grande variedade de linguagens. Anjuta Dentre os IDEs disponíveis, merece destaque o Anjuta. Ele oferece um gerenciamento de projetos para as mais diversas bibliotecas, dentre elas: wxWindows, ncurses, GTK, GTKmm. Para tais projetos, ele cria automaticamente os scripts necessários para configuração e compilação, facilitando o trabalho de desenvolvimento de aplicações. Possui também um depurador integrado à interface e fácil de usar, além da compilação de projetos, permitindo ao usuário saltar de uma mensagem de erro para a linha correspondente. A Figura 3.24 mostra a janela principal do aplicativo, editando código em C++.
Figura 3.24: Ambiente de Desenvolvimento Anjuta
GUI - Graphical User Interface
3.4.5
41
Glimmer
Glimmer é um ambiente integrado de desenvolvimento com suporte a uma grande quantidade de linguagens. Entre elas podem ser citadas: Bash/Sh, C/C++, HTML, Java, LATEX, GNU Make, Perl, PHP e SQL. A Figura 3.25 mostra o Glimmer sendo usado para edição de vários arquivos, entre eles o código-fonte LATEXdeste capítulo. É um aplicativo com poucas dependências e que exige poucos recursos computacionais.
Figura 3.25: Ambiente de Desenvolvimento Glimmer
3.4.6
Depuradores
Há um provérbio em computação que diz: “mostre-me uma pessoa que nunca produziu um bug e eu te mostro uma pessoa que nunca programou”. Essa assertiva nos chama a atenção para o fato que é impossível evitar erros de programação durante o desenvolvimento de um programa. Quanto maior o projeto, maior essa probabilidade. Assim, o uso de bons debuggers (debugadores ou depuradores) é essencial para a programação. Dado que é improvável que qualquer programa mais elaborado não contenha bugs em seu desenvolvimento, o uso desse tipo de ferramenta torna-se imprescindível. O sistema operacional UNIX e a linguagem C nasceram praticamente juntos. O primeiro compilador C foi criado em um UNIX, que logo foi portado para C. Assim, não é à toa que o UNIX é um SO tão adequado ao desenvolvimento de programas. Qualquer versão de UNIX, mesmo as comerciais, disponibilizam ao usuário ao menos um compilador C. Com
42
EDITORA - UFLA/FAEPE - Linux Intermediário
o Linux e o FreeBSD, isso é extremamente verdadeiro. Assim, como o ambiente UNIX é extremamente propício à programação, é possível encontrar vários depuradores para uso. O depurador mais utilizado em ambiente Linux é o GDB, o GNU Debugger. Entretanto esse programa funciona em modo texto apenas, como ilustra a Figura 3.26. Assim, seu uso não é simples para o usuário inicial. Entretanto, o leitor logo descobrirá que vários aplicativos gráficos em Linux são, em sua essência, apenas interfaces para outros aplicativos. Esses programas tentam propiciar, então, um canal mais amigável ao usuário.
Figura 3.26: GDB – GNU Debugger
O desenvolvimento de interfaces gráficas para aplicativos em modo texto é extremamente presente no caso dos depuradores. A grande maioria dos depuradores disponíveis em Linux são, em essência, apenas interfaces gráficas para o GDB. Entre essas interfaces, a mais antiga é o xxgdb. Mais recentemente foram desenvolvidos várias outras interfaces, como o GVD (GNU Visual Debugger), mostrado na Figura 3.27, o KDbg (KDE Debugger), mostrado na Figura 3.28 e o DDD (Data Display Debugger), mostrado na Figura 3.29.
GUI - Graphical User Interface
43
Figura 3.27: GVD – GNU Visual Debugger
Figura 3.28: KDbg – KDE Debugger
44
EDITORA - UFLA/FAEPE - Linux Intermediário
Figura 3.29: DDD – Data Display Debugger
3.5
EDITORES HTML
Quanta Quanta é uma ferramenta de desenvolvimento para internet para o ambiente KDE. Possui uma interface amigável para usuários leigos, mas também inclui ferramentas voltadas para desenvolvedores profissionais. O objetivo principal da ferramenta é aprimorar a capacidade de se criar páginas melhores e mais rapidamente, fazendo uso de um número menor de ferramentas. Quanta pode ser utilizado para criar páginas isoladas ou trabalhar com projetos (conjunto de páginas relacionadas, destinadas a um mesmo fim). A Figura 3.30 mostra o Quanta aberto com um arquivo HTML carregado. Para auxiliar a geração de código, Quanta fornece caixas de diálogo que permitem a inserção de código no arquivo como resposta às escolhas feitas pelo usuário. Dessa forma, pode-se criar uma página completa sem escrever diretamente nada no código. Possui ainda ferramentas de verificação de sintaxe e um sistema robusto de ajuda, com uma documentação embutida de JavaScript, PHP, HTML e CSS. Assim como as demais aplicações do
GUI - Graphical User Interface
45
Figura 3.30: Editor de HTML Quanta
KDE, é altamente configurável, permitindo, dentre outros, definir os botões que aparecem na barra de ferramentas e as ações de cada um deles.
Bluefish O Bluefish é um editor para desenvolvimento construido com as bibliotecas GTK2 (Gimp ToolKit 2). Ele tem syntax highlighting para várias linguagens de programação, entre elas HTML, Java, C, PHP, XML, Pascal e Python, apesar de ser um editor voltado para o desenvolvimento Web. Ele tem algumas caixas de diálogo para auxiliar na edição de código e ferramentas para criação de thumbnails, além de seguir os principios de interface adotados pelo KDE e pelo GNOME. O Bluefish pode abrir vários documentos simultâneamente, e tem uma janela de navegação que permite fácil acesso a arquivos em diferentes pastas. Todos esses atributos fazem do Bluefish uma ferramenta que atende às necessidades de um grande espectro
46
EDITORA - UFLA/FAEPE - Linux Intermediário
de usuários, desde o expert até o iniciante. Na Figura 3.31 é mostrada uma imagem do Bluefish.
Figura 3.31: Editor de HTML Bluefish
3.5.1
SCREEM
Voltado para agilizar o desenvolvimento de sites, o SCREEM (Site CReating and Editing Enviroment) é um ambiente de desenvolvimento Web esrito para o ambiente GNOME. Assim como outros editores de HTML para o Linux, SCREEM permite a edição diretamente no código HTML, em vez de utilizar recursos gráficos que geralmente produzem um código “sujo”. A Figura 3.32 mostra a execução do SCREEM. Um dos diferenciais do SCREEM é o seu editor de folhas de estilo, ilustrado na Figura 3.33. Esse editor, internacionalizado para vários idiomas, facilita o uso de CSS (Cascating Style Sheet - as folhas de estilo). Note que, cada vez mais, o uso de CSS é essencial a um desenvolvimento adequado de sites. Mais detalhes sobre CSS podem ser verificados junto ao World Wide Web Consortium, o W3C: http://www.w3c.org/.
GUI - Graphical User Interface
47
Figura 3.32: Editor de HTML SCREEM
Figura 3.33: Editor de Folhas de Estilos do SCREEM
48
3.6 3.6.1
EDITORA - UFLA/FAEPE - Linux Intermediário
EDITORES GRÁFICOS Editores Bitmap
Para edição gráfica de arquivos em formato matricial (arquivos bitmaps), como JPG, GIF, BMP ou PNG, o melhor aplicativo é, na opinião da grande maioria dos usuários, o GIMP (GNU Image Manipulation Program). Ele é um é um programa pra editar imagens em formato matricial muito poderoso, capaz de trabalhar com vários formatos de imagem. Não é à toa que ele é comparado freqüentemente ao Adobe Photoshop (e tido como melhor, pelos seus usuários conhecedores de seus recursos). O GIMP suporta a criação de scripts para automatização de tarefas e aceita plugins diversos. Ele suuporta múltiplas camadas e canais em uma mesma imagem, tem funções de refazer e desfazer, ferramentas para gradientes, escala, rotação e muitas outras transformações, além de várias ferramentas de seleção. Na Figura 3.34, é apresentada uma tela do GIMP em execução. Note que suas ferramentas estão espalhadas por várias janelas diferentes, o que facilita a organização do ambiente de trabalho. Ele é um editor de que não deixa nada a desejar em relação aos seus concorrentes de código proprietário, e é um dos aplicativos com licença livre mais famosos.
Figura 3.34: GIMP
GUI - Graphical User Interface
49
Além do GIMP, disponível para vários ambientes operacionais, outros aplicativos também podem ser usados para edição de arquivos em formato matricial. O KDE, por exemplo, disponibiliza o KPaint, um aplicativo para edição simples de imagens. Também é possível utilizar uma versão gratuita do Corel PhotoPaint, com os mesmos recursos e interface de sua versão Windows. A equipe do ARL, entretanto, recomenda largamente o GIMP, mesmo para uso em Windows. Também não pode ser esquecido o ImageMagick, uma coleção de ferramentas de visualização e manipulação de imagens. Ele facilita a conversão entre formatos de imagens, podendo alterar o tamanho, rotacionar e mesmo adicionar efeitos especiais a uma imagem, como mostra a Figura 3.35. Um adicional desse pacote é que ele possui vários comandos em modo texto. Assim, a partir de um terminal, o usuário pode, por exemplo, converter e redimensionar imagens. Consulte a documentação do pacote para maiores detalhes.
Figura 3.35: ImageMagick
3.6.2
Editores Vetoriais
Para a edição de arquivos vetoriais de desenho, podem ser usados vários aplicativos em Linux. Um dos mais antigos é o Xfig, mostrado na Figura 3.36, um editor de desenhos muito apreciado por usuários Linux do LATEX. Entretanto sua filosofia de trabalho é um pouco diferente dos aplicativos costumeiros, o que pode torná-lo inconveniente para usuários iniciantes. Entretanto, compreendida sua maneira de trabalhar, é um ótimo editor vetorial.
50
EDITORA - UFLA/FAEPE - Linux Intermediário
Figura 3.36: Xfig
Outros dois bons editores, mais próximos do usuário iniciante, são o Sketch, mostrado na Figura 3.37, e o Sodipodi, mostrado na Figura 3.38. O usuário pode perceber facilmente que o Sodipodi tenta imitar a interface do GIMP. Uma das peculiaridades do Sodipodi é que ele adota como padrão de formato de arquivo o SGV, que foi criado pela W3C, organização responsável por criar os padrões para internet. Assim, o SVG deve, em breve, ser suportado pela maioria dos navegadores como um padrão para desenhos vetoriais. Observe que o Sketch também salva e abre arquivos SVG. Além desses dois aplicativos, que fazem parte do projeto GNOME, não podem ser esquecidos o Kontour, editor vetorial do KOffice, e o OpenOffice Draw. O OpenOffice Draw, que faz parte do pacote de escritório OpenOffice, é rico em recursos para edição vetorial, como mostra a Figura 3.39. Como pode ser percebido nessa figura, ele pode substituir com facilidade editores vetoriais comerciais. Ainda entre os editores vetoriais, merece destaque o Dia, um programa para desenho de diagramas. O Dia tem conjutos de símbolos para construir diagramas de circuitos elétricos, fluxogramas e até diagramas de redes de computadores. O Dia usa o formato XML para armazenar os diagramas e também exporta para os formatos EPS (postscript) e SGV. Na Figura 3.40, é apresentada imagem do Dia em execução.
GUI - Graphical User Interface
51
Figura 3.37: Sketch
Figura 3.38: Sodipodi
52
EDITORA - UFLA/FAEPE - Linux Intermediário
Figura 3.39: OpenOffice Draw
Figura 3.40: Dia – Editor de Diagramas
GUI - Graphical User Interface
3.7
53
VISUALIZADORES
Uma necessidade usual do usuário é a visualização de arquivos nos mais diversos formatos, especialmente arquivos de imagens. Além das imagens, vários documentos são disponibilizados na internet em formato PostScript ou PDF (Portable Document File), formatos extremamentes comuns no ambiente UNIX. A título de informação PostScript é, a bem da verdade, uma linguação de descrição de página, usada em algumas impressoras. Um arquivo PostScript, portanto, contém informações necessárias ao desenho de páginas a serem impressas. O formato PDF é uma extensão da linguagem PostScript, criada com o objetivo explícito de funcionar como um mecanismo de disponibilização eletrônica de documentos. 3.7.1
Visualizadores de Imagens
Para visualizar imagens, o usuário pode se valer de várias ferramentas. Ele pode usar o GIMP para isso, mas isso pode ser um desperdício de tempo e recursos computacionais se o objetivo é apenas a visualização. Assim, nesse caso a escolha irá recair sobre aplicativos construídos com essa finalidade. Caso o usuário esteja usando versões recentes do KDE ou do GNOME, os gerenciadores de arquivos desses ambientes disponibilizam ao usuário mecanismos nesse sentido. Mesmo usando esses ambientes, o usuário pode se interessar em usar outros aplicativos específicos. Existe uma grande quantidade de programas com esse objetivo, o que pode ser verificado facilmente em qualquer site de aplicativos para Linux. Entre esses aplicativos, encontra-se o ImageMagick, já comentado na Seção 3.6.1. Também merecem destaque o Eletric Eyes, mostrado na Figura 3.41, e o GQView. O ee, como também é conhecido o Eletric Eyes, é um visualizador que exige pouquíssimos recursos computacionais. O GQview, apresentado na Figura 3.42 é um visualizador de imagens simples, porém poderoso. Ele suporta a maioria dos formatos de imagem disponíveis, lista com miniaturas, funções para zoom, exibição em tela cheia, slideshow, além de funções para gerenciamento dos arquivos como apagar, copiar, mover, etc. Outra funcionalidade do GQview é a possibilidade de ser chamado um editor de imagens, como o GIMP, para editar a imagem que está sendo visualizada. Para os saudosistas do ACDSee, um aplicativo bastante utilizado em Windows, existe um programa que tenta suprir o usuário de suas funcionalidades. O GTKSee, foi durante um bom tempo um concorrente direto e superior ao GQView. O projeto foi, entretanto, abandonado por um bom tempo, tendo sido retornado em maio de 2003 por outro desenvolvedor.
54
EDITORA - UFLA/FAEPE - Linux Intermediรกrio
Figura 3.41: Eletric Eyes
Figura 3.42: GQview
GUI - Graphical User Interface
3.7.2
55
Visualizadores PostScript e PDF
A visualização de arquivos PostScript e PDF em Linux é feita preferencialmente com o Ghostview, o Xpdf ou o Acrobat Reader. O Xpdf é um programa que permite ao usuário visualizar arquivos PDF (Portable Document Format) no Linux. Sua interface é simples e bem leve. Ele também incorpora ferramentas de conversão do formato PDF para outros formatos como PostScript e texto puro. É uma ótima opção para quem tem poucos recursos e precisa ter acesso à arquivos PDF. Na Figura 3.43, é mostrada uma imagem do Xpdf em execução.
Figura 3.43: Xpdf
Por sua vez, o Acrobat Reader é o programa de visualização de arquivos PDF desenvolvido pela empresa que criou os formatos PostScript e PDF, a Adobe. O Acrobat Reader tem muito mais funções que o Xpdf, mas perde em desempenho. Existe uma lista de miniaturas e uma seção de favoritos, que facilita a navegação pelo documento. Além disso,
56
EDITORA - UFLA/FAEPE - Linux Intermediário
possui ferramentas para seleção de texto e de imagens, o que facilita a exploração e obtenção de fragmentos do documento. É uma ótima opção para visualização de arquivos PDF, por conter o maior número de ferramentas. Na Figura 3.44, é possível ver o Acrobat Reader em execução.
Figura 3.44: Acrobat Reader
Já o gv (de GhostView) é uma interface para o interpretador Ghostscript, que permite visualizar arquivos PostScript de forma funcional e com poucas exigências de recursos computacionais. Ele oferece opções simples em relação à visualização e impressão. O gv também suporta arquivos no formato PDF, porém pode haver problemas de exibição, sendo recomendado usar o Xpdf ou o Acrobat Reader para esses formatos. Porém para arquivos PostScript, o gv, ilustrado na Figura 3.45, é a melhor opção. Além do gv, dois outros visualizadores PostScript são também bastante comuns: o GGv (Gnome GhostView), uma interface GNOME para o Ghostscript, ilustrado na Figura 3.46, e o KGhostView. Como o próprio nome indica, o KGhostView é o interface KDE para o Ghostscript. A título de informação, o Ghostscript é um conjunto de ferramentas e bibliotecas para tratar arquivos PostScript em vários sistemas operacionais. O Ghostscript é um dos elementos básicos para impressão em Linux, o que pode ser verificado em (SICA; UCHÔA, 2003).
GUI - Graphical User Interface
57
Figura 3.45: gv
Figura 3.46: GGv
58
EDITORA - UFLA/FAEPE - Linux Intermediário
3.8
APLICATIVOS DE MÚSICA, VÍDEO E ENTRETENIMENTO
Em um mundo cada vez mais digital, também o lazer acaba ocupando espaço nos meios eletrônicos. Assim, aplicativos ligados ao entretenimento do usuário encontram-se disponíveis desde as versões mais iniciais do Linux e mesmo do UNIX. Não é incomum ouvir, por exemplo, comentários que o UNIX surgiu a partir da tentativa de se compilar um jogo de batalha estelar em máquinas PDP8 . Assim, atualmente encontram-se disponíveis uma grande quantidade de aplicativos para que o usário possa ouvir música, ver vídeos em diversos formatos e até mesmo relaxar a tensão de um dia de trabalho em jogos dos mais variados estilos. Entre os “players” (aplicativos usados para reproduzir arquivos de som ou vídeo), merecem destaque o XMMS, o Videolan, o Xine e o Mplayer. O XMMS (X Multimedia System) é um programa que reproduz vários arquivos de áudio digital, como o CDA (formato usado nos CDs de Áudio), o MP3 e o OGG. Ele consome poucos recursos da máquina e possui interface parecida com a do Winamp, e suporta skins (o que permite que tenha vários tipos de aparência). Ele possui também um equalizador gráfico, e uma lista de execução, que pode carregar arquivos de listas do Winamp e listas geradas por ele próprio. É uma boa opção para quem gosta de ouvir música enquanto utiliza o computador. A Figura 3.47 mostra uma imagem do XMMS com a lista de execução e o equalizador.
Figura 3.47: XMMS - X Multimedia System
Apesar do XMMS também permitir a reprodução de vídeos, com o uso de pluggins, nesse caso melhores escolhas são o Xine, o Videolan e o Mplayer. O Xine, ilustrado na 8
Obs: os autores desse texto não sabem se essa estória é verídica, apenas fazem questão de repassá-la adiante.
GUI - Graphical User Interface
59
Figura 3.48, permite reproduzir arquivos de audio (MP3) e vídeo (AVI, MOV, WMV, MPEG, etc.) consumindo pouquíssimo tempo de CPU, se comparado a aplicativos similares. Ele suporta os arquivos de legenda (subtitles), e também reproduz DVD’s, com a instalação de plugins. Existem controles de reprodução, cor, brilho, contraste, lista de execução, suporte a skins, além da captura de imagens a partir de um vídeo em reprodução.
Figura 3.48: Xine
O Videolan consiste não somente em um player, mas em um projeto ambicioso para videoconferência, ou seja aplicativos cliente e servidor para vídeo MPEG. Um desses aplicativos, o VLC (VideoLan Client), é não somente um cliente MPEG, mas um ótimo player para arquivos de vídeo nesse formato. Outro player para vídeo, é o MPlayer, é um programa que reproduz vídeo em vários formatos, como MPEG, AVI, MOV, DivX, entre outros. Como o Xine e o VLC, ele também é capaz de reproduzir DVDs. O MPlayer, que também suporta skins, é um dos programa mais completo para reprodução de vídeo no Linux. Quanto aos jogos, várias são as possibilidades de diversão em Linux, o que pode ser verificado na LinuxGames (http://www.linuxgames.com/) ou na Linux Game Tome (http://www.happypenguin.com/news). Jogos comerciais, como Unreal Tournament, já possuem versões para Linux. Mas também existem soluções gratuitas de alto nível, como o Freeciv e Freecraft ou mesmo Doom e Quake. A Figura 3.49 mostra uma tela extraída de uma partida de Bzflag. Existem também emuladores plataformas de jogos, objetivando
60
EDITORA - UFLA/FAEPE - Linux Intermediário
entretenimento, como o SNES, emulador Super Nintendo, e MAME, um emulador para vários arcades (como o Atari).
Figura 3.49: Jogo Bzflag
3.9
COMENTÁRIOS FINAIS
O leitor deve observar que foram listadas apenas algumas classes de aplicativos gráficos e também apenas alguns exemplos de cada classe. O Linux apresenta uma gama muito maior de aplicabilidade do que aqui apresentada, gama essa que tende a crescer ainda mais devido à constante popularização do sistema operacional, aumento das empresas que o vêm adotando e aumento da oferta de distribuições Linux no mercado. Um outro motivo para a crescente demanda consiste em que muitos aplicativos implementados para Linux seguem o paradigma de software livre ou similar. Caso o leitor esteja procurando por um dado aplicativo, existem diversos sites que facilitam essa busca, como o Freshmeat (http://www.freshmeat.net/), o Linuxapps (http://www.linuxapps.com/) ou Tucows Linux (http://linux.tucows.com/). O
GUI - Graphical User Interface
61
Freshmeat, além de ser um site de busca, contém notícias de atualizações de aplicativos e artigos diversos, merecendo visitas periódicas. Também não é possível esquecer o Sourceforge (http://sourceforge.net/), um grande repositório para aplicações distribuídas sob licenças de código aberto. Para busca de aplicações científicas, o melhor site é o Scientific Applications on Linux (SAL - http://sal.kachinatech.com/). Caso o administrador queira instalar o aplicativo desejado no formato RPM, então não podem ser esquecidos o Rpmfind (http: //rpmfind.net/) e o Freshrpms (http://freshrpms.net/).
62
EDITORA - UFLA/FAEPE - Linux Intermediรกrio
4 O CONSOLE LINUX
4.1
CONCEITOS BÁSICOS
Um dos maiores mitos do Linux é que o uso da interface de linha de comando, também conhecida como terminal, modo texto ou console, é extremamente complicado. Na realidade, tal informação é infundada, pois o conceito de usabilidade ainda é tema de muitas pesquisas no meio acadêmico. O que nota-se é uma série de “usuários” habituados ao conceito de interfaces gráficas, que tornaram-se meros autômatos, repetindo movimentos sem, algumas vezes, notar o que está sendo feito ou compreender qual o objetivo. Isso não significa que as interfaces gráficas sejam algo ruim, pelo contrário, podem aumentar a produtividade do usuário que sabe explorar seus recursos. Entretanto, algumas atividades não podem ser efetuadas em interfaces gráficas de forma eficiente, principalmente no Linux. Nem todas as máquinas Linux possuem o servidor gráfico instalado (Seção 3.1), principalmente em servidores. Para que alguém possa tornarse um bom administrador em redes Linux, o conhecimento do modo texto é fundamental. Os conceitos do terminal permeiam todas as atividades da administração, desde o processo de configuração (SICA; UCHÔA, 2003) até a criação de shell scripts1 (SCHNEIDER, 2002). Seguindo esta filosofia, este capítulo apresenta uma série de comandos de console. Obviamente existem vários outros comandos e essa apresentação não se preocupa em apresentar todas as opções dos comandos descritos. O objetivo deste capítulo é familiarizar o leitor com o console do Linux, munindo-o do conhecimento básico para isso. São apresentados exemplos de usos dos comandos, sendo que o caracter “#” é usado para indicar um prompt de terminal. Na medida do possível, os comandos foram agrupados por categoria de tarefa que executam.
1
Shell Script: pequeno programa escrito utilizando comandos do Linux para automatizar tarefas, como um arquivo de lote.
64
EDITORA - UFLA/FAEPE - Linux Intermediário
4.2
COMANDOS PARA MANIPULAÇÃO DE ARQUIVOS E DIRETÓRIOS
Comandos de manipulação de arquivos são aqueles que podem interagir com o sistema de arquivos do Linux. As operações de criação, remoção, renomeação e cópia de arquivos e diretórios são um exemplo típico. Também foram incluídas nesta seção operações para manipulação de permissões do arquivo. Para maiores detalhes sobre arquivos, caminhos e diretórios em Linux, ver (SICA; UCHÔA, 2003) e (ABREU SILVA, 2002). 4.2.1
Comando cd
O comando cd entra em um determinado diretório. Pode ser especificado um endereço absoluto (começando com /) ou relativo ao caminho atual; caso não seja passado nenhum valor, assume que é o diretório HOME (o diretório pessoal do usuário). Na Tabela 4.1, são mostrados os parâmetros que podem ser passados ao cd, e a Figura 4.1 mostra exemplos de uso desse comando. Tabela 4.1: Parâmetros do Comando cd
Parâmetro -P -L
Descrição utiliza a estrutura física do diretório em vez de links simbólicos força links simbólicos a serem seguidos
Entra no diretório HOME do usuário # cd Entra no diretório /usr/bin # cd /usr/bin Entra no subdiretório mail no diretório HOME do usuário # cd ~/mail Entra em /usr/local/share a partir de /usr/share/wallpapers # cd ../../local/share Entra em /usr/src/linux-2.4.14-18, apontado pelo link /usr/src/linux # cd -P /usr/src/linux Figura 4.1: Exemplos de Uso do cd
O Console Linux
4.2.2
65
Comando pwd
O comando pwd imprime o caminho completo para o diretório atual. Seus parâmetros opcionais estão indicados na Tabela 4.2 e exemplos de sua execução são mostrados na Figura 4.2. Tabela 4.2: Parâmetros do Comando pwd
Parâmetro -P -L
Descrição imprime o diretório físico, sem links simbólicos imprime links simbólicos
Executando como usuário root no diretório HOME, exibe /root # pwd Executando em /usr/src/linux, link para /usr/src/linux-2.14.18-14, exibe /usr/src/linux-2.14.18-14 # pwd -P Executando em /usr/src/linux, link para /usr/src/linux-2.14.18-14, exibe /usr/src/linux # pwd -L Figura 4.2: Exemplos de Uso do pwd
4.2.3
Comando ls
O comando ls exibe informações sobre um arquivo ou um diretório. Se não for especificado um caminho, lista o conteúdo do diretório atual. Possui vários parâmetros, alguns deles mostrados na Tabela 4.3. Exemplos de uso do ls são mostrados na Figura 4.3. 4.2.4
Comando mkdir
O mkdir (make directory) cria um diretório onde o usuário estiver atualmente. Para isso, basta que o usuário tenha permissão para escrever no diretório corrente. A Figura 4.4 mostra a criação de um diretório em um diretório atualmente vazio. Observe na figura que podem ser especificados mais que um nome de diretório a ser criado, caso não existam ainda.
66
EDITORA - UFLA/FAEPE - Linux Intermediário
Tabela 4.3: Parâmetros do Comando ls
Parâmetro -d -h -d -R -X -t -r -A -B -p -color=valor
Descrição Lista apenas diretórios Mostra tamanhos de arquivos de forma mais compreensível Lista o nome do diretório em vez de seu conteúdo Entra recursivamente em subdiretórios Ordena alfabeticamente os arquivos e diretórios Ordena por data de alteração Inverte a ordem se saída especificada Mostra todos os arquivos, inclusive ocultos Ignora arquivos de backup (terminam em ) Identifica diretórios com uma barra no final Utilização cores para distinguir tipos de arquivos, onde valor pode ser: never, always ou auto
Mostra todos os arquivos com extensão ’.lib’ no diretório atual em ordem alfabética # ls -X *.lib Mostra todos os arquivos do diretório home, inclusive arquivos ocultos # ls -A ~ Mostra todos os arquivos e subdiretórios no diretório home do usuário # ls -RX Mostra todos os arquivos, exceto backups, ordenados por data de alteração # ls -tB O mesmo que o anterior, porém em ordem inversa # ls -rtB Lista todos os diretórios ocultos # ls -d .* --color=always Figura 4.3: Exemplos de Uso do ls
O Console Linux
67
# ls # mkdir teste # ls teste # mkdir teste1 teste2 teste3 # ls teste teste1 teste2 teste3
Figura 4.4: Exemplos de Uso do mkdir
4.2.5
Comando rmdir
O rmdir remove um ou mais diretórios, desde que os mesmos estejam completamente vazios. Supondo que os diretórios da Figura 4.4 tenham sido criados e que estejam vazios, pode-se exclui-los completamente, como mostrado na Figura 4.5. A Figura 4.6 ilustra uma forma alternativa, já que todos os diretórios possuem um nome semelhante, permitindo o uso do “coringa” ‘*’. Esse caracter especial indica que a shell deve substituir o asterisco por qualquer conjunto de caracteres.
# ls teste teste1 teste2 teste3 # rmdir teste teste1 teste2 teste3 # ls #
Figura 4.5: Exemplo de Uso do rmdir
# ls teste teste1 # rmdir test* # ls #
teste2
teste3
Figura 4.6: Exemplo de Uso do rmdir – uso de caracteres “coringa”
68
4.2.6
EDITORA - UFLA/FAEPE - Linux Intermediário
Comando rm
O comando rm pode ser usado para remover arquivos e diretórios. De forma diferente do rmdir, pode-se excluir diretórios não-vazios, especificando-se parâmetros na linha de comando. Tais parâmetros podem ser vistos na Tabela 4.4. A Figura 4.7 ilustra a remoção de um diretório, assumindo que ele não esteja vazio. Para isso, são usados os parâmetros -f e -r combinados (remoção recursiva e sem questionar o usuário) e -v (para listar tudo que está sendo feito). Use tais opções com extrema cautela, pois os arquivos apagados dessa forma não poderão ser recuperados com facilidade (e na maioria das vezes, o esforço exigido não irá compensar a tarefa).
Tabela 4.4: Parâmetros do Comando rm
Parâmetro -f, --force
Descrição Elimina arquivos não existentes e nunca pede confirmação do usuário antes de remover o arquivo. -i, --interactive Pede confirmação do usuário antes de remover cada arquivo ou diretório. -r, -R, --recursive Percorre os diretórios recursivamente, removendo todos os seus subdiretórios e arquivos. -v, --verbose Informa o que está sendo feito com cada arquivo.
# rm -rfv lixo removed ‘lixo/a.txt’ removed ‘lixo/img.jpg’ removed ‘lixo/fotos/f1.jpg’ removed ‘lixo/fotos/f2.jpg’ removed directory: ‘lixo/fotos’ removed directory: ‘lixo’
Figura 4.7: Exemplo de Uso do rm
O Console Linux
4.2.7
69
Comando mv
O comando mv é usado para mover arquivos de um local para outro, ou simplesmente renomeá-los. A Tabela 4.5 traz alguns dos principais parâmetros do comando, enquanto a Figura 4.8 ilustra alguns dos usos do comando.
Tabela 4.5: Parâmetros do Comando mv
Parâmetro -f, --force
Descrição Não pede confirmação do usuário antes de sobrescrever o arquivo. -i, --interactive Pede confirmação do usuário antes de sobrescrever. -u, --update Move apenas os arquivos que novos e versões recentes de arquivos já existentes. -v, --verbose Informa o que está sendo feito com cada arquivo.
Movendo todos os arquivos para o diretório /tmp: # mv * /tmp Renomeando o arquivo teste.txt para exemplo.txt: # mv teste.txt exemplo.txt Movendo todo o diretório meudir para o /tmp: # mv meudir /tmp
Figura 4.8: Exemplos de Uso do mv
4.2.8
Comando cp
O comando cp é usado para copiar arquivos e diretórios. Sua sintaxe é simples, bastando identificar o(s) arquivo(s) de origem e o destino onde será feita a cópia. Quando se especifica mais que um arquivo na origem, obrigatoriamente, o destino deve ser um diretório. Os principais parâmetros do comando estão listados na Tabela 4.6. Exemplos de uso estão disponíveis na Figura 4.9. Para maiores informações sobre hard links e symbolic links, consulte a (SICA; UCHÔA, 2003) e a Seção 4.2.10.
70
EDITORA - UFLA/FAEPE - Linux Intermediário
Tabela 4.6: Parâmetros do Comando cp
Parâmetro Descrição -d, --no-dereference Não segue links simbólicos. -f, --force Se um arquivo destino já existe ou não puder ser aberto, será removido e copiado novamente. -i, --interactive Pede confirmação do usuário antes de sobrescrever. -l, --link Cria um hard link para o arquivo, em vez de copiá-lo. -L, --dereference Sempre seguir links simbólicos. -p, --preserve Preserva os atributos dos arquivos, sempre que possível. -r Copia os diretórios recursivamente (diretórios e seus conteúdos: arquivos e subdiretórios). -s, --symbolic-link Cria um link simbólico em vez de copiar o arquivo. -u, --update Copia apenas os arquivos que não existem no destino e arquivos mais recentes que arquivos já existentes no destino. -v, --verbose Informa o que está sendo feito com cada arquivo.
Copiar todos os arquivos do diretório atual (*) para o diretório home do usuário (~): # cp * ~ Copiar os arquivo lago.bmp e foto.bmp para o diretório fotos: # cp lago.bmp foto.bmp fotos Copiar o arquivo /etc/services para o diretório atual (.): # cp /etc/services .
Figura 4.9: Exemplos de Uso do cp
4.2.9
Comando touch
O comando touch é usado para alterar a data/hora de modificação e acesso dos arquivos especificados. Pode ser usado também para criar um arquivo vazio. A Tabela 4.7 mostra os principais parâmetros do comando, enquanto a Figura 4.10 ilustra seu uso.
O Console Linux
71
Tabela 4.7: Parâmetros do Comando touch
Parâmetro -a -c, --no-create -m
Descrição Altera apenas a data/hora de acesso ao arquivo. Não cria o arquivo, se o mesmo não existir. Altera apenas a data/hora de alteração do arquivo.
Alterar a data de acesso dos arquivos do diretório atual: # touch -a * Alterar a data de modificação dos arquivos do /tmp: # touch -m /tmp/* Alterar todas as datas dos arquivos do diretório atual: # touch * Criar o arquivo vazio.txt: # touch vazio.txt
Figura 4.10: Exemplos de Uso do touch
4.2.10
Comando ln
O comando ln pode ser usado para criar links (atalhos) para arquivos. Um link pode ser visto como um novo nome ou um atalho para um arquivo existente. Ao contrário de outros sistemas operacionai, ao editar-se um link, o conteúdo do arquivo original é alterado. Existem dois tipos de links: Hard link: um hard link pode, a grosso modo, ser entendido como um nome do arquivo. De uma forma mais técnica, um hard link é um apontador pointer para o i-node na tabela do sistema de arquivos. Todo arquivo tem ao menos um hard link, que é o seu próprio nome, mas um mesmo arquivo pode possuir vários hard links. Se um arquivo tiver mais de um nome, então ele só é apagado definitivamente quando todos os hard links forem apagados. Obviamente, dadas suas características, um hard link só pode ser criado para arquivos comuns e na mesma partição. symbolic link: um symbolic link ou link simbólico é um arquivo que aponta para o arquivo original, funcionando como um atalho para ele. Ele pode ser direcionado para diretórios ou arquivos em outras partições. Como ele é apenas um atalho, se for apagado não irá apagar o arquivo original.
72
EDITORA - UFLA/FAEPE - Linux Intermediário
Apesar de possuir vários parâmetros, este texto abordará apenas o parâmetro -s, que diz para o comando criar um link simbólico. Para criar hard links, não é necessário nenhum parâmetro extra. Maiores informações podem ser obtidas consultando o manual online (man) do comando2 . A Figura 4.11 ilustra a criação dos dois tipos de links. Criando um link simbólico chamado ’portas’ que aponta para o arquivo /etc/services: # ln -s /etc/services portas Criando um hard link chamado ’novo’ para o arquivo ’antigo’, no mesmo diretório: # ln antigo novo
Figura 4.11: Exemplos de Uso do ln
4.2.11
Comando chmod
O comando chmod pode ser usado para alterar as permissões de acesso aos arquivos. Um arquivo qualquer tem permissões de leitura, escrita e execução independentes para o usuário (proprietário), o grupo do arquivo e os demais usuários que não pertençam ao grupo. A permissão de execução é atribuída a diretórios (permitindo que possa-se usar o comando cd para acessá-los) ou programas ou shell scripts que possam ser executados. Assim, para que um arquivo em Linux seja um executável, basta que ele tenha permissão de execução, não necessitando de qualquer terminação para isso. Para mudar as permissões, existem duas formas básicas. A primeira, utiliza os caracteres ‘r’, ‘w’ e ‘x’ para expressar as permissões de leitura, escrita e execução, respectivamente. Os caracteres ‘u’, ‘g’, ‘o’ e ‘a’ são usados para representar, respectivamente, o usuário, seu grupo, os outros usuários e todos (‘a’ de all). Além desses caracteres, são usados os sinais ‘+’, para adicionar uma permissão, ‘-’, para removê-la e ‘=’ para uma atribuição de permissões. A Figura 4.12 mostra exemplos dessa forma de uso do chmod. Note que é possível separar opções por vírgula e que essas opções podem ser agrupadas de várias formas. A segunda forma, conhecida como octal, utiliza três números para identificar as permissões do arquivo (usuário, grupo e outros). A Tabela 4.8 traz esses valores. A Figura 4.13 ilustra essa forma uso do comando. Dentre os parâmetros opcionais do comando chmod, merece destaque o ‘-R”, que altera as permissões recursivamente no diretório especificado. 2
Veja no Capítulo 5 sobre como acessar o manual de um comando e obter ajuda.
O Console Linux
73
Permite que o usuário possa ler e escrever no arquivo (relat.txt), o grupo possa ler e os outros usuários não tenham acesso: # chmod u=rw,g=r,o-rwx relat.txt Dá todas as permissões ao usuário (leitura, escrita e execução) e execução para grupo e demais usuários ao arquivo ’testar_servicos’: # chmod a=x,u+rw testar_servicos Dar permissão de leitura e escrita para o proprietário e remover todas as outras permissões em todos os arquivos dentro do diretório ’/home/fulano’: # chmod -R u=rw,og-rwx /home/fulano
Figura 4.12: Exemplos de Uso do Comando chmod – Opções por Caracteres
Tabela 4.8: Permissões de Arquivo
Valor 0 1 2 3 4 5 6 7
4.2.12
Descrição Remove todas as permissões relativas à posição do dígito. Dá permissão de execução ao arquivo ou diretório. Dá permissão de escrita. Dá permissões de escrita e execução (equivale às permissões 1 e 2 somadas). Dá permissão de leitura. Equivalente à combinação das permissões 1 e 4. Equivalente às permissões 2 e 4. Todas as permissões definidas (1, 2 e 4).
Comando chown
O comando chown (change owner) permite trocar o usuário proprietário do arquivo e, opcionamente, o grupo do arquivo. Em Linux, esse comando só pode ser executado pelo usuário root. Dentre as opções disponíveis, merece destaque o parâmetro ‘-R’, que faz a troca recursivamente em todos os arquivos e subdiretórios de um diretório especificado. A Figura 4.14 ilustra o uso do comando.
74
EDITORA - UFLA/FAEPE - Linux Intermediário
Permite que o usuário possa ler e escrever no arquivo (relat.txt), o grupo possa ler e os outros usuários não tenham acesso: # chmod 640 relat.txt Dá todas as permissões ao usuário (leitura, escrita e execução) e execução para grupo e demais usuários ao arquivo ’testar_servicos’: # chmod 711 testar_servicos Dar permissão de leitura e escrita para o proprietário e remover todas as permissões em todos os arquivos dentro do diretório ’/home/fulano’: # chmod -R 600 /home/fulano
Figura 4.13: Exemplos de Uso do Comando chmod
Altera o proprietário do arquivo planilha.xml para ’fulano’: # chown fulano planilha.xml Altera o proprietário para ’apache’ e o grupo para ’web’ em todos os arquivos/subdiretórios existentes em /var/www/html: # chown -R apache:web /var/www/html Altera o grupo do arquivo /var/spool/mail/fulano para ’mail’: # chown :mail /var/spool/mail/fulano
Figura 4.14: Exemplos de Uso do Comando chown
4.2.13
Comando chgrp
Age de forma similar ao chown, mas permite a troca apenas do grupo proprietário do arquivo. Caso não esteja sendo usado para mudança a um outro grupo ao qual o usuário também faça parte, o comando só pode ser executado pelo root para realizar a troca dos grupos. Dentre as diversas opções disponíveis, merece destaque o parâmetro ‘-R’ que faz a troca recursiva em todos os arquivos e subdiretórios localizados abaixo do diretório especificado. A Figura 4.15 ilustra o uso do comando.
O Console Linux
75
# ls -l teste.txt -rw-r--r-1 fulano users # chgrp editores teste.txt # ls -l teste.txt -rw-r--r-1 fulano editores
32687 Mai 26 15:51 teste.txt
32687 Mai 26 15:51 teste.txt
Figura 4.15: Exemplo de Uso do chgrp
4.2.14
Comando mount
O comando mount é utilizado para associar um sistema de arquivos a um diretório em um computador. Por padrão, todos os sistemas de arquivo são “montados” em subdiretórios do diretório /mnt, como, por exemplo, /mnt/floppy para disquetes e /mnt/cdrom para drives de CD-ROM. A tarefa de montagem somente pode ser realizada pelo usuário root, a não ser que a montagem esteja configurada no arquivo /etc/fstab. Mais detalhes sobre esse arquivo e o processo de montagem e desmontagem de dispositivos de arquivos podem ser encontrados em (SICA; UCHÔA, 2003). A Tabela 4.9 mostra os principais parâmetros desse comando, e a Figura 4.16 exemplifica alguns de seus usos. Toda partição montada com mount deve ser desmontada com o comando umount, mostrado na Seção 4.2.15.
Tabela 4.9: Parâmetros do comando mount
Parâmetro -a -t -r
4.2.15
Descrição Monta todos os sistemas de arquivos especificados em /etc/fstab Especifica o tipo de sistema de arquivos Monta o sistema de arquivos como somente-leitura
Comando umount
O comando umount é utilizado para desmontar sistemas de arquivos que tenham sido montados com o comando mount (Seção 4.2.14). Um sistema de arquivos somente pode ser desmontado se não estiver “ocupado”, ou seja, se o diretório atual não estiver dentro do diretório onde foi montado o sistema de arquivos, e se este não possuir diretórios abertos. A Tabela 4.10 mostra alguns dos parâmetros do comando umount, e a Figura 4.17 exemplifica sua utilização.
76
EDITORA - UFLA/FAEPE - Linux Intermediário
Monta o sistema de arquivos do disquete no diretório /mnt/floppy (supondo que já esteja configurado no /etc/fstab) # mount /mnt/floppy Monta o sistema de arquivos do CD-ROM no diretório /mnt/cdrom (supondo que já esteja configurado no /etc/fstab) # mount /mnt/cdrom Monta a primeira partição do disco IDE primário master em /mnt/win, usando o sistema de arquivos vfat - só permitido ao usuário root # mount -t vfat /dev/hda1 /mnt/win Figura 4.16: Exemplos de uso do mount
Tabela 4.10: Parâmetros do Comando umount
Parâmetro -n -r -a -t -f
Descrição Desmonta sem escrever no arquivo /etc/mtab Se a desmontagem falhar, tenta remontar como somente-leitura Desmonta todos os sistemas de arquivos em /etc/mtab Especifica o tipo dos sistemas de arquivos a serem desmontados Realiza uma desmontagem forçada (útil em sistemas de arquivos em rede que ficaram inacessíveis)
Desmonta todos os sistemas de arquivo do tipo vfat # umount -a -t vfat Desmonta o dispositivo de disquete, montado em /mnt/floppy # umount /mnt/floppy Figura 4.17: Exemplos de Uso do umount
4.3
COMANDOS DE TRANSIÇÃO DO MS-DOS PARA LINUX
A presente seção procura mostrar alguns comandos que permitem que o usuário iniciante em Linux faça uma transição suave entre os dois sistemas operacionais. Serão abordadas algumas das ferramentas disponibilizadas pelo pacote mtools, que simulam em Linux o uso de comandos MS-DOS, apenas prefixando-os com o caracter m. O objetivo
O Console Linux
77
não é listar todos os comandos do pacote, pois é altamente recomendável que o usuário familiarize-se com os comandos nativos do Linux, mas apenas listar os mais comuns. Esses comandos funcionam de forma similar aos originais. Como poderá ser observado, a maioria dos parâmetros usados na versão original são válidas, sendo necessário apenas trocar a barra (/) por um hífen ao especificar os parâmetros. A contra-barra ( ) pode ser usada para separar diretórios, mas é necessário colocar o parâmetro entre aspas para que a shell não o interprete da forma convencional. O mesmo vale para os caracterescoringa (* e ?). 4.3.1
Comando mdir
O comando mdir permite a listagem do conteúdo de um diretório ou disco que use o sistema de arquivos baseado em FAT. A Tabela 4.11 exibe os principais parâmetros do comando, enquanto a Figura 4.18 ilustra suas formas de uso. Tabela 4.11: Parâmetros do Comando mdir
Valor -/ -w 2
4.3.2
Descrição Lista os diretórios recursivamente, equivalente ao /s original. Lista os arquivos em colunas, omitindo tamanho e data de criação. Lista arquivos ocultos.
Comando mcopy
O comando mcopy é utilizado para copiar arquivos entre diretórios. A Tabela 4.12 mostra os principais parâmetros para o comando, e a Figura 4.19 ilustra suas formas básicas de uso. Tabela 4.12: Parâmetros do Comando mcopy
Valor -s -p -Q -n -m -v
Descrição Copia diretórios recursivamente Copia preservando os atributos Interrompe as cópias se um dos arquivos falhar Não solicita confirmação ao sobrescrever arquivos Preserva a data/hora de modificação do arquivo Mostra os nomes dos arquivos à medida em que vão sendo copiados
78
EDITORA - UFLA/FAEPE - Linux Intermediário
# mdir a: Volume in drive A has no label Volume Serial Number is 382E-9075 Directory for A:/ linux artigo
tgz 771337 05-12-2003 12:56 linux.tgz pdf 30380 05-14-2003 10:42 brazil.pdf 2 files 801 717 bytes 655 360 bytes free
# mdir -w a: Volume in drive A has no label Volume Serial Number is 382E-9075 Directory for A:/ linux.tgz artigo.pdf 2 files
801 717 bytes 655 360 bytes free
Figura 4.18: Exemplos de Uso do mdir Copia todos os arquivos e diretórios do disquete para o diretório HOME # mcopy -s a:/ ~ Copia todos os arquivos com a extensão .conf para o disquete, preservando a data da última modificação # mcopy -m *.conf a: Figura 4.19: Exemplos de Uso do mcopy
4.3.3
Comando mformat
O comando mformat é utilizado para formatar discos com sistemas de arquivos MSDOS. A Tabela 4.13 mostra os principais parâmetros do comando, e a Figura 4.20 ilustra alguns exemplos de utilização.
4.4
COMANDOS DE VISUALIZAÇÃO, BUSCA E ORDENAÇÃO
Os comandos apresentados nesta seção destinam-se principalmente ao processo de visualização e busca em arquivos em texto puro. Assim, entre outros, são apresentados os
O Console Linux
79
Tabela 4.13: Parâmetros do Comando mformat
Parâmetro -t -h -n -f -v
Descrição Especifica o número de cilindros Especifica o número de cabeças Especifica o número de setores Especifica o tamanho do disco Especifica um nome de volume
Formata um disquete de 1.44 MB # mformat -f 1440 a: Define o rótulo para o disquete # mformat -v "Documentos" a: Figura 4.20: Exemplos de Uso do mformat
comandos less, cat e grep ferramentas poderosas do administrador. Também são apresentados o comando find, que permite localizar arquivos que satisfaçam um determinado padrão e o sort, que permite ordenar entradas de um arquivo texto. 4.4.1
Comando less
O comando less é um programa utilizado para visualização pausada de um arquivo texto em um terminal, permitindo inclusive voltar a um texto já visualizado. É mais rápido que editores de texto, uma vez que não precisa carregar todo o arquivo em memória para exibi-lo. Possui vários comandos utilizados para navegação, alguns deles mostrados na Tabela 4.14. O nome desse comando é uma brincadeira com o comando more, que possui menos funcionalidades (não permitindo, por exemplo, voltar a uma parte anterior do texto). A Figura 4.21 mostra como esse comando pode ser utilizado.
Abre o conteúdo do arquivo LEIAME para visualização # less LEIAME Figura 4.21: Exemplos de Uso do less
80
EDITORA - UFLA/FAEPE - Linux Intermediário
Tabela 4.14: Comandos de Navegação do less
Parâmetro e y f b /expressao ?expressao n N
4.4.2
Descrição Avança uma linha Recua uma linha Página seguinte Página anterior busca por ’expressao’ no texto a partir do início do documento busca por ’expressao’ no texto a partir do fim do documento Repete uma busca anterior Repete uma busca anterior em ordem reversa
Comando cat
Imprime o conteúdo de um arquivo na tela. Ao contrário do more e do less, mostra o conteúdo de uma só vez, não interrompendo a exibição para facilitar a leitura. Pode ser utilizado para concatenar arquivos, redirecionando a saída para um arquivo em vez de usar a saída padrão. A Tabela 4.15 mostra alguns dos parâmetros que podem ser passados ao comando cat, enquanto a Figura 4.22 lista alguns exemplos de utilização desse comando. Tabela 4.15: Parâmetros do Comando cat
Parâmetro -b -n -T -E
4.4.3
Descrição Numera as linhas de saída que não estiverem em branco Numera as linhas de saída, inclusive linhas em branco Mostra tabulações como o caracter ˆI Mostra o caracter ’$’ ao final de cada linha
Comando tail
Imprime as linhas finais de um arquivo qualquer. Por padrão, imprime as últimas dez linhas do arquivo. A Figura 4.23 mostra formas de uso do tail. Dentre os parâmetros possíveis, dois merecem destaque: -n: permite especificar quantas linhas serão impressas, alterando o valor padrão; -f: faz com que o comando leia continuamente o arquivo e imprima cada nova linha adicionada ao fim do arquivo, permitindo a monitoração de arquivos de registro do sistema (disponíveis /var/log/).
O Console Linux
81
Lista o conteúdo do arquivo LEIAME na tela # cat LEIAME Concatena o conteúdo de livro.001, livro.002 e livro.003 em um único arquivo livro.pdf # cat livro.001 livro.002 livro.003 > livro.pdf Mostra o conteúdo do arquivo fonte.cpp, numerando as linhas (inclusive linhas em branco) # cat fonte.cpp -n Figura 4.22: Exemplos de Uso do cat Imprime as 5 últimas linha do arquivo listapaises.txt: # tail -n 5 listapaises.txt WESTERN SAHARA;EH YEMEN;YE YUGOSLAVIA;YU ZAMBIA;ZM ZIMBABWE;ZW
Figura 4.23: Exemplos de Uso do tail
4.4.4
Comando head
O comando head age de forma similar ao comando tail, imprimindo as dez primeiras linhas de um arquivo, enquanto o outro imprime as linhas finais. A opção que merece destaque é -n, que permite especificar o número de linhas que serão impressas. A Figura 4.24 ilustra o uso do comando. Imprimindo as 5 primeiras linhas de listapaises.txt: # head -n 5 listapaises.txt AFGHANISTAN;AF ALBANIA;AL ALGERIA;DZ AMERICAN SAMOA;AS ANDORRA;AD
Figura 4.24: Exemplos de Uso do head
82
EDITORA - UFLA/FAEPE - Linux Intermediário
4.4.5
Comando find
O programa find faz busca na árvore de diretórios, a partir do ponto atual, de arquivos cujos nomes contenham uma expressão passada como parâmetro. Na Tabela 4.16 estão especificados alguns parâmetros do find, e na Figura 4.25 alguns exemplos de seu uso. Tabela 4.16: Parâmetros do Comando find
Parâmetro -follow
Descrição Derreferencia os links simbólicos. Implica no uso de -noleaf. -maxdepth <niveis> Especifica o número máximo de níveis que o find vai descer na árvore de diretórios, quando estiver fazendo a busca. -mindepth <niveis> Especifica o número mínimo de níveis que o find vai descer na árvore de diretório, antes de iniciar a busca. -noleaf Não otimiza a busca para sistema de arquivos UNIX-like. É uma opção necessária para sistemas de arquivos como FAT e CD-ROMs. -name Permite buscar um arquivo ou diretório que satisfaça uma dada expressão regular. -iname Idêntica à opção -name mas desprezando o uso de maiúsculas ou minúsculas. -size Permite buscar um arquivo pelo seu tamanho. -user Localiza arquivos e diretórios de um dado usuário. -mtime Busca arquivos e diretórios por data de alteração.
Fazendo uma busca, no diretório atual, por arquivos que contenham ’.mp3’ no nome, descendo no máximo 3 níveis na árvore de diretório: # find ./ -name "*.mp3" -maxdepth 3 Procurando arquivos do usuário mico no diretório /home que tenham sido atualizados a menos de 12 horas # find /home -user mico -mtime -12 Procurando arquivos com mais de 5Mb no diretório /tmp e que tenham # find /tmp -size +5000k Figura 4.25: Exemplos de Uso do find
O Console Linux
4.4.6
83
Comando locate
O programa locate faz buscas de arquivos no sistema. Ele usa uma base de dados com informações sobre a localização dos arquivos, por isso tem performance bem superior ao find. Essa base de dados pode ser consultada por todos os usuários, mas apenas o root tem pernissão para fazer atualizações. Na Tabela 4.17 temos os parâmetros mais utilizados e na Figura 4.26 há alguns exemplos da utilização do locate. Tabela 4.17: Parâmetros do Comando locate
Parâmetro -u -U <dir> -i -n <num>
Descrição Atualiza toda a base de dados, a partir do diretório raiz. Opção somente disponível para o usuário root. Atualiza toda a base de dados, a partir do diretório especificado por <dir>. Opção somente disponível para o root. Não diferencia maiúsculas de minúsculas. Limita o número de resultados até o valor especificado por <num>
Atualizando a base de dados do locate: # locate -u Fazendo uma busca por aquivos que contenham a expressao ’.log’, ignorando maiúsculas e minúsculas, e limitando os resultados até o número de 50: # locate -i -n 50 .log Figura 4.26: Exemplos de Uso do locate
4.4.7
Comando sort
O comando sort ordena a linhas de arquivo(s) texto especificado(s) na linha de comando. Seus principais parâmetros são mostrados na Tabela 4.18, e alguns exemplos de uso listados na Figura 4.27 4.4.8
Comando wc
O wc imprime na tela o número de bytes, palavras e linhas de um arquivo passado como parâmetro. Os parâmetros desse comando estão apresentados na Tabela 4.19, e um exemplo da utilização do wc é apresentado na Figura 4.28.
84
EDITORA - UFLA/FAEPE - Linux Intermediário
Tabela 4.18: Parâmetros do Comando sort
Parâmetro Descrição -b, -ignore-leading-blanks ignora espaços no começo da linha -d, -dictionary-order considera apenas caracteres alfanuméricos e espaços -f, -ignore-case não diferencia maiúsculas e minúsculas -i, -ignore-nonprinting ignora caracteres que não podem ser impressos (código ASCII menor que 32). -n, -numeric-sort compara valores numéricos -r, -reverse inverte o resultado da comparação
Mostra os usuários cadastrados no sistema em ordem alfabética # sort /etc/passwd Mostra os processos em execução em ordem decrescente # ps -A | sort -n -r Figura 4.27: Exemplos de Uso do sort Tabela 4.19: Parâmetros do Comando wc
Parâmetro -c -m -l -L -w
Descrição Mostra o número de bytes do arquivo. Mostra o número de caracteres do arquivo. Mostra o número de linhas do arquivo. Mostra o tamanho da maior linha do arquivo. Mostra o número de palavras do arquivo.
Mostrando o núemro de bytes, palavras e linhas do arquivo ’lab.txt’: # wc lab.txt Mostrando o numero de caracteres no arquivo ’teste.txt’: # wc -c teste.txt Figura 4.28: Exemplos de Uso do wc
O Console Linux
4.4.9
85
Comando grep
O programa grep procura expressões em uma entrada, que pode ser um arquivo ou o resultado de um outro programa, direcionada por um pipe3 . É muito útil quando há uma entrada muito grande, mas apenas um item dessa entrada interessa ao usuário. Por padrão, a saída gerada pelo grep são as linhas que contêm a expressão passada como parâmetro. A Tabela 4.20 apresenta alguns parâmetros do grep e a Figura 4.29, alguns exemplos de seu uso. Tabela 4.20: Parâmetros do Comando grep
Parâmetro -c -v -i -l
-L
-n -r
4.5
Descrição Ao invés de exibir as linhas como saída, exibe o número de linhas que contêm a expressão passada como parâmetro. Ao invés de exibir as linhas como saída, exibe o número de linhas que não contém a expressão passada como parâmetro. Ignora maiúsculas/minúsculas. Ao invés de exibir as linhas como saída, exibe os nomes dos arquivos (no caso de multiplos arquivos) que contêm a expressão passada como parâmetro. Ao invés de exibir as linhas como saída, exibe os nomes dos arquivos (no caso de multiplos arquivos) que não contêm a expressão passada como parâmetro. Mostra no início de cada linha da saída o seu número no arquivo de entrada. Faz a busca em todos os arquivos de cada diretório recursivamente.
COMANDOS DE COMPACTAÇÃO
Compartilhar arquivos na internet tem sido uma tarefa cada vez mais costumeira. Entretanto, dados os limites impostos pelo alto tráfego e baixa largura de banda, a compactação de arquivos é extremamente necessária nesse cenário. Dessa maneira, a disponibilização desses arquivos é feito em formato próprio somente quando esse já é compactado (como o mp3, o mpeg, versões novas do PDF, etc.). Nos casos em que isso não ocorre, geralmente são utilizados compactadores para disponibilizar esses arquivos em tamanho 3
Ver a Seção 4.8 sobre o uso de pipes.
86
EDITORA - UFLA/FAEPE - Linux Intermediário
Procurando a expressão ’bola’ no arquivo ’brinquedos.txt’: # grep bola brinquedos.txt Procurando a expressão ’lpr’ no arquivo ’rpms.txt’, exibindo a linha e ignorando maiúsculas e minúsculas: # grep -in lpr rpms.txt Procura a expressão ’program’ em todos os arquivos recursivamente e ao invés de mostrar as linhas que contem a expressão, mostra o nome do arquivo que contém essa expressão. # grep -rl program Figura 4.29: Exemplos de Uso do grep
menor. Esta seção irá abordar os comandos de compactação mais comuns no ambiente UNIX. 4.5.1
Comandos zip e unzip
Os aplicativos zip e unzip são programas de compactação e descompactação compatíveis com o PKZIP do DOS. Ele compacta os arquivos e diretórios em um arquivo que nomalmente possui a extensão .zip. É muito interessante pois ele provê compatibilidade com arquivos compactados no ambiente MS-Windows, onde o padrão de compactação é o do PKZIP. Na Tabela 4.21 são apresentados alguns de seus parâmetros. A Figura 4.30 mostra alguns exemplos de utilização do zip e do unzip.
Compactando a pasta ’a’, gerando o arquivo ’pasta_a.zip’: # zip -r pasta_a a/ Compactando a pasta ’a’, mas sem comprimir os aquivos com extensao ’.tar’ e ’.gz’: # zip -n .tar:.zip -r pasta_a a/ Descompactando o arquivo teste.zip # unzip teste.zip Figura 4.30: Exemplos de Uso do zip e do unzip
O Console Linux
87
Tabela 4.21: Parâmetros dos Comandos zip e unzip
Parâmetro -u
Descrição Atualiza um arquivo que está dentro de um arquivo .zip por versões mais recentes (se houver). Deve ser utilizada no mesmo diretório onde o arquivo compactado foi criado. -F Corrige erros no arquivo compactado. -g Tenta adicionar arquivos a um arquivo .zip ao invés de criar um novo. Se o arquivo não existir, um novo arquivo zip é criado. -i <arquivos> Adiciona somente os <arquivos> listados ao arquivo .zip especificado. -k Transforma os nomes dos arquivos e diretórios para um formato compatível com o DOS. -n <extensões> Inclui, sem comprimir, os arquivos com extensões especificadas em <extensões>. -R Varre a estrutura de diretórios recursivamente, a partir do atual. -r Varre a estrutura de diretórios recursivamente, a partir do atual. -T Testa a integridade do arquivo .zip que está sendo criado. -v Verbose. Lista o estado atual do processamento.
4.5.2
Comandos gzip e gunzip
Os programas gzip e gunzip são programas que compactam e descompactam arquivos usando a codificação de Lempel-Ziv. Ao compactar um arquivo com gzip, o programa vai tentar criar um novo arquivo, com o mesmo nome do arquivo original, mais a extensão “.gz” e apagar o original. Ao descompactar com gunzip é feito o processo inverso: o arquivo original é restaurado (sem a extensão “.gz” e o arquivo compactado é excluído. Na Tabela 4.22, estão alguns parâmetros para serem usados com gzip e gunzip, e na Figura 4.31, alguns exemplos de uso. Tabela 4.22: Parâmetros dos Comandos gzip e gunzip
Parâmetro -c -l -t -r
Descrição Descompacta os arquivos colocando o resultado na saída padrão. Lista um pequeno sumário para cada arquivo compactado. Testa o arquivo que está sendo descompactado Recursivo, varre toda a árvore de diretórios a partir daquele ponto.
88
EDITORA - UFLA/FAEPE - Linux Intermediário
Compactando o arquivo ’b.txt’, gerando o arquivo ’b.txt.gz’: # gzip b.txt Descompactando o arquivo ’b.txt.gz’ e gerando o arquivo ’b.txt’: # gunzip b.txt.gz Compactando todos os arquivos, de forma recursiva e exibindo sumário de cada um deles: # gzip -lr * Figura 4.31: Exemplos de Uso do gzip e do gunzip
4.5.3
Comandos bzip2 e bunzip2
Os programas bzip2 e bunzip2 são programas de compactação e descompactação, baseados no algoritmo de Burriws-Weeler e na codificação de Huffman. O método de compressão utilizado pelo bzip2 é mais eficiente que o do gzip, gerando arquivos menores. Entretanto, o processo de compressão é mais lento. Além disso, o formato .gz ainda é, de certa forma, o padrão no ambiente UNIX. Por esses motivos, para o usuário que não precisa de altíssimo poder de compressão, o uso do gzip é o indicado. 4.5.4
Comando tar
O aplicativo tar é um programa que aglutina diretórios recursivamente e coloca o resultado na saída padrão. É um aplicativo amplamente utilizado em ambientes UNIX. É muito útil para gerar backups e fazer cópias de pastas inteiras, pois ele reduz vários níveis da árvore de diretório em um só arquivo. O comando tar aceita vários parâmetros, alguns especificados na Tabela 4.23. A sintaxe básica do tar é dada por:
tar [parametros] <nome-do-diretório>
Na Figura 4.32 são apresentados alguns exemplos de uso do tar. Observe que os aplicativos tar e gzip são característicos da filosofia UNIX. Ao invés de aplicativos complexos para realizar várias tarefas, os aplicativos são desenvolvidos para fazerem tarefas simples e de forma que possam ser combinados. Assim, para se ter um diretório comprimido em UNIX, usa-se o tar para criar um único arquivo aglutinando todos os arquivos nesse diretório e o gzip para compactar esse arquivo aglutinado. Nesse caso, o uso da opção “-z” faz com que o tar chame automaticamente o gzip.
O Console Linux
89
Tabela 4.23: Parâmetros do Comando tar
Parâmetro -c -x -v -z
Descrição Cria um novo arquivo Extrai o conteúdo de um arquivo Verbose. Lista todos os arquivos que estão sendo processados. Usa gzip/gunzip para compactar/descompactar os arquivos. Usar preferencialmente extensão .tar.gz ou .tgz nesses arquivos. -j Usa bzip2/bunzip2 para compactar/descompactar os arquivos. Usar preferencialmente extensão .tar.bz ou .tbz nesses arquivos. -t Lista o conteúdo de um arquivo .tar. -u Atualiza um arquivo que está dentro de um arquivo .tar por versões mais recentes (se houver). -f <nome> Usa o arquivo passado como parâmetro ao invés da entrada ou da saída padrão. -h Não copia links simbólicos, mas sim os arquivos por esses apontados.
Comando ’tar’ compactando o diretório ’a’ e colocando o resultado no arquivo ’dir.tar’: # tar -cf dir.tar a/ Compactando a mesma pasta ’a’, só que desta vez usando ’gzip’ para compactar o arquivo, derreferenciando os links simbólicos e mostrando o processamento na tela: # tar -cvzhf dir.tar.gz a/ Descompactando o arquivo ’file.tar.bz’, que foi compactado com ’bzip2’ (-j), e mostrando o processamento na tela. # tar -xvjf file.tar.bz Figura 4.32: Exemplos de Uso do tar
4.6
COMANDOS PARA GERENCIAMENTO DE PROCESSOS
O processo é uma unidade de execução. Quando um usuário inicia um programa, esse programa é instanciado em pelo menos um processo. Assim, para cada programa sendo executado na máquina, haverá um ou mais processos associados. O objetivo desta seção é
90
EDITORA - UFLA/FAEPE - Linux Intermediário
abordar os principais comandos para gerenciamento de processos em Linux. Mais detalhes sobre processos e gerenciamento de processos podem ser vistos em (SICA; UCHÔA, 2003). 4.6.1
Comandos ps e top
O comando ps um relatório sobre os processos que estão rodando no sistema. Já o programa top, ilustrado na Figura 4.33 faz o monitoramento constante dos processos. É análogo dizer que o programa ps tira uma fotografia dos processos no sistema, enquanto o programa top faz o monitoramento online dos processos. Na Tabela 4.24, são apresentados alguns parâmetros do ps mais usados e na Figura 4.34, alguns exemplos de sua utilização.
Figura 4.33: Programa top em Execução
O Console Linux
91
Tabela 4.24: Parâmetros do Comando ps
Parâmetro -A -a
Descrição Seleciona todos os processos. Seleciona todos os processos que estão rodando em terminal, exceto os que são “session leaders”. -p <pid> Seleciona o processo com o PID especificado em <pid>. -u <uid> Seleciona todos os processos que estão sendo executados pelo usuário com o user ID especificado por <uid>. -H Mostra os processos em hierarquia. -t <term> Seleciona todos os processos que estão rodando no terminal especificado por <term>. -C <nome-do-comando> Seleciona os processos pelo nome do comando especificado em <nome-do-comando>.
Mostrando os processos do usuário ’ginux’ de forma hierárquica: # ps -Hu ginux Mostrando todos os processos: # ps -A Mostrando todos os processos que estão em execução no terminal ’tty0’: # ps -t tty0
Figura 4.34: Exemplos de Uso do ps
4.6.2
Comandos nice e renice
Os comandos nice e renice estão relacionados com a prioridade dos processos em relação ao escalonamento de uso do processador, feito pelo sistema operacional. Existe um atributo de cada processo que se chama cortesia (niceness), um valor que vai de -20 até 19 e que armazena a prioridade do processo. O processo com maior valor de cortesia tem menor prioridade, pois ele é o mais “educado”, e deixa que os outros usem mais o processador. Já o processo com menor valor de cortesia tem maior prioridade, pois ele é muito “mal-educado” e não deixa os outros processos usarem o processador. O comando nice executa um programa passado como parâmetro com o valor de cortesia também especificado. A sintaxe do comando nice é:
92
EDITORA - UFLA/FAEPE - Linux Intermediário
nice <valor-de-cortesia> <programa>
Já o renice muda o valor de cortesia de processos que já estão em execução. Os usuário (exceto o root) só podem mudar o valor de cortesia de processos que eles mesmos estão executando. Além disso, para esses usuários só é possível aumentar o valor da cortesia de seus processos e somente na faixa de 0 até 19. O super-usuário (root) pode mudar o valor de cortesia de qualquer processo, para qualquer valor entre -20 e 19. Os parâmetros do renice são listados na Tabela 4.25, e na Figura 4.35 são apresentados alguns exemplos de uso do comando. Tabela 4.25: Parâmetros do Comando renice
Parâmetro -p <pid>
-g <gid> -u <uid>
Descrição Recebe o identificador do processo que deve ter sua cortesia alterada. O parâmetro -p pode ser omitido, ficando subentendido que o valor refere-se ao Process ID que será alterado. Altera os valores de cortesia dos processos que estão rodando com o grupo especificado por <gid>. Altera os valores de cortesia dos processos sendo executados pelo usuário especificado por <uid>.
Mudando a cortesia dos processos executados pelo usuário com identificador 50 para 7: # renice 7 -u 50 Mudando a cortesia do processo 16743 para -8 (somente permitido para o root): # renice -8 16743 Figura 4.35: Exemplo de Uso do renice
4.6.3
Comando kill
O programa kill serve para mandar sinais aos processos. Essas mensagens ou sinais servem para alterar o status dos processos. Os principais sinais estão listados na Tabela 4.26. É muito comum encontrar o prefixo SIG nos sinais em muitos sistemas (Ex: SIGKILL). A sintaxe do kill é simples: KILL
O Console Linux
93
kill -s <signal> <pid>
O parâmetro -s <signal> pode ser suprimido, sendo sinal padrão o sinal TERM. Na Figura 4.6.3, são apresentados exemplos de uso do comando kill. Tabela 4.26: Principais Sinais Enviados pelo kill
Sinal Descrição QUIT Manda uma mensagem para o processo terminar completamente a sua execução, sem a intervenção do sistema operacional. O QUIT gera o dump da memória que estava sendo usada pelo programa. TERM Faz o mesmo que QUIT, mas com a diferença que não é gerado dump da memória. STOP Pára a execução do processo até que ele receba o sinal CONT CONT Reinicia a execução de um processo parado pelo sinal STOP KILL Faz com que o sistema operacional finalize um processo. O KILL não pode ser bloquado nem capturado pelos processos
Parando o processamento do processo 9984: # kill -s SIGSTOP 9984 Finalizando o processo 1254 com o sinal KILL: # kill -s SIGKILL 1254 Finalizando o processo 6969 com o sinal TERM, que por ser padrão não exige o parâmerto ’-s <sinal>’: # kill 6969 Figura 4.36: Exemplo de Uso do kill
4.7 4.7.1
COMANDOS DIVERSOS DO CONSOLE Comando exit
Encerra a execução de um shell. Possui como único parâmetro um inteiro indicando o valor a ser retornado; se omitido, assume o valor de retorno do último comando executado. A Figura 4.37 mostra exemplos de execução do exit. É utilizado principalmente em shell scripts.
94
EDITORA - UFLA/FAEPE - Linux Intermediário
Retornando um valor 0 indicando execução bem-sucedida # exit 0 Retornando um valor de erro # exit -1 Figura 4.37: Exemplos de Uso do exit
4.7.2
Comando clear
O comando clear limpa a tela de um terminal. Ele verifica o terminal utilizado em uma variável de ambiente para saber como limpá-lo. Seu uso é ilustrado na Figura 4.38.
Limpando a tela do terminal # clear Figura 4.38: Exemplo de Uso do clear
4.7.3
Comando date
Mostra ou ajusta a data do sistema. A Figura 4.39 mostra exemplos de execução do comando, e a Tabela 4.27 lista seus principais parâmetros. As principais especificações de formato estão na apresentadas na Tabela 4.28. Uma observação a ser feita é que configuração de data e hora no sistema deve ser feita com extrema cautela. O motivo é que vários servidores fazem tarefas periódicas e podem ficar meio “malucos” com uma atualização desse tipo. Pode acontecer de alguns serviços precisarem ser reiniciados para voltarem ao comportamento normal. Sempre que possível, recomenda-se a alteração via BIOS.
Tabela 4.27: Parâmetros do Comando date
Parâmetro -d -R -s
Descrição Exibe a data passada em seguida em vez da data atual Mostra a descrição da data no formato proposto pela RFC 822 (CROCKER, 1982) Ajusta a data ou hora para o valor passado em seguida
O Console Linux
95
Tabela 4.28: Especifição de Formatos de Saída do Comando date
Parâmetro date +%a date +%A date +%b date +%B date +%c date +%d date +%D date +%j date +%m date +%U date +%y
Descrição Nome do dia da semana (3 letras) Nome do dia da semana (completo) Nome do mês (3 letras) Nome do mês (completo) Mostra uma expressão descrevendo a data e hora atuais Dia do mês Data (mês/dia/ano) Dia corrente no ano (1-366) Mês (2 dígitos) Numero da semana no ano (0-53) Ano (2 dígitos)
Mostra o dia do mês (entre 1 e 356) # date +\%j Mostra a data no formato (dd/mm/aa) # date +\%d/\%m/\%y Mostra o texto correspondente à data passada # date -d 8/10/1970 Seg Ago 10 00:00:00 BRT 1981 Alterando a hora do sistema para 21:00:00 (requer privilégios de superusuário) # date -s 21:00:00 Alterando a data do sistema para 31/12/1999 (requer privilégios de superusuário) # date -s 12/31/1999 Figura 4.39: Exemplos de Uso do date
4.7.4
Comando who
Mostra informações sobre os usuários que estão usando o sistema. Seus parâmetros principais são mostrados na Tabela 4.29 e alguns exemplos de execução na Figura 4.40.
96
EDITORA - UFLA/FAEPE - Linux Intermediário
Tabela 4.29: Parâmetros do Comando who
Parâmetro -b -u -p -r -q
Descrição Hora do último boot Lista os usuários que estão usando o sistema Mostra os processos ativos Imprime o nível de execução (runlevel) Nome e número de usuários usando o sistema
Mostra a hora do último boot do usuário atual: # who -b Mostra os usuários que estão usando o sistema nesse momento: # who -q Figura 4.40: Exemplos de Uso do who
4.7.5
Comando cal
Exibe o calendário de uma determinada época. Caso não seja passado nenhum mês ou ano, exibe o calendário do mês atual. O mês deve ser especificado com um valor de 1 a 12, e o ano com um valor de 1 a 9999. A Tabela 4.30 mostra alguns dos parâmetros que podem ser passados para o cal, enquanto a Figura 4.41 mostra alguns exemplos de sua utilização.
Tabela 4.30: Parâmetros do Comando cal
Parâmetro -1 -3 -s -m -j -y
Descrição Mostra apenas o mês solicitado (padrão) Mostra também o mês anterior e posterior ao solicitado Considera domingo como o primeiro dia da semana Considera segunda-feira como primeiro dia da semana Mostra os dias como contínuos no ano (de 1 a 366) Mostra o calendário do ano atual
O Console Linux
97
Mostra o calendário do mês atual # cal Mostra o calendário do mês de agosto de 1970, juntamente com julho e setembro do mesmo ano # cal 8 1970 -3 Mostra o calendário do ano de 1500 em dias contínuos # cal 1500 -j Figura 4.41: Exemplos de Uso do cal
4.7.6
Comando passwd
O programa passwd é usado para alterar a senha de um usuário, que está codificada no arquivo /etc/shadow. Para este programa não existem opções úteis ao usuário comum, a maioria delas é voltada para o root. A sua utilização é simples: primeiro a senha atual é solicitada. Depois a nova senha e sua confirmação são solicitadas. Ao término desse processo, se não ocorrer nenhum erro, como por exemplo: a senha e a confirmação estarem diferentes ou existir um erro na senha atual, a senha antiga será substituída pela nova no arquivo /etc/shadow.
4.8
PIPES
Um pipe consiste em encaminhar a saída de um comando para a entrada de outro. Esse recurso é muito útil quando um programa produz uma saída muito grande, e não é possível ler todos os resultados. Outro exemplo de aplicação é a busca de um resultado específico no meio de uma saída também muito grande. O simbolo do pipe é “|”, e podem ser usados vários pipes seguidos. A Figura 4.42 mostra alguns exemplos de uso de pipes.
4.9 4.9.1
EDITORES DE TEXTO NO TERMINAL VIM
O VIM – Vi IMproved é um editor de texto compatível com o tradicional VI do UNIX, apresentando várias características adicionais. Entre estas características, destacam-se o syntax highlighting para várias linguagens de programação, abertura de múltiplos arquivos, seleção visual, etc.
98
EDITORA - UFLA/FAEPE - Linux Intermediário
Comando ’ls’ direcionado para o comando ’sort’, ordenando a saída de ls: # ls -la | sort Comando ’rpm -qa’ lista todos os programas instalados, direcionado para ’grep xfce’ que exibe as linhas que contêm a expressão regular ’xfce’ na entrada: # rpm -qa | grep xfce Comando ’cat’ lista um arquivo, direcionado para ’more’, que faz a paginação da saída para ser exibida no terminal: # cat qualquerarquivo.txt | more Figura 4.42: Exemplos de Uso de Pipes
É um dos editores preferidos por vários programadores em todo o mundo. Por outro lado, existem muitos que o consideram complexo para um usuário iniciante, pois seus comandos são algumas vezes enigmáticos. Existe uma versão gráfica do editor, que o torna mais agradável para uso, mantendo as mesmas características do programa em linha de comando. As Figuras 4.43 e 4.44 ilustram o editor. Cabe ressaltar que é um dos poucos editores que podem ser facilmente usados em sistemas embarcados que rodam Linux, como roteadores e outros equipamentos.
Figura 4.43: Editor de Textos VIM
O Console Linux
99
Figura 4.44: Editor de Textos VIM – Versão Gráfica
4.9.2
JOE
O JOE (Joe’s Own Editor) é um poderoso editor de textos para terminais e consoles. Uma de suas características marcantes é que ele permite a emulação de outros editores, como WordStar, PICO e GNU Emacs, através da edição de seus arquivos de configuração, podendo ser facilmente utilizado por quem já tenha trabalhado com esses editores. Com relação aos recursos de edição, o JOE oferece tudo aquilo que se espera de um editor de textos, como movimentação de blocos de texto, recursos de desfazer/refazer, e outros. A Figura 4.45 mostra a edição de um arquivo no JOE. A imagem mostra na parte superior alguns dos comandos do editor, exibidos ao se invocar a ajuda do programa, e na parte inferior o arquivo de configuração /etc/joe/joerc. 4.9.3
Pico
A Figura 4.46 mostra o Pico, um editor de texto simples para terminal, parte integrante do leitor de e-mail e news Pine (Seção 4.10.1) e remete a Pine Composer. Possui recursos básicos como movimentação de blocos de texto através de comandos como recortar e colar, e outros como justificação de parágrafos e busca em texto. Inclui suporte para verificação ortográfica, destacando palavras grafadas incorretamente no texto, e um navegador de arquivos que permite procurar na árvore de diretórios o nome do arquivo ao abrir/salvar um documento.
100
EDITORA - UFLA/FAEPE - Linux Intermediรกrio
Figura 4.45: Editor de Textos JOE
Figura 4.46: Editor de Textos Pico
O Console Linux
4.9.4
101
GNU nano
O GNU nano (Nano’s ANOther editor ou Not ANOther editor) é um clone do Pico (Seção 4.9.3), apontado como um substituto free para o mesmo. Ele não copia apenas o comportamento e aparência do Pico, mas oferece outras características não implementadas (ou desabilitadas) no mesmo. Entre essas características, podem ser listadas a “busca e substituição”, “ir para a linha número” e “syntax highlighting”. A Figura 4.47 ilustra a edição de um arquivo LATEX usando o GNU nano.
Figura 4.47: Editor de Textos GNU nano
4.10 4.10.1
APLICATIVOS DIVERSOS EM MODO TERMINAL Pine
Pine (Program for Internet News and Email) é um cliente de e-mail bastante completo, desenvolvido pela University of Washington. Em sua configuração padrão, possui um conjunto limitado de funcionalidades, visando facilitar o aprendizado do usuário novato, mas possui uma extensa lista de recursos adicionais para o usuário mais experiente. Utiliza como compositor de mensagens o editor Pico, e, apesar de permitir a visualização apenas de mensagens no formato texto, inclui suporte a MIME (Multipurpose Internet Mail Extensions), um padrão da internet para representar dados de multimídia em um e-mail. Com isso, permite que qualquer tipo de arquivo de multimídia possa ser anexado utilizando
102
EDITORA - UFLA/FAEPE - Linux Intermediário
as regras de codificação MIME e posteriormente salvo em arquivos ou visualizado através de aplicações específicas configuradas para abrir esse tipo de objeto. Dentre suas desvantagens está o fato de não possuir o código completamente livre, as alterações são permitidas através da aplicação de patches ao código-fonte, que não pode ser alterado. Através do menu de configurações é possível a personalização de cores, criação de filtros, listas de e-mail, livro de endereços e assinatura, dentre outros itens. Pine possui um recurso de configuração remota, que permite que ele transfira informações de configuração para o servidor IMAP, permitindo que modificações feitas em um computador sejam acessíveis ao Pine a partir de qualquer computador. A Figura 4.48 mostra sua tela inicial.
Figura 4.48: Cliente de E-mail Pine
4.10.2
Lynx
O Lynx é um navegador Web para dispositivos de caracteres, como terminais. Ele acessa páginas HTML locais e arquivos remotos usando HTTP, FTP, Gopher, entre outros. Uma grande vantagem do Lynx sobre os outros navegadores é a velocidade e a disponibilidade, seja em modo texto ou em modo gráfico. Sua utilização é bem simples e a interface é bem explicativa. Como pode ser visto na Figura 4.49, ele é compatível com terminais coloridos.
O Console Linux
103
Figura 4.49: Navegador Web Lynx
4.10.3
Links
O Links é mais uma alternativa em modo texto para os navegadores Web. Possui uma vantagem sobre o Lynx que é o suporte ao uso do mouse, o que facilita a navegação em uma página com muitos links. Possui suporte aos protocolos FTP e HTTP, e, embora não reconheça todos os comandos do HTML 4.0, é capaz de representar tabelas e frames. O Links inclui suporte a cores, e pode ser configurado para carregar aplicativos visualizadores de imagens. A Figura 4.50 mostra sua execução. 4.10.4
Mutt
Mutt é mais um cliente de e-mail para dispositivos de caracteres (terminais e consoles). Assim como o Pine, também inclui suporte a MIME, o que permite a transmissão de diversos tipos de arquivo. Mutt inclui suporte a cores e permite a exibição de mensagens em threads. A Figura 4.51 mostra uma sessão do Mutt em execução.
4.11
OUTROS APLICATIVOS EM MODO TEXTO
Além dos comandos aqui apresentados, vários outros são disponíveis em Linux. Em especial, duas categorias merecem destaque: os servidores e as linguagens de programação. Várias das tarefas realizadas no Linux são feitas via servidores (como, por exemplo, a
104
EDITORA - UFLA/FAEPE - Linux Intermediário
Figura 4.50: Navegador Web Links
Figura 4.51: Cliente de E-mail Mutt
interface gráfica e os serviços de impressão). Isso para não mencionar os diversos servidores de serviços de rede existentes (e-mail, WWW, FTP, IRC, etc.). Vários desses servidores são apresentados e discutidos em (SICA; UCHÔA, 2003) e (UCHÔA; SIMEONE; SICA, 2003).
O Console Linux
105
Por padrão, o Linux inclui uma série de linguagens de programação que podem ser utilizadas de acordo com as necessidades do usuário. Dentre elas, podemos destacar linguagens como Fortran, C, C++, Python, Perl, e várias outras menos conhecidas. Muitas das ferramentas disponíveis em Linux estão escritas nas linguagens acima. Isso faz com que a maioria seja automaticamente instalada para que tais ferramentas funcionem adequadamente. O conjunto de ferramentas que acompanha essas linguagens também merece se lembrado, em especial merece destaque as ferramentas que acompanham o GCC (GNU Compiler Collection), utilizado para compilação de programas em C/C+. Além de ser portado para várias plataformas, o conjunto vem crescendo, como pode ser observado com o surgimento do gcj, que visa tornar-se um compilador real para a linguagem Java, ou seja, gerar o código executável para a máquina no lugar do bytecode para a máquina virtual Java (JVM).
106
EDITORA - UFLA/FAEPE - Linux Intermediรกrio
5 OBTENDO AJUDA
Durante o uso do Linux, é comum se deparar com dúvidas com relações a comandos, configuração e instalação de software e dispositivos de hardware, problemas com hardware, e várias outras questões gerais. Dúvidas são comuns durante o uso do Linux e existem várias maneiras de se obter ajuda e encontrar a resposta para algum problema. O Linux é um sistema bem documentado, provavelmente tudo o que se imagimar fazer ou aprender já esta disponível para leitura e aprendizado. Praticamente todas as dúvidas que um usuário comum pode ter já foram dúvidas de outras pessoas, que solucionaram o problema e documentaram sua solução, a fim de ajudar outros usuários que se depararem com o mesmo problema. Dessa maneira, existem várias formas possíveis de se obter ajuda para um determinado problema, ou dúvida referente ao Linux. As principais maneiras serão apresentadas a seguir.
5.1
PÁGINAS MAN
Praticamente todos os programas do Linux vêm acompanhados de páginas de manual, que trazem uma descrição do funcionamento do programa e de seus parâmetros de linha de comando. Essas páginas podem ser acessadas através do comando man, que possui a seguinte sintaxe: man [secao] nome onde secao é a parte do manual onde se encontra a página e nome é o nome do comando, função ou arquivo sobre o qual se quer obter informações O argumento seção é opcional; se especificado, man olha apenas nessa seção do manual, caso contrário, o man irá olhar a primeira página de manual com aquela informação (em geral, a seção 1). Se o nome contiver uma barra (’/’), man interpreta como o nome de um arquivo. A Figura 5.1 mostra exemplos de chamadas ao comando man, e a Tabela 5.1 mostra os principais comandos utilizados para navegação. Assim como para os demais comandos,
108
EDITORA - UFLA/FAEPE - Linux Intermediário
há uma página de manual para o comando man, que fornece maiores informações sobre seu funcionamento. A Figura 5.2 mostra o resultado da execução do comando man man. Tabela 5.1: Comandos para Navegação em Páginas man
Tecla(s) ENTER ESPAÇO Ctrl-B /expressao n q
Ação Próxima linha Próxima página Página anterior Busca ’expressao’ no texto Continuar a busca Sai da página
Mostra a página de manual do comando vi # man vi Busca todas as páginas de manual que contêm a palavra ’emacs’ (também poderia ser usado o comando "apropos" para isso) # man -K emacs Mostra a página de manual do arquivo de configuração do man.config, presente na seção 5 do manual # man 5 man.config Figura 5.1: Exemplos de Uso do man
5.2
INFOS
Um outro recurso idêntico às páginas de manual são as páginas info, que possuem o recurso adicional de permitir navegação entre as páginas. Semelhante às páginas de manual, as páginas info são úteis quando sabemos o nome do comando e queremos saber para o que ele serve. Também traz explicações detalhadas sobre uso, opções e comandos. Para usar as páginas info é usado o comando: info [nome] onde nome é o nome do comando ou programa sobre o qual se deseja obter ajuda. Se o parâmetro nome for omitido, o comando info mostra a lista de todas as páginas info disponíveis. A navegação em páginas info é feita através de nomes marcados com
Obtendo Ajuda
109
Figura 5.2: Manual do Programa man
um * (hipertextos) que se pressionarmos <Enter>, levam até a seção correspondente. O comando info possui algumas teclas de navegação úteis, as principais delas e suas ações são listadas na Tabela 5.2. A Figura 5.3 mostra a execução do comando info info.
Tabela 5.2: Comandos para Navegação em Páginas info
Tecla(s) ENTER ESPAÇO Ctrl-B /expressao n q
Ação Entra em um hipertexto Próxima página Página anterior Busca ’expressao’ no texto Continuar a busca Sai da página
110
EDITORA - UFLA/FAEPE - Linux Intermediário
Figura 5.3: Página Info do Programa info
5.3
AJUDA POR LINHA DE COMANDO
Quando não se precisa dos detalhes das páginas de manual, muitas vezes é possível obter auxílio direto e rápido do próprio comando/programa. Quase todos os comandos e programas do Linux oferecem este recurso, que é extremamente útil para consultas rápidas Esse tipo de recurso é usado, por exemplo, quando se sabe o nome do programa mas deseja saber quais são as opções disponíveis e para o que cada uma serve. Para acessar essa ajuda, basta digitar: comando --help onde comando é o comando/programa que desejamos ter uma explicação rápida. Observe que esse tipo de ajuda não é disponível para todos os comandos e programas, sendo que alguns comandos embutidos da shell, como cd, tt pwd não disponibilizam esse tipo de auxílio. A Figura 5.4 mostra um exemplo de busca desse auxílio para o comando rm, via execução de rm --help.
5.4
DOCUMENTAÇÃO ON-LINE
A internet é também uma grande fonte de informações sobre o Linux, se não a principal. É possível encontrar vários sites fornecendo informações úteis sobre assuntos di-
Obtendo Ajuda
111
# rm --help Uso: rm [OPÇÃO]... ARQUIVO... Remove (unlink) the FILE(s). -d, -f, -i, -r, -v,
--directory --force --interactive -R, --recursive --verbose --help --version
unlink directory, even if non-empty (super-user only) ignore nonexistent files, never prompt prompt before any removal remove the contents of directories recursively explain what is being done display this help and exit output version information and exit
To remove a file whose name starts with a ‘-’, for example ‘-foo’, use one of these commands: rm -- -foo rm ./-foo Note that if you use rm to remove a file, it is usually possible to recover the contents of that file. If you want more assurance that the contents are truly unrecoverable, consider using shred. Avisar bug-fileutils@gnu.org em caso de bugs.
Figura 5.4: Obtendo Ajuda por Linha de Comando
versos, como http://www.linux.org, http://www.linuxfocus.org/ e http:// www.linuxjournal.com/, e também um número considerável de listas de e-mail sobre esse sistema. Alguns mecanismos de obtenção de ajuda na internet são apresentados a seguir. 5.4.1
Grupos de discussão da Usenet
A Usenet é um conjunto de grupos de discussão (chamadas de newgroups) disponíveis aos usuários da internet. Há vários grupos de discussão fornecendo informações úteis e respostas a problemas sobre o Linux. Pode-se acessar esses grupos de discussão a partir de programas específicos que permitem esse tipo de leitura. A Tabela 5.3 mostra alguns dos principais grupos de discussão da Usenet e os temas abordados em cada um deles. O tráfego na maioria dessas listas de discussão do Linux lidam com problemas que as pessoas encontram ao instalar, configurar, administrar ou utilizar o sistema operacional. Várias informações úteis são transmitidas pelas listas rapidamente; as mais importantes delas em geral são armazenadas em arquivos para download em sites específicos de FTP.
112
EDITORA - UFLA/FAEPE - Linux Intermediário
Tabela 5.3: Grupos de Discussão e Assuntos Abordados Lista comp.os.linux.announce comp.os.linux.answers comp.os.linux.development.apps comp.os.linux.development.system comp.os.linux.hardware comp.os.linux.x comp.os.linux.misc comp.os.linux.networking comp.os.linux.setup
5.4.2
Assunto Anúncios importantes para a comunidade Linux Perguntas e respostas a problemas com Linux Desenvolvimento de aplicações para Linux Assuntos relacionados ao desenvolvimento do Linux Suporte a hardware no Linux Assuntos específicos do X Window Outros assuntos não cobertos em outras listas Assuntos relacionados a redes Problemas de instalação e configuração do Linux
Listas de Discussão
Listas de discussão são conjuntos de endereços de e-mail de pessoas interessadas em deteminados assuntos. Existem várias listas de discussão que abordam assuntos referentes ao Linux, dentre as quais merecem destaque:
ginux-l@comp.ufla.br: Lista criada e mantida no DCC/UFLA pela equipe técnica do ARL. É uma lista voltada principalmente ao uso de Linux no meio acadêmico. Possui informações sobre documentação, projetos, novidades e mais. O usuário pode se inscrever enviando e-mail para ecartis@ginux.comp.ufla.br com o texto subscribe ginux-l no corpo (body) ou no assunto (subject) da mensagem. dicas-l-@unicamp.br: Essa não é necessariamente uma lista de discussão, uma vez que não se pode enviar perguntas, mas sim uma lista de informação, onde é enviada uma mensagem por dia contendo informações úteis para usuários Linux. O usuário pode se inscrever no endereço http://www.dicas-l.unicamp.br/, onde também podem ser lidas as dicas enviadas em dias anteriores. linux-br@conectiva.com.br: Essa é uma lista que aborda diversos temas ligados ao Linux. É mantida pela Conectiva, apesar de não se restringir a essa distribuição. É uma lista formada por usuários de diversos níveis (iniciantes, intermediários e avançados) e com um grande volume de tráfego de mensagens. Recomenda-se, por esse motivo, que o interessado nessa lista use uma conta gratuita de Webmail (como Yahoo, IG ou Hotmail) para receber as mensagens dessa lista. O usuário pode se inscrever no endereço http://linux-br.conectiva.com.br/.
Obtendo Ajuda
113
linux-br@listas.cipsga.org.br: essa é uma lista, fundada em 1993 e criada originalmente na Unicamp, de usuários brasileiros de GNU/Linux. Atualmente no CIPSGA1 , é uma lista que destina-se a usuários intermediários do sistema, uma vez que a lista é moderada. Dessa maneira, mensagens com questões excessivamente simples ou respondidas em FAQs não são repassadas à lista. Pelo seu nível, é uma ótima lista para administradores de sistemas baseados em Linux. O usuário pode se inscrever no endereço http://listas.cipsga.org.br/, onde também são disponibilizadas várias outras listas ligadas ao Linux. Além dessas, as distribuições também costumam manter listas para seus usuários. A Debian e a Red Hat, por exemplo, possuem uma série de listas de discussão voltadas para os mais diferentes assuntos, como segurança, documentação, desenvolvimento de novos programas e vários outros assuntos em geral. Isso permite aos participantes receberem apenas mensagens relacionadas ao tópico que os interessa. 5.4.3
O LDP
A medida que o Linux foi sendo desenvolvido, vários programadores começaram a escrever como contribuição breves guias para suas aplicações, bem como para áreas mais amplas do sistema operacional, fornecendo a outros usuários informações para continuarem a usar o sistema. Em um curto período de tempo, a documentação do Linux começou a crescer rapidamente, tornando necessária a criação de uma organização para controlar sua criação, evitando duplicações desnecessárias de documentos. Surgia então o Linux Documentation Project (LDP), ou Projeto de Documentação do Linux, disponível em http://www.tldp.org/. Desde então, o projeto têm se expandido rapidamente, possuindo hoje excelentes documentos cobrindo os mais diversos assuntos, como kernel do Linux, utilização de câmeras digitais e comunicação wireless, instalação e configuração de servidores e muito mais. Assim com quase tudo relacionado ao Linux, o LDP é formado por um conjunto de voluntários de vários lugares do mundo: são escritores, revisores e editores que trabalham juntos para fornecer uma documentação completa para o Linux. Desenvolvedores de aplicações que fornecem arquivos de ajuda em seus programas freqüentemente enviam sua documentação para o LDP. Cada vez mais novos usuários estão solucionando problemas e documentando seus esforços para ajudar outros na comunidade. A documentação fornecida pelo LDP é feita de diversas formas, seja através de um guia, uma página de manual, um HOWTO ou um FAQ. Juntos eles formam um grande volume de documentos que cobrem praticamente todos os aspectos do Linux. Um guia é um livro eletrônico com uma cobertura mais ampla sobre um determinado assunto. O 1
http://www.cipsga.org.br/
114
EDITORA - UFLA/FAEPE - Linux Intermediário
objetivo do guia é fornecer uma compreensão sobre todo um assunto, em vez de cobrir apenas uma determinada tarefa. Os HOWTOs são pequenos guias que descrevem passo a passo como realizar uma tarefa específica. Um HOWTO é um documento criado por alguém que passou por um determinado problema e resolveu documentar a solução, a fim de auxiliar outros usuários que possam estar na mesma situação. Um exemplo desse tipo de documento é o DOSWin-to-Linux-HOWTO (GONZATO, 2000), que ajuda ex-usuários do DOS e do Windows na migração para o Linux. As Páginas de manual, acessadas pelo comando man, são a forma padrão de se obter ajuda em muitas aplicações e utilitários no Linux e foram abordadas na Seção 5.1. Já as FAQs (Frequently Asked Questions) são listas de respostas a questões que ocorrem frequentemente, geralmente disponível em listas de e-mail a fim de evitar questões repetitivas por parte de novos usuários. Além de disponibilizar essas informações para os usuários, o projeto também estimula as pessoas a participarem como voluntárias, seja coordenando um desenvolvimento ou traduzindo documentos já existentes, com o intuito único de aprimorar a documentação do Linux. A maioria da documentação encontra-se em língua inglesa, mas existem vários documentos traduzidos. Os documentos traduzidos para o português encontram-se disponíveis em http://br.tldp.org/. 5.4.4
O Rau-Tu da Unicamp
Um projeto muito interessante é o sistema Rau-Tu de Perguntas e Respostas. O nome Rau-Tu é uma brincadeira com a pronúncia de HOWTO. Esse projeto consiste de um fórum, onde os participantes são avaliados de acordo com sua colaboração na discussão. O sistema Rau-Tu pode ser aplicado a qualquer tema e qualquer site, uma vez que é um projeto de código aberto (assim, o administrador pode criar um fórum em seu próprio site. O programa pode ser baixado em http://www.rau-tu.unicamp.br/. Em http: //www.rau-tu.unicamp.br/linux, o usuário Linux pode encontra vários fóruns sobre inúmeros temas ligados ao Linux, como hardware, jogos e kernel.
6 INSTALAÇÃO DE APLICATIVOS
6.1
CONCEITOS BÁSICOS
Como visto no Capítulo 2, existem diversas distribuições Linux disponíveis, mas sua maioria pertence a três eixos principais, dos quais derivam: Red Hat, Slackware e Debian. Pelo grande número de distribuições derivadas e a grande disponibilidade de pacotes na internet, este capítulo tratará do gerenciamento de pacotes RPM,usados nas derivações do Red Hat, que são as mais utilizadas. Entretanto, os conceitos aqui apresentados podem ser facilmente adaptados para outras distribuições. Futuras versões deste material poderão abordar também o formato de pacotes DEB. O formato RPM – RPM Package Manager – oferece meios para distribuir software no formato binário (pré-compilado) ou source (código-fonte) pronto para ser compilado na máquina onde se deseja instalar o programa. Um pacote é composto pelo aplicativo (compilado ou não) compactado, mais uma série de metadados que compõem o cabeçalho. Esse cabeçalho provê um conjunto de informações que passam a integrar a base de dados dos pacotes instalados e permite a execução de diversas consultas à mesma. A vantagem da disponibilização dos dois tipos de pacotes é muito clara. No caso dos pacotes binários, um usuário iniciante não tem que preocupar-se com os detalhes de compilação e configuração geral do programa. O mesmo costuma vir com a maioria de suas características habilitadas e uma configuração básica que requeira o menor número de modificações possíveis. Por outro lado, o pacote com o código-fonte permite que um programa possa ser instalado em uma plataforma ou distribuição para a qual ainda não exista pacotes binários. Além disso, o processo de compilação costuma requerer não mais que um único comando. Também merece ser destacada a preferência de alguns administradores de sistema, que costumam recompilar o pacote para aumentar a performance do programa para uma máquina específica. Outro detalhe importante dos pacotes que não se pode deixar de lado é o conceito de dependências. É prática comum em sistemas operacionais não derivados do UNIX o empacotamento do programa, bibliotecas e arquivos necessários para sua execução em um sistema de instalação. Esse instalador não tem nenhum controle de versões dos com-
116
EDITORA - UFLA/FAEPE - Linux Intermediário
ponentes que já se encontram ou serão instalados, permitindo que ocorra a sobreposição de arquivos essenciais por versões mais antigas, fazendo com que vários programas ou até mesmo o sistema operacional apresente instabilidades. Os pacotes evitam isso, usando um sistema de dependências: ao invés de incluir as bibliotecas, o pacote informa que precisa delas (disponibilizadas em outros pacotes) para sua instalação. Além disso, os pacotes tendem a tornar-se menores, uma vez que só contêm a aplicação. Caso fossem adicionadas todas as bibliotecas necessárias em cada pacote, a redundância seria tanta que o número médio de CDs usados para distribuí-los seria muito maior que a atual, ou o tempo gasto para download de pacotes na internet seria muito maior e traria maiores custos para o usuário. A remoção de programas sem o conceito de dependências também é ineficiente, pois costumam sobrar arquivos órfãos, abandonados por algum programa que julgou que esses arquivos (especialmente bibliotecas) poderia ser parte de outro programa instalado. Essa situação já vem mudando, mas no gerenciamento de pacotes RPM e DEB atingiu um grau de maturidade ímpar. Um desenvolvedor preocupa-se em criar um pacote com sua aplicação e o próprio processo de empacotamento verifica quais bibliotecas e quais suas versões são necessárias e cria um registro de dependências. Para instalar o pacote, essas dependências devem ser sanadas, através da instalação do pacote que contém esses arquivos requeridos. Dessa forma, tem-se vários pacotes com programas, outros com bibliotecas, outros com utilitários, etc. Além disso, não é possível, por meios normais, instalar um pacote com uma versão anterior a uma que já se encontre instalada, impedindo sua sobreposição. Além disso, a remoção de um pacote é completa, caso nenhum outro dependa dele. Não é possível remover um pacote requerido por outro, a não ser que os outros pacotes também sejam removidos. Detalhes sobre a criação de pacotes RPM e informações adicionais podem ser encontrados em (SCHNEIDER, 2002), (BARNES, 1999) e (BAILEY, 1998). Quanto à nomenclatura dos pacotes, adota-se uma convenção que facilmente identifica o nome, versão e arquitetura alvo do pacote. Normalmente, os nomes de pacotes são formados por seu nome, seguido por um hífen, versão, opcionalmente seguida por um hífen e a release, acompanhada por um ponto e a arquitetura alvo, mais o tradicional .rpm. Assim, no pacote xemacs-info-21.4.6-9.i386.rpm pode ser decomposto da seguinte forma: xemacs-info é o nome do pacote, que é usado em todas as operações posteriores à instalação; 21.4.6 é a versão do programa, normalmente alterada a cada alteração feita no códigofonte;
Instalação de Aplicativos
117
9 é a release do pacote, normalmente alterado quando a mesma versão do programa é reempacotado por qualquer motivo (como a falta de um arquivo no pacote, por exemplo); i386 identifica a arquitetura alvo do pacote, assumindo vários valores, como: i386 para máquinas compatíveis com o Intel R 386 e posteriores, até os processadores mais recentes; i586 para máquinas a partir da linha Pentium R e compatíveis; i686 para máquinas a partir do Pentium R II; athlon para processadores AMD R ; alpha para máquinas RISC com processador Alpha R (inicialmente, produzidas pela Digital, mas foi descontinuada após a aquisição pela Compaq); noarch para pacotes que não dependem de qualquer arquitetura, como programas desenvolvidos em Python, Java ou PHP, etc., que são interpretadas ou possuem uma máquina virtual independente da arquitetura; src para identificar pacotes que não foram compilados para uma arquitetura específica, contendo apenas o código-fonte da aplicação; outras arquitetura foram omitidas deste texto, o objetivo é meramente ilustrar as mais comuns.
A partir da próxima seção, será abordado o uso do comando rpm. O objetivo deste texto não é apresentar todas as funcionalidades do mesmo, pois existem referências completas sobre seu uso, como (SCHNEIDER, 2002), (BARNES, 1999) e (BAILEY, 1998), e a própria man page do programa. A Tabela 6.1 será usada como referência rápida para as opções descritas no texto, mas é extremamente recomendável a leitura da man page para uma maior familiarização.
6.2
INSTALANDO PACOTES
A instalação de pacotes é um processo simples. Trata-se de um procedimento executado pouco freqüentemente entre as tarefas normais de um administrador de sistemas Linux, pois a maioria dos pacotes é instalada na configuração inicial (instalação) do sistema. Após essa instalação, normalmente, o gerenciamento de pacotes situa-se entre a remoção e atualização desses pacotes.
118
EDITORA - UFLA/FAEPE - Linux Intermediário
Tabela 6.1: Parâmetros do Comando rpm Parâmetro
Descrição
-?, --help --version -v
Imprime um resumo das instruções de uso e termina a execução. Imprime uma mensagem com a versão do rpm em uso e termina a execução. Imprime mais informações sobre a ação sendo executada, normalmente, mensagens de progresso da operação.
-i, --install -U, --upgrade
Instala um novo pacote Atualiza um pacote instalado para uma nova versão, ou instala o pacote, caso não tenha sido instalado ainda. Atualiza um pacote instalado, se e somente se existir uma versão anterior do pacote já instalada no sistema. Usado com um parâmetro de instalação (-i ou -U) e, opcionalmente, com a opção -v, imprime 50 caracteres # (hash, cerquilha, sustenido ou “jogo da velha”) para indicar o percentual de instalação já concluído. Força a instalação do pacote, mesmo que ele seja de uma versão anterior à existente, possua arquivos que pertençam a outro pacote instalado ou que o mesmo pacote já esteja instalado. Essa opção deve ser usada com extrema cautela! Ignorar a verificação de dependências antes de instalar ou atualizar o pacote. Também pode ser usado com -e, durante a remoção de um pacote. Essa opção deve ser usada com muito cuidado, para evitar o malfuncionamento de muitos programas.
-F, --freshen -h, --hash
--force
--nodeps
-q, --query -a, --all -f, --file -p, --package
--filesbypkg -i, --info -l, --list --provides -R, --requires -e, --erase
Executa uma consulta de acordo com os parâmetros de consulta que o seguem na linha de comando. Consulta todos os pacotes instalados. Consulta qual o pacote instalou o arquivo especificado. Consulta um arquivo de pacote em vez da base de dados do sistema. Podese especificar um pacote local ou até mesmo disponível na internet, via protocolos HTTP ou FTP. Lista todos os arquivos de cada pacote especificado. Mostra informações do cabeçalho do pacote, como nome, descrição, versão, etc. Lista os arquivos do pacote. A saída difere ligeiramente da opção --filesbypkg. Lista as capacidades oferecidas pelo pacote especificado. Lista os pacotes ou capacidades dos quais o pacote especificado possui dependência. Remove (desinstala) um pacote do sistema.
Instalação de Aplicativos
119
Entretanto, conforme a demanda dos usuários ou das tarefas de administração, alguns pacotes precisam ser instalados para adicionar um novo programa requerido por um usuário ou simplesmente para teste em uma máquina separada. Aliás, esta é uma política extremamente recomendável, pois é importante testar o programa e verificar características como segurança, usabilidade, dependências, etc., antes de ser adicionado a todo o conjunto de computadores do local. Para adicionar um ou mais pacotes, a sintaxe é a seguinte: # rpm -i pacote1.rpm [pacote2.rpm pacote3.rpm .... pacoten.rpm]
Observe que podem ser especificados mais de um pacote na linha de comando. Isso é útil quando deseja-se instalar vários pacotes de uma vez, quer exista dependência entre eles ou não, ou quando há um ciclo nas dependências. Por ciclo, entende-se o caso em que o pacote A-3.1.0.i386.rpm depende do pacote B-2.1.5.i386.rpm (ambos são pacotes hipotéticos usados neste texto) para ser instalado, e vice-versa. Nesse caso, por vias normais, é impossível proceder com a instalação individual. Especificando os dois pacotes em uma única linha de comando elimina esse problema: # rpm -i A-3.1.0.i386.rpm B-2.1.5.i386.rpm
Outro detalhe que deve ser ressaltado é que, caso sejam especificados vários pacotes na linha de comando, o rpm vai analisar suas dependências e reordená-los para que as dependências sejam instaladas primeiro. Entretanto, o uso do rpm na forma acima não oferece ao usuário um meio claro para compreender o andamento da operação. Isto é, após confirmar o comando, nenhuma mensagem é exibida e o prompt retorna quando o último pacote for instalado. Para que seja exibido um indicador de progresso, é comum adicionar os parâmetros -v e -h à lista de opções: # rpm -ivh A-3.1.0.i386.rpm B-2.1.5.i386.rpm A preparar... ################################################# [100%] 1: A ################################################# [ 50%] 2: B ######################### (25%)
Como pode ser visto, para cada pacote será exibido um contador de progresso, indicando entre parênteses o percentual do pacote já instalado. Quando a instalação do pacote é concluída, é exibido o percentual total dos pacotes sendo instalados, entre colchetes. Em seguida, repete-se todo o processo para o próximo pacote, até que todos sejam instalados com sucesso. No processo de preparação são verificadas as dependências e os pacotes são reordenados para instalação. Caso algum pacote não tenha alguma dependência satisfeita, será exibida uma mensagem de erro e a operação será cancelada:
120
EDITORA - UFLA/FAEPE - Linux Intermediário
# rpm -ivh A-3.1.0.i386.rpm A preparar... ################################################# [100%] erro: dependências falhadas: B >= 2.1.5 é necessário pelo A-3.1.0
Nesse caso, pode-se inserir as opçoes --nodeps e --force para prosseguir com a instalação, mas deve-se evitar essa medida drástica. A melhor alternativa é sanar as dependências e tentar instalar os pacotes novamente. Dessa forma, evita-se que a dependência mal-resolvida cause problemas na execução do programa. Uma outra situação é tentar instalar um pacote que já esteja instalado no sistema. Como dito anteriormente, o rpm vai permitir apenas a atualização para uma versão mais nova do pacote. Isso pode ser alterado com a opção --force, que deve ser usada com extrema cautela. Supondo que o pacote A-3.1.0.i386.rpm já esteja instalado, o comando deve agir da seguinte forma: # rpm -ivh A-3.1.0.i386.rpm A preparar... ################################################# [100%] o pacote A-3.1.0 já está instalado
6.3
REMOVENDO PACOTES INDESEJADOS
A remoção de pacotes não exige muitas palavras. Existem alguns parâmetros opcionais para a remoção, mas raramente são usados e é mais prático consultar o manual do rpm. Para remover um pacote, é necessário que nenhum outro dependa dele (não se deve usar o parâmetro --nodeps para forçar a remoção, sob risco de mal-funcionamento de outros programas). Assim como a instalação, pode-se especificar vários pacotes para serem removidos, como forma de satisfazer as dependências. Ao contrário, da instalação, não é necessário passar o nome completo do arquivo do pacote, basta informar seu nome. Além disso, é comum passar o parâmetro -v para obter maiores informações em mensagens de erro e o parâmetro -h não é aceito para mostrar um indicador de progresso. Normalmente, nenhuma mensagem adicional é exibida quando a remoção é concluída com sucesso: # rpm -ev A erro: a remoção destes pacotes irá quebrar as dependências: A é necessário pelo B # rpm -ev A B #
Instalação de Aplicativos
121
Ao tentar remover um pacote que não esteja instalado, o rpm deve notificar o usuário: # rpm -ev C erro: o pacote C não está instalado
6.4
ATUALIZANDO PACOTES INSTALADOS
Existem duas formas para atualizar um pacote: usando a opção -U ou a opção -F. O funcionamento de ambas é praticamente idêntico, pois vão instalar a versão mais recente de um dado pacote. Entretanto, a forma como lidam com os pacotes que não estão instalados é diferente. A opção -U atualiza os pacotes instalados, caso exista uma versão mais recente dos mesmos, e instala pacotes novos (isso faz com que grande parte dos administradores usem com mais freqüência esta opção em lugar da “-i”. Por outro lado, a opção -F apenas atualiza os pacotes já instalados, mesmo que sejam passados pacotes novos para o comando. Esse comportamento da opção -F o torna muito atrativo para atualizações gerais do sistema. Normalmente, os administradores agendam o download de todos os pacotes de atualização ou correção disponibilizados no site de sua distribuição. Entretanto, nem todos estão instalados no sistema. Assim, o uso da opção -F vai garantir que todos os pacotes que possuam uma nova versão sejam atualizados, sem adicionar nenhum outro pacote indesejável. As duas opções de atualização podem ser usadas da mesma forma que a opção de instalação (-i), incluindo as opções de indicação de progresso (-v e -h).
6.5
CONSULTAS BÁSICAS AOS PACOTES
Uma das características mais importantes do formato RPM é a poderosa base de dados que é montada com os pacotes instalados. Isso permite uma ampla gama de consultas sobre o estado atual do sistema. Ao contrário dos processos que envolvem instalação, atualização ou remoção de pacotes, que só podem ser executadas pelo usuário root, as consultas são permitidas para qualquer usuário do sistema. Para executar uma consulta, adiciona-se o parâmetro -q à linha de comando, seguido por opções de seleção de pacotes a serem consultados e o tipo de consulta a ser feito. O objetivo desta seção é ilustrar as consultas mais utilizadas, mas certamente existe um número bem maior de possibilidades. Outro detalhe importante é que os exemplos deste capítulo mostram as opções isoladamente, para fins didáticos. Isso não significa que consultas mais complexas, combinando vários parâmetros não possam ser realizadas. Entrantanto, essas consultas começam a
122
EDITORA - UFLA/FAEPE - Linux Intermediário
fazer sentido à medida que o usuário avança no gerenciamento de pacotes e começa a sentir sua necessidade. 6.5.1
Listando Todos os Pacotes Instalados
Por vários motivos, um administrador pode querer uma listagem completa de todos os pacotes instalados no sistema. Por exemplo, ao final da instalação do sistema operacional ou até mesmo após a adição de um pacote, pode ser interessante gerar um arquivo texto com todos os pacotes. Dessa forma, futuras instalações podem ser baseadas nessa listagem, facilitando o processo inicial de seleção de pacotes. Para consultar todos os pacotes instalados, adiciona-se o parâmetro -a à linha de comando, como ilustra a Figura 6.1. # rpm -qa arts-1.0.3-1 pam-0.75-46.8.0 shadow-utils-20000902-12.8 tetex-1.0.7-57.1 mozilla-mail-1.0.1-26 cyrus-sasl-devel-2.1.10-1 gv-3.5.8-19 lynx-2.8.5-7.1 pine-4.44-14.80.0 vim-minimal-6.1-18.8x.1 hwdata-0.48-1 lokkit-0.50-21.8.0 perl-suidperl-5.8.0-55 sendmail-8.12.8-5.80 openssl-0.9.6b-33 glibc-utils-2.3.2-4.80.6 nscd-2.3.2-4.80.6 zlib-1.1.4-8.8x mysql-devel-3.23.56-1.80 (listagem limitada para edição do texto, no total, foram listados 550 pacotes.)
Figura 6.1: Listando Pacotes RPMs Instalados
6.5.2
Consultando um Pacote não Instalado
Nem sempre as consultas se limitam aos pacotes já instalados no sistema. Algumas vezes, obtem-se um arquivo com um pacote desconhecido e o administrador deseja saber do que se trata sem ter que instalá-lo.
Instalação de Aplicativos
123
Para consultar um pacote não instalado, adiciona-se o parâmetro -p à linha de comando. Um exemplo será dado na próxima seção, consultando as informações de um pacote não instalado. 6.5.3
Consultando Informações de um Pacote
Como dito anteriormente, cada pacote possui um cabeçalho com diversas informações, como seu nome, procedência, descrição, etc. Esse cabeçalho pode ser solicitado com o parâmetro -i. Nos exemplos das Figura 6.2 e Figura 6.3, adota-se uma metodologia diferente quanto à seleção de qual pacote será solicitado. Ao omitir o parâmetro -p, especifica-se o nome de um pacote já instalado no sistema, pois o uso do parâmetro -a listaria o cabeçalho de todos os pacotes, algo um tanto indesejável em alguns momentos. Ou seja, o parâmetro -a também é omitido quando especificar o nome de um ou mais pacotes na linha de comando. # rpm -qi httpd Name : httpd Relocations: (not relocateable) Version : 2.0.40 Vendor: Red Hat, Inc. Release : 11.3 Build Date : Seg 07 Abr 2003 07:42:02 BRT Install date: Qua 16 Abr 2003 16:43:49 BRT Build Host : daffy.perf.redhat.com Group : Sistema/Daemons Source RPM : httpd-2.0.40-11.3.src.rpm Size : 6855645 License: Apache Software License Signature : DSA/SHA1, Qua 09 Abr 2003 11:56:08 BRT, Key ID 219180cddb42a60e Packager : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla> URL : http://httpd.apache.org/ Summary : O servidor de HTTP Apache Description : O Apache é um servidor de Web poderoso, cheio de potencialidades, eficiente e gratuito. O Apache é também o servidor Web mais conhecido na Internet.
Figura 6.2: Consultando um Pacote RPM Instalado
6.5.4
Consultando as Dependências de um Pacote
Pode-se consultar as dependëncias de um determinado pacote antes do processo de instalação (ou mesmo para um pacote já instalado), utilizando o parâmetro -R, como ilustra a Figura 6.4. Assim, pode-se verificar com antecedência alguns dos pacotes que serão requeridos durante a instalação.
124
EDITORA - UFLA/FAEPE - Linux Intermediário
# rpm -qpi xpdf-1.01-10.i386.rpm Name : xpdf Relocations: (not relocateable) Version : 1.01 Vendor: Red Hat, Inc. Release : 10 Build Date : Qua 18 Dez 2002 17:52:28 BRST Install date: (not installed) Build Host : sylvester.devel.redhat.com Group : Aplicações/Publicação Source RPM : xpdf-1.01-10.src.rpm Size : 4961672 License: GPL Signature : DSA/SHA1, Qui 06 Fev 2003 01:29:58 BRST, Key ID 219180cddb42a60e Packager : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla> URL : http://www.foolabs.com/xpdf/ Summary : Um visualizador de ficheiros PDF para o X Window System. Description : O xpdf é um visualizador baseado em X Window System para ficheiros Portable Document Format (PDF). O xpdf é um programa pequeno e eficiente que usa tipos de letra X ’standard’.
Figura 6.3: Consultando um Pacote RPM Não-Instalado # rpm -qpR xpdf-1.01-10.i386.rpm urw-fonts rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(CompressedFileNames) <= 3.0.4-1 /bin/sh libc.so.6 libc.so.6(GLIBC_2.0) libc.so.6(GLIBC_2.1) libc.so.6(GLIBC_2.3) libfreetype.so.6 libgcc_s.so.1 libgcc_s.so.1(GCC_3.0) libICE.so.6 libm.so.6 libm.so.6(GLIBC_2.0) libSM.so.6 libstdc++.so.5 libstdc++.so.5(GLIBCPP_3.2) libX11.so.6 libXpm.so.4
Figura 6.4: Consultando Dependências de um Pacote
Instalação de Aplicativos
6.5.5
125
Consultando as Capacidades de um Pacote
Por capacidade, entende-se qualquer funcionalidade, biblioteca ou aplicação provida por um pacote. Essas capacidades podem tornar-se dependências para outros pacotes. No exemplo da seção anterior, nota-se que uma das dependências exigidas pelo pacote xpdf-1.01-10.i386.rpm é a biblioteca libc.so.6. Essa funcionalidade é oferecida pelo pacote glibc-2.3.2-4.80.6. O exemplo apresentado na Figura 6.5 ilustra o uso do parâmetro --provides para listar as capacidades do pacote glibc. # rpm -q --provides glibc libc.so.6 libc.so.6(GCC_3.0) libc.so.6(GLIBC_2.0) libc.so.6(GLIBC_2.1) libc.so.6(GLIBC_2.1.1) libc.so.6(GLIBC_2.1.2) libc.so.6(GLIBC_2.1.3) libc.so.6(GLIBC_2.2) libc.so.6(GLIBC_2.2.1) libc.so.6(GLIBC_2.2.2) libc.so.6(GLIBC_2.2.3) libc.so.6(GLIBC_2.2.4) libc.so.6(GLIBC_2.2.6) libc.so.6(GLIBC_2.3) libc.so.6(GLIBC_2.3.2) libc.so.6(GLIBC_2.3.3) libdl.so.2 libdl.so.2(GLIBC_2.0) libdl.so.2(GLIBC_2.1) libdl.so.2(GLIBC_2.3.3) libGB.so libcrypt.so.1 libcrypt.so.1(GLIBC_2.0) (listagem truncada para edição, total de capacidades: 266)
Figura 6.5: Consultando Capacidades de um Pacote
6.5.6
Consultado os Arquivos Instalados por um Pacote
Muitas vezes, o administrador precisa saber quais arquivos um determinado pacote instala, antes mesmo de fazer a instalação. Ou então, pode desejar listar todos os arquivos que foram instalados por um pacote.
126
EDITORA - UFLA/FAEPE - Linux Intermediário
A opção -l lista os arquivos de um pacote, instalado ou não. Para isso pode-se especificar o nome de um pacote já instalado ou combinar o parâmetro -p com o nome de um arquivo de pacote, da mesma forma como foi mostrado na Seção 6.5.3. A Figura 6.6 apresenta a consulta dos arquivos pertencentes ao pacote xxdiff-2.7.2-1.i386.rpm. # rpm -qpl xxdiff-2.7.2-1.i386.rpm /usr/X11R6/bin/xxdiff /usr/X11R6/man/man1/xxdiff.1.gz /usr/share/doc/xxdiff-2.7.2 /usr/share/doc/xxdiff-2.7.2/CHANGES /usr/share/doc/xxdiff-2.7.2/README /usr/share/doc/xxdiff-2.7.2/xxdiff-doc.html
Figura 6.6: Listando Arquivos Instalados por um Pacote
6.5.7
Consultando qual Pacote Instalou um Arquivo Específico
Algumas vezes, são encontrados arquivos na árvore de diretórios do Linux que não são facilmente associados a um pacote apenas por seu nome. Assim como pode-se listar quais arquivos um pacote instala, o rpm permite consultar qual pacote é responsável por um arquivo específico. Para executar essa consulta, utiliza-se o parâmetro -f, passando o nome do arquivo que deve ser pesquisado. No exemplo da Figura 6.7, consulta-se qual pacote instalou o arquivo /bin/sh. # rpm -qf /bin/sh bash-2.05b-5
Figura 6.7: Consultando o Pacote de um Dado Arquivo
6.6
ONDE ENCONTRAR PACOTES E DEPENDÊNCIAS
Como dito no início deste capítulo, existe uma variedade imensa de pacotes disponíveis na internet. Existem vários sites especializados na divulgação e distribuiçao de pacotes. Merecem menção o SourceForge1 e o Freshmeat 2 , que oferecem mecanismos de busca de projetos e até mesmo downloads. Entretanto, nem todos os projetos divulgados nesses sites possuem um pacote RPM disponível, mas eles oferecem links que apontam 1 2
http://www.sourceforge.net/ http://www.freshmeat.net/
Instalação de Aplicativos
127
para o site do desenvolvedor, onde pode-se procurar por um pacote mais recente (e o número de desenvolvedores que estão disponibilizando pacotes RPM tem crescido consideravelmente). Outro site de extrema importância para o administrador é o sistema de busca do RPMFind 3 , onde existe uma gigantesca base de dados sobre pacotes e seus respectivos downloads. Nele, pode-se consultar os pacotes com um determinado nome, para uma arquitetura ou distribuição específica, ou até mesmo consultar qual pacote inclui um determinado arquivo (muito útil para resolver dependências). Entretanto, nem todos os desenvolvedores encaminham suas versões mais recentes para esse site, valendo a recomendação que sejam procuradas versões recentes junto ao desenvolvedor e, caso não existam, podese baixar diretamente do RPMFind. Existem ainda programas que acompanham algumas distribuições que facilitam a localização de pacotes e dependências, como o urpmi do Mandrake, o apt-get4 ou o rpmfind5 . O objetivo deste texto não é analisar a fundo todas essas ferramentas, o que torna recomendável a leitura de suas respectivas documentações. É comum encontrar dependências que não referenciam um pacote propriamente dito, mas um arquivo integrante de um pacote. Isso deixa muitos usuários iniciantes insatisfeitos e frustrados com o sistema baseado em dependências, pois afinal, os nomes de arquivo nem sempre podem indicar a qual pacote pertencem. É óbvio que todas as dependências de um pacote incluído por uma distribuição também estão incluídas em algum dos seus CDs, caso contrário, a opção para instalar tudo não poderia ser oferecida. Mas a pergunta que ronda a mente da maioria dos usuários é: em que pacote está o arquivo libwmf-0.2.so.2? O primeiro passo é verificar se sua distribuição inclui o arquivo, combinando os comandos rpm e grep (apresentado na Seção 4.4.9): # rpm -qp --filesbypkg *.rpm | grep libwmf-0.2.so.2 libwmf /usr/lib/libwmf-0.2.so.2 libwmf /usr/lib/libwmf-0.2.so.2.0.0
O uso do comando grep no exemplo acima é apenas para que a saída do comando exiba apenas a linha que mostra o pacote capaz de sanar a dependência. Se for omitido, vai criar uma listagem com todos os pacotes e seus arquivos. Essa listagem pode ser redirecionada para um arquivo texto, para futuras referências. Caso não seja encontrado o arquivo em qualquer pacotes que acompanha a distribuição, pode-se fazer uma consulta 3
http://www.rpmfind.net/ Originalmente foi desenvolvido para os pacotes no formato DEB do Debian e foi portado para trabalhar com RPM pela Conectiva. 5 Normalmente encontrado no Red Hat e que faz as mesmas buscas do site com o mesmo nome, mas oferece recursos para baixar e instalar o pacote e todas as dependências encontradas. 4
128
EDITORA - UFLA/FAEPE - Linux Intermediário
no RPMFind com o nome do arquivo e descobrir qual pacote é capaz de provê-lo e sanar a dependência.
REFERÊNCIAS BIBLIOGRÁFICAS
ABREU SILVA, R. M. de. Sistemas operacionais. Lavras: UFLA/FAEPE, 2002. (Curso de Pós Graduação “Lato Sensu” (Especialização) a Distância em Administração em Redes Linux). BAILEY, E. C. Maximum RPM: Taking the Red Hat Package Manager to the Limit. Raileigh: Red Hat Software Inc., 1998. Http://www.rpm.org/. BARNES, D. RPM HOWTO, Revision 3.0, 3 Nov 2000. The Linux Documentation Project, 1999. URL: http://www.ibiblio.org/pub/Linux/docs/HOWTO/RPM-HOWTO. CORREIA, L. H. A.; ABREU SILVA, R. M. de. Redes de Computadores. Lavras: UFLA/FAEPE, 2002. (Curso de Pós Graduação “Lato Sensu” (Especialização) a Distância em Administração em Redes Linux). CROCKER, D. H. Standard for the Format of ARPA Internet Text Messages. Internet Engineering Task Force (IETF), Agosto 1982. (Request for Comments: 822). URL: http://www.ietf.org/. FRAMPTON, S. Linux Administration Made Easy. [S.l.]: The Linux Documentation Project, 1999. URL: http://www.tldp.org/guides.html. GONZATO, G. From DOS/Windows to Linux HOWTO Version 1.3.5. The Linux Documentation Project, 31 de Agosto 2000. URL: http://www.ibiblio.org/pub/ Linux/docs/HOWTO/DOS-Win-to-Linux-HOWTO. KIRCH, O.; DAWSON, T. The Linux Network Administrator’s Guide; Version 1.1. 2 ed. [S.l.]: The Linux Documentation Project, 2000. URL: http://www.tldp.org/guides.html. LINUX ONLINE INC. Linux Online. Abril 2003. [WWW]. URL: http://www.linux.org. LOOSEMORE, S. et al. The GNU C Library Reference Manual. 0.10 ed. Boston: Free Software Foundation, 2001.
130
EDITORA - UFLA/FAEPE - Linux Intermediário
NEMETH, E. et al. UNIX System Administration Handbook. 2 ed. New Jersey: Prentice-Hall, 1995. NEMETH, E. et al. UNIX System Administration Handbook. 3 ed. New Jersey: Prentice-Hall, 2001. SCHNEIDER, B. O. Linguagens de Programação II. Lavras: UFLA/FAEPE, 2002. (Curso de Pós Graduação “Lato Sensu” (Especialização) a Distância em Administração em Redes Linux). SICA, F. C.; UCHÔA, J. Q. Administração de Sistemas Linux Redes. Lavras: UFLA/FAEPE, 2003. (Curso de Pós Graduação “Lato Sensu” (Especialização) a Distância em Administração em Redes Linux). STANFIELD, V.; SMITH, R. W. Linux System Administration. San Francisco: Sybex, 2001. (Craig Hunt Linux Library). TORVALDS, L.; DIAMOND, D. Só por prazer: Linux, os bastidores de sua criação. Rio de Janeiro: Campus, 2001. UCHÔA, J. Q. Segurança em Redes e Criptografia. Lavras: UFLA/FAEPE, 2003. (Curso de Pós Graduação “Lato Sensu” (Especialização) a Distância em Administração em Redes Linux). Em fase de escrita. UCHÔA, J. Q.; SIMEONE, L. E.; SICA, F. C. Administração de Redes Linux. Lavras: UFLA/FAEPE, 2003. (Curso de Pós Graduação “Lato Sensu” (Especialização) a Distância em Administração em Redes Linux). WIRZENIUS, L.; OJA, J.; STAFFORD, S. The Linux System Administrator’s Guide; Version 0.7. [S.l.]: The Linux Documentation Project, 2001. URL: http://www.tldp.org/ guides.html.