GNU/Linux - módulo 1 - Introdução

Licenciamento de Uso Este documento é propriedade intelectual © 2002 do Centro de Computação da Unicamp e distribuído sob os seguintes termos: 1. As apostilas publicadas pelo Centro de Computação da Unicamp podem ser reproduzidas e distribuídas no todo ou em parte, em qualquer meio físico ou eletrônico, desde que os termos desta licença sejam obedecidos, e que esta licença ou referência a ela seja exibida na reprodução. 2. Qualquer publicação na forma impressa deve obrigatoriamente citar, nas páginas externas, sua origem e atribuições de direito autoral (o Centro de Computação da Unicamp e seu(s) autor(es)). 3. Todas as traduções e trabalhos derivados ou agregados incorporando qualquer informação contida neste documento devem ser regidas por estas mesmas normas de distribuição e direitos autorais. Ou seja, não é permitido produzir um trabalho derivado desta obra e impor restrições à sua distribuição. O Centro de Computação da Unicamp deve obrigatoriamente ser notificado (treinamentos@ccuec.unicamp.br) de tais trabalhos com vista ao aperfeiçoamento e incorporação de melhorias aos originais. Adicionalmente, devem ser observadas as seguintes restrições: • A versão modificada deve ser identificada como tal • O responsável pelas modificações deve ser identificado e as modificações datadas • Reconhecimento da fonte original do documento • A localização do documento original deve ser citada • Versões modificadas não contam com o endosso dos autores originais a menos que autorização para tal seja fornecida por escrito. A licença de uso e redistribuição deste material é oferecida sem nenhuma garantia de qualquer tipo, expressa ou implícita, quanto a sua adequação a qualquer finalidade. O Centro de Computação da Unicamp não assume qualquer responsabilidade sobre o uso das informações contidas neste material.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

2

GNU/Linux - módulo 1 - Introdução

Nota do Autor
Este documento é uma “sistematização” de capítulos criados por mim, em conjunto com outros documentos de outras pessoas que desenvolveram ótimos materiais, dicas e artigos relacionados ao GNU/Linux, e que os disponibilizaram livremente. A lista destes documentos que tive como base para a criação deste treinamento, encontra-se no capítulo “Bibliografia”. Gostaria que esse documento fosse encarado como uma sistematização de documentos disponibilizados livremente e que serão utilizados com o propósito de realizar treinamentos de GNU/Linux para quem ainda não o conhece muito bem, mas que tem a curiosidade ou necessidade de aprender. Este documento é livre, e os fontes estão disponibilizados para download no site do Centro de Computação da Unicamp http://www.ccuec.unicamp.br. Obrigado e bom proveito. Fabio da Silva Santos

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

3

GNU/Linux - módulo 1 - Introdução

Índice
1. Introdução ao GNU/Linux.................................................................................................7 1.1 O que é GNU/Linux?........................................................................................8 1.2 História...........................................................................................................8 1.3 Algumas características.................................................................................9 1.4 O GNU/Linux e as distribuições....................................................................11 1.5 Sou novo usuário GNU/Linux, qual distribuição devo usar?..........................13 1.6 Entendendo o Software Livre?......................................................................16 1.7 Patentes de Software...................................................................................18 2. Instalação......................................................................................................................19 2.1 Antes da Instalação......................................................................................20 2.2 Instalação do Sistema Básico.......................................................................20 2.3 Configuração do Sistema..............................................................................45 3. Utilizando o sistema GNU/Linux.....................................................................................57 3.1 Os gerenciadores de janelas........................................................................58 3.2 Terminal Virtual (console)............................................................................61 3.3 Comandos básicos – nível 1...........................................................................62 3.3.1 – ls......................................................................................................62 3.3.2 – mkdir................................................................................................63 3.3.3 – rmdir................................................................................................63 3.3.4 – rm....................................................................................................63 3.3.5 – cd.....................................................................................................64 3.3.6 – pwd..................................................................................................64 3.3.7 – clear.................................................................................................65 3.3.8 – man..................................................................................................65 3.3.9 – apropos............................................................................................65 4. Sistemas de Arquivos....................................................................................................67 4.1 Partições..........................................................................................................68 4.2 Sistemas de Arquivos......................................................................................68 4.2.1 – EXT2................................................................................................69 4.2.2 – Journaling........................................................................................69 4.2.3 – EXT3................................................................................................69 4.2.4 – ReiserFS..........................................................................................70 4.2.5 – JFS...................................................................................................70 4.2.6 – XFS..................................................................................................70 4.2.7 – SWAP..............................................................................................70 4.2.8 – Qual Sistema de Arquivos devo Utilizar?.......................................71 4.3 - Identificação de Discos e Partições..............................................................71 4.4 - Pontos de Montagem....................................................................................72 5. Arquivos e Diretórios.....................................................................................................73 5.1 – Arquivos......................................................................................................74 5.2 – Tipo de Arquivos.........................................................................................74 5.3 – Nomes de Arquivos.....................................................................................76 5.4 – Diretórios....................................................................................................76 5.5 – Estrutura de Diretórios................................................................................76 5.6 – Caminhos....................................................................................................84 5.7 – Notações de Diretórios do Sistema.............................................................84
Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp 4

GNU/Linux - módulo 1 - Introdução

6. Utilizando o interpretador de comandos (shell).............................................................85 6.1 – O interpretador de comandos.....................................................................86 6.2 – Aviso de comando (prompt)........................................................................87 6.3 – Curingas (Wildcards)...................................................................................87 6.4 – Direcionadores............................................................................................90 6.5 – Alias............................................................................................................94 6.6 – Histórico dos comandos..............................................................................94 6.7 – Editor de textos “vi”...................................................................................95 6.8 – Comandos Básicos – nível 2........................................................................97 6.8.1 – history............................................................................................97 6.8.2 – tee.................................................................................................97 6.8.3 – grep...............................................................................................98 6.8.4 – cat..................................................................................................98 6.8.5 – tac................................................................................................100 6.8.6 – wc................................................................................................100 6.8.7 – find (utilização básica).................................................................101 6.8.8 – more............................................................................................102 6.8.9 – less..............................................................................................103 6.8.10 – touch..........................................................................................104 6.8.11 – ln................................................................................................105 7. Gerenciamento de Pacotes..........................................................................................107 7.1 – O que são pacotes?...................................................................................108 7.2 – Os pacotes Debian....................................................................................109 7.3 – Ferramentas de Gerenciamento de Pacotes.............................................110 8. Aplicativos para GNU/linux..........................................................................................125 8.1 – Suítes de Escritórios.................................................................................126 8.2 – Internet.....................................................................................................126 8.3 – Multimídia.................................................................................................129 8.4 – Gráficos.....................................................................................................131 8.5 – Desktop Publishing (DTP)..........................................................................131 8.6 – Visualizadores de Imagem........................................................................132 8.7 – Emuladores...............................................................................................132 8.8 – Editores de Texto......................................................................................133 8.9 – Desenvolvimento......................................................................................133 8.10 – Terminais Gráficos..................................................................................134 8.11 – Onde procurar softwares para GNU/Linux..............................................135 9. Bibliografia...................................................................................................................137

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

5

GNU/Linux - módulo 1 - Introdução

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

6

GNU/Linux - módulo 1 - Introdução

Capítulo 1

Introdução ao GNU/Linux
Neste capítulo o usuário compreenderá o que é o GNU/Linux, sua história, características, noções sobre distribuições, e uma introdução do que é software livre.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

7

GNU/Linux - módulo 1 - Introdução

1.1- O que é GNU/Linux?
Em uma definição mais abrangente do que é GNU/Linux, podemos dizer que é um sistema operacional de código-fonte aberto, e que é distribuído gratuitamente pela internet. Tecnicamente falando, o GNU/Linux é um kernel. O Termo Kernel (ou núcleo) propriamente refere-se ao sistema de software que representa a camada mais baixa de interface com o hardware, sendo o responsável por gerenciar os recursos do sistema computacional como um todo. É no kernel que estão definidas funções para operações com periféricos (mouse, impressora, disco, interface serial/interface paralela), gerenciamento de memória, entre outros. Resumidamente, o kernel é um conjunto de programas que fornece aos programas de usuários (aplicativos), uma interface para utilizar os recursos do sistema. Sistemas completos construídos em torno do kernel do GNU/Linux (mais conhecidos como “Distribuições GNU/Linux”) usam o sistema GNU que oferece uma shell (interpretador de comandos, como o bash), utilitários (por exemplo, o whoami, que mostra quem é o usuário autenticado no momento, o find, comando para pesquisar arquivos em uma hierarquia de diretórios), bibliotecas (glibc), compiladores (compilador C GCC), editores de texto (Emacs), e outros tipo de ferramentas. Por essa razão, Richard M. Stallman, criador do Projeto GNU, pede aos usuários que se refiram ao sistema como GNU/Linux. Além do sistema GNU, um Sistema GNU/Linux completo pode conter outros softwares como o XOrg ou XFree86 (servidores gráficos), Apache (servidor web) , PostgreSQL e MySQL (banco de dados), KDE e GNOME (gerenciadores de janelas), Mozilla FireFox (navegador web), Mozilla Thunderbird e Evolution (leitores de e-mails), entre outros softwares livres (e as vezes não-livres) desenvolvidos por indivíduos e grupos ao redor do mundo.

1.2 - História
O kernel do GNU/Linux foi originalmente desenvolvido como passatempo por Linus Torvalds, um estudante de computação da Universidade de Helsinki, na Finlândia. Sua inspiração foi uma pequena versão do Unix desenvolvida por Andrew Tannenbaun chamado Minix. Ele queria um sistema operacional que fosse semelhante ao Unix, com todas as suas funcionalidades e , ainda, que pudesse utilizá-lo num PC. A partir dessa idéia, Linus começou a trabalhar nesse que seria o futuro kernel do sistema operacional que hoje é chamado de GNU/Linux. Isso tudo aconteceu em meados de 1991, e em 5 de outubro deste mesmo ano, a seguinte mensagem circulou na UseNet: “...Como eu mencionei há um mês, estou trabalhando em uma versão free de um sistema semelhante ao Minix para computadores AT-386. Ele já alcançou o estágio de ser usável (embora possa não ser dependendo do que você fazer), e pretendo distribuir o código-fonte. É apenas a versão 0.02, mas já consegui rodar nele o BASH, GCC, GNU-make, GNU-sed, compress, etc.”
Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp 8

GNU/Linux - módulo 1 - Introdução

Esta mensagem era assinada por Linus Torvalds, e ninguém adivinharia que ela estaria marcando o início de um movimento que, em menos de 10 anos, já superava trinta milhões de seguidores, e que hoje se tornou um dos sistemas operacionais mais utilizados no mundo em servidores (e agora a caminho do mundos dos desktops!), graças ao seu sistema colaborativo de desenvolvimento, de ajuda aos usuários, e de divulgação por parte dos adeptos de um sistema operacional livre, que aos poucos põe fim ao monópolio tecnológico imposto por grandes empresas de software, principalmente pela Microsoft (líder no mercado de sistemas operacionais para desktops), que oprime o desenvolvimento do conhecimento tecnológico de países “emergentes” como Brasil, que dá um grande exemplo adontando preferencialmente as soluções em software livre com apoio do governo federal, como mostra o projeto de lei do Senado Número 330, DE 2003, Altera a redação do art. 45 da Lei número 8.666: “5o. Somente será realizada licitação ou contratação direta, com base no inciso II do art. 24, para aquisição de programas de informática quando a autoridade competente acolher, em despacho motivado, parecer técnico que conclua pela ausência de programas abertos gratuitos, capazes de suprir adequadamente as necessidade da Administração.” Portanto, adotar preferencialmente soluções livres é dar um voto de confiança para que todas as pessoas possam ter a oportunidade e a opção de participarem da inclusão digital, a qual corre em grande velocidade mundo a fora, e no caso do Brasil, com software livre, sendo através de empresas, escolas, telecentros, e qualquer instituição que necessite de recursos de informática para auxiliar em seus serviços rotineiros.

1.3- Algumas Características
Neste item estão descritas algumas das muitas características do GNU/Linux, as quais são muito vantajosas em relação à outros sistemas operacionais: É livre e desenvolvido voluntariamente por programadores experientes, hackers e contribuidores espalhados ao redor do mundo, que tem como objetivo, a contribuição para a melhoria e crescimento deste sistema operacional; ✔ Não é requerida uma licença para uso. O GNU/Linux é licenciado de acordo com os termos da GPL (GNU Public Licence); ✔ Não precisa de um processador potente para funcionar. O sistema roda bem em computadores 386SX 25MHz com 4MB de RAM (sem rodar o sistema X, que é recomendado 8MB de RAM), sendo um 386SX com 2MB de RAM e 40MB de disco rígido para uma instalação básica e funcional; ✔ Por ser um sistema operacional de código aberto, você pode ver o que código-fonte faz e adaptá-lo as suas necessidades ou de sua empresa. Esta característica é uma segurança a mais para empresas e outros que não querem ter seus dados roubados
✔ Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp 9

GNU/Linux - módulo 1 - Introdução

✔ ✔ ✔ ✔

✔ ✔

✔ ✔ ✔ ✔

(você não sabe o que um sistema operacional sem código-fonte aberto faz na realidade enquanto está processando um programa); Multitarefa e multiusuário; Convive sem nenhum conflito com outros sistemas operacionais (DOS, Microsoft Windows, OS/2, etc), no mesmo computador; Acessa corretamente discos formatados pelo DOS, Microsoft Windows, Novell, OS/2, NTFS, MAC, SunOS, Amiga, etc; Os sistemas de arquivos que podem ser usados com o GNU/Linux como EXT2, EXT3, ReiserFS, etc, organizam os arquivos de forma inteligente evitando fragmentação e fazendo um poderoso sistema para aplicações exigentes e gravações intensivas; Roda aplicações Microsoft Windows através do WINE; Não há a necessidade de reiniciar o sistema após modificar a configuração de qualquer periférico ou parâmetro de rede. Somente é necessário reiniciar o sistema no caso de uma instalação interna de um novo periférico ou falha em algum hardware (queima do processador, placa-mãe, etc.); Modularização – O GNU/Linux somente carrega para a memória o que é usado durante o processamento, liberando totalmente a memória assim que o programa ou dispositivo é finalizado; Devido a modularização, os drivers dos periféricos e recursos do sistema podem ser carregados e removidos completamente da memória RAM a qualquer momento; Os drivers (módulos) ocupam pouco espaço quando carregados na memória RAM (cerca de 6KB para a placa de rede NE2000, por exemplo); Consultores técnicos especializados no suporte ao sistema espalhados por todo o mundo; Na parte dos desktops, possui gerenciadores de janelas amigáveis e que já podem se considerar alternativa ao Microsoft Windows, como por exemplo o KDE, GNOME e XPDE; Possui uma porção significativa de aplicativos para os mais diversos fins para usuários mais leigos, como por exemplo, aplicativos de escritórios, navegadores web e leitores de e-mail;

Analisando algumas das características do sistema GNU/Linux, podemos concluir que ele já está maduro e estável para ser utilizado no mercado e em instituições de pesquisas de diversos seguimentos, como já acontece nos dias de hoje, tendo como parceiros e incentivadores, grandes empresas como IBM e Novell, além de instituições de ensino superior como por exemplo a Unicamp e UNIVATES, e órgãos governamentais como a Prefeitura de Monique na Alemanha, Metrô de São Paulo, os Governos do Estado do Paraná e do Rio Grande do Sul (os quais são os maiores incentivadores), Prefeitura de Rio das Ostras-RJ e o Governo Federal.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

10

GNU/Linux - módulo 1 - Introdução

1.4- O GNU/Linux e as Distribuições
Logo que Linus Torvalds passou a disponibilizar o GNU/Linux, ele apenas disponibilizava o kernel com alguns comandos básicos. O próprio usuário devia arrumar os outros programas, compilá-los e configurá-los. Até para um hacker isto não é nada fácil. Para nos poupar deste trabalho de montar um sistema do zero, como faziam os pioneiros, temos hoje as distribuições, que nada mais são do que grandes pacotes de software que trazem instaladores, documentações e outras facilidades, que poupam o usuário de tarefas mais espinhosas de instalação e configuração do sistema. Embora seja possível desenvolver sua própria distribuição GNU/Linux do zero, compilando o Kernel e adicionando um a um os programas desejados, é muito mais simples colocar um CD na bandeja, responder a algumas perguntas e se deparar com um sistema configurado, pronto para usar. Entre as distribuições mais conhecidas, estão: SuSe, Conectiva/Mandriva, Fedora, Gentoo, Debian, Slackware, Kurumin e Knoppix. As diferenças básicas entre elas estão em como são organizados e pré-configurados os aplicativos, instaladores e ferramentas de configuração disponibilizadas para auxiliar na administração do sistema GNU/Linux. Outras diferenças entre as distribuições estão nos seus sistemas de empacotamento, que podem ser o RPM, DEB ou TGZ, em alguns casos a estrutura de diretórios, que normalmente seguem o padrão LSB (Linux Standard Base) que usa o FHS (Filesystem Hierarchy Standard), e a versão da biblioteca básica, glibc (biblioteca que contém as funcões básicas para o funcionamento do sistema operacional GNU/Linux). Uma ilustração de como são compostas as distrubuições encontra-se na figura 1.1.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

11

GNU/Linux - módulo 1 - Introdução

Figura 1.1 – Ilustração de como são compostas as distribuições.
Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp 12

GNU/Linux - módulo 1 - Introdução

1.5- Sou novo usuário GNU/Linux, qual distribuição devo usar?
Este é o grande problema em existir várias distribuições, qual usar? O primeiro passo é pesquisar discussões em fóruns e sites sobre GNU/Linux e pedir auxílio. Depois analisar a pesquisa. Porém, tome cuidado, pois normalmente o usuário fica desapontado com a primeira distribuição escolhida. Por isso, é bom escolher a distribuição que mais tenha afinidade com você, e para que isso ocorra, deve-se experimentar várias distribuições e escolher aquela que mais lhe agradou. O problema é que o usuário não vai querer instalar várias distribuições para achar aquela que fará sentir-se confortável, pois é muito trabalho, e o usuário novo teria dificuldade. Para estas pessoas a indicação é procurar por distribuições de mais fácil manipulação (considerando que varia pelo gosto da pessoa). Abaixo encontram-se descrições mais detalhada das distribuições mais conhecidas: SuSe : Distribuição alemã, adquirida pela americana Novell, que vem se destacando pelo seu grande crescimento no mercado corporativo, sendo a distribuição que mais cresce atualmente nesse setor. O SuSE Linux sempre se destacou por ter o melhor suporte a hardware dentre as distribuições existentes, isso graças à inclusão de drivers não-livres (gratuitos ou pagos) com seu sistema operacional. O SuSE possui uma ferramenta muito versátil, o YAST, através da qual é possível configurar todo o sistema, além de gerenciar os programas instalados, tudo ao alcance do mouse. A união dessa facilidade como ótimo suporte comercial vem fazendo do SuSE uma das melhores alternativas para grandes empresas, que não podem abrir mão de suporte técnico especializado e sempre à mão. Red Hat :Lançada oficialmente em novembro de 1994, a Red Hat foi a empresa pioneira no ramo de GNU/Linux, tornando-se rapidamente a maior empresa do mundo a trabalhar exclusivamente com o sistema operacional livre. Ainda hoje, a Red Hat é a distribuição mais utilizada no mundo, e muitas outras distribuições famosas como SuSe e Mandriva são derivadas dela. Pioneira no uso de ferramentas para configuração e manutenção do sistema, o Red Hat foi e ainda é usado principalmente em servidores, a contragosto de muitos que dizem que seu desempenho não é lá dos melhores, apesar da extrema facilidade do gerenciamento do sistema, fornecida pelas ferramentas incluídas na distribuição. No atual modelo de negócios, a Red Hat está desenvolvendo somente soluções para empresas, através de distribuições fechadas, não disponíveis para download. Fedora : Quando a Red Hat decidiu mudar seu modelo de negócios e trabalhar apenas com soluções para o mercado corporativo, deixou de disponibilizar a sua distribuição para download sob uma licença de Software Livre. Isso causou uma certa revolta na comunidade, que alegava que a Red Hat a estava traindo. Temendo retaliação e boicote, a Red Hat decidiu criar uma versão livre de seu
13

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

GNU/Linux - módulo 1 - Introdução

sistema operacional, voltado para o desktop, e disponibilizá-la abertamente para download. Chamado Fedora, o projeto alcançou um grande sucesso, e atualmente é utilizado por um número expressivo de usuários ao redor do mundo. Por possuir as mesmas ferramentas do Red Hat, a migração dos usuários aconteceu de forma tranquila e nem um pouco traumática. O Fedora é mantido pela comunidade, e gerenciado pela Red Hat. Atualmente ele está na versão Core 4.

Conectiva (Mandriva) : A primeira distribuição GNU/Linux nacional criada em 1995. Baseada no Red Hat, o Conectiva Linux destacou-se graças ao ótimo suporte ao hardware omumente usado no Brasil e aos seus programadores que desenvolveram diversas ferramentas utilizadas posteriormente por muitas distribuições, como o gerenciador de pacotes Synaptic e o APT for RPM, uma adaptação do APT do Debian para sistemas baseados no Red Hat. A Conectiva tornou-se rapidamente a maior empresa de Linux da América Latina, tendo sido recentemente adquirida pela francesa MandrakeLinux, tornando-se a distribuição Mandriva. A Conectiva sempre disponibilizou os seus produtos sob a licença GPL, exceto as versões para empresas do seu sistema operacional. Mandrake (Mandriva) : Distribuição francesa baseada no Red Hat, que com o tempo tomou características próprias e assumiu um sucesso que tornou a Mandrakelinux a maior empresa do ramo de Linux na Europa. O principal trunfo do Mandrake é a facilidade de uso. Tudo é simples de fazer, desde a instalação do sistema até a sua configuração, instalação de novos itens de hardware e gerenciamento dos programas instalados. Suporta vários idiomas, incluindo o português brasileiro, e possui muitos serviços para usuários, como o Mandrake Club, onde o membro recebe as últimas atualizações sobre segurança, softwares, e outros, de forma rápida e automatizada. Recentemente, a Mandrakelinux comprou a brasileira Conectiva, tornando-se também a maior empresa do ramo de Linux da América Latina, e lançando a nova distribuição, o Mandriva. Slackware : Mais antiga das distribuições, criada em abril de 1993 pelo irlandês, Patrick Volkerding, o Slackware é uma distribuição tradicionalista, voltada para usuários que conhecem o sistema e sabem o que estão fazendo. O objetivo de Patrick é fornecer um ambiente mais parecido possível com um sistema UNIX padrão, mantendo a simplicidade e oferecendo total controle para o administrador. Além disso, o Slackware é a única distribuição que não aplica patches (pacotes de correção e modificações) nos seus pacotes, ficando essa tarefa a cargo do usuário, se assim achar necessário. O melhor uso do Slackware é em servidores dedicados, geralmente estáticos no sentido de não requererem atualizações constantes de software, e onde o sistema seja administrado por uma pessoa apenas, que sabe muito bem o que está fazendo. O Slackware tem a fama de ser uma distribuição difícil e sem muitos recursos. É comum os iniciantes enfrentaram problemas com a configuração do servidor gráfico.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

14

GNU/Linux - módulo 1 - Introdução ✔

Debian : O Debian foi criado por Ian Murdock em 1993, inicialmente patrocinado pelo projeto GNU da Free Software Fundation. Hoje, os projetistas do Debian entendem-no como um descendente direto do Projeto GNU. O Debian atualmente inclui mais de 8250 pacotes de software, facilmente instaláveis através de uma ferramenta chamada APT. Esses pacotes são em sua maioria softwares livres disponibilizados sob a licença GPL. Alguns deles não são livres, mas ainda assim gratuitos. Você pode encontrar uma lista e descrições dos pacotes atualmente disponíveis no Debian em qualquer um dos seus sites mirrors (espelhos). Um diferencial do Debian sobre as demais distribuições é que ele é o único sistema que não é mantido, supervisionado ou patrocinado por alguém ou alguma organização. Todo o sistema, incluindo suas ferramentas e os pacotes que utiliza são mantidos por diversos desenvolvedores ao redor do mundo. Mas nem por isso o processo de desenvolvimento do Debian é desorganizado, muito pelo contrário, é um dos processos mais organizados que se conhece. As pessoas que se candidatam a serem mantenedores do sistema passam por testes dificílimos, ficam um longo período em experiência e, se aprovados, têm de assinar um termo de responsabilidade onde se comprometem a garantir a continuidade do sistema operacional, zelando pela qualidade e segurança de tudo o que passar por suas mãos. Prega-se que o Debian é a distribuição mais testada do mundo, e isso é de fato verdade. O processo de inclusão de um recurso no sistema ou um pacote no repositório é muito rígido, o que garante uma confiabilidade total na integridade e segurança do sistema. Gentoo : Criado por Daniel Robins, o Gentoo é uma distribuição que pode ser definida como um “Linux From Scratch automatizado”. A instalação é feita segundo os mesmo princípios de uma instalação de GNU/Linux a partir do zero, com todos os pacotes sendo compilados um a um, incluindo o kernel. A diferença é que o Gentoo permite automatizar essas tarefas, através de um sistema de gerenciamento de pacotes, o Portage, que busca e baixa o pacote da Internet, compila-o e instala-o automaticamente, de acordo com as configurações feitas pelo usuário. O Gentoo possui arquivos de configuração próprios que definem as opções que devem ser utilizadas pelo compilador, de forma a otimizar os pacotes para uso na máquina local. Quando bem configurado, o Portage acaba produzindo um sistema onde o desempenho é o ponto mais marcante. Outro ponto de destaque o Gentoo é a rica documentação disponível em seu site oficial. Mesmo usuário de outras distribuições podem se beneficiar de documentos que tratam de assuntos fundamentais como particionamento, formatação e sistema de arquivos, muitos desses documentos já traduzidos pela comunidade brasileira do Gentoo. Knoppix : Distribuição criada por Laus Knooper que oferece a possibilidade de rodar o sistema a partir do CD-ROM. O Knoppix é muito popular, sendo muito utilizado para demonstrações do GNU/Linux, uma vez que pode-se rodar um sistema completo, repleto de aplicativos, a partir de um CD, sem necessidade de instalação.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

15

GNU/Linux - módulo 1 - Introdução ✔

Kurumin : Distribuição nacional criada por Carlos Eduardo Morimoto. O Kurumin é baseado no Knoppix, tendo sobre esse a vantagem de ser adaptado à realidade do usuário brasileiro, com ferramentas de instalação de hardwares muito comuns no Brasil, como modems e outros dispositivos. Por ser baseado no Knoppix, o Kurumin também roda a partir do CD, e pode ser rapidamente instalado no computador. Debian-BR-CDD : Este projeto é uma iniciativa da comunidade brasileira Debian-BR para adaptar a distribuição Debian à realidade do usuário brasileiro. Seu grande apelo está na facilidade de instalação e no belo aspecto visual. O Debian-BR-CDD 1.0 pre5 utiliza o GNOME como gerenciador de janelas padrão, inclui uma excelente documentação para o usuário iniciante e um link para abrir o canal de IRC #debian-br-cdd, onde é possível tirar dúvidas e relatar bugs diretamente para os desenvolvedores do sistema. Muriqui Linux : Esse projeto é mantido e desenvolvido pelo Instituto Doctum de Educação e Tecnologia. Trata-se de uma distribuição baseada no Debian (um tipo de CDD, Custom Debian Distribution), com o diferencial de estar completamente traduzido para o português brasileiro, e pelo fato de ele vir com o instalador Anaconda, o mesmo usado em distribuições como o Red Hat e o Fedora. Isso o torna um sistema Debian muito fácil de instalar. O nome da distribuição foi baseada no nome de um macaco, considerado o maior da américa latina, que só existe em alguns poucos lugares do Brasil. É uma distribuição nova, mas que pode se tornar sucesso em um futuro próximo. Ubuntu : Desenvolvido na África do Sul, o Ubuntu tem feito muito sucesso desde o seu lançamento, graças às suas ferramentas que tornam muito prático o uso do sistema, e também pelo seu visual caprichado, utilizando X.org como servidor gráfico padrão.

1.6- Entendendo o Software Livre
“Software Livre” é uma questão de liberdade, não de preço. Para entender o conceito, deve-se pensar em “liberdade de expressão”, e não em “almoço grátis”. “Software Livre” refere-se a liberdade dos usuários executarem, copiarem, distribuírem, estudarem, modificarem e aperfeiçoarem o software. Mais precisamente, ele se refere a quatro tipos de liberdade, para os usuários de software: A liberdade de executar o programa, para qualquer propósito (Liberdade número 0 – zero); ✔ A liberdade de estudar como o programa funciona, e adaptá-lo para as suas necessidades (Liberdade número 1). Acesso ao código-fonte é um pré-requisito para esta liberdade;
✔ Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp 16

GNU/Linux - módulo 1 - Introdução

A liberdade de redistribuir cópias de modo que você possa ajudar ao próximo (Liberdade número 2); ✔ A liberdade de aperfeiçoar o programa, e liberar os seus aperfeiçoamentos, de modo que toda a comunidade se beneficie (Liberdade número 3). Acesso ao código-fonte é um pré-requisito para esta liberdade;

Um programa é software livre se os usuários tem todas estas liberdades. Portanto, você deve ser livre para redistribuir cópias, seja com ou sem modificações, seja de graça ou cobrando uma taxa pela distribuição, para qualquer um em qualquer lugar. Ser livre para fazer essas coisas significa (entre outras coisas) que você não tem que pedir ou pagar pela permissão. Você deve também ter a liberdade de fazer modificações e usá-las privativamente no seu trabalho ou lazer, sem nem mesmo mencionar que elas existem. Se você publicar as modificações, você não deve ser obrigado a avisar a ninguém em particular, ou de nenhum modo em especial. “Software Livre” não significa “não-comercial”. Um programa livre deve estar disponível para uso comercial, desenvolvimento comercial, e distribuição comercial. O desenvolvimento comercial de software livre não é incomum; tais softwares livres comerciais são muito importantes. Portanto, você pode ter pago para receber cópias de software livres, ou você pode ter obtidos cópias sem nenhum custo. Mas independentemente de como você obteve a sua cópias, você sempre tem a liberdade de copiar e modificar o software, ou mesmo vender cópias, VOCÊ É LIVRE PARA ISSO. “Softwares livres“ distribuídos pelo licença GPL (GNU Public Licence) seguem um conceito conhecido como Copyleft, um trocadilho com o termo Copyright, que traduzindo literalmente significa “deixamos copiar”, que é o que garante a liberdade dos usuários de modificarem e distribuírem sua modificações. Ou seja, um software livre sem Copyleft pode ser tornado proprietário por um usuário. Já um software protegido por uma licença que ofereça Copyleft deverá, se distribuído, ser distribuído sob a mesma licença, ou seja, repassando seus direitos. Em todo caso, não é necessário redistribuir um software livre modificado. O movimento do “Software Livre” foi criado em 1984 por Richard Stallman, um pesquisador do MIT (Massachusetts Insitute Technology), que não era a favor de grandes empresas de software imporem restrições aos usuários com o uso do contrato de licenças de software. Desde então, criou o projeto GNU (GNU is not UNIX), fundando a Free Software Foundation (FSF). A licença mais conhecida no mundo do software livre é a GPL (GNU Public Licence), que é uma das licenças que garantem todas essas liberdades listadas e comentadas acima, porém, existem outros tipos de licenças de software que são semelhantes, mas não iguais à GPL, como por exemplo a BSD, Creative Commons, entre outras.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

17

GNU/Linux - módulo 1 - Introdução

1.7- Patentes de Software
Outro motivo importante que justifica a adoção do Software Livre são as chamadas patentes de software. Imagine que uma empresa patenteasse o duplo-clique, por exemplo, e passasse a exigir que qualquer um que utilizasse esse recurso em seus softwares tivessem que pagar por isso. E se tudo o que for criado na área de software for patenteado, e tivemos que pagar para utilizar esses recursos, como poderá haver desenvolvimento, no futuro? Somente as grandes companhias poderão desenvolver software, e eles terão de ser pagos. Imagine que terrível seria se todos os programas que você utiliza em seu computador lhe custassem alguns dólares. Isso tornaria os programas mais caros que o próprio computador, o que inibiria a aquisição de computadores pelos menos favorecidos. O que acontece então é a estagnação total, e o domínio do conhecimento pelas grandes companhias. Existe uma grande movimentação por parte dos Estados Unidos para que o seu sistema de patentes seja implementado nos outros países. Recentemente, isso aconteceu na União Européia, a contragosto de muitos. No Brasil e outros países da América Latina tal sistema de patentes não existe, o que nos assegura uma certa liberdade no uso de tecnologias de software patenteadas pelas empresas americanas. Entretanto, é preciso ter consciência da importância de não impôr qualquer sistema de proteção ao direito intelectual que venha a inibir a disseminação do conhecimento e o desenvolvimento tecnológico, o que nos deixaria à mercê da vontade das grandes companhias americanas, que não estão nem um pouco interessadas no desenvolvimento tecnológico e na disseminação do conhecimento, mas tão somente em encher os bolsos às custas de usuários sem acesso à informação, escravos de seus programas fechados e seus Service Packs.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

18

GNU/Linux - módulo 1 - Introdução

Capítulo 2

Instalação do GNU/Linux
Neste capítulo o usuário compreenderá como é organizada uma instalação do GNU/Linux independente da sua distribuição, e o que é necessário saber antes e durante a instalação para se ter uma sistema enxuto e funcional.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

19

GNU/Linux - módulo 1 - Introdução

2.1– Antes da Instalação
A instalação de um sistema GNU/Linux não é uma tarefa difícil como muitos usuários pensam, ela é apenas um processo mais detalhado e customizável do que, por exemplo, a instalação de um sistema Microsoft Windows. Para que este procedimento seja bem sucedido, é indicado seguir algumas dicas básicas: 1. Antes da instalação, verifique se existe outro sistema operacional instalado na máquina; 2. Caso exista outro sistema operacional (normalmente o Microsoft Windows) que esteja ocupando o espaço disponível em disco, é necessário fazer um redimensionamento para que o GNU/Linux possa ser instalado; 3. Faça um backup de todos os seus arquivos mais importantes e execute a ferramenta de desfragmentação de discos antes de realizar o redimensionamento (Apenas no caso de existir outro sistema operacional na máquina); 4. Mesmo que os instaladores possuam o recurso de detecção automática de hardware, sempre tenha em mãos a listagem de hardware da sua máquina (monitor, placa de vídeo, placa de rede, placa de fax modem, disco rígido SCSI, etc.), pois nem todos os instaladores possuem um abrangente banco de dados de drivers; 5. Dê preferência à instalação via boot no CD-ROM, que é a mais comum e a mais simples disponível até o momento; 6. Em muitos casos, a máquina está localizada dentro de uma rede interna, então peça ao administrador da rede as seguintes informações: ✔ Endereço IP da máquina; ✔ Nome da máquina; ✔ Gateway; ✔ Servidores de Nomes (DNS); ✔ domínio; 7. Tenha em mãos os cd's da sua distribuição GNU/Linux (Pode-se instalar um sistema através da rede, NFS, FTP ou HTTP, com um boot pelo disquete ou mesmo pelo CD);

2.2 – Instalação do Sistema Básico
Independente de existirem diversas distribuições, que possuem seus próprios sistemas de instalação, cada qual com suas características individuais, o processo de instalação do GNU/Linux, no geral, segue um padrão, o qual pode-se resumir da seguinte forma:
Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp 20

GNU/Linux - módulo 1 - Introdução

✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔

Tipo de instalação (modo texto, gráfico, expert, etc.) Detecção de hardware Seleção do idioma Seleção do layout do teclado Seleção e configuração do mouse Perfis de instalação Configurar rede Particionamento de disco Instalação de pacotes Configurar o modo gráfico
✔ ✔ ✔

Monitor Placa de vídeo Nº de cores / resolução

✔ ✔ ✔

Configuração do fuso horário Configuração de usuários e senhas Configuração do gerenciador de inicialização (bootloader) Disco de inicialização Finalização da instalação

✔ ✔

Normalmente uma instalação de GNU/Linux possui estas características, porém, como existem diversas distribuições com seus próprios instaladores, algumas destas etapas podem não existir, podem fazer parte de outro item do instalador, ou mesmo podem ser executadas sem aparecerem visualmente para o usuário. A distribuição utilizada como base para o curso é o Debian GNU/Linux 3.1, ou Debian “Sarge”. Esta distribuição é desenvolvida e atualizada através do esforço de voluntários espalhados ao redor do mundo, seguindo o estilo de desenvolvimento GNU/Linux. Por este motivo, foi adotada como a distribuição oficial do projeto GNU. Apesar da sua instalação ser inteiramente em modo texto, pode-se instalar um sistema completo com uma enorme facilidade e rapidez. Sua instalação é dividida nas seguintes etapas:
Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp 21

GNU/Linux - módulo 1 - Introdução

✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔

Tipo de instalação (linux26, expert, etc.) Seleção do idioma Seleção do layout do teclado Detectar e montar CD-ROM Carregar componentes do instalador Detectar hardware de rede Configurar rede Detectar discos e outros hardwares Particionar disco Instalar Sistema Básico Instalar o GRUB em um disco rígido Configuração do fuso horário Configurar usuários e senhas Configurar o APT (repositório de pacotes) Seleção dos perfis de instalação Configurar o modo gráfico
✔ ✔ ✔

Monitor Placa de vídeo Nº de cores / resolução

✔ ✔ ✔

Configurar o EXIM Finalização da Configuração e da Instalação Inicialização do Modo Gráfico

A partir de agora, vamos detalhar o processo de instalação do Debian GNU/Linux 3.1 “Sarge”, passo-a-passo, com apresentação das telas que fazem parte do instalador. Lembrando que as opções selecionadas fazem parte dos exemplos deste curso.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

22

GNU/Linux - módulo 1 - Introdução ✔

Tipo de instalação (linux26, expert, etc.)

A figura 2.2.1 mostra a tela de apresentação do instalador, logo após a inicialização do computador pela mídia de instalação do Debian GNU/Linux Sarge. Esta pode ser adquirida em um dos mirrors oficiais, que encontram-se espalhados pelo mundo, e listados em http://www.debian.org/CD/http-ftp/ . Precisa-se apenas do CD 1 para realizar uma instalação funcional e enxuta.

Figura 2.2.1 – Primeira tela de apresentação do instalador.

Pressionando a tecla F1, podemos visualizar um menu com diversar informações sobre a instalação e sobre o Projeto Debian GNU/Linux. Utilize o método de instalação “linux26” (figura 2.2.2).

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

23

GNU/Linux - módulo 1 - Introdução

Figura 2.2.2 – Menu de opções do instalador.

Seleção do Idioma

Nesta etapa, faz-se a seleção do idioma usado no processo de instalação (figura 2.2.3). Selecione a opção “Portuguese (Brazil) - Português do Brasil”.

Figura 2.2.3 – Seleção do idioma.
Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp 24

GNU/Linux - módulo 1 - Introdução ✔

Seleção do layout do teclado

Escolha o layout do teclado que você está usando (figura 2.2.4). O instalador te oferece a opção mais comum, baseada na sua escolha do idioma, mas obviamente, você pode mudar se desejar. Selecione a opção “Português Brasileiro (layout ABNT2)”.

Figura 2.2.4 – Escolha do layout do teclado.

Detectar e montar CD-ROM

O instalador executa a detecção do CD-ROM (figura 2.2.5) para poder carregar na memória os componentes necessários ao seu funcionamento (figuras 2.2.6 e figura 2.2.7).

Figura 2.2.5 – Detecção do CD-ROM.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

25

GNU/Linux - módulo 1 - Introdução

Figura 2.2.6 – Lendo os componentes do instalador no CD-ROM.

Figura 2.2.7 – Carregando na memória os componentes do instalador.

Configurar Rede

A detecção do hardware de rede é feita automáticamente (figura 2.2.8), e se a máquina faz parte de uma rede, o instalador tenta realizar a configuração automática via DHCP (figura 2.2.9). Caso contrário, será exibida uma mensagem de erro (figura 2.2.10) e o menu de opções da configuração de rede. Selecione a opção “Configurar a Rede Manualmente” (figura 2.2.11).

Figura 2.2.8 – Detectando o hardware de rede.
Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp 26

GNU/Linux - módulo 1 - Introdução

Figura 2.2.9 – Configuração de rede via DHCP.

Figura 2.2.10 – Mensagem de erro exibida por não achar nenhum servidor DHCP.

Figura 2.2.11 – Menu de opções da Configuração de Rede.
Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp 27

GNU/Linux - módulo 1 - Introdução

As informações de rede como endereço IP (figura 2.2.12), máscara de rede (figura 2.2.13), gateway (figura 2.2.14), servidores de nomes, ou DNS (figura 2.2.15), nome da máquina (figura 2.2.16) e domínio da rede(figura 2.2.17), serão necessárias nesta etapa da instalação.

Figura 2.2.12 – Endereço IP.

Figura 2.2.13 – Máscara de Rede.

Figura 2.2.14 – Gateway.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

28

GNU/Linux - módulo 1 - Introdução

Figura 2.2.15 – Servidores de Nomes, ou DNS.

Figura 2.2.16 – Nome da Máquina.

Figura 2.2.17 - Domínio da rede.
Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp 29

GNU/Linux - módulo 1 - Introdução ✔

Detectar Discos e outros Hardwares

Nesta etapa é feita a detecção dos disco e outros hardwares relacionados (figura 2.2.18).

Figura 2.2.18 – Detecção de de discos e outros hardware relacionados.

Particionar Discos

Após realizar a detecção automática dos discos, o instalador inicializa o particionador (figura 2.2.19) e exibe um menu onde é listado todos discos detectados (figura 2.2.20). Selecione a opção “Editar manualmente a tabela de particões”.

Figura 2.2.19 – Iniciando o particionador.

Figura 2.2.20 – Menu do particionador.
Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp 30

GNU/Linux - módulo 1 - Introdução

Como neste custo já existem partições configuradas, formatadas e montadas, você irá inicialmente removê-las para aprender como realizar o processo de particionamento de discos. Selecione a primeira partição (swap)(figura 2.2.21), e na próxima tela (figura 2.2.22), selecione a opção “Remover a partição”.

Figura 2.2.21 – Selecione a primeira partição para remoção.

Figura 2.2.22 – Selecione a opção “Remover a partição”.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

31

GNU/Linux - módulo 1 - Introdução

O particionador irá atualizar a tabela de partições da máquina (figura 2.2.23), e depois voltará novamente ao menu onde estão listadas todas as partições configuradas no(s) respectivo(s) disco(s) (figura 2.2.24). Repita a operação anterior com a segunda partição (reiserfs), selecionando-a, e na próxima tela, escolhendo a opção “Remover a partição” (figura 2.2.25).

Figura 2.2.23 – Atualizando a tabela de partições.

Figura 2.2.24 – Menu do particionador.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

32

GNU/Linux - módulo 1 - Introdução

Figura 2.2.25 – Selecione a opção “Remover a partição”. Novamente é apresentado o menu do particionador, com a tabela de partições sem nenhuma configuração. Nesta instalação será utilizado um esquema de particionamento básico, indicado para iniciantes. Siga as orientações enumeradas para criar as partições. Cada item contém a referência das telas exibidas durante o particionamento para que o usuário possa localizar-se durante a execução dos procedimentos. 1. Selecione a área do disco que contenha espaço livre para criar as partições (figura 2.2.26):

Figura 2.2.26 – Selecionar área do disco para particionar.
Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp 33

GNU/Linux - módulo 1 - Introdução

2. Primeiramente, cria-se uma partição de SWAP (Área de troca) para o sistema. Selecione a opção “Criar uma nova partição” (figura 2.2.27):

Figura 2.2.27 – Criar uma partição de SWAP.

3. Coloque neste campo o valor “128 MB“ (Entre os valores “128” e “MB” coloque um espaço em branco) (figura 2.2.28):

Figura 2.2.28 – informando o valor do tamanho da partição de SWAP.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

34

GNU/Linux - módulo 1 - Introdução

4. Selecione a opção “Primária” (figura 2.2.29):

Figura 2.2.29 – Tipo de partição.

5. Selecione a opção “Início” (figura 2.2.30):

Figura 2.2.30 – Posicionamento da partição de SWAP no disco.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

35

GNU/Linux - módulo 1 - Introdução

6. Selecione o item “Usar como” para selecionar o tipo de sistema de arquivos para esta partição (figura 2.2.31):

Figura 2.2.31 – Informações sobre a partição.

7. Para a criação de uma partição de SWAP, seleciona-se a opção “Área de Troca” (figura 2.2.32):

Figura 2.2.32 – Selecionando o tipo de sistema de arquivos.
Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp 36

GNU/Linux - módulo 1 - Introdução

8. Nesta etapa, o instalador exibe a configuração da partição recém-criada. Selecione a opção “Finalizar a configuração da partição” para confirmar a criação da partição de SWAP (figura 2.2.33):

Figura 2.2.33 – Confirmação da criação da partição de SWAP. 9. O instalador volta a exibir o menu do particionador, com a nova partição de SWAP sendo exibida. Agora cria-se a partição principal, o qual será instalado o sistema operacional. Novamente selecione a área do disco que contenha espaço livre para criar as partições (figura 2.2.34):

Figura 2.2.34 – Selecionar espaço livre para criação a partição principal.
Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp 37

GNU/Linux - módulo 1 - Introdução

10. Selecione a opção “Criar uma nova partição” (figura 2.2.35):

Figura 2.2.35 – Criar uma nova partição.

11. Coloque neste campo o valor “5 GB“ (Entre os valores “5” e “GB” coloque um espaço em branco) (figura 2.2.36):

Figura 2.2.36 – Informando o valor do tamanho da partição principal.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

38

GNU/Linux - módulo 1 - Introdução

12. Selecione a opção “Primária” (figura 2.2.37):

Figura 2.2.37 – Tipo de partição.

13. Selecione a opção “Início” (figura 2.2.38):

Figura 2.2.38 – Posicionamento da partição principal no disco.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

39

GNU/Linux - módulo 1 - Introdução

14. Selecione o item “Usar como” para selecionar o tipo de sistema de arquivos para esta partição (figura 2.2.39):

Figura 2.2.39 - Informações sobre a partição.

15. Para a nossa partição principal, selecione o item “sistema de arquivo com journaling ReiserFS” (figura 2.2.40):

Figura 2.2.40 - Selecionando o tipo de sistema de arquivos.
Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp 40

GNU/Linux - módulo 1 - Introdução

16. Escolhido o tipo de sistemas de arquivos, selecione o item “Flag Inicializável”, (figura 2.2.41) para tornar a nossa partição inicializável (“ligado”):

Figura 2.2.41– Tornar a partição principal inicializável

17. Após estas configurações, Selecione a opção “Finalizar a configuração da partição” (figura 2.2.42):

Figura 2.2.42- Confirmação da criação da partição principal.
Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp 41

GNU/Linux - módulo 1 - Introdução

18. Será exibida a configuração da sua tabela de partições (figura 2.2.43). Selecione a opção “Finalizar o particionamento e gravar as mudanças no disco”:

Figura 2.2.43 – Finalizar o particionamento.

19. Confirme a gravação da tabela de partições, selecionando a opção “Sim” (Figura 2.2.44):

Figura 2.2.44 – Confirmar a gravação da tabela de partições.
Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp 42

GNU/Linux - módulo 1 - Introdução

20. Após a confirmação anterior, o instalador irá formatar as partições recémcriadas (figura 2.2.45):

Figura 2.2.45 – Formatando as partições.

Instalação do Sistema Básico

A instalação do sistema básico é feita logo após a formatação das partições (figura 2.2.46):

Figura 2.2.46 – Instalação do sistema básico. Terminada a instalação do sistema básico, o instalador pede a confirmação para instalar o gerenciador de inicialização GRUB (figura 2.2.47):

Figura 2.2.47 - Instalar o gerenciador de inicialização GRUB.
Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp 43

GNU/Linux - módulo 1 - Introdução

21. Executa-se a instalação do GRUB na MBR (figura 2.2.48):

Figura 2.2.48 – Executando a instalação do GRUB. Agora o instalador realiza as últimas configurações desta primeira etapa (figura 2.2.49), e exibe uma mensagem notificando a finalização da instalação (figura 2.2.50). O CD será ejetado da bandeja e o computador será reinicializado para a próxima etapa que é a configuração do sistema

Figura 2.2.49 – Finalizando a instalação.

Figura 2.2.50 – Instalação Finalizada.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

44

GNU/Linux - módulo 1 - Introdução

2.3- Configuração do Sistema
A configuração do sistema GNU/Linux é iniciada após a instalação do sistema básico (figura 2.3.2). Agora será feita as configurações mais específicas do sistema, e a instalação de pacotes de acordo com o uso da máquina. Mesmo que na mesma máquina exista outro sistema operacional instalado, o novo gerenciador de inicialização será o GRUB, e a sua interface padrão tem a configuração como a da figura 2.3.1:

Figura 2.3.1 – Tela inicial do GRUB.

Figura 2.3.2 - Tela de boas vindas do configurador Debian.
Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp 45

GNU/Linux - módulo 1 - Introdução

Configuração do Fuso

Selecione a configuração de fuso horário para o seu computador (figuras 2.3.3 e 2.3.4):

Figura 2.3.3 – Selecionando o fuso horário.

Figura 2.3.4 - Selecionando o fuso horário.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

46

GNU/Linux - módulo 1 - Introdução

Configurar usuário e senha

Nesta parte da configuração, serão configuradas as informações dos usuários que normalmente utilizam a máquina. Basicamente, têm-se dois usuário no sistema, o usuário para tarefas administrativas, o “root”, e um usuário para utilização geral, o qual daremos o nome de “curso”. Para o usuário administrativo (root), a configuração pede a sua senha (figura 2.3.5) e a confirmação para esta senha (figura 2.3.6):

Figura 2.3.5 – Senha para usuário administrativo.

Figura 2.3.6 – Confirmação para senha do usuário administrativo.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

47

GNU/Linux - módulo 1 - Introdução

Para o usuário de utilização geral (curso), a configuração pede o seu nome completo (figura 2.3.7), seu username (figura 2.3.8), sua senha (figura 2.3.9) e a confirmação para esta senha (figuras 2.3.10):

Figura 2.3.7 – Nome completo do usuário de utilização geral.

Figura 2.3.8 – Username para o usuário de utilização geral.

Figura 2.3.9 – Senha para o usuário de utilização geral.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

48

GNU/Linux - módulo 1 - Introdução

Figura 2.3.10 – Confirmação da senha para o usuário de utilização geral.

Configurar repositório de pacotes (APT)

Deve-se escolher o método que o APT (A ferramenta de gerenciamento de pacotes do Debian GNU/Linux) deverá utilizar para acessar o repositório de pacotes Debian. É possível instalar estes pacotes através de um CD-ROM, FTP, HTTP, ou diretamente do sistema de arquivos. Utilize a opção “cdrom” (figura 2.3.11) para o repositório de pacotes, o qual será examinado e preparado (figura 2.3.12) para selecionar os perfis de instalação.

Figura 2.3.11 – Selecione o repositório de pacotes do Debian GNU/Linux.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

49

GNU/Linux - módulo 1 - Introdução

Figura 2.3.12 – Examinando e preparando as informações do repositório.

Seleção dos Perfis de Instalação

Nesta etapa a seleção de perfis é requerida pela configuração do sistema. Como visto, existem perfis para os mais variados usos para serem instalados (figura 2.3.13). Selecione as opções “Ambiente Desktop” e “Servidor Web”, as quais serão suficientes para as tarefas propostas:

Figura 2.3.13 – Menu dos perfis de instalação.
Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp 50

GNU/Linux - módulo 1 - Introdução

Configurar o modo gráfico

Logo após a instalação dos pacotes dos perfis selecionados, o instalador inicia a configuração do modo gráfico. Como indicado no início do capítulo, tenha em mãos as informações de hardware relacionados ao modo gráfico (monitor, placa de vídeo, etc.) e selecione-o no menu de opções. Primeiramente, será pedido o modelo da sua placa de vídeo. No nosso caso, selecione “i810” (figura 2.3.14). A detecção automática do mouse (figura 2.3.15) e do monitor (2.3.16) serão, respectivamente, pedidos em seguida:

Figura 2.3.14 – Selecionando a placa de vídeo.

Figura 2.3.15 – Detecção do mouse.
Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp 51

GNU/Linux - módulo 1 - Introdução

Figura 2.3.16 – Detectar o monitor.

Se o seu monitor for do tipo LCD, selecione a opção abaixo (figura 2.3.17):

Figura 2.3.17 – Se o seu monitor dor do tipo LCD, selecione esta opção.

A mensagem exibida na figura 2.3.18 informa os tipo de opções que o instalador disponibiliza para a configuração do seu monitor. Na figura 2.3.19 estas opção são exibidas. A opção “Medium” será utilizada nesta instalação, porém, se você for um usuário mais avançado ou seu monitor precise de configurações mais aprofundadas, escolha a opção “Advanced”. No caso de ser um usuário muito iniciante, escolha a opção “Simple”:
Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp 52

GNU/Linux - módulo 1 - Introdução

Figura 2.3.18 – Informações iniciais para configurar o monitor.

Figura 2.3.19 – Selecione a opção “Medium”. Na figura 2.3.20, o instalador exibe o menu de opções para configurar o modo de exibição do seu monitor. Neste caso selecione a opção “800x600 @ 60Hz”, que é a resolução do monitor que está sendo utilizado. Porém, no caso de realizar a instalação do Debian GNU/Linux em outra máquina, selecione a opção que mais adequada para o seu monitor.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

53

GNU/Linux - módulo 1 - Introdução

Figura 2.3.20 – Selecionando o modo de exibição para o monitor.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

54

GNU/Linux - módulo 1 - Introdução

Configurar o servidor de mensagens

A última parte da instalação é a configuração do EXIM, o MTA (servidor de emails padrão do Debian). Se você pretende usar o sendmail ou o postfix, selecione a opção “sem configuração no momento” (figura 2.3.21) e não configure o EXIM. Selecione esta opção, pois neste momento este recurso não será utilizado.

Figura 2.3.21 – Sem configuração para o EXIM no momento. Mesmo o instalador pedindo a confirmação para configurar o servidor de mensagens (figura 2.3.22), selecione a opção “Sim”. Na próxima tela, o instalador pergunta para qual conta de usuário as mensagens serão postadas (figura 2.3.23). Como não configuramos o servidor de mensagens, selecione “Ok”, para então ser exibida a tela que finaliza a instalação do nosso sistema Debian GNU/Linux (figura 2.3.24).

Figura 2.3.22 – Confirmação para configurar o EXIM.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

55

GNU/Linux - módulo 1 - Introdução

Figura 2.3.23 – Selecione a opção “Ok”, pois o EXIM não foi configurado.

Figura 2.3.24 – Fim da instalação do Debian GNU/Linux Pronto! Agora o seu sistema Debian GNU/Linux está instalado. O servidor gráfico será inicializado e uma tela para a autenticação aparece para o uso do gerenciador de janelas. Utilize a conta de usuário recém-criada, e bom uso!

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

56

GNU/Linux - módulo 1 - Introdução

Capítulo 3

Utilizando o GNU/Linux
Neste capítulo o usuário acessa e utiliza pela primeira vez o GNU/Linux, aprende o que é um gerenciador de janelas, e utiliza os recursos mais básico do sistema.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

57

GNU/Linux - módulo 1 - Introdução

3.1- Os gerenciadores de janelas
O gerenciador de janelas é o programa que controla a aparência da aplicação. Ele atua entre o servidor X (servidor gráfico) e a aplicação (figura 3.1.1) .

Figura 3.1.1 – Ilustração do esquema de atuação dos aplicativos gráficos. No universo do software livre, existem vários tipos de gerenciadores de janelas disponíveis, que entre os mais conhecidos, podem-se citar: KDE : K Desktop Environment, ou simplesmente KDE, é um ambiente gráfico muito difundido no mundo GNU/Linux, pois apresenta um conjunto de aplicativos consistentes para usuários e programadores, além de uma aparência agradável e modo de operação bastante familiar. Além do gerenciador de janelas, fazem parte do projeto KDE inúmeros aplicativos para gerenciamento de arquivos, controle de dispositivos, acesso à compartilhamentos de rede, gerenciamento do sistema, acesso a Internet, além da suíte de escritório KOffice, o pacote KDevelop para desenvolvimento de aplicativos gráficos, o editor de páginas para a Internet Quanta, e muito mais. O KDE utiliza a biblioteca gráfica QT, mantida pelos desenvolvedores do KDE e muito utilizada para a construção de interfaces
58

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

GNU/Linux - módulo 1 - Introdução

gráficas para aplicativos. Um dos pontos contra para o KDE é o seu elevado consumo de recursos de sistema, principalmente de memória RAM, o que o torna inutilizável em máquina que não tenha pelo menos 128 MB de memória disponível.

GNOME : O GNOME, assim como o KDE, é constituído por um gerenciador de janelas, e diversos aplicativos para o usuário, como gerenciador de arquivos, navegador de Internet, aplicativos para gerenciamento e configuração do sistema, navegação pela rede, jogos, etc. Além de aplicativos para desenvolvimento de aplicações. O GNOME utiliza a biblioteca gráfica GTK+, muito utilizada por outros aplicativos, como o GIMP e o editor de páginas para a Internet Bluefish. Uma grande vantagem do GNOME sobre outros gerenciadores de janelas é o seu sistema de atualização dinâmica das configurações, que permite que qualquer configuração entre em vigor imediatamente à sua seleção, sem a necessidade de clicar em um botão "Aplicar" ou de reinicar o ambiente gráfico, como acontece na maioria dos gerenciadores de janelas, incluindo o KDE. Enlightenment : O Enlightenment é um super gerenciador de janelas altamente personalizável, bonito e com muitos efeitos visuais. O projeto Enlightenment produz, além do ambiente gráfico, diversas bibliotecas gráficas, como Imlib, FNLib e Imlib2, que são hoje utilizadas por muitos programas, inclusive outros ambientes gráficos, como o fluxbox. Blackbox : O Blackbox é um gerenciador de janelas minimalista, muito leve e pequeno. Ao contrário de outros gerenciadores de janelas mais poderosos, ele não inclui nenhum outro aplicativo, motivo pelo qual ele é tão pequeno (alguns poucos KB). Sua configuração é toda feita através da edição de arquivos de texto, o que não é nem um pouco prático, mas tem lá as suas vantagens. Graças à sua velocidade, o Blackbox é muito apreciado por usuários avançados, que não gostam de dispender processamento e memória para rodar um ambiente com o KDE, GNOME ou Enlightenment. O Blackbox, quando em conjunto com outros pequenos mini-aplicativos, torna-se um gerenciador de janelas muito bonito. Fluxbox : Baseado no Blackbox, o Fluxbox contém mais recursos que aquele, como suavizador de fontes e suporte nativo a transparências, sem deixar de ser igualmente leve e simples. O Fluxbox é muito apreciado entre seus usuários, graças à perfeita união entre beleza e leveza deste excelente gerenciador de janelas. O suporte a ícones no desktop é fornecido por programas externos. Outro recurso muito interessante é o suporte aos chamados docks, popularizados no WindowMaker. Windowmaker : Criado pelo brasileiro Alfredo Kojima, é um gerenciador de janelas que, ao contrário do KDE e GNOME, que se assemelham as interfaces do Microsoft Windows, tem uma proposta bastante diferente. O objetivo principal
59

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

GNU/Linux - módulo 1 - Introdução

que é gerenciar abertura e manipulação de janelas acontece de forma muito rápida e eficiente. O consumo de memória é bem pequeno. Ele ainda possui uma facilidade de possuir atalhos para programas, sem prejudicar o consumo de memória do computador. Existem outras dezenas de tipos de gerenciadores de janelas, como o Twm, Icewm, Xfce, AfterStep, entre outros. A escolha do seu gerenciador de janelas é pessoal, depende muito do gosto de cada pessoa e dos recursos que deseja utilizar. Como mencionado, o gerenciador de janelas padrão do Debian GNU/Linux é o GNOME (figura 3.1.2). Ele não é apenas um simples gerenciador de janelas, e sim, um desktop completo, com diversos aplicativos de diferentes tipos disponíveis para a sua utilização (figura 3.1.3). Através do gerenciador de pacotes APT e Synapitc (versão gráfica do APT), podemos instalar e atualizar facilmente os aplicativos disponíveis, aumentando o número de ferramentas para o seu desktop.

Figura 3.1.2 – Gerenciador de janelas GNOME.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

60

GNU/Linux - módulo 1 - Introdução

Figura 3.1.3 – Menu dos aplicativos disponíveis.

3.2- Terminal Virtual (console)
Terminal (ou console) é o teclado e a tela conectados em seu computador. O GNU/Linux faz uso de sua característica multi-usuária usando terminais virtuais. Um terminal virtual é uma segunda sessão de trabalho completamente independente de outras, que pode ser acessada no computador local ou remotamente, através de aplicativos de acesso remoto como o SSH, telnet, rlogin, etc. No GNU/Linux em modo texto, você pode acessar outros terminais virtuais segurando a tecla ALT e pressionando F1 a F6. Cada tecla de função corresponde a um número de terminal do 1 ao 6 (o sétimo é usado por padrão pelo modo gráfico). O GNU/Linux possui mais de 63 terminais virtuais, mas apenas 6 estão disponíveis inicialmente por motivos de economia de memória RAM. Se você estiver usando o modo gráfico, você deve segurar as teclas CTRL+ALT enquanto pressiona uma das teclas de F1 a F6.
Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp 61

GNU/Linux - módulo 1 - Introdução

Para um administrador de sistemas, esta ferramenta é fundamental, pois muitas tarefas são feitas no modo texto, alterando arquivos de configuração, executando comandos manualmente, verificando os processos que estão carregados na memória, entre outros. Para executar um terminal virtual à partir do GNOME, clique no ícone que é indicado pela figura 3.1.4.

     Ícone para
executar o terminal virtual Figura 3.1.4 – ícone do terminal virtual

3.3- Comandos básicos – nível 1
Neste item serão listados os comandos básicos para que você comece a interagir com o interpretador de comandos bash.

3.3.1- ls : lista conteúdos de diretórios.
Sintaxe:
$ ls <opções>

Opções:
• • • • • •

- l : escreve no formato de colunas simples. - i : procede a saída para o arquivo pelo seu número serial (inode). - R : lista os diretórios encontrados recursivamente. - h : mostra o tamanho dos arquivos em KB, MB, GB. - a : lista todos os arquivos inclusive os ocultos. - F : insere um caracter após arquivos executáveis ('*'), diretórios ('/'), sockets ('=') e pipe ('|'). Seu uso é útil para identificar de forma fácil tipos de arquivos nas listagens de diretórios.

Exemplo:
$ ls / bin cdrom boot dev

etc home

initrd initrd.img

lib media

mnt opt

proc root

sbin srv

sys tmp

usr var

vmlinuz

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

62

GNU/Linux - módulo 1 - Introdução

3.3.2- mkdir : cria diretórios. Sintaxe:
$ mkdir <opções> <diretório>

Opções:
• •

- p : cria toda a estrutura de diretórios passada como parâmetro. --verbose : imprime uma mensagem para cada diretório criado.

Exemplo:
$ mkdir teste

3.3.3- rmdir : remove diretórios vazios. Sintaxe:
$ rmdir <opções> <diretório>

Opções: - p : remove a estrutura de diretórios passadas como parâmetro, porém, o último diretório passado como parâmetro deve estar vazio. • -- verbose : imprime uma mensagem para cada diretório apagado.

Exemplo:
$ rmdir teste

3.3.4- rm : além de remover diretórios e estrutura de diretórios, tem como função principal remover arquivos. Sintaxe:
$ rm <opções> <diretório> <ou arquivo>

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

63

GNU/Linux - módulo 1 - Introdução

Opções: - i : pergunta antes de remover, esta é ativada por padrão. - v : mostra os arquivos/diretórios na medida que são removidos - r : usado para remover arquivos em sub-diretórios. Esta opção também pode ser usada para remover sub-diretórios. • - f : remove os arquivos sem perguntar.
• • •

Exemplo:
$ rm arquivo.txt $ rm -r teste2

3.3.5- cd : muda o diretório de trabalho atual. Caso não seja especificado nenhum diretório, muda para o diretório pessoal do usuário. Sintaxe:
$ cd <diretório>

Exemplo:
$ cd teste2

3.3.6- pwd : mostra o nome e caminho do diretório atual. Sintaxe:
$ pwd

Exemplo:
$ pwd /home/curso/teste2

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

64

GNU/Linux - módulo 1 - Introdução

3.3.7- clear : limpa o conteúdo do terminal e posiciona o cursos no início da tela. Sintaxe:
$ clear

3.3.8- man : este comando exibe as páginas de manual do comando ou programa passado como parâmetro. Elas trazem uma descrição básica desta comando ou programa e detalhes sobre o funcionamento de uma determinada opção. Uma página de manual é visualizada na forma de texto único com rolagem vertical. Também documenta parâmetros usados em alguns arquivos de configuração. Sintaxe:
$ man <comando ou programa>

Opções de navegação: • q : sai da página de manual. • f ou PageDown : rola 25 linhas abaixo • w ou PageUp : rola 25 linhas acima • k ou seta para cima : rola uma linha acima. • e ou seta para baixo : rola uma linha abaixo. • p ou g : Início da página. • h : ajuda sobre as opções da página de manual. • s : salva a página de manual em formato texto no arquivo especificado. Exemplo:
$ man bash

3.3.9- apropos : procura por comandos através da descrição. É útil quando precisamos fazer alguma coisa mas não sabemos qual comando usar. Ele faz sua pesquisa nas páginas de manual existentes no sistema e lista os comandos/programas que atendem a consulta. Sintaxe:
$ apropos <comando ou programa>

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

65

GNU/Linux - módulo 1 - Introdução

Exemplo:
$ apropos bash bash (1) - GNU Bourne-Again Shell bash-builtins (7) - bash built-in commands, see bash(1) bashbug (1) - report a bug in bash builtins (7) - bash built-in commands, see bash(1) checkbashisms (1) - check for bashisms in /bin/sh scripts gst-complete-0.8 (1) - do bash completion for gst-launch command-lines ispellconfig (8) - Bash script to select a new ispell default dictionary. rbash (1) - restricted bash, see bash(1) update-ispell-dictionary (8) - Bash script to select a new ispell default dictionary.

Além dos comandos man e apropos, você pode conseguir mais informações sobre os comandos ou programas através dos comandos info e help. Outra maneira de conseguir informações mais rápidas sobre os parâmetros que o comando suporta é utilizando o parâmetro –-help. Exemplo:
$ mkdir --help Usage: mkdir [OPTION] DIRECTORY... Create the DIRECTORY(ies), if they do not already exist. Argumentos obrigatórios para opções longas também o são para opções curtas -m, --mode=MODE set permission mode (as in chmod), not rwxrwxrwx - umask -p, --parents no error if existing, make parent directories as needed -v, --verbose print a message for each created directory --help display this help and exit --version output version information and exit Comunicar `bugs' para <bug-coreutils@gnu.org>.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

66

GNU/Linux - módulo 1 - Introdução

Capítulo 4

Sistema de Arquivos
Neste capítulo o usuário compreenderá as noções teóricas de como funcionam as partições e os sistema de arquivos suportados pelo GNU/Linux.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

67

GNU/Linux - módulo 1 - Introdução

4.1- Partições
São divisões existentes no disco rígido que marcam onde começa e onde termina um sistema de arquivos. Por causa destas divisões, nós podemos usar mais de um sistema operacional no mesmo computador (como o GNU/Linux, Microsoft Windows e DOS), ou dividir o disco rígido em uma ou mais partes para ser usado por um único sistema operacional. Uma partição de disco não interfere em outras partições existentes, por estarem em áreas distintas no disco rígido. Para particionar (dividir) o disco rígido em uma ou mais partes é necessário o uso de um programa de particionamento. Os programas mais conhecidos para particionamento de discos no GNU/Linux são fdisk, cfdisk, Parted e o Disk Druid. Informações importantes para a criação e utilização das partições: Para gravar os dados, o disco rígido precisa ser particionado (usando o cfdisk ou outro particionador), deve-se escolher o tipo da partição, e depois tal partição deve ser formatada com o um tipo de sistema de arquivos. Após criada e formatada, a partição será identificada como um dispositivo no diretório /dev e deverá ser montada para permitir seu uso no sistema; ✔ Quando se apaga uma partição, você estará apagando TODOS os arquivos existentes nela; ✔ Em sistemas novos, é comum encontrar o Microsoft Windows instalado em uma partição que consome TODO o espaço do disco rígido. Uma solução para instalar o GNU/Linux é apagar esta partição e criar três com tamanhos menores (uma para o Microsft Windows, uma para o GNU/Linux e outra para a Memória Virtual do Linux (SWAP);

4.2- Sistema de Arquivos
Um sistema de arquivos é o método e a estrutura que um sistema operacional utiliza para administrar a forma que os arquivos estão organizados em um disco ou partição. É criado durante a formatação da partição de disco. Após a formatação, toda a estrutura para leitura e gravação de arquivos e diretórios pelo sistema operacional estará pronta para ser usada. Normalmente este passo é feito durante a instalação de sua distribuição GNU/Linux. Cada sistema de arquivos tem uma característica em particular mas seu propósito é o mesmo: Oferecer ao sistema operacional a estrutura necessária para ler/gravar os arquivos e diretórios. Entre os sistemas de arquivos existentes pode-se citar:

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

68

GNU/Linux - módulo 1 - Introdução

4.2.1– EXT2
Logo que foi inventado, o GNU/Linux utilizava o sistema de arquivos Minix (e conseqüentemente uma partição Minix) para o armazenamento de arquivos. Com a evolução do desenvolvimento, foi criado o padrão EXT (Extended Filesystem) e logo evoluiu para o EXT2 (Second Extended Filesystem) que, apesar de obsoleto, ainda é o usado hoje em dia. Ele é rápido, não se fragmenta tão facilmente pois permite a localização do melhor lugar onde o arquivo se encaixa no disco, etc. Isto é útil para grandes ambientes multiusuário onde várias pessoas gravam/apagam arquivos o tempo todo.

4.2.2– Journaling
O sistema de journaling grava qualquer operação que será feita no disco em uma área especial chamada journal, assim se acontecer algum problema durante a operação de disco, ele pode voltar ao estado anterior do arquivo, ou finalizar a operação. Desta forma, o journal acrescenta ao sistema de arquivos o suporte a alta disponibilidade e maior tolerância a falhas. Após uma falha de energia, por exemplo, o journal é analisado durante a montagem do sistema de arquivos e todas as operações que estavam sendo feitas no disco são verificadas. Dependendo do estado da operação, elas podem ser desfeitas ou finalizadas. O retorno do servidor é praticamente imediato (sem precisar a enorme espera da execução do fsck em partições maiores que 10Gb), garantindo o rápido retorno dos serviços da máquina. Outra situação que pode ser evitada é com inconsistências no sistema de arquivos do servidor após a situação acima, fazendo o servidor ficar em estado single user e esperando pela intervenção do administrador. Alguns tipos de sistema de arquivos utilizam este recurso atualmente, como por exemplo, o EXT3 e o ReiserFS.

4.2.3– EXT3
O sistema de arquivos EXT3 faz parte da nova geração extended file system do GNU/Linux, sendo que seu maior benefício é o suporte a journaling. O uso deste sistema de arquivos comparado ao EXT2, na maioria dos casos, melhora o desempenho do sistema de arquivos através da gravação seqüencial dos dados na área de metadados e acesso mhash a sua árvore de diretórios. A estrutura da partição EXT3 é semelhante a EXT2, o journaling é feito em um arquivo chamado .journal que fica oculto pelo código EXT3 na partição (desta forma ele não poderá ser apagado, comprometendo o funcionamento do sistema). A estrutura idêntica da partição EXT3 com a EXT2 torna mais fácil a manutenção do sistema, já que todas as ferramentas para recuperação EXT2 funcionarão sem problemas.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

69

GNU/Linux - módulo 1 - Introdução

4.2.4– ReiserFS
O ReiserFS é um sistema desenvolvido especialmente para o GNU/Linux, muito confiável e surpreendentemente rápido, e em muitos casos, mais rápido até mesmo que sistemas sem suporte a journaling. O ReiserFS, por não utilizar blocos de tamanho fixo, mas ajustar seu tamanho de acordo com o arquivo, evita os problemas de desperdício de espaço comuns em outros sistemas de arquivos. Possui suporte a arquivos maiores que 2 GB e o acesso a árvore de diretórios é muito mais rápido. Utiliza uma eficiente estrutura de dados chamada balanced tree (árvore equilibrada), que trata toda a partição como se fosse uma única tabela de banco de dados contendo diretórios, arquivos e arquivos de meta-data, o que aumenta muito o desempenho de aplicativos que trabalham com arquivos pequenos, porque estes são lidos de uma só vez, em apenas um ciclo de I/O do HD. Sua versão 3 não trabalha perfeitamente com o sistema de arquivos de rede NFS (Network File System). Existem alguns patches para resolver o problema, mas eles não o resolvem completamente. O criador do ReiserFS é Hans Reiser. Atualmente o projeto é patrocinado pela SuSE e mantido pela empresa NameSys. Aguarda-se o lançamento oficial da versão 4 do ReiserFS, o Reiser4, que foi totalmente reescrito e possui um desempenho superior à da versão 3.

4.2.5– JFS
Criado pela IBM para uso em servidores corporativos, teve seu código liberado. O sistema de arquivos JFS também usa a estrutura I-node para armazenar a localização dos blocos de cada arquivo nas estruturas físicas do disco. A versão JFS2 armazena esses Inodes em uma árvore binária para acelerar o acesso a essas informações. Esses blocos podem variar de 512 a 4096 bytes, e a alocação dos I-nodes é feita conforme vai sendo necessário.

4.2.6– XFS
Desenvolvido originalmente pela Silicon Graphics e posteriormente disponibilizado o código fonte, o XFS possui vários patches e alguns bugs, mas é um sistema de arquivos muito rápido na gravação e possui um desfragmentador para arquivos.

4.2.7– SWAP (Memórial Virtual)
Este tipo de partição é usada para oferecer o suporte a memória virtual ao GNU/Linux em adição a memória RAM instalada no sistema. Somente os dados na memória RAM são processados pelo processador, por ser mais rápida. Desta forma, quando você está executando um programa e a memória RAM começa a encher, o GNU/Linux move automaticamente os dados que não estão sendo usados para a partição SWAP, e libera a memória RAM para continuar carregando os dados necessários pelo programa que está sendo carregado. Quando os dados movidos para a partição SWAP são solicitados, o GNU/Linux move os dados da partição SWAP para a
Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp 70

GNU/Linux - módulo 1 - Introdução

memória. Por este motivo a partição SWAP também é chamada de área de troca ou memória virtual. A velocidade em que os dados são movidos da memória RAM para a partição é muito alta.

4.2.8– Qual Sistema de Arquivos devo Utilizar?
Falar qual sistema de arquivos você deve usar é uma missão quase impossível, é como falar de distribuições GNU/Linux: alguém que adora o Slackware com certeza só vai recomendar o Slackware, e alguém que adora o Debian com certeza só vai recomendar o Debian, e assim por diante. Em se tratando de sistemas de arquivos, a recomendação é que você escolha, entre os que possuem os recursos que você precisa, aquele que apresentar o melhor desempenho. Nesse caso, a menos que você vá utilizar NFS, o sistema de arquivos mais indicado é o ReiserFS, que possui comprovadamente um desempenho muito superior ao de outros sistemas de arquivos. Se for utilizar NFS, uma vez que existe o problema de compatibilidade do ReiserFS, pode-se utilizar o XFS, ou o EXT3.

4.3- Identificação de Discos e Partições
No GNU/Linux, os dispositivos existentes em seu computador (como discos rígidos, disquetes, tela, portas de impressora, modem, etc) são identificados por um arquivo no diretório /dev. A identificação de discos rígidos no GNU/Linux é feita da seguinte forma:

/dev/hda1 | ||| | |||_ Número que identifica o número da partição no disco rígido. | || | ||_ Letra que identifica o disco rígido (a=primeiro, b=segundo, etc...). | | | |_ Sigla que identifica o tipo do disco rígido (hd=ide, sd=SCSI, xd=XT). | |_ Diretório onde são armazenados os dispositivos existentes no sistema.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

71

GNU/Linux - módulo 1 - Introdução

Abaixo algumas identificações de discos e partições em sistemas Linux:
✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔

/dev/fd0 - Primeira unidade de disquetes. /dev/fd1 - Segunda unidade de disquetes. /dev/hda - Primeiro HD na primeira controladora IDE do micro (primary master). /dev/hda1 - Primeira partição do primeiro HD IDE. /dev/hdb - Segundo HD na primeira controladora IDE do micro (primary slave). /dev/hdb1 - Primeira partição do segundo HD IDE. /dev/sda - Primeiro HD na primeira controladora SCSI. /dev/sda1 - Primeira partição do primeiro HD SCSI. /dev/sdb - Segundo HD na primeira controladora SCSI. /dev/sdb1 - Primeira partição do segundo HD SCSI. /dev/sr0 - Primeiro CD-ROM SCSI. /dev/sr1 - Segundo CD-ROM SCSI. /dev/xda - Primeiro HD XT. /dev/xdb - Segundo HD XT.

As letras de identificação de discos rígidos podem ir além de hdb, em algumas máquinas, por exemplo, a unidade de CD-ROM podem estar localizada em /dev/hdg (Primeiro disco - quarta controladora IDE). É importante entender como os discos e partições são identificados no sistema, pois será necessário usar os parâmetros corretos para montá-los.

4.4- Pontos de montagem
Antes de um sistema de arquivos poder ser utilizado, ele necessita ser montado. O sistema operacional executa diversas verificações para estar seguro de que tudo está funcionando bem. Uma vez que todos os arquivos no GNU/Linux estão em uma única árvore de diretórios, a operação de montagem fará com que o novo sistema de arquivos pareça um subdiretório existente em algum sistema de arquivos já montado. Como será visto em outro curso, o comando para montagem de um sistema de arquivos possui dois argumentos. O primeiro é o arquivo de dispositivo correspondente ao disco ou partição que contenha o sistema de arquivos. O segundo é o diretório sob o qual ele será montado. Por exemplo, após a execução do comando, dizemos então que /dev/hda2 está montado em /mnt/backup. Para utilizar estes sistemas de arquivos, pode-se acessar estes diretórios exatamente da mesma forma que qualquer outro, como veremos mais adiante. É importante ressaltar a diferença entre o dispositivo /dev/hda e o o diretório montado /mnt/backup. Enquanto o primeiro dá acesso aos dados brutos do disco, ilegíveis pelos usuários e apenas pelo kernel, o segundo permite o acesso aos dados legíveis pelos usuários, como arquivos e diretórios dos mais diversos fins. O diretório montado é chamado ponto de montagem.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

72

GNU/Linux - módulo 1 - Introdução

Capítulo 5

Arquivos e Diretórios
Neste capítulo o usuário aprenderá como os arquivos são tratados pelo GNU/Linux, seus tipos e a estrutura de diretórios padrão do sistema.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

73

GNU/Linux - módulo 1 - Introdução

5.1- Arquivos
Nos sistemas *NIX, tudo o que pode ser manipulado pelo sistema operacional é representado sob a forma de arquivo, incluindo aí diretórios, dispositivos e processos. O arquivo é a estrutura mais básica e mais importante em um sistema GNU/Linux. O GNU/Linux segue o padrão POSIX, o mesmo utilizado por outros sistemas operacionais derivados do UNIX. Dessa forma, conhecendo o GNU/Linux você não terá dificuldades em operar outros sistemas como HPUX, FreeBSD, Solaris, etc., que assim como o GNU/Linux são baseados no UNIX. Também devido ao grande número de distribuições GNU/Linux que existem, foram determinados padrões sobre a sua estrutura e a forma dele manipular os arquivos. Esses padrões constituem a Linux Standard Base, ou simplesmente LSB. A LSB contém todas as especificações que um sistema GNU/Linux deve adotar, para manter um nível de compatibilidade entre diferentes distribuições. Costuma-se definir arquivo como o lugar onde gravamos nossos dados. Em outros sistemas operacionais é feita uma distinção entre arquivos, diretórios, dispositivos e outros componentes do sistema. No GNU/Linux, entretanto, tudo aquilo que pode ser manipulado pelo sistema é tratado como arquivo. Mas, se tudo é arquivo, como o sistema operacional faz a distinção entre arquivo regular, diretório, dispositivo, processo, etc? Muito simples: todo arquivo tem o que é chamado cabeçalho, que contém informações como: tipo, tamanho, data de acesso, modificação, etc. Através desse cabeçalho o GNU/Linux sabe então quando se trata de arquivo regular, diretório, dispositivo, e assim por diante.

5.2- Tipos de Arquivos
Os tipos de arquivos existentes num sistema GNU/Linux são os seguintes: Arquivo regular: Tipo comum que contém dados somente. Os arquivos regulares podem ser dos mais variados tipos, guardando os mais diferentes tipos de informações. Existem arquivos de áudio, vídeo, imagem, texto, etc. Os arquivos se dividem em 2 (duas) categorias principais:

Binários: Arquivos binários são compostos por bits 1 e 0 e só podem ser interpretados pelo sistema operacional, sendo incompreensíveis por nós humanos. Se um arquivo binário for aberto por um editor de textos, serão exibidos vários símbolos estranhos. Arquivos de música, vídeos, imagens e bibliotecas são exemplos de arquivos binários;

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

74

GNU/Linux - módulo 1 - Introdução ✔

Texto: Arquivos do tipo texto são compostos por informações em forma de texto, que podem ser entendidas pelo usuário comum. Arquivos desse tipo não necessariamente contém texto propriamente dito. Quando se diz que um arquivo é do tipo texto, estamos querendo dizer que se o abrirmos num editor de texto, serão exibidos informações legíveis.

Diretórios: Os diretórios são utilizados para separar um grupos de arquivos. Um diretório pode conter arquivos e outros diretórios, que serão chamados subdiretórios; Dispositivos: Todo componente de hardware instalável é chamado dispositivo. Placas de vídeo, som, rede, drives de CD-ROM, tudo o que se liga na interface USB, memória RAM, são dispositivos. Os dispositivos podem ser:

De Bloco: Dispositivos de bloco utilizam buffer para leitura/gravação. Geralmente são unidades de disco, como HD's, CD's, etc; De Caracter: Esses dispositivos não utilizam buffer para leitura/gravação. A maioria dos dispositivos PCI e outros dispositivos como impressoras, mouse, etc. são do tipo caracter;

✔ ✔ ✔

Pipes: Utilizados pelos processos do sistema para comunicarem-se entre si; Sockets : Utilizados nos processos de comunicação em rede; Links: São atalhos. Servem para fazer referância a outro arquivo localizado em outro local. Podem ser de dois tipos:

Simbólicos: Fazem referência ao arquivo através de seu endereço lógico no disco ou memória. São os links mais comuns; Absolutos: Fazem referência ao arquivo através do seu endereço físico no disco rígido.

Arquivos podem conter diferentes tipos de informações. Cada tipo de informação requer um método específico de trabalho. Assim, um arquivo de imagem não pode ser lido por um programa de reprodução de áudio, porque os dados de um arquivo de imagem são organizados de forma totalmente diferente da de um arquivo de áudio, e o programa em questão só é capaz de lidar com arquivos de áudio. Tendo isso em vista, é necessário que o sistema operacional e os demais programas possam diferenciar os diversos tipos de arquivos disponíveis, para evitar que um programa tente manipular um tipo de arquivo que não suporta. O GNU/Linux faz essa diferenciação através da leitura do cabeçalho do arquivo. Assim, a extensão do arquivo geralmente não importa para o sistema operacional, mas é usada tão somente para fácil identificação do usuário, motivo pelo qual é muito comum encontrarmos arquivos sem extensão no GNU/Linux.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

75

GNU/Linux - módulo 1 - Introdução

5.3- Nomes de Arquivos
Os nomes de arquivos no GNU/Linux podem ter até 255 caracteres, podendo utilizar espaços e acentos. Há exceção somente quanto ao uso dos caracteres especiais '/', '\', '|', ' " ', '*', '?', '<', '>', '!', '(', ')', '`'. Um ponto muito importante que deve ser frisado é que o GNU/Linux é case sensitive, ou seja, diferencia letras maiúsculas de minúsculas. Sendo assim, os arquivos file.iso e File.iso são diferentes para o GNU/Linux. Então, quando referir-se a um arquivo, tenha a certeza de escrever com a capitulação correta. Os arquivos também podem ser ocultos, que contém um ponto '.' antes do seu nome, e normalmente aparecem no diretório pessoal de cada usuário, como por exemplo o arquivo '.bash_profile' .

5.4- Diretórios
Os diretórios, como você deve saber, contém arquivos ou outros diretórios. Todo sistema operacional possui o que é chamado árvore de diretórios, que é uma estrutura básica de diretórios principais com seus respectivos subdiretórios. No GNU/Linux a árvore de diretórios é particularmente muito bem organizada, e os arquivos são divididos em categorias. Assim, arquivos executáveis (programas) são agrupados num determinado diretório, enquanto bibliotecas são arquivados em outro, e arquivos temporários em outro, e assim por diante. Isso garante uma boa organização do sistema e traz também uma grande praticidade, como vocês poderão ver mais adiante.

5.5– Estrutura de Diretórios
Os sistemas GNU/Linux possuem um padrão rígido e específico a respeito da organização hierárquica dos diretórios, definido pela Filesystem Hierarquy Standard, ou simplesmente FHS, constante da LSB, que diferem totalmente da estrutura de diretórios do Microsoft Windows. Basicamente, no Microsoft Windows temos os arquivos do sistema concentrados nas pastas C:\Windows e C:\Arquivos de programas e você pode criar e organizar suas pastas da forma que quiser. No GNU/Linux é basicamente o contrário. O diretório raiz está tomado pelas pastas do sistema e espera-se que você armazene seus arquivos pessoais dentro da sua pasta no diretório /home. Nada impede que você crie mais pastas no diretório raiz para armazenar seus arquivos. Apesar de ser recomendável
Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp 76

GNU/Linux - módulo 1 - Introdução

em termos de organização e segurança, você não é obrigado a concentrar seus arquivos dentro do seu diretório de usuário. Nada impede que você autentique-se como root, crie uma pasta /arquivos, abra o menu de permissões para que seu usuário geral tenha permissão para acessá-la e a utilize para guardar seus arquivos, por exemplo. Mas, as diferenças não param por aí. Para onde vão os programas que são instalados se não existe uma pasta central como a C:\Arquivos de programas? E para onde vão os arquivos de configuração se o GNU/Linux não possui nada semelhante ao registro do Microsoft Windows? Veremos isso neste capítulo, mas a primeira coisa com que você precisa se habituar é que no GNU/Linux os discos e partições não aparecem necessariamente como unidades diferentes, como o C:\, D:\, e E:\  no Microsoft Windows. Tudo faz parte de um único diretório, chamado diretório raiz, ou '/'. Dentro deste diretório temos não apenas todas as partições de disco, mas também o CD-ROM, drive de disquete e outros dispositivos. Dentro da estrutura do sistema de arquivos, cada um dos diretórios possui uma função específica, como vemos na lista abaixo.

/-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|--

bin boot dev etc home lib media mnt opt proc root sbin srv sys tmp usr var

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

77

GNU/Linux - módulo 1 - Introdução ✔

/bin : Contém arquivos executáveis (binários) de comandos essenciais pertencentes
ao sistema e que são usados com frequência pelos usuários e pelo administrador do sistema, como por exemplo: su, tar, pwd, rm, cat, cp, entre outros.

/boot : Este diretórios contém tudo que é necessário para carregar o sistema, exceto

os arquivos de configuração. Contém arquivos estáticos relacionados à inicialização do sistema, como o Kernel, e o boot-loader GRUB ou LILO.

/dev : Contém arquivos de dispositivos de entrada e saída (I/O) como por exemplo,
o CD-ROM (/dev/cdrom), o disquete (/dev/fd0), e o HD (/dev/hda). Todo o mapeamento para o hardware do sistema será encontrado neste diretório.

/etc : Contém os arquivos de configuração do sistema, substituindo de certa forma o

registro do Microsoft Windows. A vantagem é que enquanto o registro é uma espécie de caixa preta, os scripts do diretório /etc são desenvolvidos justamente para facilitar a edição manual. É verdade que na maioria dos casos isto não é necessário, mas a possibilidade continua aí. Os arquivos recebem o nome dos programas seguidos geralmente da extensão .conf. Normalmente não contém binários.
✔ ✔

/etc/network : Contém os arquivos de configuração de rede. /etc/skel : Contém os arquivos que serão gravados no diretório pessoal
de um novo usuário.

✔ ✔

/etc/X11 : Contém os arquivos de configuração do servidor gráfico.

/home : Este diretório é nitidamente um sistema de arquivos específico dos usuários
locais, sendo a localização sugerida para os diretórios locais dos usuários. Sua estrutura pode diferir de máquina para máquina. Em sistemas pequenos, cada diretório de usuário é um dos subdiretórios debaixo do /home, como por exemplo: /home/curso, /home/curso2, etc. Em sistemas maiores, (principalmente quando os diretórios do /home são compartilhados entre várias máquina via rede) é útil subdividir os diretórios locais. A subdivisão pode ser implementada utilizando subdiretórios tais como /home/apoio, /home/desenvolvimento, etc.

/lib : Este diretório contém aquelas bibliotecas compartilhadas que são necessárias
para inicializar o sistema e executar comandos no sistema de arquivos raiz, mais especificamente os comandos contidos em /bin e /sbin. Pode conter também módulos do kernel, localizados em /lib/modules.

/lib<nome> : Em sistemas que suportam mais de um formato de binários, e

portanto, necessitem de bibliotecas separadas, podem existir uma ou mais variantes do diretório /lib. Isso é comumente utilizado para fornecer suporte a 64 bits ou 32 bits em sistemas que suportam múltiplos formatos de binários, mas requerem bibliotecas com o mesmo nome. Neste caso, /lib32 e /lib64 seriam os diretórios de bibliotecas, e /lib seria um link para um deles.
Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp 78

GNU/Linux - módulo 1 - Introdução ✔

/media : Este diretório contém os subdiretórios que são utilizados como pontos de

montagem para mídias removíveis, como por exemplo disquetes, drives CD-ROM, ZIP drives, gravadores de CD/DVD, dispositivos USB, etc.

/mnt : Este diretório contém os subdiretórios que são utilizados como pontos de

montagem para sistemas de arquivos temporários, que podem ser partições de outros sistemas operacionais da máquina, como por exemplo, um sistemas de arquivos FAT32 ou NTFS do Microsoft Windows.

/opt : Este diretório é reservado para a instalação de aplicativos adicionais. Nele

podem existir subdiretórios que abrigam os arquivos estáticos destas aplicações, tendo cada subdiretório um nome que descreva o pacote de software contido nele. Podem existir os subdiretórios /opt/bin, /opt/doc, /opt/include, /opt/info, /opt/lib e /opt/man, os quais são reservados para uso do administrador do sistema local.

/proc : Este diretório é um sistema de arquivos virtual utilizado para manipular
informações de processos do sistema. É recomendada sua utilização para o armazenamento e obtenção de informações de processos, assim como outras informações do Kernel ou da memória.

/root : Este é um diretório opcional no GNU/Linux. O diretório local da conta do

usuário root pode ser determinado por preferências, porém /root é a sua localização padrão.

/sbin : Este diretório contém comandos essenciais para inicializar, restaurar,

recuperar e reparar o sistema, complementando os comandos encontrados em /bin. Comandos como getty, reboot, shutdown, ifconfig e fdisk são encontrados neste diretório.

/srv : Este diretório contém os arquivos de aplicações como Apache, FTP e CVS. Ainda
pouco usado por ter sido implementado nas versões mais recentes do FHS.

/tmp : Este diretório é utilizado para arquivos temporários gerados por programas,

podendo estar no disco rígido ou na memória RAM. Os programas não devem assumir que quaisquer arquivos ou diretórios em /tmp sejam preservados entre execuções dos mesmos. Recomenda-se que o conteúdo de /tmp seja apagado sempre que o sistema for inicializado (padrão).

/usr : O diretório /usr é a segunda maior seção do sistema de arquivos. /usr é
compartilhável e somente de leitura. Isto significa que o /usr pode ser compartilhado entre várias máquinas que utiliza GNU/Linux. Suas subdivisões consistem na seguinte estrutura:

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

79

GNU/Linux - módulo 1 - Introdução ✔

/usr/bin : Contém a maioria dos comandos dos usuários. Este é o

diretório principal de comandos executáveis no sistema. Executáveis de programas como python, perl, clear e gcc encontran-se neste diretório.

/usr/include : Contém todos os arquivos de cabeçalhos (headers) de
uso geral do sistema para programação em linguagem C/C++.

/usr/lib : Contém arquivos-objeto, bibliotecas de programas internos

que não são indicados para serem executados diretamente por usuários ou shell scripts. Podem existir subdiretórios em /usr/lib, os quais são utilizados por aplicações, de forma que todos os dados dependentes da arquitetura usados exclusivamente pela aplicação, devem estar dentro destes subdiretórios.

/usr/local : Este subdiretório existe para o uso do administrador de

sistemas, quando instala softwares localmente. Necessita ficar a salvo de ser sobrescrito quando o software do sistema é atualizado. Pode ser usado por programas e dados que são compartilháveis entre um grupo de máquinas. Também possui subdiretórios importantes ao sistema:
✔ ✔ ✔ ✔ ✔ ✔ ✔

/usr/local/bin : Binários (executáveis) locais. /usr/local/games: Executáveis de jogos. /usr/local/include : Arquivos de cabeçalho (header) C. /usr/local/lib : Bibliotecas locais. /usr/local/man : páginas de manual online locais. /usr/local/sbin : Binários (executáveis) de sistema locais. /usr/local/share : Hierarquia local independente da
arquitetura.

✔ ✔

/usr/local/src : código-fonte local.

/usr/sbin : Contém alguns binários (executáveis) não essenciais usados
exclusivamente pelo administrador do sistema.

/usr/share : Contém arquivos de dados somente leitura que

independem da arquitetura. Este diretório é indicado para ser compartilhável entre todas as plataformas de arquitetura de um dado sistema operacional. Ele também contém subdiretórios importantes ao sistema, e os principais são:

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

80

GNU/Linux - módulo 1 - Introdução ✔ ✔

/usr/share/man : Páginas de manual online. /usr/share/misc : Miscelânea de dados independentes da
arquitetura.

✔ ✔ ✔

/usr/share/dict : Lista de palavras (opcional). /usr/share/doc : Arquivos de documentação (opcional). /usr/share/games : Arquivos de dados estáticos para
/usr/games (opcional).

/usr/share/info : Diretório primário do sistema GNU Info
(opcional).

✔ ✔

/usr/share/locale : Informações de Locale (opcional). /usr/share/nls : Catálogo de mensagens para NLS
(suporte à língua nativa) (opcional).

✔ ✔

/usr/share/sgml : Dados de SGML e XML (opcional). /usr/share/terminfo : Diretórios para o banco de dados
de terminfo (opcional)

/usr/share/zoneinfo : Informação e configuração para
zoneinfo (opcional).

/usr/lib<nome> : Tem o mesmo papel de /usr/lib para um formato
de binário (executável) alternativo.

/usr/src : Contém o código-fonte do kernel do GNU/Linux. Qualquer

outro código-fonte não local também deve localizar-se neste diretório.

/var: Este diretório contém arquivos de dados variáveis. Inclui arquivos e diretórios

em fila de execução, dados de ordem administrativa e de login, além de arquivos temporários e transitórios. Algumas partes de /var não são compartilháveis entre diferentes sistemas. Por exemplo, /var/log, /var/lock e /var/run. outras partes podem ser compartilhadas, notadamente em /var/mail, /var/cache/man, /var/cache/fonts e /var/spool/news. Ele também contém subdiretórios importantes ao sistema, e os principais são:

/var/account : Este diretório mantém o log dos processos ativos e os
dados compostos de uso dos processos (opcional).
81

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

GNU/Linux - módulo 1 - Introdução ✔

/var/cache : Este diretórios é indicado para armazenar dados de
aplicações em cache. Pode conter os seguintes subdiretórios:
✔ ✔

/var/cache/fonts : Fontes geradas localmente (opcional). /var/cache/man : Páginas de manual formatadas
localmente (opcional).

/var/cache/<pacote> : dados de cache de um pacote
específico.

/var/crash : Este diretório contém depósitos de sistemas quebrados
(crashed).

/var/games : Este diretório contém quaisquer dados variáveis
relacionados a jogos que estão em /usr (opcional).

/var/lib : Contém informações sobre o estado das aplicações.

Informação sobre o estado são dados que o programa modifica enquanto está rodando, e que pertencem a uma máquina específica. Os seguintes diretórios podem estar contidos nele:

/var/lib/misc : Dados de estado de aplicações
(miscelânea).

/var/lib/hwclock : Contém o arquivo adjtime, que possui
as informações de data e hora do sistema (opcional). Na distribuição Debian este arquivo fica no diretório /etc.

/var/lib/<editor> : Arquivos de backup e estado de

editores de texto. Por exemplo, o Emacs guarda este tipo de informação em /var/lib/emacs/lock.

/var/lib/<pacote> : Dados de estado para pacotes e
subsistemas (opcional).

/var/lib/xdm : Dados variáveis do Xdm (X display

manager) (opcional). Como o Debian utiliza o GDM (GNOME Display Manager) como padrão, este diretório é trocado por /var/lib/gdm.
✔ ✔

/var/lock : Contém em sua estrutura os arquivos de bloqueio. /var/log : Contém uma miscelânea de arquivos de agenda (logs). A
maioria dos logs de sistema e de aplicações são escritos neste diretório ou em seus subdiretórios.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

82

GNU/Linux - módulo 1 - Introdução ✔

usuário.
✔ ✔ ✔

/var/log/lastlog : Registro do último acesso de cada

/var/log/messages : Mensagens do sistema syslogd. /var/log/wtmp : Registro dos os acessos dos usuários.

/var/mail : Contém as caixas postais de e-mails dos usuários, que são
arquivos no formato mailbox do UNIX, com o nome do usuário.

/var/opt : Contém dados variáveis para os aplicativos instalados em
/opt. Cada aplicativo instalado em /opt que necessite, deve criar um subdiretório em /var/opt, no qual ficarão seus dados variáveis.

/var/run : Contém arquivos variáveis em tempo de execução, com
informações de sistema, descrevendo-o desde que foi inicializado. Geralmente os arquivos neste subdiretório devem ser deletados (removidos ou truncados) ao começar o processo de inicialização.

/var/spool : Subdiretório de fila de trabalhos para processamento

posterior. /var/spool é tradicionalmente utilizado para a informação local de máquina que é enviada para processamento posterior. No geral, estes dados são apagados após terem sido processados. Ele pode conter o seguintes subdiretórios:

/var/spool/lpd : Diretório de dados para impressora
(opcional).

✔ ✔

/var/spool/mqueue : Fila de saída de e-mail (opcional). /var/spool/news : Diretório de dados de notícias
(opcional).

✔ ✔ ✔

/var/spool/rwho : Arquivos rwhod (opcional). /var/spool/uucp : Diretório de dados do UUCP (opcional).

/var/tmp : Contém arquivos temporários que são preservados entre
reinicializações do sistema. O subdiretório /var/tmp é disponibilizado para programas que requerem arquivos ou diretórios temporários que devem ser preservados entre reinicializações do sistema. Portanto, os dados armazenados em /var/tmp são mais persistentes que aqueles armazenados em /tmp.

/var/yp : Contém dados variáveis para o Sistema de Informações de
Rede (NIS), também conhecido como Sun Yellow Pages (YP).
83

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

GNU/Linux - módulo 1 - Introdução

5.6– Caminhos
Como em todo sistema de arquivos de qualquer sistema operacional, a referência a um arquivo/diretório deve ser feita através do seu caminho. Um caminho é formado da seguinte forma: [diretório raiz] [diretório 1] [diretório 2]...[diretório n] [arquivo]. Cada um desses itens são separados por um símbolo, que varia de acordo com o sistema operacional. No GNU/Linux, o diretório raiz chama-se / (barra), e o símbolo utilizado para separar os itens é a / também. Um exemplo de caminho seria: /home/curso/doc/linux/gnu.sxw Um caminho informa onde podemos encontrar um arquivo ou diretório. No caso acima, podemos interpretar esse comando da seguinte forma: o arquivo gnu.sxw está dentro do diretório linux, que está dentro do diretório doc, que está dentro do diretório curso, que está dentro do diretório home, que está no diretório raiz / . Outra forma de interpretação seria: para acessar o arquivo gnu.sxw, a partir do diretório raiz / , acesse o diretório home, depois o diretório curso, depois o diretório doc, e depois o diretório linux. O arquivo estará lá.

5.7– Notações de diretórios do sistema
Alguns diretórios possuem notações especiais, algo que poderíamos chamar de "atalho" para o acesso. Veja abaixo a lista dessas notações:

: Ao referir-se ao diretório ~ (til), o sistema entende como o diretório pessoal do usuário, ou seja, /home/[usuário], onde [usuário] é o nome de login do usuário atual. Dessa forma, se você estiver logado como curso, o diretório ~/img será interpretado como /home/curso/img.

~

: O kernel Linux armazena um histórico dos diretórios que acessamos. O - (hífen) refere-se ao último diretório acessado.

.

: O símbolo . (ponto) refere-se ao diretório atual, ou seja, aquele em que estamos trabalhando; : O .. (ponto ponto) refere-se ao diretório acima do qual estamos. Por exemplo, considerando o diretório /home/curso, o diretório acima de curso é /home, e o diretório acima de /home é /.

..

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

84

GNU/Linux - módulo 1 - Introdução

Capítulo 6

Utilizando o Interpretador de comandos (shell)
Neste capítulo o usuário compreenderá o que é e para que serve um interpretador de comandos, conhecendo seus recursos mais utilizados.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

85

GNU/Linux - módulo 1 - Introdução

6.1- O interpretador de comandos
Também conhecido como shell, é o programa responsável em interpretar as instruções enviadas pelo usuário ao sistema operacional (kernel), como por exemplo, criação e remoção de diretórios, listagem de diretórios, criação e remoção de arquivos, etc. É a principal ligação entre o usuário, os programas, e o kernel. Ele executa os comando lidos do dispositivo de entrada padrão (teclado) ou de um arquivo executável. O GNU/Linux possui diversos tipos de interpretadores de comando, e entre eles, os de maior destaque são o bash (Bourbe Again Shell), csh (C Shell), tcsh (Turbo C Shell), ksh (The Korn Shell). Entre eles, o mais usado é o bash. Os comando podem ser enviados de duas maneiras para o interpretador:

Interativa : os comandos são digitados no prompt e passados ao interpretador de comandos um a um. Neste modo, o computador depende do usuário para executar uma tarefa, ou o próximo comando. Não-interativa : são usados scripts, ou seja, arquivos criados pelo usuário com uma sequência de comandos definidos por este, que seguem uma determinada lógica, para executar determinada tarefa que precisa ser automatizada.

O bash é um interpretador de comandos muito customizável, e para exemplificar uma pequena porção desta ferramenta, podemos destacar um de seus recursos mais úteis, que é o de completar os nomes dos arquivos. Isto é feito pressionando a tecla TAB. Por exemplo, se o usuário digitar:
$ ls tes<TAB>

O bash localizará todos os arquivos que iniciam com “tes” e completará o restante do nome. Caso o bash encontre mais de uma expressão que satisfaça a pesquisa, ou nenhuma, é emitido um beep. Se o usuário pressionar novamente a tecla <TAB>, o bash listará as diversas possibilidades que satisfazem a pesquisa. Este recurso também funciona sem problemas para comandos internos.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

86

GNU/Linux - módulo 1 - Introdução

6.2- Aviso de comando (prompt)
Aviso de comando (prompt), é a linha mostrada na tela para digitação de comandos que serão passados ao interpretador de comandos para a sua execução. A posição onde o comando será digitado é marcado por um traço piscante chamado cursor. Tanto em shells texto como em gráficos é necessário o uso do cursor para sabermos onde iniciar a digitação de textos e nos orientarmos quanto a posição na tela. O aviso de comando do usuário root é identicado pela caractere “#” (tralha, cerquilha), e o aviso de comando de usuários é identificado pelo caractere “$”. Isto é padrão em sistemas Unix.

6.3- Curingas (Wildcards)
Curingas (ou referência global) é um recurso usado para especificar e potencializar pesquisas feitas para um ou mais arquivos ou diretórios do sistema de uma só vez. Este é um recurso permite que você faça a filtragem do que será listado, copiado, apagado, etc. São usados 4 tipos de curingas no GNU/Linux: - Faz referência a qualquer nome completo/restante, qualquer número de vezes, de um arquivo/diretório.

*

Exemplo:
$ ls /home/curso/teste/*.txt teste10.txt teste1.txt teste3.txt teste11.txt teste2.txt teste4.txt

teste5.txt teste6.txt

testeA.txt testeB.txt

testeC.txt testeD.txt

testeE.txt testeF.txt

Lista todos os arquivos que tiverem a extensão .txt no diretório /home/curso/teste.
$ ls teste* teste10.txt teste1.txt teste11.txt teste2.txt

teste3.txt teste4.txt

teste5.txt teste6.txt

testeA.txt testeB.txt

testeC.txt testeD.txt

testeE.txt

Lista todos os arquivos que tiverem o prefixo teste.
$ ls teste*txt teste10.txt teste1.txt teste11.txt teste2.txt

teste3.txt teste4.txt

teste5.txt teste6.txt

testeA.txt testeB.txt

testeC.txt testeD.txt

testeE.txt

Lista todos os arquivos que tiverem o prefixo teste e terminarem com a string txt.
$ ls *5* teste5.txt

Lista todos os arquivos que tiverem string 5.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

87

GNU/Linux - módulo 1 - Introdução ✔

?

- Faz referência a um caracter em uma posição específica.

Exemplo:
$ ls teste?.txt teste1.txt teste3.txt teste4.txt teste6.txt

teste5.txt testeB.txt

testeA.txt testeD.txt

testeC.txt testeF.txt

testeE.txt teste2.txt

Lista todos os arquivos que tiverem um único caracter depois da string teste, e que tiverem a extensão .txt.
$ ls teste??.txt teste10.txt teste11.txt

Lista todos os arquivos que tiverem dois caracteres depois da string teste, e que tiverem a extensão .txt.
$ ls /bin/?? /bin/cp /bin/dd /bin/df /bin/ed /bin/ln /bin/ls /bin/mt /bin/mv /bin/ps /bin/sh /bin/su

/bin/rm

Lista todos os arquivos que tiverem nome com apenas dois caracteres no diretório /bin.
$ ls /etc/???.conf /etc/fam.conf /etc/ntp.conf /etc/xmp.conf

/etc/pam.conf

/etc/ucf.conf

/etc/vnc.conf

Lista todos os arquivos que tiverem nome com três caracteres e a extensão .conf no diretório /etc.

- O curinga "[...]" define um padrão que casa com o conjunto de caracteres entre "[" e "]". O conjunto ainda pode conter intervalos de caracteres, como por exemplo "1-2" ou "a-z" e também caracteres que não podem fazer parte do conjunto, indicados por "^" ou "!".

[]

Exemplo:
$ ls teste[0-9].txt teste1.txt teste2.txt

teste3.txt

teste4.txt

teste5.txt

teste6.txt

Lista todos os arquivos que tiverem o intervalo de número de 0 até 9 entre o prefixo teste, com a extensão .txt.
$ ls teste[5-9].txt teste5.txt teste6.txt

Lista todos os arquivos que tiverem o intervalo de número de 5 até 9 entre o prefixo teste, com a extensão .txt.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

88

GNU/Linux - módulo 1 - Introdução

$ ls teste[0-9].txt teste1.txt teste2.txt

teste3.txt

teste4.txt

teste5.txt

teste6.txt

Lista todos os arquivos que tiverem o intervalo de número de 0 até 9 entre o prefixo teste, com a extensão .txt.
$ ls teste[A-Z].txt testeA.txt testeB.txt

testeC.txt

testeD.txt

testeE.txt

testeF.txt

Lista todos os arquivos que tiverem o intervalo de A até Z entre o prefixo teste, com a extensão .txt.
$ ls teste[B-D].txt testeB.txt testeC.txt

testeD.txt

Lista todos os arquivos que tiverem o intervalo de B até D entre o prefixo teste, com a extensão .txt.
$ ls [a-z][0-9]* t1.txt t2.txt t3.txt

Lista todos os arquivos que tiverem em seu nome na primeira posição um caracter no intervalo de a à z, e na segunda posição um número no intervalo de 0 à 9, com qualquer sufixo ou extensão.
$ ls t[a-d,0-9]*.txt t1.txt t2.txt t3.txt

ta1.txt

ta2.txt

Lista todos os arquivos que tiverem o prefixo t, seguido por um caracter no intervalo de a à d, ou um número no intervalo de 0 à 9, e que tenham qualquer valor antes de .txt.
$ ls teste[0-9][^0-9]* teste1.txt teste2.txt

teste3.txt

teste4.txt

teste5.txt

teste6.txt

Lista todos os arquivos que tiverem o prefixo teste, seguido por um número no intervalo de 0 à 9, e que não contenham um outro número na sequência, com qualquer extensão. o carater ^ significa negação.

- O curinga "{...}" define um padrão que casa com o conjunto de caracteres entre "{" e "}", separados por vírgula.

{}

Exemplo:
$ ls teste{[0-9],[A-Z]}.txt teste1.txt teste3.txt teste5.txt teste4.txt teste6.txt testeB.txt

testeA.txt testeD.txt

testeC.txt testeF.txt

testeE.txt teste2.txt

Lista todos os arquivos que tiverem o prefixo teste, seguido por um conjunto composto por um número no intervalo de 0 à 9, ou, caracteres no intervalo de A à Z, e que terminam com a extensão .txt.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

89

GNU/Linux - módulo 1 - Introdução

$ ls teste*.{txt,log} teste10.txt teste1.log teste2.log testeD.txt testeF.txt teste11.txt testeA.txt testeC.txt testeE.txt

teste3.log teste1.txt teste.log

teste4.txt teste2.txt

teste6.txt teste3.txt

testeB.txt teste5.txt

Lista todos os arquivos que tiverem o prefixo teste, seguido por qualquer conjunto de caracteres, e que contenham as extensões .txt ou .log.

6.4- Direcionadores
Uma boa parte dos programas executados no terminal possuem alguma saída. Essas saídas são enviadas por padrão para o terminal, sendo impressas na tela. Assim, consideremos o exemplo abaixo:
$ ls teste[0-9].txt teste1.txt teste2.txt

teste3.txt

teste4.txt

teste5.txt

teste6.txt

Nesse caso, têm-se:
✔ ✔

entrada: ls teste[0-9].txt saída: teste1.txt teste2.txt

teste3.txt

teste4.txt

teste5.txt teste6.txt

A entrada foi enviada pelo teclado (stdin), e a saída foi enviada para o terminal, que é a saída padrão (stdout). Mas então, o que fazer se o usuário quiser gravar a saída do comando ls em um arquivo de texto, por exemplo? Para isso existem os direcionadores de fluxo, de grande utilidade no GNU/Linux e essenciais para a realização de diversas tarefas de manutenção do sistema. Direcionadores de fluxo fazem o que o nome sugere: direcionam o fluxo da saída dos programas, enviando-as para locais diferentes da saída padrão. Esses locais podem ser arquivos, dispositivos, processos e outros programas. O direcionadores utilizados no GNU/Linux são: O Direcionador > : O direcionador > envia a saída padrão de um comando para um arquivo. Caso o arquivo exista, o seu conteúdo é substituído. Veja então a saída do comando ls que utilizou-se agora à pouco:

$ ls teste[0-9].txt teste1.txt teste2.txt

teste3.txt

teste4.txt

teste5.txt

teste6.txt

Para gravar essa lista em um arquivo chamado ls_out, utiliza-se o direcionador, da seguinte forma:

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

90

GNU/Linux - módulo 1 - Introdução

$ ls teste[0-9].txt > ls_out

Agora, nada é impresso no terminal. Por que? Porque a saída foi direcionada para o arquivo ls_out. Veja o conteúdo desse arquivo com o comando cat, que concatena e envia arquivos para a saída padrão:
$ cat ls_out teste1.txt teste2.txt teste3.txt teste4.txt teste5.txt teste6.txt

Como visto, o conteúdo do arquivo ls_out é exatamente a saída do comando ls.

O Direcionador 2> : Uma restrição ao uso do direcionador > é que ele não funciona para mensagens de erro (stderr). No exemplo abaixo, usa-se o comando ls, e como parâmetro, um diretório que não existe:

$ ls dir_fantasma > ls_out ls: dir_fantasma: Arquivo ou diretório não encontrado

Observe que mesmo usando o direcionador >, a mensagem de erro foi exibida. Se o usuário visualizar o conteúdo do arquivo ls_out, verá que nada foi gravado. Para gravar as mensagens de erro, deve-se usar o direcionador 2>:
$ ls dir_fantasma 2> ls_out

Agora sim, nenhuma mensagem de erro foi exibida na tela, porque ela foi enviada para o arquivo ls_out, como pode-se verificar:
$ cat ls_out ls: dir_fantasma: Arquivo ou diretório não encontrado

O Direcionador &> : Podemos usar os direcionadores > e 2> em conjunto, para gerar um arquivo com a saída padrão e outro com a saída de erros, dessa forma:

$ ls teste[0-9].txt dir_fantasma > ls_out 2> ls_error

O comando acima pede para listar todos os arquivos que contenham o nome teste, seguido por um intervalo de 0 à 9, com a extensão .txt, e o conteúdo do diretório dir_fantasma. Ao ver o conteúdo dos arquivos ls_out e ls_error, têm-se:
Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp 91

GNU/Linux - módulo 1 - Introdução

$ cat ls_out teste1.txt teste2.txt teste3.txt teste4.txt teste5.txt teste6.txt $ cat ls_error ls: dir_fantasma: Arquivo ou diretório não encontrado

Mas, e se for necessário gravar todas as mensagens em um arquivo apenas? Para isso existe o direcionador &>, que direciona tanto as mensagens padrão quanto as mensagens de erro para um arquivo. Repetindo o teste anterior:
$ ls teste[0-9].txt dir_fantasma &> ls_out

Nenhuma mensagem é exibida no terminal, e o conteúdo do arquivo ls_out é o seguinte:
$ cat ls_out ls: dir_fantasma: Arquivo ou diretório não encontrado teste1.txt teste2.txt teste3.txt teste4.txt teste5.txt teste6.txt

Como visto, têm-se tanto a saída normal quanto as mensagens de erro.

Os Direcionadores >>, 2>> e &>> : Todos os direcionadores acima citados substituem o conteúdo do arquivo caso ele já exista. Se você quiser gravar a saída de vários comandos num mesmo arquivo, então precisará adicionar o conteúdo ao arquivo ao invés de substitui-lo. Para fazer isso, usa-se >> ao invés de >, >>, 2>> e &>>. O Direcionador < : Direciona a entrada padrão de arquivo/dispositivo para um comando. Este direcionador faz o contrário de < , enviando os dados para a entrada padrão, que no caso, é o comando. Por exemplo:

$ cat < ls_out ls: dir_fantasma: Arquivo ou diretório não encontrado teste1.txt teste2.txt teste3.txt teste4.txt teste5.txt teste6.txt

Você pode usar o comando acima para enviar o conteúdo do arquivo ls_out ao comando cat, que mostrará seu conteúdo. É claro que o mesmo resultado pode ser obtido com cat teste.txt, mas este exemplo serviu para mostrar a funcionalidade do <.
Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp 92

GNU/Linux - módulo 1 - Introdução ✔

O Direcionador << : O direcionador << é utilizado para marcar o fim de exibição de um bloco. Um dos usos mais freqüentes desse direcionador é em conjunto com o comando cat. O comando abaixo termina o comando cat quando for digitada a palavra "fim".
cat << fim > arq_teste Meu nome é Fabio Santos e estou ministrando o Curso GNU/Linux Módulo 1 - Introdução.. ele tem a duração de 24 horas.... Este teste é com o comando cat em conjunto com o direcionador "<<" fim

$ > > > > > >

Neste exemplo, o direcionador << foi usado para enviar o texto digitado para o arquivo arq_teste, logo que a palavra “fim” foi inserida ao texto.

O Direcionador | (pipe) : O direcionador | , também conhecido como pipe (duto, cano), é utilizado para direcionar a saída de um comando para outro comando, e utilizado todo o tempo para a realização de diversos tipos de tarefas e procedimentos. Um dos usos mais comuns do | é com os comandos ls e more, para ver o conteúdo de um diretório, quando este não cabe na tela, como o diretório /usr/bin, por exemplo. Para que se possa ver todos os arquivos, direciona-se a saída do ls para o more, que faz a paginação do conteúdo:

$ ls /usr/bin | more 411toppm 822-date a2p aaxine abcde abiword AbiWord-2.2 --Mais--

Agora, basta pressionar Enter para rolar a lista, de forma que podemos ver todos os arquivos. Pode-se utilizar o pipe para contar o número de linhas de um arquivo, em conjunto com os comandos cat e wc:
$ cat /etc/profile | wc -l 24

O comando wc é utilizado para contar número de linhas, palavras e bytes do fluxo, que neste caso, é um arquivo texto. Um outro exemplo é em conjunto com o gerenciador de pacotes apt, e com o comando grep, que é utilizado para selecionar linhas que contém uma determinada expressão. Por exemplo, para procurar os pacotes relacionados à documentação do bash shell, utiliza-se a seguinte linha de comando:

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

93

GNU/Linux - módulo 1 - Introdução

$ apt-cache search bash | grep doc bash-doc - Documentation and examples for the The GNU Bourne Again SHell bash3-doc - Documentation and examples for the The GNU Bourne Again SHell optcomplete-common - common scripts and documentation for python-optcomplete

6.5- Alias
Permite criar um apelido a um comando ou programa. Por exemplo, se você quiser otimizar o nome do comando ls -lh para ver uma listagem longa e com todos os atributos dos arquivos, você pode usar o comando alias para facilitar as coisas digitando:
$ alias lista='ls -lh'

Detalhe: (não se esqueça da meia aspa 'para identificar o comando'). Agora quando você digitar lista, a listagem será mostrada de forma completa. Para apagar uma alias, utilize o comando unalias:
$ unalias lista

6.6- Histórico dos comandos
Todos os comandos executados em uma sessão são memorizados pelo shell, e podem ser consultados e novamente executados quando desejado. Para consultar o histórico basta executar o comando history. Os comandos que são digitados são armazenados dentro do arquivo .bash_history que está no diretório de trabalho dos usuários. Os comandos de uso do histórico começam sempre pelo sinal "!" . Vejamos os mais comuns:
✔ ✔ ✔ ✔

!132 : executa o comando de número 132 do histórico. !-2 : executa o penúltimo comando. !! : executa o comando anterior (equivale a !-1). !gr : executa o último comando começando com as letras "gr".

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

94

GNU/Linux - módulo 1 - Introdução

6.7- Editor de textos “vi”
O vi é um dos editores de texto mais antigos. Independente de plataforma, ele é encontrado em quase todos os sistemas *NIX. É um editor de texto para console, então não há a necessidade de se usar um ambiente gráfico. Ele é um pouco confuso para quem utiliza o programa pela primeira vez, visto que todas as operações são iniciadas a partir de uma seqüência de teclas. O vim (abreviatura de vi improved) é uma variação do vi com alguns recursos extras. O uso do vim é igual ao do vi, exceto pelas funções adicionais não encontradas neste. As principais opções do vi são:
✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔

i : habilita a inserção de textos no arquivo. a : permite a inserção de textos depois do cursor. A : permite a inserção de textos no final da linha onde encontra-se o cursor. o : Insere uma linha abaixo da linha corrente. O : Insere uma linha acima da linha corrente. W : Move o cursor para o início da próxima palavra, ignorando a pontuação. w : Move o cursor para o início da próxima palavra, sem ignorar a pontuação. B : Move o cursor para o início da palavra anterior, ignorando a pontuação. b : Move o cursor para o início da próxima palavra, sem ignorar a pontuação. <num>G : Move o cursor para a linha indicada pelo número <num>. G : Move o cursor para a última linha do arquivo. gg : Move o cursor para a primeira linha do arquivo. /<texto> : Procura dentro do arquivo pelo texo informado. n : repete o último comando / realizado. N : repete o último comando / realizado, porém, na direção reversa. <CTRL>+G : Mostra as informações sobre o arquivo, como seu nome, número da linha corrente, e total de linhas. dw : Exclui uma palavra, da posição do cursor, até o seu final. dd : Exclui a linha onde o cursor está posicionado. D : Exclui o texto que está sob o cursor ate o final da linha. $ : Move o cursor para o final da linha corrente. 0 : Move o cursor para o início da linha corrente. R : Substitui o texto corrente. cw : Substitui a palavra corrente. cc : Exclui a linha corrente e habilita o modo de inserção.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

95

GNU/Linux - módulo 1 - Introdução ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔

C : Substitui o restante da linha corrente, a partir da posição do cursor. u : desfaz a última modificação. U : Desfaz todas as modificações feitas na linha corrente (desde que o cursor não tenha mudade de linha). J : Une a linha corrente à próxima. yw : copia uma palavra. dw : cortar uma palavra. Y : Copia a linha corrente. S : Cortar a linha corrente. P : Cola o conteúdo da área de transferência. V : Seleção visual. <ESC> : Alterna para o modo comando. :w : Salva o arquivo atual. :w novo_arquivo.txt : Salva o arquivo atual com o nome novo_arquivo.txt. :q : Sai do vi e não salva as alterações. :q! : Força a saída do vi sem salvar as alterações. :wq : salva o arquivo atual e sai do vi. :r nome_do_arquivo.txt : Insere o conteúdo de nome_do_arquivo.txt no arquivo atual :r! ps : Insere a saída do comando ps no arquivo atual. :set number : exibe o número de linhas do arquivos atual. :set nonumber : desabilita a visualização do número de linhas. :s/teste/teste1 : substitui a primeira ocorrência de teste por teste1 na linha corrente. :s/teste/teste1/g : substitui todas as ocorrências de teste por teste1 na linha corrente. :%s/teste/teste1 : Substitui a primeira ocorrência da palavra teste por teste1 em cada linha, no arquivo inteiro. :%s/teste/teste1/g : Substitui todas as ocorrências da palavra teste por teste1, no arquivo inteiro. :%s/teste/teste1/gc : Substitui todas as ocorrências da palavra teste por teste1, no arquivo inteiro, pedindo confirmação.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

96

GNU/Linux - módulo 1 - Introdução

6.8- Comandos básicos – nível 2

6.8.1. history : Exibe na saída padrão o histórico de todos os comandos digitados pelo usuário. Esta listagem também pode ser consultada no aqruivo .bash_history. Sintaxe:
$ history

6.8.2. tee : Envia o resultado de um comando para a saída padrão (tela) e para um arquivo ao mesmo tempo. Este comando deve ser usado com o pipe "|". Sintaxe:
$ <comando> | tee <arquivo de saída>

Opções:

- a : acrescenta ao arquivo ao invés de sobrescrevê-lo.

Exemplo:
$ ls -lh | tee lista.txt total 0 -rw-r--r-- 1 fabio fabio 0 2005-06-14 15:34 teste10.txt -rw-r--r-- 1 fabio fabio 0 2005-06-14 15:34 teste11.txt -rw-r--r-- 1 fabio fabio 0 2005-06-14 15:34 teste1.txt -rw-r--r-- 1 fabio fabio 0 2005-06-14 15:34 teste2.txt -rw-r--r-- 1 fabio fabio 0 2005-06-14 15:34 teste3.txt -rw-r--r-- 1 fabio fabio 0 2005-06-14 15:34 teste43.txt -rw-r--r-- 1 fabio fabio 0 2005-06-14 15:34 teste4.txt -rw-r--r-- 1 fabio fabio 0 2005-06-14 15:34 teste5.txt -rw-r--r-- 1 fabio fabio 0 2005-06-14 15:34 teste6.txt -rw-r--r-- 1 fabio fabio 0 2005-06-14 15:34 teste7.txt -rw-r--r-- 1 fabio fabio 0 2005-06-14 15:34 teste8.txt -rw-r--r-- 1 fabio fabio 0 2005-06-14 15:34 teste9.txt -rw-r--r-- 1 fabio fabio 0 2005-06-14 15:34 testeA.txt -rw-r--r-- 1 fabio fabio 0 2005-06-14 15:35 testeB.txt -rw-r--r-- 1 fabio fabio 0 2005-06-14 15:35 testeC.txt -rw-r--r-- 1 fabio fabio 0 2005-06-14 15:35 testeD.txt -rw-r--r-- 1 fabio fabio 0 2005-06-14 15:35 testeE.txt

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

97

GNU/Linux - módulo 1 - Introdução

6.8.3. grep : Procura por um texto dentro de um arquivo(s) ou no dispositivo de entrada padrão. Sintaxe:
$ grep <expressão> <arquivo> <opções>

Opções: Exemplo:
• • • •

A [número] : Mostra o [número] de linhas após a linha encontrada. B [número] : Mostra o [número] de linhas antes a linha encontrada. n : Mostra o número de cada linha encontrada. i : Ignora diferenças entre minúsculas e maiúsculas.

$ cat lista.txt | grep 15:35 -rw-r--r-- 1 fabio fabio 0 2005-06-14 -rw-r--r-- 1 fabio fabio 0 2005-06-14 -rw-r--r-- 1 fabio fabio 0 2005-06-14 -rw-r--r-- 1 fabio fabio 0 2005-06-14

15:35 15:35 15:35 15:35

testeB.txt testeC.txt testeD.txt testeE.txt

Exibe todas as linhas do arquivo lista.txt que contém a string 15:35.
$ ps -ef | grep fabio 4978 root 4982 fabio 5713 fabio 5726 bash 4976 4978 4976 5713

0 0 0 0

11:17 11:17 17:09 17:11

pts/0 pts/0 pts/1 pts/1

00:00:00 00:00:00 00:00:00 00:00:00

bash bash bash grep bash

Exibe a saída do comando ps, que lista todos os processo que estão rodando na máquina, e no exemplo acima, todos os processo que contém a string bash. O grep faz sua pesquisa em arquivos texto. Use o comando zgrep para pesquisar diretamente em arquivos compactados com gzip, os comandos e opções são as mesmas.

6.8.4. cat : Imprime o conteúdo de arquivos na saída padrão (exibe na tela). Com o uso de direcionadores, podemos usá-lo para unir diferentes arquivos em um só, dentre outra funções. Sintaxe:
$ cat <opções> <arquivo>

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

98

GNU/Linux - módulo 1 - Introdução

Opções: - b : Numera as linhas, com exceção das linhas em branco. - E : Mostra um $ para indicar fim de linha. - n : Numera todas as linhas, incluindo as em branco. - s : Não mostra mais do que uma linha em branco. Se houver duas ou mais linhas em branco consecutivas, elas são truncadas e apenas uma é mostrada. • - T : Substitui tabulações pelos caracteres ^I. • - v : Substitui os caracteres não imprimíveis por símbolos, exceto tabulações e final de linha.
• • • •

Exemplo:
$ cat lista.txt -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio

fabio fabio fabio fabio

0 0 0 0

2005-06-14 2005-06-14 2005-06-14 2005-06-14

15:35 15:35 15:35 15:35

testeB.txt testeC.txt testeD.txt testeE.txt

Exibe todas as linhas do arquivo lista.txt, este é o exemplo mais simples da utilização deste comando.
$ cat ls_new ls_log -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio

fabio fabio fabio fabio fabio fabio fabio fabio fabio fabio

0 0 0 0 0 0 0 0 0 0

2005-06-15 2005-06-15 2005-06-15 2005-06-15 2005-06-15 2005-06-15 2005-06-15 2005-06-15 2005-06-15 2005-06-15

14:03 14:03 14:03 14:03 14:03 14:02 14:02 14:02 14:02 14:02

teste1.new teste2.new teste3.new teste4.new teste5.new teste1.log teste2.log teste3.log teste4.log teste5.log

Exibe a saída o conteúdo dos arquivos ls_new e ls_log, que contém respectivamente, a saída do comando ls -lh *.new e ls -lh *.log.
$ cat ls_new ls_log $ cat lista_lognew -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio > lista_lognew fabio fabio fabio fabio fabio fabio fabio fabio fabio fabio 0 0 0 0 0 0 0 0 0 0 2005-06-15 2005-06-15 2005-06-15 2005-06-15 2005-06-15 2005-06-15 2005-06-15 2005-06-15 2005-06-15 2005-06-15 14:03 14:03 14:03 14:03 14:03 14:02 14:02 14:02 14:02 14:02 teste1.new teste2.new teste3.new teste4.new teste5.new teste1.log teste2.log teste3.log teste4.log teste5.log

Primeiramente redireciona o conteúdo do exemplo anterior para o arquivo lista_lognew, e depois, exibe seu conteúdo.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

99

GNU/Linux - módulo 1 - Introdução

$ cat musica_1.mp3 musica_2.mp3 > junta_musica.mp3

O comando cat também trabalha na junção de conteúdos de arquivos binários. Por exemplo, se você quiser concatenar duas músicas sem precisar. O comando cat trabalha com arquivos texto. Use o comando zcat para ver diretamente arquivos compactados com gzip.

6.8.5. tac : Faz o mesmo que o cat, mas exibe o arquivo pela ordem inversa, ou seja, começando pela última linha e terminando com a primeira. Sintaxe:
$ tac <arquivo>

Exemplo:
$ tac lista_lognew -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio

fabio fabio fabio fabio fabio fabio fabio fabio fabio fabio

0 0 0 0 0 0 0 0 0 0

2005-06-15 2005-06-15 2005-06-15 2005-06-15 2005-06-15 2005-06-15 2005-06-15 2005-06-15 2005-06-15 2005-06-15

14:02 14:02 14:02 14:02 14:02 14:03 14:03 14:03 14:03 14:03

teste5.log teste4.log teste3.log teste2.log teste1.log teste5.new teste4.new teste3.new teste2.new teste1.new

Exibe todas as linhas do arquivo lista.txt, este é o exemplo mais simples da utilização deste comando.

6.8.6. wc : Conta o número de linhas, palavras, caracteres e bytes nos arquivos. Se as opções forem omitidas, o wc mostra a quantidade de linhas, palavras, e bytes.

Sintaxe:
$ wc <opções> <arquivo>

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

100

GNU/Linux - módulo 1 - Introdução

Opções:
• • • • •

-

c : Exibe apenas o número de bytes. m : Exibe apenas o número de caracteres. l : Exibe apenas o número de linhas. L : Exibe o comprimento, em caracteres, da maior linha do arquivo. w : Exibe o número de palavras encontradas.

Exemplo:
$ wc lista_lognew 10 80 560 lista_lognew

Se as opções forem omitidas, o wc mostra a quantidade de linhas, palavras, e bytes.
$ wc -w lista_lognew 80 lista_lognew

Exibe apenas o número de palavras.

6.8.7. find (utilização básica) : Procura por arquivos/diretórios no disco. O find pode procurar arquivos através de seus atributos, através do uso de opções. Sintaxe:
$ find <arquivo/diretório> <opções/expressões>

Opções:
• •

-name : Procura arquivos cujo nome coincida com a expressão digitada. -type [tipo]: Procura por arquivos que sejam de um tipo específico. • b : Dispositivos de bloco. • c : Dispositivos de caractere. • d : Diretório. • p : Duto nomeado (FIFO). • f : Arquivo regular. • l : Link simbólico. • s : Socket.

Exemplo:
$ find teste[A-Z].txt testeA.txt testeB.txt testeC.txt testeD.txt testeE.txt

Sem informar um diretório para pesquisa, faz uma busca dentro diretório atual.
Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp 101

GNU/Linux - módulo 1 - Introdução

$ find /etc/ -name ???.conf /etc/gdm/gdm.conf /etc/fam.conf /etc/pam.conf /etc/ucf.conf /etc/dbus-1/system.d/hal.conf /etc/esound/esd.conf /etc/sane.d/ibm.conf /etc/sane.d/v4l.conf /etc/sane.d/pie.conf /etc/sane.d/leo.conf /etc/sane.d/nec.conf /etc/sane.d/u12.conf /etc/sane.d/dll.conf /etc/sane.d/dmc.conf /etc/sane.d/net.conf /etc/apache2/mods-available/ssl.conf

Faz um busca no diretório /etc, por arquivos que contenham apenas 3 letras em seu nome, e que tenha a extensão .conf.

6.8.8. more : Permite fazer a paginação de arquivos ou da entrada padrão. O comando more pode ser usado como comando para leitura de arquivos que ocupem mais de uma tela. Quando toda a tela é ocupada, ele efetua uma pausa e permite que você pressione <ENTER> ou <espaço> para continuar avançando no arquivo sendo visualizado. Para sair do more pressione <q>. Sintaxe:
$ more <arquivo>

Exemplo:
$ more /etc/adduser.conf # /etc/adduser.conf: `adduser' configuration. # See adduser(8) and adduser.conf(5) for full documentation. # The DSHELL variable specifies the default login shell on your # system. DSHELL=/bin/bash # The DHOME variable specifies the directory containing users' home # directories. DHOME=/home # If GROUPHOMES is "yes", then the home directories will be created as # /home/groupname/user. GROUPHOMES=no # If LETTERHOMES is "yes", then the created home directories will have # an extra directory - the first letter of the user name. For example: --Mais--(50%)

Faz a paginação do arquivo /etc/adduser.conf.
Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp 102

GNU/Linux - módulo 1 - Introdução

$ ls -lh | more total 24K -rw-r--r-- 1 fabio -rw-r--r-- 1 root -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio --Mais--

fabio 560 2005-06-15 14:10 lista_lognew root 2,1K 2005-06-17 12:34 lista_pag fabio 968 2005-06-15 11:34 lista.txt fabio 280 2005-06-15 14:03 ls_log fabio 280 2005-06-15 14:03 ls_new fabio 0 2005-06-14 15:34 teste10.txt fabio 0 2005-06-14 15:34 teste11.txt fabio 0 2005-06-15 14:02 teste1.log fabio 0 2005-06-15 14:03 teste1.new fabio 0 2005-06-14 15:34 teste1.txt

Faz a paginação da saída do comando ls. Para visualizar diretamente arquivos texto compactados pelo utilitário gzip (arquivos .gz), use o comando zmore.

6.8.9. less : Permite fazer a paginação de arquivos ou da entrada padrão. Ele pode ser usado como comando para leitura de arquivos que ocupem mais de uma tela. Quando toda a tela é ocupada, o less efetua uma pausa (semelhante ao more) e permite que você pressione <seta para cima> e <seta para baixo> ou <PgUP>/<PgDown> para fazer o rolamento da página. Para sair do less pressione <q>. Sintaxe:
$ less <arquivo>

Exemplo:
$ less /etc/adduser.conf # /etc/adduser.conf: `adduser' configuration. # See adduser(8) and adduser.conf(5) for full documentation. # The DSHELL variable specifies the default login shell on your # system. DSHELL=/bin/bash # The DHOME variable specifies the directory containing users' home # directories. DHOME=/home # If GROUPHOMES is "yes", then the home directories will be created as # /home/groupname/user. GROUPHOMES=no # If LETTERHOMES is "yes", then the created home directories will have # an extra directory - the first letter of the user name. For example: :

Faz a paginação do arquivo /etc/adduser.conf.
Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp 103

GNU/Linux - módulo 1 - Introdução

$ ls -lh | less total 24K -rw-r--r-- 1 fabio -rw-r--r-- 1 root -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio :

fabio 560 2005-06-15 14:10 lista_lognew root 2,1K 2005-06-17 12:34 lista_pag fabio 968 2005-06-15 11:34 lista.txt fabio 280 2005-06-15 14:03 ls_log fabio 280 2005-06-15 14:03 ls_new fabio 0 2005-06-14 15:34 teste10.txt fabio 0 2005-06-14 15:34 teste11.txt fabio 0 2005-06-15 14:02 teste1.log fabio 0 2005-06-15 14:03 teste1.new fabio 0 2005-06-14 15:34 teste1.txt

Faz a paginação da saída do comando ls. Para visualizar diretamente arquivos texto compactados pelo utilitário gzip (arquivos .gz), use o comando zless.

6.8.10. touch : Muda a data e hora que um arquivo foi criado. Também pode ser usado para criar arquivos vazios. Caso o touch seja usado com arquivos que não existam, por padrão ele irá criá-los. Sintaxe:
$ touch <opções> <arquivo>

Opções:
• • • •

-a : Modifica apenas a data do última acesso. -c: Não cria arquivos, caso eles não existam. -m : modifica apenas a data de modificação. -t : Usa meses (MM), dias (DD), horas (hh), minutos (mm) e opcionalmente o ano e segundos para modificação do(s) arquivo(s) ao invés da data e hora atual.

Exemplo:
$ ls -lh teste1.txt -rw-r--r-- 1 fabio fabio 0 2005-06-14 15:34 teste1.txt $ touch teste1.txt $ ls -lh teste1.txt -rw-r--r-- 1 fabio fabio 0 2005-06-20 14:16 teste1.txt

Supondo que o arquivo teste1.txt tenha como última modificação, a data 14/06/2005 às 15:34. utilizando o comando touch sem nenhum parâmetro, o arquivo automaticamente fica com a data atual, como sendo a sua data de última modificação.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

104

GNU/Linux - módulo 1 - Introdução

$ touch -t 200302111030.11 teste1.txt $ ls -lh teste1.txt -rw-r--r-- 1 fabio fabio 0 2003-02-11 10:30 teste1.txt $ touch -t 200404151430 teste1.txt -rw-r--r-- 1 fabio fabio 0 2004-04-15 14:30 teste1.txt

Neste exemplo, utiliza-se a opção -t para o comando touch gravar uma data específica no arquivo. No exemplo acima, o arquivo teste1.txt terá como data de última modificação, a data 15/04/2004 às 14:30.

6.8.11. ln : Utilizado para criar links, simbólicos ou absolutos. Sintaxe:
$ ln <opções> <origem> <destino>

Opções: -s : Cria um link simbólico. Usado para criar ligações com o arquivo/diretório de destino. • -v: Exibe o nome de cada link antes de criá-lo.

Exemplo:
$ ln -s teste1.txt teste1.documento $ ls -lh teste1* -rw-r--r-- 1 fabio fabio 0 2005-06-14 -rw-r--r-- 1 fabio fabio 0 2005-06-14 lrwxrwxrwx 1 fabio fabio 10 2005-06-20 -rw-r--r-- 1 fabio fabio 0 2005-06-15 -rw-r--r-- 1 fabio fabio 0 2005-06-15 -rw-r--r-- 1 fabio fabio 0 2004-04-15

15:34 15:34 16:30 14:02 14:03 14:30

teste10.txt teste11.txt teste1.documento -> teste1.txt teste1.log teste1.new teste1.txt

Neste exemplo, foi criado um link simbólico para o arquivo teste1.txt com o nome de teste1.documento.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

105

GNU/Linux - módulo 1 - Introdução

$ ln -s -v teste1.txt teste1.documento criar link simbólico `teste1.docs' to `teste1.txt' $ ls -lh teste1* -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio lrwxrwxrwx 1 fabio lrwxrwxrwx 1 fabio -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio -rw-r--r-- 1 fabio

fabio 0 2005-06-14 15:34 teste10.txt fabio 0 2005-06-14 15:34 teste11.txt fabio 10 2005-06-20 17:00 teste1.docs -> teste1.txt fabio 10 2005-06-20 16:30 teste1.documento -> teste1.txt fabio 0 2005-06-15 14:02 teste1.log fabio 0 2005-06-15 14:03 teste1.new fabio 0 2004-04-15 14:30 teste1.txt

Neste exemplo, foi criado um link simbólico para o arquivo teste1.txt com o nome de teste1.docs, exemplificando a saída com a opção -v.
$ ln /etc/passwd $ ln /etc/passwd passwd_curso $ ls -lh pass* -rw-r--r-- 3 root root 1,2K 2005-06-17 11:31 passwd -rw-r--r-- 3 root root 1,2K 2005-06-17 11:31 passwd_curso

Neste exemplo, foram criados dois links absolutos, um para o arquivo /etc/passwd no diretório atual com mesmo nome, e outro com o nome de passwd_curso, mas os dois referenciam o mesmo arquivo.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

106

GNU/Linux - módulo 1 - Introdução

Capítulo 7

Gerenciamento de Pacotes
Neste capítulo o usuário compreenderá como gerenciamento de pacotes no Debian GNU/Linux. é feito o

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

107

GNU/Linux - módulo 1 - Introdução

7.1- O que são pacotes?
Um programa é constituído por vários arquivos, incluindo: aplicativos, arquivos de configuração, bibliotecas, imagens e documentos. O processo natural de instalação de um programa consiste então em 3 etapas:

Compilação: Compilar significa transformar o código-fonte de um programa em arquivos binários, isto é, que podem ser executados e utilizados pelo sistema operacional. Cópia: Uma vez compilados, os arquivos precisam ser copiados para os diretórios corretos, para poder funcionar adequadamente. Nesse processo, alguns diretórios precisam ser criados, eventualmente. Configuração: Depois de compilar e copiar, é necessário configurar o programa e o sistema operacional, para que não hajam conflitos e tudo possa funcionar corretamente.

O processo natural não é nem um pouco animador. Instalar todos os programas do sistema operacional seguindo esse método leva muito tempo, e a chance de ocorrer algum erro é muito grande. Pensando nisso, os mantenedores dos pacotes de cada distribuição fazem por você o processo de compilação e configuração dos programas, e juntam tudo em um só arquivo, chamado pacote. Esse pacote, será interpretado pela ferramenta de gerenciamento de pacotes, que o instalará automaticamente, com apenas um comando. Abaixo, encontra-se a listagem dos tipos de pacotes e seus respectivos gerenciadores de algumas distribuições listadas no capítulo 1:

Distribuição SuSe Red Hat Fedora Slackware Debian

Tipo de Pacote RPM RPM RPM TGZ DEB

Gerenciador YaST APT, YUM APT, YUM pkgtool APT

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

108

GNU/Linux - módulo 1 - Introdução

7.2- Os pacotes Debian
O Debian utiliza o formato DEB para os seus pacotes pré-compilados. Muitos pacotes (mais de 8000) são mantidos pela equipe de desenvolvedores Debian, e encontram-se disponíveis em diversos repositórios oficiais espalhados ao redor do mundo. Programas que não possuem pacotes DEB devem ser instalados a partir do código-fonte. É possível gerar pacotes DEB manualmente através da ferramenta dpkgdeb ou através de utilitários que automatizam essa tarefa, como o checkinstall. Os nomes dos pacotes são geralmente formados da seguinte maneira:

[foo]_[versão]-[revisão]_[arquitetura].deb

Onde: foo : Nome dado ao pacote; versão : A versão do pacote; revisão : Muitas vezes o mantenedor pode fazer alterações na mesma versão de um pacote. Nesses casos, são lançadas as revisões, como em 2.2-1, 2.2-2, 2.2-3, onde todos são pacotes da versão 2.2, mas de revisões diferentes; ✔ arquitetura : A arquitetura de hardware para a qual o pacote foi compilado.
✔ ✔ ✔

Alguns exemplos de nomes de pacotes:
✔ ✔ ✔ ✔ ✔

ladccad_0.4.0-4_i386.deb inkscape_0.41-2_i386.deb rsync_2.6.4-6_i386.deb mysql-server-4.1_4.1.11a-4_i386.deb openoffice.org-bin_1.1.3-9_i386.deb

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

109

GNU/Linux - módulo 1 - Introdução

7.3- Ferramentas de Gerenciamento de pacotes

dpkg

O dpkg é o principal programa de gerenciamento de pacotes do Debian. Todas as outras ferramentas utilizam-no para instalar, remover e configurar os pacotes no sistema. A sintaxe de uso do dpkg é a seguinte:

dpkg <opções> <pacote>

Algumas opções são usadas com o nome do pacote, outras são usadas com o nome do arquivo .deb. As principais são:
✔ ✔ ✔

✔ ✔

✔ ✔ ✔ ✔

--info: Exibe as informações sobre o pacote especificado, tais como descrição, versão, dependências, mantenedor, etc. -i, --install: Instala o pacote no sistema, desde que ele não possua nenhuma dependência não resolvida. --unpack: Apenas extrai os arquivos do pacote, copiando-os para os locais corretos, mas não faz a configuração. Isso pode deixar o programa não utilizável, pois ele pode precisar ser configurado, o que, nesse caso, não é feito. --configure: Configura o pacote desempacotado através do –unpack. -r, --remove: Remove um pacote, mantendo os arquivos de configuração. A importância de se manter os arquivos de configuração é que, no caso da reinstalação do pacote, as configurações não serão perdidas, permitindo usar o programa como se ele nunca tivesse sido removido. --purge: Remove um pacote e também os seus arquivos de configuração. Só use essa opção quando tiver certeza de que deseja acabar com qualquer vestígio do pacote em questão, geralmente quando ele realmente não for mais necessário; -l, --list: Lista o estado de instalação do pacote. Útil para saber se um pacote está instalado, ou se apresenta algum problema, como dependências quebradas ou se está desconfigurado; --get-selections [arquivo]: Exibe uma lista com os pacotes do sistema, bem como o seu estado; -L, --list-files: Exibe os arquivos instalados pelo pacote selecionado; -S, --search [padrão]: Procura pelo padrão informado na lista de arquivos instalados pelo pacote; -s : Exibe o status do pacote selecionado.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

110

GNU/Linux - módulo 1 - Introdução

Exemplos:
$ dpkg -i opera_8.01-20050615.5-shared-qt_en_sarge_i386.deb Selecionando pacote previamente não selecionado opera. (Lendo banco de dados ... 91345 arquivos e diretórios atualmente instalados.) Descompactando opera (de opera_8.01-20050615.5-shared-qt_en_sarge_i386.deb) ... Instalando opera (8.01-20050615.5) ...

Instala o pacote do navegador Opera no sistema operacional.
$ dpkg --info opera_8.01-20050615.5-shared-qt_en_sarge_i386.deb novo pacote debian, versão 2.0. tamanho 4257754 bytes: arquivo de controle= 4241 bytes. 34 bytes, 2 linhas conffiles 826 bytes, 20 linhas control 5932 bytes, 85 linhas md5sums 1654 bytes, 55 linhas * postinst #!/bin/sh 1068 bytes, 38 linhas * postrm #!/bin/sh 1011 bytes, 40 linhas * prerm #!/bin/sh Package: opera Version: 8.01-20050615.5 Section: non-free/web Priority: optional Architecture: i386 Depends: libc6 (>= 2.1.3), xlib6g (>= 3.3.6) | xlibs, libqt3c102-mt Recommends: libmotif (>= 2) | lesstif2, libaspell15 Conflicts: opera-static Replaces: opera-static Provides: opera-static, www-browser Installed-Size: 9508 Maintainer: Christian Westgaard <christian.westgaard@opera.com> Description: The Opera Web Browser Welcome to the Opera Web browser. It is smaller, faster, customizable, powerful, yet user-friendly. Opera eliminates sluggish performance, HTML standard violations, desktop domination, and instability. This robust Web browser lets you navigate the Web at incredible speed and offers you the best Internet experience. The binaries were built on a RedHat-9.0 (shrike) installation using gcc-3.2.2.

Exibe as informações do pacote do navegador Opera.
$ dpkg -r opera (Lendo banco de dados ... 91447 arquivos e diretórios atualmente instalados.) Removendo opera ...

Remove o programa do sistema operacional.
$ dpkg --purge opera (Lendo banco de dados ... 91447 arquivos e diretórios atualmente instalados.) Removendo opera ... Apagando arquivos de configuração de opera ...

Remove o programa e todos os seus arquivos de configuração.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

111

GNU/Linux - módulo 1 - Introdução

$ dpkg -l opera Desejado=U=Desconhecido/Instalar/Remover/aPagar/H=Manter | status=Não/Instalado/arquiv.-Config./U=Descomp./Falhou-config/H=semi-inst. |/ Erro?=(nenhum)/H=Mantido/precisa-Reinst./X=os dois problemas (status,Erro: maiúsculas=ruim) ||/ Nome Versão Descrição +++-===============-==============-============================================ ||/ Nome Versão Descrição +++-=========================-=========================================================================================== ii opera 8.01-20050615.5 The Opera Web Browser

Lista o estado do pacote do navegador Opera.
$ dpkg -l |less Desejado=U=Desconhecido/Instalar/Remover/aPagar/H=Manter | status=Não/Instalado/arquiv.-Config./U=Descomp./Falhou-config/H=semi-inst. |/ Erro?=(nenhum)/H=Mantido/precisa-Reinst./X=os dois problemas (status,Erro: maiúsculas=ruim) ||/ Nome Versão Descrição +++-===============-==============-============================================ ||/ Nome Versão Descrição +++-==============-==============-============================================ ii aalib1 1.4p5-22 ascii art library ii adduser 3.63 Add and remove users and groups ii akode 3.3.2-1 akode arts plugin ii apache2-common 2.0.54-4 next generation, scalable, extendable web se ii apache2-mpm-pr 2.0.54-4 traditional model for Apache2 ii apache2-utils 2.0.54-4 utility programs for webservers ii apt 0.5.28.6 Advanced front-end for dpkg ii apt-utils 0.5.28.6 APT utility programs ii aptitude 0.2.15.9-2 terminal-based apt frontend ii ardour-doc 0.9beta28-1 Ardour documentation ii ardour-gtk 0.9beta28-1 digital audio workstation (graphical gtk int ii ardour-session 0.9beta28-1 Ardour session collaboration tool ii ark 3.3.2-1 KDE archiving tool ii arts 1.3.2-3 Analog Realtime Synthesizer (aRts) metapacka ii artsbuilder 3.3.2-1 Arts synthesizer designer ii at 3.1.8-11 Delayed job execution and batch processing ii avidemux 2.0.40-0.0 a small editing software for avi (especially ii base-config 2.53.10 Debian base system configurator ii base-files 3.1.2 Debian base system miscellaneous files ii base-passwd 3.5.9 Debian base system master password and group ii bash 2.05b-26 The GNU Bourne Again SHell ii bc 1.06-15 The GNU bc arbitrary precision calculator la ii bin86 0.16.14-1.2 16-bit x86 assembler and loader ii bind9-host 9.2.4-1 Version of 'host' bundled with BIND 9.X ii binutils 2.15-6 The GNU assembler, linker and binary utiliti ii bison 1.875d-1 A parser generator that is compatible with Y ii bittorrent 3.4.2-3sarge0. Scatter-gather network file transfer ii blop 0.2.8-1 Bandlimited wavetable-based oscillator plugi :

Caso não seja passado o nome do pacote no uso a opção -l, o dpkg lista a situação de todos os pacotes. Neste caso utilizou-se o direcionador | para que a listagem tenha quebra de página.
Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp 112

GNU/Linux - módulo 1 - Introdução

$ dpkg --get-selections > lista-pkg.txt

Utilizando o dpkg com esta opção, ele direcionará para o arquivo lista-pkg.txt, a listagem de todos os pacotes instalados em seu sistema operacional, com seus respectivos estados de instalação.

$ dpkg -L nerolinux /. /usr /usr/bin /usr/bin/nero /usr/lib /usr/lib/libCDCopy.so /usr/lib/libNeroAPI.so /usr/lib/libNeroASPI.so /usr/lib/libNeroCDR.so /usr/lib/libNeroErr.so /usr/lib/libNeroSCSI.so /usr/lib/libNewTrf.so /usr/share /usr/share/nero /usr/share/nero/CDROM.CFG /usr/share/nero/DosBootImage.ima /usr/share/nero/Nero.txt /usr/share/nero/desktop /usr/share/nero/desktop/NeroLINUX.template /usr/share/nero/docs /usr/share/nero/docs/EULA /usr/share/nero/docs/Manual.pdf /usr/share/nero/libCDROM.so /usr/share/nero/libFATImporter.so /usr/share/nero/libGenCueSheet.so /usr/share/nero/libGenFAT.so /usr/share/nero/libGenHFS.so /usr/share/nero/libGenHyb.so /usr/share/nero/libGenISO.so /usr/share/nero/libGenUDF.so /usr/share/nero/libGenerator.so /usr/share/nero/libISOFS.so /usr/share/nero/libImage.so /usr/share/nero/libImageGen.so /usr/share/nero/libMmc.so /usr/share/nero/libNRPrimeraComposer.so /usr/share/nero/libNeroRobo.so /usr/share/nero/libUDFImporter.so /usr/share/nero/pixmaps /usr/share/nero/pixmaps/nero.png

Lista os arquivos instalados pelo pacote.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

113

GNU/Linux - módulo 1 - Introdução

$ dpkg -S nero nerolinux: /usr/share/nero/libGenUDF.so nerolinux: /usr/share/nero/docs/Manual.pdf nerolinux: /usr/share/nero/libGenHFS.so nerolinux: /usr/share/nero/pixmaps/nero.png nerolinux: /usr/share/nero/desktop/NeroLINUX.template nerolinux: /usr/bin/nero nerolinux: /usr/share/nero/libMmc.so nerolinux: /usr/share/nero/libNeroRobo.so nerolinux: /usr/share/nero/DosBootImage.ima kdebase-data: /usr/share/wallpapers/seaofconero.jpg nerolinux: /usr/share/nero/libGenFAT.so nerolinux: /usr/share/nero/libImage.so nerolinux: /usr/share/nero/docs nerolinux: /usr/share/nero/libNRPrimeraComposer.so nerolinux: /usr/share/nero/libGenHyb.so nerolinux: /usr/share/nero/libCDROM.so nerolinux: /usr/share/nero/libImageGen.so nerolinux: /usr/share/nero nerolinux: /usr/share/nero/libGenCueSheet.so nerolinux: /usr/share/nero/libGenerator.so nerolinux: /usr/share/nero/libUDFImporter.so nerolinux: /usr/share/nero/docs/EULA nerolinux: /usr/share/nero/desktop nerolinux: /usr/share/nero/libISOFS.so nerolinux: /usr/share/nero/pixmaps nerolinux: /usr/share/nero/Nero.txt nerolinux: /usr/share/nero/libFATImporter.so nerolinux: /usr/share/nero/libGenISO.so nerolinux: /usr/share/nero/CDROM.CFG

Realiza uma pesquisa parecida com a do exemplo anterior.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

114

GNU/Linux - módulo 1 - Introdução

$ dpkg -s opera Package: opera Status: install ok installed Priority: optional Section: non-free/web Installed-Size: 9508 Maintainer: Christian Westgaard <christian.westgaard@opera.com> Architecture: i386 Version: 8.01-20050615.5 Replaces: opera-static Provides: opera-static, www-browser Depends: libc6 (>= 2.1.3), xlib6g (>= 3.3.6) | xlibs, libqt3c102-mt Recommends: libmotif (>= 2) | lesstif2, libaspell15 Conflicts: opera-static Conffiles: /etc/opera6rc 731c625736b38d6caf899c3c3b1cb490 /etc/opera6rc.fixed 9025d2d3e4549b0bf2c3ee3a65c3749a Description: The Opera Web Browser Welcome to the Opera Web browser. It is smaller, faster, customizable, powerful, yet user-friendly. Opera eliminates sluggish performance, HTML standard violations, desktop domination, and instability. This robust Web browser lets you navigate the Web at incredible speed and offers you the best Internet experience. The binaries were built on a RedHat-9.0 (shrike) installation using gcc-3.2.2.

Exibe o estado do pacote.

APT

O APT (Advanced Packaging Tool) é uma avançada interface para o sistema de gerenciamento de pacotes Debian, consistindo de vários programas cujos nomes tipicamente começam com 'apt-'. O apt-get, apt-cache e o apt-cdrom são ferramentas de linha de comando para gerenciar pacotes. Eles também funcionam como programas back-end para outras ferramentas, como o dselect e o aptitude. O APT trabalha procurando os pacotes nos repositórios Debian, baixando-os e instalando-os automaticamente ao comando do usuário, resolvendo automaticamente dependências e conflitos. Além de instalar, o APT também permite remover e pesquisar pacotes. Configurando o APT Para utilizar o APT é necessário, antes de mais nada, configurá-lo. A primeira coisa a ser fazer é escolher um repositório de pacotes do Debian, de onde os pacotes serão baixados. Essa informação será adicionada no arquivo /etc/apt/sources.list. Neste arquivo ficam listadas as fontes de pacotes do Debian, que podem ser:

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

115

GNU/Linux - módulo 1 - Introdução ✔ ✔ ✔ ✔

CD-ROM's do Debian repositórios FTP repositórios HTTP repositórios locais

Veja um exemplo de conteúdo do sources.list:
# deb file:///cdrom/ sarge main # deb cdrom:[Debian GNU/Linux 3.1 r0 _Sarge_ - Official i386 Binary-1 (20050605)]/ unstable contrib main # deb http://cdd.debian-br.org/debian-br-cdd/ 1.0 main # Utilizado para os pacotes da distribuição deb http://ftp.unicamp.br/pub/debian/ stable main contrib non-free deb-src http://ftp.unicamp.br/pub/debian/ stable main contrib non-free # Utilizado para o pacote pgadmin3 deb ftp://ftp2.fr.postgresql.org/postgresql/pgadmin3/release/debian sarge pgadmin # Utilizado para o pacote mplayer e w32codecs deb ftp://ftp.nerim.net/debian-marillat/ stable main deb http://security.debian.org/ stable/updates main contrib

Cada uma das linhas corresponde a uma fonte utilizada pelo APT. As linhas comentadas com um # não serão utilizadas. Cada linha é formada da seguinte forma:
<pacote> <URI> <distribuição> <seções>

Sendo:

pacote: Os repositórios do Debian contém, além dos binários .deb, os fontes de alguns pacotes, que podem ser baixados com o APT. Para configurar o APT para baixar os pacotes .deb, colocamos deb, para baixar os fontes, colocamos deb-src. URI: A localização principal dos arquivos. O APT pode buscar pacotes de diversos locais, utilizando os seguintes protocolos: file:/ - arquivos gravados localmente, no HD; cdrom:/ - CD-ROM oficial de alguma versão do Debian; http:// - servidor de arquivos HTTP (Internet); ftp:// - servidor de arquivos FTP (Internet); copy:/ - o mesmo que o protocolo file:/, com a diferença de que os arquivos são copiados para o diretório de cache, ao invés de serem usados diretamente a partir de seu local original; ✔ rsh, ssh - pode-se ainda utilizar conexão a um computador remoto utilizando uma conexão segura via SSH ou RSH;
✔ ✔ ✔ ✔ ✔

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

116

GNU/Linux - módulo 1 - Introdução ✔

distribuição: Os pacotes do Debian são separados em categorias, de acordo com seu estágio de estabilidade. Aqui, deve-se especificar qual categoria de pacotes se deseja utilizar. As categorias são:
✔ ✔ ✔ ✔

stable: pacotes exaustivamente testados, considerados estáveis, porém as vezes antigos; testing: pacotes em fase de testes, mais recentes que os pacotes da stable; unstable: versões mais recente dos pacotes Debian; versões do Debian: existem ainda, as versões com os pacotes oficiais das versões do Debian. Para acessá-las, basta utilizar o codinome das distribuições, como woody, sarge ou sid; outras: existem muitos repositórios não-oficiais do Debian que utilizam outras notações de distribuições.

seções: Nos repositórios oficiais existem 3 seções de pacotes, a saber:
✔ ✔ ✔

main: seção principal, contendo somente pacotes de Software Livre; non-free: pacotes que não são Software Livre, porém gratuitos; contrib: pacotes que são Software Livre, mas que precisam de alguns pacotes da seção non-free para funcionarem.

Assim, considere a seguinte linha:
deb http://ftp.unicamp.br/pub/debian/ unstable main contrib non-free

Pode-se ver que ela configura o APT para baixar pacotes .deb. Se quiser configurar o APT para baixar códigos-fontes, basta trocar deb por deb-src:
deb-src http://ftp.unicamp.br/pub/debian/ unstable main contrib non-free

Neste caso, ele baixa pacotes da distribuição unstable. Se estiver utilizando o Debian num servidor, é interessante baixar os pacotes da versão stable. Para isso, basta trocar unstable por stable:
deb http://ftp.unicamp.br/pub/debian/ stable main contrib non-free

O APT vai procurar pacotes em todas as seções, ou seja, main, contrib e non-free. Se você desejar apenas Software Livre no seu sistema, vamos deixar apenas a seção main configurada, removendo as seções non-free e contrib:
deb http://ftp.unicamp.br/pub/debian/ stable main

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

117

GNU/Linux - módulo 1 - Introdução

Adicionando um CD-ROM Debian no sources.list Para utilizar pacotes de um CD-ROM Debian, utilizaremos a ferramenta apt-cdrom. Basta colocar o CD contendo os pacotes Debian na unidade, e digitar o seguinte comando:
$ apt-cdrom add

O CD será analisado e, se forem achados pacotes Debian nele, será criada automaticamente uma entrada no sources.list, como essa:
deb cdrom:[Debian GNU/Linux testing _Sarge_ - Official Snapshot i386 Binary-1 (20050226)]/ unstable contrib main

Adicionando um repositório remoto no sources.list Um método muito útil de configurar as entradas do sources.list é através da ferramenta apt-setup. Trata-se de uma interface que permite ao usuário adicionar novas entradas para o sources.list de modo rápido e fácil. O apt-setup oferece uma lista de repositório oficiais Debian, organizados por país. Pode-se utilizar o apt-setup para adicionar CD-ROM's Debian e repositórios locais (protocolos file:/ e copy:/) ao sources.list. Sua sintaxe é simple:
$ apt-setup

Atualizando a Lista de Pacotes Uma vez configurado o sources.list, o APT já pode ser utilizado para baixar e instalar os pacotes. A primeira coisa a se fazer é atualizar o APT, baixando a lista de pacotes disponíveis. Para isso, usare-se o seguinte comando:
$ apt-get update Atingido http://security.debian.org stable/updates/main Packages Atingido http://security.debian.org stable/updates/main Release Atingido http://security.debian.org stable/updates/contrib Packages Atingido http://security.debian.org stable/updates/contrib Release Atingido ftp://ftp.nerim.net stable/main Packages Atingido ftp://ftp.nerim.net stable/main Release Atingido ftp://ftp2.fr.postgresql.org sarge/pgadmin Packages Atingido ftp://ftp2.fr.postgresql.org sarge/pgadmin Release Atingido ftp://ftp.br.debian.org stable/main Packages Atingido ftp://ftp.br.debian.org stable/main Release Atingido ftp://ftp.br.debian.org stable/main Sources Atingido ftp://ftp.br.debian.org stable/main Release Lendo Lista de Pacotes... Pronto

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

118

GNU/Linux - módulo 1 - Introdução

Instalando pacotes com o APT Agora, pode-se instalar os pacotes facilmente, utilizando o apt-get, da seguinte forma:
$ apt-get install <pacotes>

Para instalar, por exemplo, o vncserver, utilizamos:
$ apt-get install vncserver Lendo Lista de Pacotes... Pronto Construindo Árvore de Dependências... Pronto Os pacotes extra a seguir serão instalados: vnc-common Pacotes sugeridos : xvncviewer vnc-java Os NOVOS pacotes a seguir serão instalados: vnc-common vncserver 0 pacotes atualizados, 2 pacotes novos instalados, 0 a serem removidos e 0 não atualizados. É preciso fazer o download de 553kB de arquivos. Depois de desempacotamento, 1303kB adicionais de espaço em disco serão usados. Quer continuar? [S/n]

Nesse procedimento, o APT procura na lista de pacotes (gerada através do comando apt-get update) pelo pacote vncserver. Uma vez encontrado, ele verifica se a versão disponível para instalação é mais nova que a versão instalada. Se for, ele verifica se existem dependências, ou seja, se existe algum pacote necessário para o vncserver funcionar. Se existir, ele insere esses pacotes na lista de instalação. Depois disso, ele exibe a lista dos pacotes que serão instalados. O APT ainda mostra uma lista de pacotes sugeridos. Os pacotes sugeridos são aqueles que fornecem alguma funcionalidade extra ao pacote selecionado para instalação. Por fim, o APT exibe a lista dos pacotes que serão instalados, e mostra o resumo da instalação, especificando quantos pacotes serão instalados, atualizados, removidos e não atualizados, e qual o tamanho do download que precisa ser feito. Se algum pacote além dos que você especificou precisar ser instalado, o APT pedirá a confirmação antes de iniciar a instalação. Para confirmar, digite s ou pressione Enter. Os pacotes são baixados e instalados, automaticamente.
Obtendo:1 ftp://ftp.br.debian.org stable/main vnc-common 3.3.7-7 [60,4kB] Obtendo:2 ftp://ftp.br.debian.org stable/main vncserver 3.3.7-7 [492kB] Baixados 553kB em 3s (144kB/s) Selecionando pacote previamente não selecionado vnc-common. (Lendo banco de dados ... 91447 arquivos e diretórios atualmente instalados.) Descompactando vnc-common (de .../vnc-common_3.3.7-7_i386.deb) ... Selecionando pacote previamente não selecionado vncserver. Descompactando vncserver (de .../vncserver_3.3.7-7_i386.deb) ... Instalando vnc-common (3.3.7-7) ... Instalando vncserver (3.3.7-7) ...

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

119

GNU/Linux - módulo 1 - Introdução

Removendo pacotes com o APT Pode-se remover pacotes facilmente, utilizando o apt-get, da seguinte forma:
$ apt-get remove <pacotes>

Para remover, por exemplo, o vncserver, utilizamos:
$ apt-get remove vncserver Lendo Lista de Pacotes... Pronto Construindo Árvore de Dependências... Pronto Os pacotes a seguir serão REMOVIDOS: vncserver 0 pacotes atualizados, 0 pacotes novos instalados, 1 a serem removidos e 0 não atualizados. É preciso fazer o download de 0B de arquivos. Depois de desempacotar, 1163kB de espaço em disco serão liberados. Quer continuar? [S/n]

O procedimento aqui é parecido. Primeiro, o APT procura na lista de pacotes para ver se existe um pacote instalado com o nome informado. Se existir, ele procura na lista de dependências, para ver se existe algum outro pacote que precisa do pacote informado para funcionar. Depois disso, o APT informa o número de pacotes que serão removidos. Depois, exibe a quantidade de espaço em disco que será liberado. O APT solicita a confirmação para realizar a desinstalação. Para confirmar, digita-se <s> ou pressiona-se Enter.
(Lendo banco de dados ... 91475 arquivos e diretórios atualmente instalados.) Removendo vncserver ...

A remoção é feita automaticamente. Nesse processo não são removidos os arquivos de configuração utilizados pelos programas. Dessa forma, se você quiser reinstalar o programa futuramente, ele estará configurado, da mesma forma como estava antes de você removê-lo. Se você quiser remover completamente o pacote, incluindo os arquivos de configuração, utilize o parâmetro –-purge.

$ apt-get remove -–purge vncserver

Procurando Pacotes O Debian possui em seu repositório milhares de pacotes. Seria muito complicado se você precisasse saber antecipadamente o nome do pacote que deseja instalar ou remover. Por isso mesmo, o APT conta com uma ferramenta para localizar pacotes e exibir informações sobre eles: o apt-cache. Para listar os pacotes que correspondem a determinadas palavras-chave, utilizamos o parâmetro search, da seguinte forma:

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

120

GNU/Linux - módulo 1 - Introdução

$ apt-cache search <palavras-chave>

Por exemplo, vamos procurar os pacotes de impressão do GIMP, utilizando as palavraschave gimp e print:

$ apt-cache search gimp print cinepaint - motion picture image painting and retouching tool cupsys-driver-gimpprint - Gimp-Print printer drivers for CUPS cupsys-driver-gimpprint-data - Gimp-Print printer drivers for CUPS escputil - A maintenance utility for Epson Stylus printers foomatic-db - linuxprinting.org printer support - database foomatic-db-engine - linuxprinting.org printer support - programs foomatic-db-gimp-print - linuxprinting.org printer support - database for GimpPrint printer drivers gimpprint-doc - Users' Guide for Gimp-Print and CUPS gimpprint-locales - Locale data files for Gimp-Print gpaint - GNU Paint - a small, easy to use paint program for GNOME ijsgimpprint - Inkjet Server - Ghostscript driver for Gimp-Print libgimpprint1 - The Gimp-Print printer driver library libgimpprint1-dev - Development files for the Gimp-Print library libgimpprint1-doc - Documentation for the Gimp-Print printer driver library libijs-0.35 - IJS raster image transport protocol: shared library libijs-dev - IJS raster image transport protocol: development files xsane - GTK+-based X11 frontend for SANE (Scanner Access Now Easy) xsane-common - GTK+-based X11 frontend for SANE (Scanner Access Now Easy)

Para exibir informações mais detalhadas sobre um programa, podemos utilizar os parâmetros show e showpkg. Vejamos, por exemplo, as informações detalhadas do pacote gimp:

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

121

GNU/Linux - módulo 1 - Introdução

$ apt-cache show gimp Package: gimp Priority: optional Section: graphics Installed-Size: 8156 Maintainer: Ari Pollak <ari@debian.org> Architecture: i386 Version: 2.2.6-1 Replaces: gimp1.2 (<< 1.2.5-1), gimp1.3, gimp-nonfree, gimp-data (<< 2.0.2-4) Provides: gimp2.0, gimp-nonfree Depends: wget, gimp-data (= 2.2.6-1), aalib1 (>= 1.2), libart-2.0-2 (>= 2.3.16), libatk1.0-0 (>= 1.7.2), libc6 (>= 2.3.2.ds1-4), libexif10, libexpat1 (>= 1.95.8), libfontconfig1 (>= 2.3.0), libfreetype6 (>= 2.1.7), libgimp2.0 (>= 2.2.0+rel), libgimpprint1 (>= 4.2.7), libglib2.0-0 (>= 2.6.0), libgtk2.0-0 (>= 2.6.0), libice6 | xlibs (>> 4.1.0), libjpeg62, liblcms1 (>= 1.08-1), libmng1 (>= 1.0.3-1), libpango1.0-0 (>= 1.8.1), libpng12-0 (>= 1.2.8rel), libsm6 | xlibs (>> 4.1.0), libtiff4, libwmf0.2-7 (>= 0.2.8.3), libx11-6 | xlibs (>> 4.1.0), libxmu6 | xlibs (>> 4.1.0), libxpm4 | xlibs (>> 4.1.0), libxt6 | xlibs (>> 4.1.0), zlib1g (>= 1:1.2.1) Recommends: gimp-svg Suggests: gimp-help-en | gimp-help, gimp-python, libgimp-perl, gimp-data-extras, libasound2 (>= 1.0.0) Conflicts: gimp1.2 (<< 1.2.5-1), gimp1.3, gimp-nonfree, gimp-data (<< 2.0.2-4) Filename: pool/main/g/gimp/gimp_2.2.6-1_i386.deb Size: 3087226 MD5sum: 18d0bfa32ea03ac1de835bf3a2122a99 Description: The GNU Image Manipulation Program The GIMP lets you draw, paint, edit images, and much more! GIMP includes the functionality and plug-ins of other famous image editing and processing programs. If you'd like to use a MIDI device as an input controller in GIMP, install libasound2 and read the how-to at /usr/share/doc/gimp/README.MIDI Task: desktop

A diferença entre show e showpkg é que show mostra detalhes relativos ao pacote, como descrição, mantenedor, etc., enquanto showpkg exibe informações referentes às dependências simples e reversas do pacote.

Atualizando o Sistema O APT possui um recurso que permite atualizar todos os pacotes instalados no sistema. Isso pode ser feito utilizando as opções upgrade e dist-upgrade do apt-get:
$ apt-get upgrade $ apt-get dist-upgrade

A diferença entre o upgrade e o dist-upgrade está no mecanismo de resolução de dependências, que é mais aprimorado quando se usa o dist-upgrade, e que é o recomendado. Pode-se usar o dpkg para marcar os pacotes que não devem ser
Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp 122

GNU/Linux - módulo 1 - Introdução

atualizados em hipótese alguma. Esse recurso é útil para evitar a atualização de componentes importantes do sistema, cujas atualizações podem ser instáveis, ou no caso de programas que tenham sido instalados manualmente.

Limpando o Cache de Pacotes Os pacotes baixados da Internet pelo APT ficam armazenados no diretório /var/cache/apt/archives, para serem usados no caso de reinstalação. Esses pacotes ocupam espaço em disco, que muitas vezes pode não ser um recurso disponível. Por isso, o apt-get conta com duas opções para limpeza de cache: clean e autoclean. O clean apaga todos os pacotes do diretório /var/cache/apt/archives. Seu uso é simples:
$ apt-get clean

Já o autoclean apaga apenas os pacotes que possuem versões mais novas disponíveis para download. É recomendável utilizar o autoclean sempre após fazer a atualização da lista de pacotes do APT (apt-get update).

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

123

GNU/Linux - módulo 1 - Introdução

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

124

GNU/Linux - módulo 1 - Introdução

Capítulo 8

Aplicativos para GNU/Linux
Neste capítulo o usuário conhecerá alguns aplicativos que podem ser úteis para o uso diário no GNU/Linux.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

125

GNU/Linux - módulo 1 - Introdução

Este capítulo foi colocado neste curso para as pessoas que nunca utilizaram o GNU/Linux, e que querem conhecer softwares equivalentes em seu uso diário no Microsoft Windows. Alguns usuário têm uma surpresa enorme com a evolução dos aplicativos desenvolvidos para GNU/Linux.

8.1- Suítes de Escritórios

OpenOffice.org : Desenvolvido a partir do código-fonte do StarOffice, cedido pela Sun Microsystems à comunidade, o OpenOffice.org é hoje se não a melhor, a mais difundida suíte de escritórios livre do mercado, muito poderosa, com todos os recursos esperados de uma suíte de escritórios completa. Fazem parte da suíte os softwares Writer (editor de textos), Calc (planilha eletrônica), Draw (desenho vetorial), Impress (apresentação de slides) e Math (fórmulas matemáticas). Para a versão 2.0, ainda em fase de testes, foi incorporado um software de banco de dados, o Base. Koffice : O KOffice é a suíte de escritórios do KDE, bastante completa e bem mais leve que o OpenOffice.org, ideal para uso em máquinas mais modestas e por aqueles usuários que utilizam tão somente os recursos básicos de uma suíte de escritórios.

8.2- Internet

Navegadores (Browsers) Mozilla Firefox : Desenvolvido pela Fundação Mozilla, o Mozilla Firefox é um browser leve, poderoso, fácil de usar e com vários recursos. Possui versões para GNU/Linux, Windows e MacOS. Entre os seus recursos estão a navegação por abas, pesquisa inteligente, controles avançados de privacidade e segurança, acelerador de downloads, suporte a temas para personalizar a aparência e a extensões que fornecem todo tipo de funcionalidades extras para o navegador. Konqueror : O Konqueror é o navegador padrão do KDE. Também funciona como gerenciador de arquivos, o que lhe confere uma grande praticidade. Seus recursos incluem suporte a abas e aos plugins para Mozilla/Netscape.
126

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

GNU/Linux - módulo 1 - Introdução ✔

Epiphany : Navegador padrão do ambiente GNOME, desenvolvido sobre a engine Gecko, a mesma usada pelo Mozilla. As versões novas permitem adicionar recursos ao navegador em forma de extensões. Infelizmente ele não é compatível com as extensões do Firefox. Lynx : Navegador para modo texto, incrivelmente leve, ideal para testes de acesso a sites e acesso a serviços configuráveis via Web. Extremamente simples, o lynx não suporta cores e outros recursos como renderização de tabelas e frames. Links : O links é um navegador em modo texto como o lynx, porém com alguns recursos adicionais, como renderização de tabelas, suporte a frames, download em background e suporte a cores. Existe ainda uma versão modificada do links, chamada links2, que fornece a esse navegador o suporte a imagens e mouse através de framebuffer.

Clientes de E-Mail Mozilla Thunderbird : O Mozilla Thunderbird é um cliente de email seguro e versátil, extremamente poderoso. Entre os seus recursos, um grande destaque é o seu filtro anti-SPAM inteligente, que analisa as mensagens classificadas como SPAM, de modo que, com o passar do tempo, o filtro se a auto-aperfeiçoa, ficando cada vez mais eficiente. Outros recursos importantes são os de segurança, como S/MIME, assinatura digital, criptografia de mensagens, suporte para certificados e dispositivos de segurança. Além de todos os recursos básicos de todos os clientes de email, o Mozilla Thunderbird suporta feeds RSS, filtros avançados de mensagens e extensões, que lhe incorporam todo tipo de funcionalidades extras. Evolution : Desenvolvido pela Ximian, empresa de Miguel de Icaza recentemente adquirida pela Novell, o Evolution é um cliente de email tão ou mais poderoso que o Mozilla Thunderbird, rápido, seguro, fácil de usar, altamente configurável e totalmente integrado ao sistema (se o ambiente gráfico em uso for o GNOME). Suas novas versões possuem suporte a servidores Microsoft Exchange e Novell Groupwise. Mutt : O Mutt é um cliente de email em modo texto pra *NIX. Extremamente leve pelo fato de não utilizar interface gráfica, mas nem por isso limitado. O Mutt é extremamente poderoso. Sua interface, ao contrário do que se possa esperar de um programa em modo texto, é bastante intuitiva, e entre seus recursos estão a visualização de emails por threads, recurso muito útil para quem faz parte de vários listas de discussão (comum entre usuários de GNU/Linux).

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

127

GNU/Linux - módulo 1 - Introdução ✔

Mensagens Instantâneas GAIM : O GAIM é muito popular entre os usuários de GNU/Linux, pela sua praticidade, velocidade e estabilidade. Utilizando a biblioteca gráfica GTK, o Gaim oferece suporte a 7 protocolos diferentes: AIM/ICQ, Gadu-Gadu, GroupWise, IRC, Jabber, MSN, Napster e Yahoo, além de suportar conexões múltiplas, o que permite, entre outras coisas, que todas as pessoas que utilizam o computador possam estar conectadas ao mesmo tempo. Outro ponto muito interessante é o excelente controle de privacidade, onde pode-se determinar facilmente quais as pessoas que podem conversar com você, além do excelente número de recursos de personalização da exibição de informações, temas para personalizar sua aparência e plugins que lhe adicionam recursos. GAIM-vv : O GAIM-vv é uma versão do Gaim com suporte a áudio e vídeo, não suportados pelo Gaim original. Kopete : Outro programa de mensagens instantâneas muito popular, o Kopete, assim como o Gaim, possui suporte a diversos protocolos e conexões múltiplas. A diferença maior está na interface, na localização das opções e nos recursos. aMSN : Esse poderoso aplicativo é um clone do MSN Messenger da Microsoft, muito similar tanto na aparência quanto nos recursos. Suporta apenas o protocolo MSN, e possui suporte a temas para personalizar a aparência e plugins para adicionar recursos. Xchat : Excelente cliente de IRC, com diversas ferramentas para a utilização desse protocolo de comunicação tão difundido, tais como lista de servidores, busca de canais, notificação de amigos, gerenciador de transferência de arquivos, múltiplas conexões, além de uma interface muito bela, com suporte a transparências e plugins/scripts. Irssi : Cliente de IRC para modo texto, extremamente leve e versátil. Um dos seus recursos mais úteis é o suporte ao bash completion, que completa o caminho de diretórios e arquivos automaticamente através do uso da tecla TAB, muito útil na hora de enviar arquivos.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

128

GNU/Linux - módulo 1 - Introdução

8.3- Multimídia

Reprodutores (Players) XMMS : O X Multimedia System é um clone do popular Winamp para Windows, sendo muito compatível com esse, suportando suas skins e alguns de seus plugins. A princípio, o XMMS reproduz apenas áudio, mas existem plugins que permitem que ele reproduza vídeo. Xine : O Xine é um reprodutor multimídia poderoso, altamente personalizável, utilizado principalmente para reprodução de vídeos. Seus recursos incluem seleção de drivers de áudio e vídeo, configuração de subtítulos, efeitos de vídeo, suporte a TV, entre tantos outros. Kaffeine : O Kaffeine é um frontend para outros reprodutores multimídia (o padrão é o Xine), feito para o KDE. Entre seus recursos adicionais estão a integração a browsers, permitindo reproduzir streamings criados para o Windows Media Player. Amarok : Reprodutor para o KDE, extremamente poderoso, utiliza um banco de dados MySQL ou SQLite para armazenar seus dados. Sua playlist inteligente analisa as preferências musicais do usuário, e reproduz seqüencialmente as músicas no seu estilo preferido. Outro recurso interessante é a busca por capas, que procura na Internet pela capa do álbum a que cada música pertence, para que seja exibido durante a reprodução. Sua aparência é totalmente personalizável através de skins, e possui suporte a plugins que lhe incorporam recursos adicionais.

Conversores RipperX : O RipperX é um excelente programa para converter áudio de CD para formato digital, com suporte a CDDB, que procura na Internet informações sob o álbum a ser convertido, como artista e nomes das faixas. O RipperX utiliza o cdparanoia para extrair as músicas dos CD's, e depois convertê-as para o formato escolhido (MP3, Ogg Vorbis, WMA, WAV) através do codec apropriado. Grip : Como o RipperX, o Grip utiliza o cdparanoia para extrair as músicas do CD, possui suporte a CDDB e suporta diversos formatos de áudio. As diferenças maiores ficam por conta da interface. Avidemux : Esse é, sem dúvida, um dos mais poderosos conversores multimídia que se conhece. Leve e versátil, o avidemux pode converter
129

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

GNU/Linux - módulo 1 - Introdução

entre formatos de áudio e vídeo. Possui suporte a extração de áudio e vídeo de DVD's, pode extrair áudio de arquivos de vídeo, possui diversos filtros, inclusive suporte a legendas, ajuste de volume, controle de cor, desentrelace e recursos básicos de edição.

Editores Ardour : O Ardour é um software de edição de áudio profissional, extremamente poderoso, com suporte a múltiplas pistas e diversos filtros de efeitos. Protux : Criado por brasileiros e hoje mantido por desenvolvedores de todo o mundo, o Protux é um software de edição de áudio profissional, desenvolvido por profissionais como engenheiros de som, que incluem no Protux os recursos que precisam, o que o tornou uma alternativa muito superior à maioria das soluções proprietárias da categoria, como o SoundForge, da Sony. Rosegarden : Editor de MIDI profissioal, multipista, muito versátil e poderoso, possui os recursos esperados de um sequencer e editor de músicas. Cinelerra : O Cinelerra é um editor de vídeo profissional, que mistura recursos encontrados em softwares comerciais como o Premiere e o AfterEffects, da Adobe. Possui suporte a múltiplas pistas de áudio e vídeo, transições e efeitos, pré-visualização, máscara, camadas e filtros de áudio. Desenvolvido para uso profissional, o Cinelerra trabalha apenas com vídeos em alta resolução nos sistemas NTSC, PAL ou HDTV e nos formatos DV ou sem compressão, o que exige um grande espaço em disco e uma grande quantidade de memória RAM disponível. O Cinelerra pode se comunicar com dispositivos como placas de captura de vídeo e recepção de TV, além de câmeras digitais e outros dispositivos FireWire (IEEE 1394). Um ponto de destaque é o suporte a clustering, que permite utilizar vários computadores para processar simultaneamente as tarefas de renderização de vídeo, acelerando muito esse processo sem a necessidade de investir muito em hardware poderoso. Kino : O Kino é um software profissional de editoração de DVD's, permitindo a geração de estruturas complexas, com menus avançados, múltiplas faixas de áudio, legendas, etc. O Kino trabalha com o formato DV, nos sistemas NTSC e PAL, e tem suporte a dispositivos de captura de vídeo.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

130

GNU/Linux - módulo 1 - Introdução

8.4- Gráficos

The GIMP : O GNU Image Manipulator Program é um dos softwares livres de maior destaque, graças ao seu grande poder, que o tornam uma alternativa real ao onipotente Photoshop, da Adobe. Dentre os seus recursos, merecem destaque os seus filtros extremamente poderosos, além do Script-fu, que permite criar rapidamente botões, animações e todo tipo de efeito para uso em layouts de páginas para a Web. Sodipodi : Excelente software de desenho vetorial, cuja interface é parecida com a do GIMP, dividida em várias janelas. O Sodipodi conta com as principais ferramentas para desenho, como bézier e formas prontas, sendo uma boa alternativa para o CorelDRAW, para trabalhos que não sejam extremamente complexos. Inkscape : Outro software de desenho vetorial que utiliza o mesmo engine do sodipodi. A diferença principal está na interface, que no caso do Inkscape é unificada, com todas as janelas de ferramentas dispostas em uma única janela. OpenOffice.org Draw : Incluso na suíte OpenOffice.org, o Draw é o software de desenho mais poderoso dentre os softwares livres disponíveis para GNU/Linux, contendo todos os recursos básicos de desenho, além de outras ferramentas para a criação de formas de texto avançadas.

8.5- Desktop Publishing (DTP)

Scribus : Uma das áreas ainda pouco explorada no GNU/Linux é o DTP (Desktop Publishing), onde encontramos o Scribus, um software poderoso que pode tranqüilamente substituir o já conhecido (e extinto) Adobe PageMaker.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

131

GNU/Linux - módulo 1 - Introdução

8.6- Visualizadores de Imagem

Eog : Eye of Gnome, é o visualizador de imagens do GNOME. Possui funções básicas de visualização. Gthumb : Visualizador de imagens poderoso, parecido com o ACDSee. Possui visualização de thumbnails, slideshow, rotação de imagens, etc. Tudo que se precisa de um visualizador de imagens. XV : Esse é um visualizador de imagens independente de plataforma, bastante leve. Display : Esse programa faz parte do ImageMagick, leve e de uso simples.

8.7- Emuladores
✔ ✔

DosEmu : Emulador que permite rodar aplicações para DOS sob o GNU/Linux. Wine : O Wine permite rodar aplicativos para Windows no GNU/Linux, funcionando para uma grande quantidade de softwares comerciais como Office, Photoshop, Dreamweaver, Flash e para uma quantidade ainda maior de jogos, entre eles o popular Counter Strike, que roda perfeitamente no GNU/Linux através do Wine. Cedega : O Cedega é um projeto derivado do Wine especialmente para jogos. Pode-se usar uma versão GPL do Cedega, ou então assinar o serviço da Transgaming, que dá assistência necessária para rodar praticamente qualquer jogo no GNU/Linux através desse emulador.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

132

GNU/Linux - módulo 1 - Introdução

8.8- Editores de Texto

Gedit : Editor de texto do GNOME, que vem sendo desenvolvido com a tecnologia GTK+. Apresenta uma interface gráfica amigável, suporte a abas como o Mozilla Firefox, simples de usar, além de suporte a realce de código de várias linguagens de programação. Kate : Editor de texto que acompanha o KDE, utiliza a biblioteca gráfica QT. Seus recursos são mais focados para programação em si, não sendo muito diferentes dos do Gedit. Vi/Vim : O VI é um dos editores de texto mais antigos. Independente de plataforma, ele é encontrado em quase todos os sistemas *NIX. É um editor de texto para console, então não há a necessidade de se usar um ambiente gráfico. Ele é um pouco confuso para quem utiliza o programa pela primeira vez, visto que todos as operações são iniciadas a partir de uma seqüência de teclas. É usado tanto para editar um simples texto como para programar. Torna-se muito prático uma vez que sistemas GNU/Linux armazenam as suas configurações em arquivos de texto que podem, facilmente, ser editados pelo VI. O VIM (abreviatura de vi improved) é uma variação do vi com alguns recursos extras. O uso do vim é igual ao do vi, exceto pelas funções adicionais não encontradas neste. Para aqueles que não abrem mão de uma interface gráfica, há um frontend para o vi/vim, chamado Gvim. Construído em GTK, oferece um conforto a mais para os usuários inexperientes. Pico : Outro editor de texto para console, mais simples de utilizar. Seus comandos são feitos pela tecla CTRL+<letra>, sendo que há um menu na parte inferior da tela, com algumas teclas de atalho mais usadas.

8.9- Desenvolvimento

Quanta Plus : O Quanta Plus é o aplicativo de desenvolvimento Web do KDE, com todos os recursos principais necessários para o webmaster desenvolver desde sites simples em HTML até complexos sistemas Web em PHP. Bluefish : Tão ou mais poderoso que o Quanta, o Bluefish utiliza a biblioteca gráfica GTK, possui suporte a diversas linguagens, além de ferramentas para configuração de CSS e acesso a banco de dados MySQL.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

133

GNU/Linux - módulo 1 - Introdução

Eclipse : IDE para desenvolvimento em Java, que oferece com amplos e inovadores recursos de produtividade como refactoring, geração de código e muitos outros auxílios. Sua interface gráfica é própria, o que lhe confere uma interface com o usuário muito rica de componentes gráficos sem abrir mão do desempenho, e possui suporte a plugins que lhe conferem todo tipo de funcionalidades extras. Anjuta : Anjuta é uma IDE para desenvolvimento em C/C++, com muitos recursos e suporte a integração com softwares para RAD, como o Glade. Glade : Ferramenta para RAD (Rapid Application Development), que permite desenvolver facilmente aplicativos gráficos para a biblioteca GTK. Utiliza várias linguagens, entre elas Python. Seus códigos são gravados em arquivos XML, o que permite a fácil integração com outros aplicativos de desenvolvimento, como o anjuta. Outro recurso interessante é a geração do código em linguagem C que realiza a chamada dos componentes gráficos GTK. jEdit : O jEdit é uma IDE de desenvolvimento para mais de 130 linguagens, suportando destaque de sintaxe para todas elas. Desenvolvido em Java, ele roda em MacOS, OS/2, UNIX, VMS e Windows. Seu forte é o suporte a macros e plugins, desenvolvidos pelos seus usuários e disponibilizados no site oficial do jEdit, que agilizam o desenvolvimento dos aplicativos.

8.10- Terminais Gráficos

Gnome-Terminal : Terminal do GNOME, muito customizável, transparências e efeitos diversos, entretanto um pouco pesado.

com

✔ ✔

Konsole : Terminal do KDE. Possui os mesmos recursos do Gnome-Terminal. Xterm : O terminal mais simples e minimalista, é o terminal que acompanha o Xfree86 e X.org. Não possui muitos recursos, sendo o seu grande atrativo a velocidade de abertura, ideal para máquinas modestas e para usuários que costumam abrir um grande número de janelas de terminal simultaneamente. Aterm : O terminal usado pelo AfterStep, muito popular entre os usuários por permitir a completa personalização, com transparências, cores de fundo, etc. Eterm : Terminal do Enlightment, possui alguns recursos semelhantes ao Aterm. RXVT : Outro terminal minimalista. Como o Xterm, ele é presente na maior parte das distribuições.
134

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

GNU/Linux - módulo 1 - Introdução

8.11- Onde procurar softwares para GNU/Linux

SourceForge : Pense em um local onde milhares de desenvolvedores de Software Livre têm liberdade para desenvolver seus projetos sem se preocupar com hospedagem, criando uma comunidade de desenvolvimento. Pois bem, esse projeto existe e se chama Souceforge http://sourceforge.net. Mas o que é o SourceForge? Pois bem, o SourceForge é uma página que incentiva a criação de comunidades de desenvolvimento de Software Livre. Essas comunidades recebem, gratuitamente, serviços de hospedagem, fórum, bugzilla, enfim, tudo que um projeto de software precisa para crescer. Para se ter uma idéia, existem cerca de 100.000 projetos somente nesse site. Alguns deles são bem conhecidos, outros nem tanto. Qualquer projeto cuja home page seja http://NOME.sourceforge.net é um dos membros dessa comunidade. Não há apenas software para GNU/Linux no SourceForge. Estão presentes também softwares para MacOS, Windows, *NIX, etc. É claro, só podem fazer parte dessa comunidade projetos de Software Livre, publicados sob a licença GPL ou alguma outra aceita pelo projeto. Esse é um dos lugares onde se pode achar software livre de boa qualidade, ou criar um projeto próprio e usufruir das regalias oferecidas pelo SourceForge.

FreshMeat : Outro lugar parecido com esse é o FreshMeat http://freshmeat.net, que também conta com uma grande quantidade de softwares. Se você for ver a lista de projetos mais populares, verá grandes projetos, como o Mplayer, o MySQL, etc. Um diferencial do FreshMeat é a seção de temas http://themes.freshmeat.net, com temas para gerenciadores de janelas.

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

135

GNU/Linux - módulo 1 - Introdução

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

136

GNU/Linux - módulo 1 - Introdução

Capítulo 9

Bibliografia

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

137

GNU/Linux - módulo 1 - Introdução ✔

Apostila do Curso de Linux do Artur de Paula Coutinho http://geocities.yahoo.com.br/arturpc Guia Bozo Linux - Davidson Rodrigues Paulo http://guiabozolinux.sourceforge.net/ Guia Foca Linux - Gleydson Maziolli da Silva http://focalinux.cipsga.org.br/ Site do Bruno Torres http://www.brunotorres.net/ Google - :-) http://www.google.com.br Documentação da Debian-BR-CDD http://cdd.debian-br.org/project/ Dicas-L http://www.dicas-l.unicamp.br

Outros Link: CIPSGA – http://www.cipsga.org.br BR-Linux – http://www.br-linux.org Viva o Linux – http://www.vivaolinux.com.br Free Software Foundation - http://www.fsf.org/ Projeto GNU – http://www.gnu.org Linux Security – http://www.linuxsecurity.com.br/ Guia do hardware – http://www.guiadohardware.net CodigoLivre.org - http://codigolivre.org.br/ Debian-BR - http://www.debianbrasil.org/ SuSe - http://www.novell.com/linux/suse/ RedHat - http://www.redhat.com/ Projeto Fedora - http://www.redhat.com/fedora/ Conectiva (Mandriva) - http://www.conectiva.com.br/cpub/pt/principal/index.php Ubuntu Linux - http://www.ubuntulinux.org/ Mandrake (Mandriva) - http://www.mandrivalinux.com Slackware – http://www.slackware.com Projeto Debian - http://www.debian.org/ Gentoo Linux – http://www.gentoo.org Knoppix - http://www.knoppix.org/ Kurumin Linux - http://www.guiadohardware.net/linux/kurumin/ Muriqui Linux - http://www.muriquilinux.com.br/

✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔

Diretoria de Transferência Tecnológica – Centro de Computação – Unicamp

138

Sign up to vote on this title
UsefulNot useful