12
Sistemas Operacionais Luiz Arthur 1 Sem dúvida o código livre está sendo o grande rival das empresas que produzem software “proprietário”. A filosofia do software livre tem confundido muitas pessoas, pois livre não está associada a software grátis e sim à liberdade. O termo livre refere-se à liberdade de o usuário executar, copiar, distribuir e aperfeiçoar o programa. O distribuidor pode até cobrar uma taxa pelo software, como acontece nas distribuições Linux empacotadas. Desde que o direito de alterar o programa e redistribuí-lo seja preservado, o software continua sendo livre. A maioria das distribuições do Linux vem muito software livre nos CD-ROMS. O próprios site do GNU contém muito software disponível. Uma vez que se possa utilizar software livre, é necessário compilar e instalar estes programas. Um ótimo site para procurar programas é o http://www.freshmeat.net. Porém para isso é necessário entender o conceito de arquivos tarball.

Sistemas Operacionais - Gnu/Linux Instalando Programas

Embed Size (px)

DESCRIPTION

 

Citation preview

Sistemas Operacionais Luiz Arthur1

Sem dúvida o código livre está sendo o grande rival das empresas que produzem software “proprietário”.

A filosofia do software livre tem confundido muitas pessoas, pois livre não está associada a software grátis e sim à liberdade.

O termo livre refere-se à liberdade de o usuário executar, copiar, distribuir e aperfeiçoar o programa.

O distribuidor pode até cobrar uma taxa pelo software, como acontece nas distribuições Linux empacotadas. Desde que o direito de alterar o programa e redistribuí-lo seja preservado, o software continua sendo livre.

A maioria das distribuições do Linux vem muito software livre nos CD-ROMS. O próprios site do GNU contém muito software disponível.

Uma vez que se possa utilizar software livre, é necessário compilar e instalar estes programas. Um ótimo site para procurar programas é o http://www.freshmeat.net.

Porém para isso é necessário entender o conceito de arquivos tarball.

Sistemas Operacionais Luiz Arthur2

Arquivos Tarball

Os arquivos tarball são distribuições de software livre que mantêm uma estrutura de diretório, arquivos fonte, um arquivo Makefile, documentação e outros arquivos, encapsulados em um arquivo tar com compressão de dados gzip. Este método de distribuição de software é muito popular porque os utilitários tar e gzip são muitos comuns.

O resultado é um arquivo de extensão .tar.gz ou .tgz.

Ainda é possível encontrar os arquivos tarball com as extensões .bz2 e .tbz2. Este arquivos são compactados com o bzip2, que utiliza um algoritmo de compressão de dados melhor que o gzip.

Para abrir o conteúdo de um arquivo tarball:

#gzip -d arquivo.tar.gz

O comando gzip descomprime o arquivo .tar.gz e retira a extensão .gz:

#tar xvf arquivo.tar

O utilitários tar extrai o conteúdo do pacote.

Sistemas Operacionais Luiz Arthur3

Pode-se também utilizar formas mais simples:

#tar xvzf arquivo.tar.gz

ou

#gzip -dc arquivo.tar.gz | tar vx

Se o arquivo for compactado com o bzip2, ele deve ser descompactado pelo bunzip2 ou utilizar a opção -d do bzip2:

#tar xvjf arquivo.tar.bz2

ou

#bunzip2 arquivo.tar.bz2

e

# tar xvf arquivo.tar

A saída de qualquer dos comandos citados anteriormente é um conjunto de arquivos sem compactação, ou seja, os arquivo compactados deverão gerar uma estrutura de arquivos/diretórios.

Sistemas Operacionais Luiz Arthur4

Compilando o Código-fonte

Depois de extrair o conteúdo de um pacote de software é necessário compilar e fazer sua instalação.

O compilador mais utilizado no Linux é a Coleção de Compiladores GNU – GCC. Ele compila códigos C ANSI, bem como C++, Java e Fortran. O GCC suporta vários níveis de checagem de erros nos códigos-fonte, produz informações de debug e pode ainda otimizar o arquivo objeto produzido.

O GCC suporta os novos processadores Intel IA-64, permitindo que os programas executem nesta arquitetura.

Alguns programas do pacote do GNU são necessários para compilar um programa código livre. São eles:

Make

O utilitário make é necessário para compilar múltiplos arquivos de código fonte de um projeto. Ele utiliza um arquivo de descrição geralmente nomeado makefileou Makefile.

O conteúdo deste arquivo contém regras que definem as dependências entre arquivos fonte e os comandos necessários para a compilação.

Sistemas Operacionais Luiz Arthur5

A partir arquivo de descrição make ele executa seqüências de comandos que são interpretados pelo shell. Geralmente o compilador gcc é invocado com diversas opções que completam as dependências de outros arquivos objetos e bibliotecas.

“DEPENDENCIA é um pacote (programa) necessário para a compilação ou funcionamento de um dado programa, um programa pode ser DEPENDENTE de um ou mais pacotes”.

Mesmo os menores projetos de software podem contêm vários arquivos que têm interdependência, e o comando make facilita manter e compilar os projetos.

Configure

Alguns projetos incluem um arquivo especial chamado configure. Este arquivo é um script de shell que examina o sistema para verificar se as diversas dependências necessárias para compilar o projeto serão satisfeitas.

O configure procura por compiladores, bibliotecas, utilitários e outros itens necessários. Ele também pode receber informações extras do usuário, como diretivas de compilação, habilitar ou desabilitar opções incluídas ou excluídas do objeto a ser compilado.

Sistemas Operacionais Luiz Arthur6

Se alguma dependência estiver ausente este script (configure) avisa o usuário para que ele satisfaça instalando arquivos e programas necessários ao projeto.

Depois de reunir toda a informação necessária o configure gera um arquivo Makefile customizado para o sistema.

O configure é fornecido pelo programador do projeto utilizando o utilitário autoconf.

Após, executar o comando configure (se este existir) para criar o arquivo Makefile, podemos continuar a instalação do sistema com os comandos makepara compilar o programa e make install para instalar os arquivos compilados.

Por exemplo para instalar o servidor de Web (HTTP) Apache:#tar vxzf apache-1.3.31.tar.gz#cd apache-1.3.31#./configure#make#make install

Depois de instalar você pode apagar o diretório apache-1.3.31 gerado pelo arquivo apache-1.3.31.tar.gz.

Sistemas Operacionais Luiz Arthur7

Gerenciando Bibliotecas Compartilhadas

Para entender a gerência das bibliotecas compartilhadas, precisa-se primeiro saber o que são bibliotecas e para que elas servem.

Durante a escrita do código-fonte de um programa, o desenvolvedor faz uso de diversas funções e procedimentos já definidos em arquivos chamados bibliotecas.

Estas funções permitem que o programador possa usar recursos como escrita em disco, escrita na tela, receber dados do teclado, do mouse, enviar dados pela rede e muito mais, sem a necessidade de reescrever a roda.

Quando o programa é compilado, o último estágio de sua construção é fazer as ligações (linker). Alguns compiladores já fazem este processo de reunir todos os objetos necessários e compor um objeto final automaticamente. Outros necessitam que o programador execute um outro programa chamado de linker.

Existem dois tipos de bibliotecas no Linux: as estáticas e as dinâmicas. A decisão de qual biblioteca utilizar compete ao programador.

Sistemas Operacionais Luiz Arthur8

Ao usar uma biblioteca estática, o linker encontra as funções e procedimentos de que o programa precisa, e as copia fisicamente no arquivo de saída executável gerado. Isso faz com que o executável final possa rodar de forma independentesem utilizar nenhuma biblioteca. Mas perde-se na performance, no gasto desnecessário de memória e no tamanho final do programa.

Para resolver este problema o programador pode fazer uso de bibliotecascompartilhadas (dinâmicas). Ao fazer as ligações de um programa que as utiliza, o linker faz uma referência às bibliotecas compartilhadas. Desta forma, quando este programa for executado, o sistema terá de carregar primeiro as bibliotecas necessárias.

Desta maneira, os executáveis gerados através do uso de bibliotecas compartilhadas são mais eficientes, pois tendem a ser menores, usar menos memória e ocupar menos espaço em disco. O ponto fraco desta metodologia é que os programas necessitam das bibliotecas compartilhadas e uma mudança nas versões destes arquivos também pode afetar o seu funcionamento.

Os arquivos executáveis são examinados no tempo de execução pelo linker de tempo de execução chamado ld.so. Este interpretador especial completa as ligações entre o executável e as bibliotecas compartilhadas. Se o ld.so não conseguir encontrar e ler as dependências, ele irá falhar e o executável não irá ser carregado.

Sistemas Operacionais Luiz Arthur9

O linker ld.so mantém índice de todas as bibliotecas e sua localização em um arquivos especial chamado /etc/ld.so.cache. Ele é binário e, portanto, pode ser lido rapidamente pelo ld.so.

É isto que um administrador Linux tem de estar preparado para gerenciar as bibliotecas compartilhadas e suas versões para um correto funcionamento do sistema e seus aplicativos. Os utilitários que irão ajudar nesta tarefa são:

ldd

O comando ldd – List Dynamic Dependencies – fornece uma lista das dependências dinâmicas de que um determinado programa precisa. Ele irá retornar o nome da biblioteca compartilhada e sua localização esperada.

$ ldd /bin/bash linux-gate.so.1 => (0xffffe000) libtermcap.so.2 => /lib/libtermcap.so.2 (0xb7f8c000) libdl.so.2 => /lib/tls/libdl.so.2 (0xb7f88000) libc.so.6 => /lib/tls/libc.so.6 (0xb7e59000) /lib/ld-linux.so.2 (0xb7fad000)

Este comando é importante para determinar quais são as bibliotecas necessárias de um executável.

Sistemas Operacionais Luiz Arthur10

ldconfig

O utilitário ldconfig cria os links e refaz o índice das bibliotecas dinâmicas do arquivo /etc/ld.so.cache. Ele procura por bibliotecas nos diretórios /usr/lib e /lib, assim como nos diretórios listados em /etc/ls.so.conf, bem como o diretório informado na linha de comando.

As opções mais comuns são:

-p Lista o conteúdo do cache /etc/ld.so.cache

-v Mostra o progresso da atualização do cache.

-f arquivo Informa um outro arquivo de configuração diferente do padrão /etc/ld.so.conf.

Sistemas Operacionais Luiz Arthur11

Atividade 1

1 – Pesquise por ferramentas que facilitam a instalação em sistemas Linux.

2 – Pesquise sobre a ferramenta de instalação do Slackare, indicando as opções de como instalar, atualizar e remover os pacotes.

3- Pesquise sobre a ferramenta de instalação do Debian (que é igual ao ubunto, Kurumin, etc), indicando as opções de como instalar, atualizar e remover os pacotes.

4 - Pesquise sobre a ferramenta de instalação do Gentoo, indicando as opções de como instalar, atualizar e remover os pacotes.

5 - Pesquise sobre a ferramenta de instalação do Red-Hat, indicando as opções de como instalar, atualizar e remover os pacotes.

6 -Pesquise sobre a ferramenta de instalação apt-get (procure por versões para o Slackware), indicando as opções de como instalar, atualizar e remover os pacotes.

Sistemas Operacionais Luiz Arthur12

fim