130
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

LINUX INTERMEDIÁRIO

Embed Size (px)

DESCRIPTION

APOSTILA LINUX INTERMEDIÁRIO

Citation preview

Page 1: LINUX INTERMEDIÁRIO

CURSO DE PÓS-GRADUAÇÃO“LATO SENSU” (ESPECIALIZAÇÃO) A DISTÂNCIA

ADMINISTRAÇÃO EM REDES LINUX

LINUX INTERMEDIÁRIO

Joaquim Quinteiro UchôaLuiz Eduardo Simeone

Matheus Garcia Barbosa FigueiredoSamuel Pereira Dias

UFLA - Universidade Federal de LavrasFAEPE - Fundação de Apoio ao Ensino, Pesquisa e Extensão

Lavras – MG

Page 2: LINUX INTERMEDIÁRIO

PARCERIAUFLA – Universidade Federal de LavrasFAEPE – Fundação de Apoio ao Ensino, Pesquisa e Extensão

REITORFabiano Ribeiro do Vale

VICE-REITORAntônio Nazareno Guimarães Mendes

DIRETOR DA EDITORAMarco Antônio Rezende Alvarenga

PRÓ-REITOR DE PÓS-GRADUAÇÃOLuiz Edson Mota de Oliveira

PRÓ-REITOR ADJUNTO DE PÓS-GRADUAÇÃO “LATO SENSU”Antônio Ricardo Evangelista

COORDENADOR DO CURSOJoaquim Quinteiro Uchôa

PRESIDENTE DO CONSELHO DELIBERATIVO DA FAEPEAntônio Eduardo Furtini Neto

EDITORAÇÃOGrupo Ginux (http://ginux.comp.ufla.br/)

IMPRESSÃOGráfica Universitária/UFLA

Ficha Catalográfica preparada pela Divisão de Processos Técnicosda Biblioteca Central da UFLA

Linux Intermediário / Joaquim Quinteiro Uchôa, Luiz Eduardo Sime-one, 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 Dis-tância: Administração em Redes Linux

Bibliografia.

1. Linux. 2. UNIX. 3. Sistemas Operacionais 4. Interface Homem-Máquina5. Informática. I. DCC II. Universidade Federal de Lavras. III. Fundação de Apoioao Ensino, Pesquisa e Extensão. IV. Título.

CDD-005.43

Nenhuma parte desta publicação pode ser reproduzida, por qualquermeio ou forma , sem a prévia autorização.

Page 3: LINUX INTERMEDIÁRIO

SUMÁRIO

1 Introdução 11

2 Introdução ao Linux 132.1 Kernel e Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.2 Distribuições e Suas Características . . . . . . . . . . . . . . . . . . . . . . . 14

2.2.1 O que é uma Distribuição . . . . . . . . . . . . . . . . . . . . . . . . . 142.2.2 Slackware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.2.3 Distribuições Baseadas em RPM . . . . . . . . . . . . . . . . . . . . . 142.2.4 Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2.3 Modo Gráfico x Modo Texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.4 Instalando o Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3 GUI - Graphical User Interface 173.1 O Servidor Gráfico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173.2 Gerenciadores de Janela e de Ambiente . . . . . . . . . . . . . . . . . . . . . 183.3 Gerenciadores de Janela mais comuns . . . . . . . . . . . . . . . . . . . . . 19

3.3.1 KDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193.3.2 GNOME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203.3.3 WindowMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.3.4 TWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.3.5 FVWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.3.6 XFce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

3.4 Aplicativos Gráficos em Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . 263.4.1 Editores de Texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273.4.2 Software para Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.4.3 Aplicativos e Pacotes para Escritório . . . . . . . . . . . . . . . . . . . 353.4.4 IDEs - Integrated Development Enviroment . . . . . . . . . . . . . . . 403.4.5 Glimmer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413.4.6 Depuradores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

3.5 Editores HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443.5.1 SCREEM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

3.6 Editores Gráficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483.6.1 Editores Bitmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483.6.2 Editores Vetoriais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

3.7 Visualizadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533.7.1 Visualizadores de Imagens . . . . . . . . . . . . . . . . . . . . . . . . 533.7.2 Visualizadores PostScript e PDF . . . . . . . . . . . . . . . . . . . . . 55

3.8 Aplicativos de Música, Vídeo e Entretenimento . . . . . . . . . . . . . . . . . 583.9 Comentários Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

Page 4: LINUX INTERMEDIÁRIO

4 O Console Linux 634.1 Conceitos Básicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634.2 Comandos para Manipulação de Arquivos e Diretórios . . . . . . . . . . . . . 64

4.2.1 Comando cd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644.2.2 Comando pwd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654.2.3 Comando ls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654.2.4 Comando mkdir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654.2.5 Comando rmdir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674.2.6 Comando rm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684.2.7 Comando mv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694.2.8 Comando cp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694.2.9 Comando touch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 704.2.10 Comando ln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714.2.11 Comando chmod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 724.2.12 Comando chown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734.2.13 Comando chgrp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744.2.14 Comando mount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754.2.15 Comando umount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

4.3 Comandos de Transição do MS-DOS para Linux . . . . . . . . . . . . . . . . 764.3.1 Comando mdir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 774.3.2 Comando mcopy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 774.3.3 Comando mformat . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

4.4 Comandos de Visualização, Busca e Ordenação . . . . . . . . . . . . . . . . 784.4.1 Comando less . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 794.4.2 Comando cat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 804.4.3 Comando tail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 804.4.4 Comando head . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814.4.5 Comando find . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824.4.6 Comando locate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 834.4.7 Comando sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 834.4.8 Comando wc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 834.4.9 Comando grep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

4.5 Comandos de Compactação . . . . . . . . . . . . . . . . . . . . . . . . . . . 854.5.1 Comandos zip e unzip . . . . . . . . . . . . . . . . . . . . . . . . . 864.5.2 Comandos gzip e gunzip . . . . . . . . . . . . . . . . . . . . . . . . 874.5.3 Comandos bzip2 e bunzip2 . . . . . . . . . . . . . . . . . . . . . . 884.5.4 Comando tar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

4.6 Comandos para Gerenciamento de Processos . . . . . . . . . . . . . . . . . 894.6.1 Comandos ps e top . . . . . . . . . . . . . . . . . . . . . . . . . . . . 904.6.2 Comandos nice e renice . . . . . . . . . . . . . . . . . . . . . . . . 914.6.3 Comando kill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

4.7 Comandos Diversos do Console . . . . . . . . . . . . . . . . . . . . . . . . . 934.7.1 Comando exit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 934.7.2 Comando clear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 944.7.3 Comando date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

Page 5: LINUX INTERMEDIÁRIO

4.7.4 Comando who . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 954.7.5 Comando cal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 964.7.6 Comando passwd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

4.8 Pipes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 974.9 Editores de Texto no Terminal . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

4.9.1 VIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 974.9.2 JOE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 994.9.3 Pico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 994.9.4 GNU nano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

4.10 Aplicativos Diversos em Modo Terminal . . . . . . . . . . . . . . . . . . . . . 1014.10.1 Pine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1014.10.2 Lynx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1024.10.3 Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1034.10.4 Mutt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

4.11 Outros Aplicativos em Modo Texto . . . . . . . . . . . . . . . . . . . . . . . . 103

5 Obtendo Ajuda 1075.1 Páginas man . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1075.2 Infos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1085.3 Ajuda por Linha de Comando . . . . . . . . . . . . . . . . . . . . . . . . . . . 1105.4 Documentação on-line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

5.4.1 Grupos de discussão da Usenet . . . . . . . . . . . . . . . . . . . . . 1115.4.2 Listas de Discussão . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1125.4.3 O LDP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1135.4.4 O Rau-Tu da Unicamp . . . . . . . . . . . . . . . . . . . . . . . . . . . 114

6 Instalação de Aplicativos 1156.1 Conceitos Básicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1156.2 Instalando Pacotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1176.3 Removendo Pacotes Indesejados . . . . . . . . . . . . . . . . . . . . . . . . 1206.4 Atualizando Pacotes Instalados . . . . . . . . . . . . . . . . . . . . . . . . . . 1216.5 Consultas Básicas aos Pacotes . . . . . . . . . . . . . . . . . . . . . . . . . . 121

6.5.1 Listando Todos os Pacotes Instalados . . . . . . . . . . . . . . . . . . 1226.5.2 Consultando um Pacote não Instalado . . . . . . . . . . . . . . . . . . 1226.5.3 Consultando Informações de um Pacote . . . . . . . . . . . . . . . . . 1236.5.4 Consultando as Dependências de um Pacote . . . . . . . . . . . . . . 1236.5.5 Consultando as Capacidades de um Pacote . . . . . . . . . . . . . . 1256.5.6 Consultado os Arquivos Instalados por um Pacote . . . . . . . . . . . 1256.5.7 Consultando qual Pacote Instalou um Arquivo Específico . . . . . . . 126

6.6 Onde Encontrar Pacotes e Dependências . . . . . . . . . . . . . . . . . . . . 126

Referências Bibliográficas 129

Page 6: LINUX INTERMEDIÁRIO

LISTA DE FIGURAS

3.1 Servidor X com 4 Clientes Conectados . . . . . . . . . . . . . . . . . . . . . . 183.2 Sessão KDE com Aplicativos . . . . . . . . . . . . . . . . . . . . . . . . . . . 203.3 Gerenciador de Janelas GNOME . . . . . . . . . . . . . . . . . . . . . . . . . 213.4 Gerenciador de Janelas WindowMaker . . . . . . . . . . . . . . . . . . . . . . 223.5 Dock e Clip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223.6 Ferramenta de Preferências do WindowMaker . . . . . . . . . . . . . . . . . 233.7 TWM – Um dos Primeiros Gerenciadores de Janelas . . . . . . . . . . . . . . 243.8 Gerenciador de Janelas FVWM . . . . . . . . . . . . . . . . . . . . . . . . . . 253.9 Ambiente XFce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263.10 Gedit – Editor de Texto do GNOME . . . . . . . . . . . . . . . . . . . . . . . . 273.11 Editor de texto XEmacs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.12 Tela inicial do Mozilla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303.13 Navegador Galeon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303.14 Navegador Konqueror . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.15 Cliente de E-mail do Evolution . . . . . . . . . . . . . . . . . . . . . . . . . . 323.16 Leitor de E-mail Balsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333.17 Cliente de E-mail Kmail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343.18 gFTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353.19 OpenOffice.org: Janela Principal do Writer . . . . . . . . . . . . . . . . . . . 363.20 KWord, Processador de Textos do KOffice . . . . . . . . . . . . . . . . . . . . 373.21 Planilha do pacote de escritório SIAG . . . . . . . . . . . . . . . . . . . . . . 383.22 Processador de Textos AbiWord . . . . . . . . . . . . . . . . . . . . . . . . . 393.23 Planilha Gnumeric . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393.24 Ambiente de Desenvolvimento Anjuta . . . . . . . . . . . . . . . . . . . . . . 403.25 Ambiente de Desenvolvimento Glimmer . . . . . . . . . . . . . . . . . . . . . 413.26 GDB – GNU Debugger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423.27 GVD – GNU Visual Debugger . . . . . . . . . . . . . . . . . . . . . . . . . . . 433.28 KDbg – KDE Debugger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433.29 DDD – Data Display Debugger . . . . . . . . . . . . . . . . . . . . . . . . . . 443.30 Editor de HTML Quanta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453.31 Editor de HTML Bluefish . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463.32 Editor de HTML SCREEM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473.33 Editor de Folhas de Estilos do SCREEM . . . . . . . . . . . . . . . . . . . . . 473.34 GIMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483.35 ImageMagick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493.36 Xfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503.37 Sketch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513.38 Sodipodi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513.39 OpenOffice Draw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523.40 Dia – Editor de Diagramas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523.41 Eletric Eyes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

Page 7: LINUX INTERMEDIÁRIO

3.42 GQview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543.43 Xpdf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553.44 Acrobat Reader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563.45 gv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573.46 GGv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573.47 XMMS - X Multimedia System . . . . . . . . . . . . . . . . . . . . . . . . . . . 583.48 Xine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593.49 Jogo Bzflag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

4.1 Exemplos de Uso do cd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644.2 Exemplos de Uso do pwd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654.3 Exemplos de Uso do ls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664.4 Exemplos de Uso do mkdir . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674.5 Exemplo de Uso do rmdir . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674.6 Exemplo de Uso do rmdir – uso de caracteres “coringa” . . . . . . . . . . . 674.7 Exemplo de Uso do rm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684.8 Exemplos de Uso do mv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694.9 Exemplos de Uso do cp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 704.10 Exemplos de Uso do touch . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714.11 Exemplos de Uso do ln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 724.12 Exemplos de Uso do Comando chmod – Opções por Caracteres . . . . . . . 734.13 Exemplos de Uso do Comando chmod . . . . . . . . . . . . . . . . . . . . . . 744.14 Exemplos de Uso do Comando chown . . . . . . . . . . . . . . . . . . . . . . 744.15 Exemplo de Uso do chgrp . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754.16 Exemplos de uso do mount . . . . . . . . . . . . . . . . . . . . . . . . . . . . 764.17 Exemplos de Uso do umount . . . . . . . . . . . . . . . . . . . . . . . . . . . 764.18 Exemplos de Uso do mdir . . . . . . . . . . . . . . . . . . . . . . . . . . . . 784.19 Exemplos de Uso do mcopy . . . . . . . . . . . . . . . . . . . . . . . . . . . . 784.20 Exemplos de Uso do mformat . . . . . . . . . . . . . . . . . . . . . . . . . . 794.21 Exemplos de Uso do less . . . . . . . . . . . . . . . . . . . . . . . . . . . . 794.22 Exemplos de Uso do cat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814.23 Exemplos de Uso do tail . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814.24 Exemplos de Uso do head . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814.25 Exemplos de Uso do find . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824.26 Exemplos de Uso do locate . . . . . . . . . . . . . . . . . . . . . . . . . . . 834.27 Exemplos de Uso do sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . 844.28 Exemplos de Uso do wc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 844.29 Exemplos de Uso do grep . . . . . . . . . . . . . . . . . . . . . . . . . . . . 864.30 Exemplos de Uso do zip e do unzip . . . . . . . . . . . . . . . . . . . . . . 864.31 Exemplos de Uso do gzip e do gunzip . . . . . . . . . . . . . . . . . . . . . 884.32 Exemplos de Uso do tar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 894.33 Programa top em Execução . . . . . . . . . . . . . . . . . . . . . . . . . . . 904.34 Exemplos de Uso do ps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 914.35 Exemplo de Uso do renice . . . . . . . . . . . . . . . . . . . . . . . . . . . 924.36 Exemplo de Uso do kill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

Page 8: LINUX INTERMEDIÁRIO

4.37 Exemplos de Uso do exit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 944.38 Exemplo de Uso do clear . . . . . . . . . . . . . . . . . . . . . . . . . . . . 944.39 Exemplos de Uso do date . . . . . . . . . . . . . . . . . . . . . . . . . . . . 954.40 Exemplos de Uso do who . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 964.41 Exemplos de Uso do cal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 974.42 Exemplos de Uso de Pipes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 984.43 Editor de Textos VIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 984.44 Editor de Textos VIM – Versão Gráfica . . . . . . . . . . . . . . . . . . . . . . 994.45 Editor de Textos JOE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1004.46 Editor de Textos Pico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1004.47 Editor de Textos GNU nano . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1014.48 Cliente de E-mail Pine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1024.49 Navegador Web Lynx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1034.50 Navegador Web Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1044.51 Cliente de E-mail Mutt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

5.1 Exemplos de Uso do man . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1085.2 Manual do Programa man . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1095.3 Página Info do Programa info . . . . . . . . . . . . . . . . . . . . . . . . . . 1105.4 Obtendo Ajuda por Linha de Comando . . . . . . . . . . . . . . . . . . . . . . 111

6.1 Listando Pacotes RPMs Instalados . . . . . . . . . . . . . . . . . . . . . . . . 1226.2 Consultando um Pacote RPM Instalado . . . . . . . . . . . . . . . . . . . . . 1236.3 Consultando um Pacote RPM Não-Instalado . . . . . . . . . . . . . . . . . . 1246.4 Consultando Dependências de um Pacote . . . . . . . . . . . . . . . . . . . . 1246.5 Consultando Capacidades de um Pacote . . . . . . . . . . . . . . . . . . . . 1256.6 Listando Arquivos Instalados por um Pacote . . . . . . . . . . . . . . . . . . . 1266.7 Consultando o Pacote de um Dado Arquivo . . . . . . . . . . . . . . . . . . . 126

Page 9: LINUX INTERMEDIÁRIO

LISTA DE TABELAS

4.1 Parâmetros do Comando cd . . . . . . . . . . . . . . . . . . . . . . . . . . . 644.2 Parâmetros do Comando pwd . . . . . . . . . . . . . . . . . . . . . . . . . . . 654.3 Parâmetros do Comando ls . . . . . . . . . . . . . . . . . . . . . . . . . . . 664.4 Parâmetros do Comando rm . . . . . . . . . . . . . . . . . . . . . . . . . . . 684.5 Parâmetros do Comando mv . . . . . . . . . . . . . . . . . . . . . . . . . . . 694.6 Parâmetros do Comando cp . . . . . . . . . . . . . . . . . . . . . . . . . . . 704.7 Parâmetros do Comando touch . . . . . . . . . . . . . . . . . . . . . . . . . 714.8 Permissões de Arquivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734.9 Parâmetros do comando mount . . . . . . . . . . . . . . . . . . . . . . . . . 754.10 Parâmetros do Comando umount . . . . . . . . . . . . . . . . . . . . . . . . 764.11 Parâmetros do Comando mdir . . . . . . . . . . . . . . . . . . . . . . . . . . 774.12 Parâmetros do Comando mcopy . . . . . . . . . . . . . . . . . . . . . . . . . 774.13 Parâmetros do Comando mformat . . . . . . . . . . . . . . . . . . . . . . . . 794.14 Comandos de Navegação do less . . . . . . . . . . . . . . . . . . . . . . . . 804.15 Parâmetros do Comando cat . . . . . . . . . . . . . . . . . . . . . . . . . . . 804.16 Parâmetros do Comando find . . . . . . . . . . . . . . . . . . . . . . . . . . 824.17 Parâmetros do Comando locate . . . . . . . . . . . . . . . . . . . . . . . . 834.18 Parâmetros do Comando sort . . . . . . . . . . . . . . . . . . . . . . . . . . 844.19 Parâmetros do Comando wc . . . . . . . . . . . . . . . . . . . . . . . . . . . 844.20 Parâmetros do Comando grep . . . . . . . . . . . . . . . . . . . . . . . . . . 854.21 Parâmetros dos Comandos zip e unzip . . . . . . . . . . . . . . . . . . . . 874.22 Parâmetros dos Comandos gzip e gunzip . . . . . . . . . . . . . . . . . . . 874.23 Parâmetros do Comando tar . . . . . . . . . . . . . . . . . . . . . . . . . . . 894.24 Parâmetros do Comando ps . . . . . . . . . . . . . . . . . . . . . . . . . . . 914.25 Parâmetros do Comando renice . . . . . . . . . . . . . . . . . . . . . . . . 924.26 Principais Sinais Enviados pelo kill . . . . . . . . . . . . . . . . . . . . . . 934.27 Parâmetros do Comando date . . . . . . . . . . . . . . . . . . . . . . . . . . 944.28 Especifição de Formatos de Saída do Comando date . . . . . . . . . . . . . 954.29 Parâmetros do Comando who . . . . . . . . . . . . . . . . . . . . . . . . . . . 964.30 Parâmetros do Comando cal . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

5.1 Comandos para Navegação em Páginas man . . . . . . . . . . . . . . . . . . 1085.2 Comandos para Navegação em Páginas info . . . . . . . . . . . . . . . . . . 1095.3 Grupos de Discussão e Assuntos Abordados . . . . . . . . . . . . . . . . . . 112

6.1 Parâmetros do Comando rpm . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

Page 10: LINUX INTERMEDIÁRIO
Page 11: LINUX INTERMEDIÁRIO

1INTRODUÇÃO

Este texto tem por principal objetivo instruir o seu leitor nos passos básicos neces-

sá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 ca-

sos, 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 Fede-

1Um Howto é um pequeno guia que ensina um usuário a configurar um serviço ou fazer uma dada tarefa.2The Linux Documentation Project: http://www.tldp.org/. A tradução de parte dos documentos

desse projeto podem ser encontrados em http://br.tldp.org/.

Page 12: LINUX INTERMEDIÁRIO

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

nais), 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 dissemi-

nadores 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 professo-

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

partamento 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 segu-

ranç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 dis-

seminar ainda mais o uso de Linux no Brasil e desejam um bom aprendizado ao leitor.

Page 13: LINUX INTERMEDIÁRIO

2INTRODUÇÃ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 fun-

cionalidades 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 Ta-

nembaum, 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 deta-

lhes 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

1http://www.pasc.org/#POSIX2http://www.magnux.org/doc/GPL-pt_BR.txt3http://www.cs.vu.nl/~ast/minix.html4http://www.fsf.org/5http://www.xfree86.org/ e http://www.x.org/6http://www.latex-project.org7http://gcc.gnu.org/8http://www.gnu.org/software/emacs/emacs.html9http://www.gnu.org/software/bash/bash.html

Page 14: LINUX INTERMEDIÁRIO

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 DISTRIBUIÇÕES E SUAS CARACTERÍSTICAS

2.2.1 O que é uma Distribuição

Distribuição de um sistema GNU/Linux é basicamente um conjunto de pacotes de soft-

ware 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ça-

ram 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 insta-

laçã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

10http://www.gnu.org/software/hurd/11http://www.slackware.com/12http://www.rpm.org/13http://www.redhat.com/

Page 15: LINUX INTERMEDIÁRIO

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

buí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 termi-

nal20 (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 infini-

dade 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 ser-

vidor 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 depre-

ciado, 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 fun-

14http://www.linux-mandrake.com/15http://www.conectiva.com.br/16http://www.yellowdoglinux.com/17http://www.suse.com/18http://www.unitedlinux.com/19http://www.debian.org/20No ambiente Windows, o terminal é a janela de comando do DOS, também chamado de prompt do DOS

Page 16: LINUX INTERMEDIÁRIO

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 (gerenci-

mento 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 administra-

dores 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 inicial-

mente;

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

taçã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.

Page 17: LINUX INTERMEDIÁRIO

3GUI - 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 Win-

dow 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 Techno-

logy 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 ja-

nelas 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 sis-

temas baseados em UNIX (Linux, variações do BSD, Sun Solaris para plataforma x86), Mac

1http://www.x.org/2http://www.xfree86.org/3http://www.xfree86.org/legal/licence.html

Page 18: LINUX INTERMEDIÁRIO

18 EDITORA - UFLA/FAEPE - Linux Intermediário

OS X (via Darwin), entre outras, algumas requerendo bibliotecas especiais de compatibili-

dade

O X também pode ser usado em rede, fazendo com que um único servidor possa aten-

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

tretanto, é 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 processa-

mento, 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 (LO-

OSEMORE, 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 cli-

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

Servidor X

localCliente

Conexão localvia socket

Host A

remotoCliente

Host B

remotoCliente

Host C

remotoCliente

Host D

Conexão TCP/IP

Conexão TCP/IP

Conexão TCP/IP

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

nar 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

Page 19: LINUX INTERMEDIÁRIO

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

madas 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 recur-

sos mais ou menos semelhantes. Entre esses recursos, é comum o uso de áreas de traba-

lho (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 GERENCIADORES DE JANELA MAIS COMUNS

3.3.1 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

Page 20: LINUX INTERMEDIÁRIO

20 EDITORA - UFLA/FAEPE - Linux Intermediário

(até mesmo na internet). O ambiente é acompanhado por uma ampla gama de aplicati-

vos, 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 in-

formaçõ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

Page 21: LINUX INTERMEDIÁRIO

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

lidade 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 mostra-

das 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 mantenham-

se 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

Page 22: LINUX INTERMEDIÁRIO

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

Page 23: LINUX INTERMEDIÁRIO

GUI - Graphical User Interface 23

tanto no Dock quanto no Clip, sendo a ação realizada sobre qualquer objeto que for arras-

tado 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

Page 24: LINUX INTERMEDIÁRIO

24 EDITORA - UFLA/FAEPE - Linux Intermediário

3.3.4 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, ge-

renciamento 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

Page 25: LINUX INTERMEDIÁRIO

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

ses ambientes e adicionando-os a um menu especial. Quanto às aplicações que o acom-

Page 26: LINUX INTERMEDIÁRIO

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

niê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 co-

mum em Linux. A lista não está completa e privilegia os aplicativos de maior uso e conheci-

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

Page 27: LINUX INTERMEDIÁRIO

GUI - Graphical User Interface 27

3.4.1 Editores de Texto

Gedit

O Gedit é um editor de textos distribuído com o GNOME. Apesar de sua simplici-

dade, 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

4http://www.fsf.org/

Page 28: LINUX INTERMEDIÁRIO

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,

Page 29: LINUX INTERMEDIÁRIO

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

ria 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 com-

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

cações para internet e intranet, incluindo ferramentas avançadas, como Inspetor DOM, de-

purador 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 incorpo-

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

5http://www.w3c.org/6Isso 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 definiuesse padrão.

Page 30: LINUX INTERMEDIÁRIO

30 EDITORA - UFLA/FAEPE - Linux Intermediário

Figura 3.12: Tela inicial do Mozilla

Figura 3.13: Navegador Galeon

Page 31: LINUX INTERMEDIÁRIO

GUI - Graphical User Interface 31

Konqueror

O Konqueror é uma aplicação para o KDE altamente configurável, que combina fun-

cionalidades 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

7http://oasis-open.org/

Page 32: LINUX INTERMEDIÁRIO

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

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

Page 33: LINUX INTERMEDIÁRIO

GUI - Graphical User Interface 33

Balsa

Balsa é um cliente gráfico de e-mail, integrado ao ambiente GNOME e em franco de-

senvolvimento. Atualmente, apresenta como características o suporte a protocolos IMAP

e POP3, gerenciamento de correio local (checagem automática de recebimento, impres-

sã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 mensa-

gens de um determinado endereço, e também definir filtros de mensagens, entre outros.

Page 34: LINUX INTERMEDIÁRIO

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

guranç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 su-

porta 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 trans-

ferê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 ar-

quivo de um local para o outro (drag-n-drop). Na Figura 3.18, há uma imagem do gFTP em

funcionamento.

Page 35: LINUX INTERMEDIÁRIO

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

computadores. 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, proces-

sador de textos da suíte. Ele é composto por processador de textos (OpenOffice Writer),

Page 36: LINUX INTERMEDIÁRIO

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 (Kar-

bon14), 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.

Page 37: LINUX INTERMEDIÁRIO

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

nilha, um processador de textos, um programa de animações, um editor de textos, um ge-

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

Page 38: LINUX INTERMEDIÁRIO

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

sadores a fazer esse tipo de adoção. É um aplicativo que exige poucos recursos compu-

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

sos básicos exigidos desse tipo de aplicativo, podendo ser uma escolha melhor, inclusive,

que as planilhas disponibilizadas nos pacotes de escritório.

Page 39: LINUX INTERMEDIÁRIO

GUI - Graphical User Interface 39

Figura 3.22: Processador de Textos AbiWord

Figura 3.23: Planilha Gnumeric

Page 40: LINUX INTERMEDIÁRIO

40 EDITORA - UFLA/FAEPE - Linux Intermediário

3.4.4 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 gerencia-

mento 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 proje-

tos, 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

Page 41: LINUX INTERMEDIÁRIO

GUI - Graphical User Interface 41

3.4.5 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 produ-

ziu 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 desenvolvi-

mento 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 pri-

meiro 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

Page 42: LINUX INTERMEDIÁRIO

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

cativos 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 é extrema-

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

Page 43: LINUX INTERMEDIÁRIO

GUI - Graphical User Interface 43

Figura 3.27: GVD – GNU Visual Debugger

Figura 3.28: KDbg – KDE Debugger

Page 44: LINUX INTERMEDIÁRIO

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

tadas 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 documen-

tação embutida de JavaScript, PHP, HTML e CSS. Assim como as demais aplicações do

Page 45: LINUX INTERMEDIÁRIO

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

vegaçã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

Page 46: LINUX INTERMEDIÁRIO

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

gura 3.33. Esse editor, internacionalizado para vários idiomas, facilita o uso de CSS (Cas-

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

Page 47: LINUX INTERMEDIÁRIO

GUI - Graphical User Interface 47

Figura 3.32: Editor de HTML SCREEM

Figura 3.33: Editor de Folhas de Estilos do SCREEM

Page 48: LINUX INTERMEDIÁRIO

48 EDITORA - UFLA/FAEPE - Linux Intermediário

3.6 EDITORES GRÁFICOS

3.6.1 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 trans-

formaçõ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

Page 49: LINUX INTERMEDIÁRIO

GUI - Graphical User Interface 49

Além do GIMP, disponível para vários ambientes operacionais, outros aplicativos tam-

bé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 dese-

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

Page 50: LINUX INTERMEDIÁRIO

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.

Page 51: LINUX INTERMEDIÁRIO

GUI - Graphical User Interface 51

Figura 3.37: Sketch

Figura 3.38: Sodipodi

Page 52: LINUX INTERMEDIÁRIO

52 EDITORA - UFLA/FAEPE - Linux Intermediário

Figura 3.39: OpenOffice Draw

Figura 3.40: Dia – Editor de Diagramas

Page 53: LINUX INTERMEDIÁRIO

GUI - Graphical User Interface 53

3.7 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), for-

matos 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 in-

formaçõ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 apli-

cativos 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 apli-

cativos 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 computacio-

nais.

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

lidade 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, abando-

nado por um bom tempo, tendo sido retornado em maio de 2003 por outro desenvolvedor.

Page 54: LINUX INTERMEDIÁRIO

54 EDITORA - UFLA/FAEPE - Linux Intermediário

Figura 3.41: Eletric Eyes

Figura 3.42: GQview

Page 55: LINUX INTERMEDIÁRIO

GUI - Graphical User Interface 55

3.7.2 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 desen-

volvido 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 mi-

niaturas e uma seção de favoritos, que facilita a navegação pelo documento. Além disso,

Page 56: LINUX INTERMEDIÁRIO

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

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

Page 57: LINUX INTERMEDIÁRIO

GUI - Graphical User Interface 57

Figura 3.45: gv

Figura 3.46: GGv

Page 58: LINUX INTERMEDIÁRIO

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

8Obs: os autores desse texto não sabem se essa estória é verídica, apenas fazem questão de repassá-laadiante.

Page 59: LINUX INTERMEDIÁRIO

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

cativos, 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

Page 60: LINUX INTERMEDIÁRIO

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

sas 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

Page 61: LINUX INTERMEDIÁRIO

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

forge (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 Li-

nux (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/).

Page 62: LINUX INTERMEDIÁRIO

62 EDITORA - UFLA/FAEPE - Linux Intermediário

Page 63: LINUX INTERMEDIÁRIO

4O CONSOLE LINUX

4.1 CONCEITOS BÁSICOS

Um dos maiores mitos do Linux é que o uso da interface de linha de comando, tam-

bém conhecida como terminal, modo texto ou console, é extremamente complicado. Na

realidade, tal informação é infundada, pois o conceito de usabilidade ainda é tema de mui-

tas 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 tornar-

se 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 é familia-

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

1Shell Script: pequeno programa escrito utilizando comandos do Linux para automatizar tarefas, como umarquivo de lote.

Page 64: LINUX INTERMEDIÁRIO

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

tema 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 ende-

reç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 Ta-

bela 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 Descrição-P utiliza a estrutura física do diretório em vez de links simbólicos

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

Page 65: LINUX INTERMEDIÁRIO

O Console Linux 65

4.2.2 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 Descrição-P imprime o diretório físico, sem links simbólicos

-L 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 espe-

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

Page 66: LINUX INTERMEDIÁRIO

66 EDITORA - UFLA/FAEPE - Linux Intermediário

Tabela 4.3: Parâmetros do Comando ls

Parâmetro Descrição-d Lista apenas diretórios

-h Mostra tamanhos de arquivos de forma mais compreensível

-d Lista o nome do diretório em vez de seu conteúdo

-R Entra recursivamente em subdiretórios

-X Ordena alfabeticamente os arquivos e diretórios

-t Ordena por data de alteração

-r Inverte a ordem se saída especificada

-A Mostra todos os arquivos, inclusive ocultos

-B Ignora arquivos de backup (terminam em )

-p Identifica diretórios com uma barra no final

-color=valor 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

Page 67: LINUX INTERMEDIÁRIO

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

mente 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 teste2 teste3

# rmdir test*

# ls

#

Figura 4.6: Exemplo de Uso do rmdir – uso de caracteres “coringa”

Page 68: LINUX INTERMEDIÁRIO

68 EDITORA - UFLA/FAEPE - Linux Intermediário

4.2.6 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 Descrição-f, --force 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 remo-

ver cada arquivo ou diretório.

-r, -R, --recursive Percorre os diretórios recursivamente, remo-

vendo todos os seus subdiretórios e arquivos.

-v, --verbose Informa o que está sendo feito com cada ar-

quivo.

# 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

Page 69: LINUX INTERMEDIÁRIO

O Console Linux 69

4.2.7 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 Descrição-f, --force 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.

Page 70: LINUX INTERMEDIÁRIO

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

teú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 des-

tino.

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

Page 71: LINUX INTERMEDIÁRIO

O Console Linux 71

Tabela 4.7: Parâmetros do Comando touch

Parâmetro Descrição-a Altera apenas a data/hora de acesso ao arquivo.

-c, --no-create Não cria o arquivo, se o mesmo não existir.

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

Page 72: LINUX INTERMEDIÁRIO

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

racteres ‘r’, ‘w’ e ‘x’ para expressar as permissões de leitura, escrita e execução, respec-

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

buiçã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 per-

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

2Veja no Capítulo 5 sobre como acessar o manual de um comando e obter ajuda.

Page 73: LINUX INTERMEDIÁRIO

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 Descrição0 Remove todas as permissões relativas à posição do dígito.

1 Dá permissão de execução ao arquivo ou diretório.

2 Dá permissão de escrita.

3 Dá permissões de escrita e execução (equivale às permis-

sões 1 e 2 somadas).

4 Dá permissão de leitura.

5 Equivalente à combinação das permissões 1 e 4.

6 Equivalente às permissões 2 e 4.

7 Todas as permissões definidas (1, 2 e 4).

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

Page 74: LINUX INTERMEDIÁRIO

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.

Page 75: LINUX INTERMEDIÁRIO

O Console Linux 75

# ls -l teste.txt

-rw-r--r-- 1 fulano users 32687 Mai 26 15:51 teste.txt

# chgrp editores teste.txt

# ls -l teste.txt

-rw-r--r-- 1 fulano editores 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 exem-

plifica 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 Descrição-a Monta todos os sistemas de arquivos especificados em /etc/fstab

-t Especifica o tipo de sistema de arquivos

-r Monta o sistema de arquivos como somente-leitura

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

Page 76: LINUX INTERMEDIÁRIO

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 Descrição-n Desmonta sem escrever no arquivo /etc/mtab

-r Se a desmontagem falhar, tenta remontar como somente-leitura

-a Desmonta todos os sistemas de arquivos em /etc/mtab

-t Especifica o tipo dos sistemas de arquivos a serem desmontados

-f 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 ini-

ciante 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

Page 77: LINUX INTERMEDIÁRIO

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

vado, 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 caracteres-

coringa (* 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 Descrição-/ Lista os diretórios recursivamente, equivalente ao /s original.

-w Lista os arquivos em colunas, omitindo tamanho e data de criação.

2 Lista arquivos ocultos.

4.3.2 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ási-

cas de uso.

Tabela 4.12: Parâmetros do Comando mcopy

Valor Descrição-s Copia diretórios recursivamente

-p Copia preservando os atributos

-Q Interrompe as cópias se um dos arquivos falhar

-n Não solicita confirmação ao sobrescrever arquivos

-m Preserva a data/hora de modificação do arquivo

-v Mostra os nomes dos arquivos à medida em que vão sendo copiados

Page 78: LINUX INTERMEDIÁRIO

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 tgz 771337 05-12-2003 12:56 linux.tgz

artigo 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 MS-

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

Page 79: LINUX INTERMEDIÁRIO

O Console Linux 79

Tabela 4.13: Parâmetros do Comando mformat

Parâmetro Descrição-t Especifica o número de cilindros

-h Especifica o número de cabeças

-n Especifica o número de setores

-f Especifica o tamanho do disco

-v 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 apre-

sentados 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

Page 80: LINUX INTERMEDIÁRIO

80 EDITORA - UFLA/FAEPE - Linux Intermediário

Tabela 4.14: Comandos de Navegação do less

Parâmetro Descriçãoe Avança uma linha

y Recua uma linha

f Página seguinte

b Página anterior

/expressao busca por ’expressao’ no texto a partir do início do documento

?expressao busca por ’expressao’ no texto a partir do fim do documento

n Repete uma busca anterior

N Repete uma busca anterior em ordem reversa

4.4.2 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 Descrição-b Numera as linhas de saída que não estiverem em branco

-n Numera as linhas de saída, inclusive linhas em branco

-T Mostra tabulações como o caracter ˆI

-E Mostra o caracter ’$’ ao final de cada linha

4.4.3 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 adici-

onada ao fim do arquivo, permitindo a monitoração de arquivos de registro do sistema

(disponíveis /var/log/).

Page 81: LINUX INTERMEDIÁRIO

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

taque é -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

Page 82: LINUX INTERMEDIÁRIO

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 Descrição-follow 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 des-

cer 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 des-

cer 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ús-

culas 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

Page 83: LINUX INTERMEDIÁRIO

O Console Linux 83

4.4.6 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 Descrição-u Atualiza toda a base de dados, a partir do diretório raiz. Opção

somente disponível para o usuário root.

-U <dir> Atualiza toda a base de dados, a partir do diretório especificado

por <dir>. Opção somente disponível para o root.

-i Não diferencia maiúsculas de minúsculas.

-n <num> 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 co-

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

Page 84: LINUX INTERMEDIÁRIO

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 Descrição-c Mostra o número de bytes do arquivo.

-m Mostra o número de caracteres do arquivo.

-l Mostra o número de linhas do arquivo.

-L Mostra o tamanho da maior linha do arquivo.

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

Page 85: LINUX INTERMEDIÁRIO

O Console Linux 85

4.4.9 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 Descrição-c 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.

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

-i Ignora maiúsculas/minúsculas.

-l Ao invés de exibir as linhas como saída, exibe os nomes dos arqui-

vos (no caso de multiplos arquivos) que contêm a expressão passada

como parâmetro.

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

-n Mostra no início de cada linha da saída o seu número no arquivo de

entrada.

-r Faz a busca em todos os arquivos de cada diretório recursivamente.

4.5 COMANDOS DE COMPACTAÇÃO

Compartilhar arquivos na internet tem sido uma tarefa cada vez mais costumeira. En-

tretanto, 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 disponibili-

zaçã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

3Ver a Seção 4.8 sobre o uso de pipes.

Page 86: LINUX INTERMEDIÁRIO

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

patí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

Page 87: LINUX INTERMEDIÁRIO

O Console Linux 87

Tabela 4.21: Parâmetros dos Comandos zip e unzip

Parâmetro Descrição-u 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 es-

pecificado.

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

grama vai tentar criar um novo arquivo, com o mesmo nome do arquivo original, mais a ex-

tensã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 Descrição-c Descompacta os arquivos colocando o resultado na saída padrão.

-l Lista um pequeno sumário para cada arquivo compactado.

-t Testa o arquivo que está sendo descompactado

-r Recursivo, varre toda a árvore de diretórios a partir daquele ponto.

Page 88: LINUX INTERMEDIÁRIO

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

pressã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 com-

plexos 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 compri-

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

Page 89: LINUX INTERMEDIÁRIO

O Console Linux 89

Tabela 4.23: Parâmetros do Comando tar

Parâmetro Descrição-c Cria um novo arquivo

-x Extrai o conteúdo de um arquivo

-v Verbose. Lista todos os arquivos que estão sendo processados.

-z 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 é

Page 90: LINUX INTERMEDIÁRIO

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

tados 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

Page 91: LINUX INTERMEDIÁRIO

O Console Linux 91

Tabela 4.24: Parâmetros do Comando ps

Parâmetro Descrição-A Seleciona todos os processos.

-a Seleciona todos os processos que estão rodando em ter-

minal, 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 termi-

nal especificado por <term>.

-C <nome-do-comando> Seleciona os processos pelo nome do comando especifi-

cado 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 é:

Page 92: LINUX INTERMEDIÁRIO

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 Descrição-p <pid> Recebe o identificador do processo que deve ter sua cor-

tesia alterada. O parâmetro -p pode ser omitido, ficando

subentendido que o valor refere-se ao Process ID que será

alterado.

-g <gid> Altera os valores de cortesia dos processos que estão ro-

dando com o grupo especificado por <gid>.

-u <uid> Altera os valores de cortesia dos processos sendo execu-

tados 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:

KILL � SIGKILL). A sintaxe do kill é simples:

Page 93: LINUX INTERMEDIÁRIO

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çãoQUIT 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 COMANDOS DIVERSOS DO CONSOLE

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

Page 94: LINUX INTERMEDIÁRIO

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 Descrição-d Exibe a data passada em seguida em vez da data atual

-R Mostra a descrição da data no formato proposto pela

RFC 822 (CROCKER, 1982)

-s Ajusta a data ou hora para o valor passado em seguida

Page 95: LINUX INTERMEDIÁRIO

O Console Linux 95

Tabela 4.28: Especifição de Formatos de Saída do Comando date

Parâmetro Descriçãodate +%a Nome do dia da semana (3 letras)

date +%A Nome do dia da semana (completo)

date +%b Nome do mês (3 letras)

date +%B Nome do mês (completo)

date +%c Mostra uma expressão descrevendo a data e hora atuais

date +%d Dia do mês

date +%D Data (mês/dia/ano)

date +%j Dia corrente no ano (1-366)

date +%m Mês (2 dígitos)

date +%U Numero da semana no ano (0-53)

date +%y 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.

Page 96: LINUX INTERMEDIÁRIO

96 EDITORA - UFLA/FAEPE - Linux Intermediário

Tabela 4.29: Parâmetros do Comando who

Parâmetro Descrição-b Hora do último boot

-u Lista os usuários que estão usando o sistema

-p Mostra os processos ativos

-r Imprime o nível de execução (runlevel)

-q 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 Descrição-1 Mostra apenas o mês solicitado (padrão)

-3 Mostra também o mês anterior e posterior ao solicitado

-s Considera domingo como o primeiro dia da semana

-m Considera segunda-feira como primeiro dia da semana

-j Mostra os dias como contínuos no ano (de 1 a 366)

-y Mostra o calendário do ano atual

Page 97: LINUX INTERMEDIÁRIO

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

mum, 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 EDITORES DE TEXTO NO TERMINAL

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

Page 98: LINUX INTERMEDIÁRIO

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

mandos 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 edi-

tores que podem ser facilmente usados em sistemas embarcados que rodam Linux, como

roteadores e outros equipamentos.

Figura 4.43: Editor de Textos VIM

Page 99: LINUX INTERMEDIÁRIO

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

sos 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 verifi-

caçã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.

Page 100: LINUX INTERMEDIÁRIO

100 EDITORA - UFLA/FAEPE - Linux Intermediário

Figura 4.45: Editor de Textos JOE

Figura 4.46: Editor de Textos Pico

Page 101: LINUX INTERMEDIÁRIO

O Console Linux 101

4.9.4 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 APLICATIVOS DIVERSOS EM MODO TERMINAL

4.10.1 Pine

Pine (Program for Internet News and Email) é um cliente de e-mail bastante com-

pleto, 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. Uti-

liza 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

Page 102: LINUX INTERMEDIÁRIO

102 EDITORA - UFLA/FAEPE - Linux Intermediário

as regras de codificação MIME e posteriormente salvo em arquivos ou visualizado atra-

vé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 configu-

raçã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 disponibili-

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

Page 103: LINUX INTERMEDIÁRIO

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

Page 104: LINUX INTERMEDIÁRIO

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

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

Page 105: LINUX INTERMEDIÁRIO

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

guagens 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 ade-

quadamente.

O conjunto de ferramentas que acompanha essas linguagens também merece se lem-

brado, em especial merece destaque as ferramentas que acompanham o GCC (GNU Com-

piler 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 sur-

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

Page 106: LINUX INTERMEDIÁRIO

106 EDITORA - UFLA/FAEPE - Linux Intermediário

Page 107: LINUX INTERMEDIÁRIO

5OBTENDO 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 ma-

nual, 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,

Page 108: LINUX INTERMEDIÁRIO

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) AçãoENTER Próxima linha

ESPAÇO Próxima página

Ctrl-B Página anterior

/expressao Busca ’expressao’ no texto

n Continuar a busca

q 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

Page 109: LINUX INTERMEDIÁRIO

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) AçãoENTER Entra em um hipertexto

ESPAÇO Próxima página

Ctrl-B Página anterior

/expressao Busca ’expressao’ no texto

n Continuar a busca

q Sai da página

Page 110: LINUX INTERMEDIÁRIO

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

cipal. É possível encontrar vários sites fornecendo informações úteis sobre assuntos di-

Page 111: LINUX INTERMEDIÁRIO

Obtendo Ajuda 111

# rm --help

Uso: rm [OPÇÃO]... ARQUIVO...

Remove (unlink) the FILE(s).

-d, --directory unlink directory, even if non-empty (super-user only)

-f, --force ignore nonexistent files, never prompt

-i, --interactive prompt before any removal

-r, -R, --recursive remove the contents of directories recursively

-v, --verbose explain what is being done

--help display this help and exit

--version 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 [email protected] 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 par-

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

Page 112: LINUX INTERMEDIÁRIO

112 EDITORA - UFLA/FAEPE - Linux Intermediário

Tabela 5.3: Grupos de Discussão e Assuntos Abordados

Lista Assunto

comp.os.linux.announce Anúncios importantes para a comunidade Linux

comp.os.linux.answers Perguntas e respostas a problemas com Linux

comp.os.linux.development.apps Desenvolvimento de aplicações para Linux

comp.os.linux.development.system Assuntos relacionados ao desenvolvimento do Linux

comp.os.linux.hardware Suporte a hardware no Linux

comp.os.linux.x Assuntos específicos do X Window

comp.os.linux.misc Outros assuntos não cobertos em outras listas

comp.os.linux.networking Assuntos relacionados a redes

comp.os.linux.setup Problemas de instalação e configuração do Linux

5.4.2 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 refe-

rentes ao Linux, dentre as quais merecem destaque:

[email protected]: 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. Pos-

sui informações sobre documentação, projetos, novidades e mais. O usuário pode

se inscrever enviando e-mail para [email protected] com o texto

subscribe ginux-l no corpo (body) ou no assunto (subject) da mensagem.

[email protected]: 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 tam-

bém podem ser lidas as dicas enviadas em dias anteriores.

[email protected]: 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/.

Page 113: LINUX INTERMEDIÁRIO

Obtendo Ajuda 113

[email protected]: essa é uma lista, fundada em 1993 e criada origi-

nalmente 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 disponibiliza-

das 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 continua-

rem 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 contro-

lar sua criação, evitando duplicações desnecessárias de documentos. Surgia então o Li-

nux 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, pos-

suindo 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 apli-

caçõ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

1http://www.cipsga.org.br/

Page 114: LINUX INTERMEDIÁRIO

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

Win-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 ob-

ter 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 fre-

quentemente, 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 esti-

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

Page 115: LINUX INTERMEDIÁRIO

6INSTALAÇÃ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 (compi-

lado 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 com-

pilaçã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 mo-

dificaçõ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 sis-

tema, 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-

Page 116: LINUX INTERMEDIÁRIO

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

cação. Caso fossem adicionadas todas as bibliotecas necessárias em cada pacote, a re-

dundâ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 atin-

giu 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 es-

ses 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 iden-

tifica 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 à ins-

talação;

21.4.6 é a versão do programa, normalmente alterada a cada alteração feita no código-

fonte;

Page 117: LINUX INTERMEDIÁRIO

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

plo);

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

sadores 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 progra-

mas desenvolvidos em Python, Java ou PHP, etc., que são interpretadas ou pos-

suem uma máquina virtual independente da arquitetura;

� src para identificar pacotes que não foram compilados para uma arquitetura es-

pecí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 com-

pletas 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 exe-

cutado 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 sis-

tema. Após essa instalação, normalmente, o gerenciamento de pacotes situa-se entre a

remoção e atualização desses pacotes.

Page 118: LINUX INTERMEDIÁRIO

118 EDITORA - UFLA/FAEPE - Linux Intermediário

Tabela 6.1: Parâmetros do Comando rpm

Parâmetro Descrição

-?, --help Imprime um resumo das instruções de uso e termina a execução.

--version Imprime uma mensagem com a versão do rpm em uso e termina a execução.

-v Imprime mais informações sobre a ação sendo executada, normalmente,

mensagens de progresso da operação.

-i, --install Instala um novo pacote

-U, --upgrade Atualiza um pacote instalado para uma nova versão, ou instala o pacote,

caso não tenha sido instalado ainda.

-F, --freshen Atualiza um pacote instalado, se e somente se existir uma versão anterior

do pacote já instalada no sistema.

-h, --hash 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.

--force 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!

--nodeps Ignorar a verificação de dependências antes de instalar ou atualizar o pa-

cote. Também pode ser usado com -e, durante a remoção de um pa-

cote. Essa opção deve ser usada com muito cuidado, para evitar o mal-

funcionamento de muitos programas.

-q, --query Executa uma consulta de acordo com os parâmetros de consulta que o se-

guem na linha de comando.

-a, --all Consulta todos os pacotes instalados.

-f, --file Consulta qual o pacote instalou o arquivo especificado.

-p, --package Consulta um arquivo de pacote em vez da base de dados do sistema. Pode-

se especificar um pacote local ou até mesmo disponível na internet, via pro-

tocolos HTTP ou FTP.

--filesbypkg Lista todos os arquivos de cada pacote especificado.

-i, --info Mostra informações do cabeçalho do pacote, como nome, descrição, versão,

etc.

-l, --list Lista os arquivos do pacote. A saída difere ligeiramente da opção

--filesbypkg.

--provides Lista as capacidades oferecidas pelo pacote especificado.

-R, --requires Lista os pacotes ou capacidades dos quais o pacote especificado possui

dependência.

-e, --erase Remove (desinstala) um pacote do sistema.

Page 119: LINUX INTERMEDIÁRIO

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

mente 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 hipo-

té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, indi-

cando 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 men-

sagem de erro e a operação será cancelada:

Page 120: LINUX INTERMEDIÁRIO

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

dê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 opcio-

nais 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 ou-

tros 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

#

Page 121: LINUX INTERMEDIÁRIO

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

dos 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 isola-

damente, 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

Page 122: LINUX INTERMEDIÁRIO

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

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

Page 123: LINUX INTERMEDIÁRIO

Instalação de Aplicativos 123

Para consultar um pacote não instalado, adiciona-se o parâmetro -p à linha de co-

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

logia 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 lis-

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

Page 124: LINUX INTERMEDIÁRIO

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

Page 125: LINUX INTERMEDIÁRIO

Instalação de Aplicativos 125

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

Page 126: LINUX INTERMEDIÁRIO

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

níveis na internet. Existem vários sites especializados na divulgação e distribuiçao de pa-

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

1http://www.sourceforge.net/2http://www.freshmeat.net/

Page 127: LINUX INTERMEDIÁRIO

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

deravelmente).

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

vos 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 deter-

minado arquivo (muito útil para resolver dependências). Entretanto, nem todos os desenvol-

vedores 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, pode-

se baixar diretamente do RPMFind.

Existem ainda programas que acompanham algumas distribuições que facilitam a lo-

calizaçã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ên-

cias 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, com-

binando 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

3http://www.rpmfind.net/4Originalmente foi desenvolvido para os pacotes no formato DEB do Debian e foi portado para trabalhar

com RPM pela Conectiva.5Normalmente 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.

Page 128: LINUX INTERMEDIÁRIO

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.

Page 129: LINUX INTERMEDIÁRIO

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.

Page 130: LINUX INTERMEDIÁRIO

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.