UNIVERSIDADE DE LISBOA Faculdade de Ciências Departamento de Informática



Documentos relacionados
Lazarus pelo SVN Linux/Windows

Soluções de Gestão de Clientes e Impressão Universal

Suporte Técnico de Software HP

16:21:50. Introdução à Informática com Software Livre

O Manual do Desktop Sharing. Brad Hards Tradução: Pedro Morais

Roteiro 3: Sistemas Linux arquivos e diretórios

Curso de Linux Básico com o Linux Educacional

Aplicação Prática de Lua para Web

SAIBA MAIS SOBRE O LINUX E DESCUBRA QUAL DISTRIBUIÇÃO É MELHOR PARA VOCÊ! CURSO

Acronis Servidor de Licença. Manual do Utilizador

Curso de Linux Básico

Como Instalar Programas no GNU/Linux. Elexsandro Rangel dos Santos

Universidade Federal de Goiás. Alexandre Ferreira de Melo CERCOMP / UFG

Guia do Administrador de Licenças de Usuários Autorizados do IBM SPSS Modeler

Aula 4: Montagem e Disponibilização Frameworks Genéricos

Software Livre. Acesso ao código fonte Alterar o código fonte Redistribuir Utilizar como desejar

PACWEB Módulo de Pesquisa MANUAL DO UTILIZADOR

Impressão do Manual do Utilizador

P HC XL - Nem calcula o produto que temos para si...

Servidores Virtuais. Um servidor à medida da sua empresa, sem investimento nem custos de manutenção.

ACRONIS BACKUP AND RECOVERY 10 SERVER FOR LINUX

Um Driver NDIS Para Interceptação de Datagramas IP

Arquitetura de Rede de Computadores

Atualizaça o do Maker

O Manual do Remote Desktop Connection. Brad Hards Urs Wolfer Tradução: José Pires

Guia Rápido de Vodafone Conferencing

I N F O R M Á T I C A. Sistemas Operacionais Prof. Dr. Rogério Vargas Campus Itaqui-RS

Manual SAGe Versão 1.2 (a partir da versão )

Acronis Backup & Recovery 10

IBM SPSS Modeler - Princípios Básicos do R: Instruções de Instalação

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

Sistema Operativo Linux

Sistema de Controle de Solicitação de Desenvolvimento

Entrar neste site/arquivo e estudar esse aplicativo Prof. Ricardo César de Carvalho

CONFIGURAÇÃO DO ACESSO REMOTO PARA HS-DHXX93 E HS-DHXX96

Hardware & Software. SOS Digital: Tópico 2

Sistemas Operacionais de Rede Linux - Gerenciamento de Arquivos

Relatório SHST

Satélite. Manual de instalação e configuração. CENPECT Informática cenpect@cenpect.com.br

Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA

Instalação do software cygwin

cio Roteamento Linux

Entendendo como funciona o NAT

Introdução ao Active Directory AD

Licenciatura em Eng.ª Informática Complementos de Redes - 3º Ano - 2º Semestre. Trabalho Nº 4 - VoIP

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Lógica de Programação

Operador de Computador. Informática Básica

IBM SPSS Modeler - Princípios Básicos do R: Instruções de Instalação

Manual de Instalação PIMSConnector em Windows

Guia de utilização. Gestão de Mensagens. Março 2009

Programação 2008/2009 MEEC Guia de instalação do PC de programação

COLIBRI Ambiente Colaborativo Multimédia MÓDULO MOODLE. Rui Ribeiro FCCN - Dezembro 2010

GIAE VERSÃO JUNHO DE 2011 MUITO IMPORTANTE

Soluções de Gerenciamento de Clientes e de Impressão Universal

O AMBIENTE DE TRABALHO DO WINDOWS

CSAU Guia: Manual do CSAU 10.0 como implementar e utilizar.

Desenvolvendo Websites com PHP

Instalar o Projeto Colibri RCP no Ubuntu 12.04

MANUAL DE INSTALAÇÃO E CONFIGURAÇÃO. Motor Periférico Versão 8.0

1 Code::Blocks Criação de projetos

Comunicação de Dados de Autenticação e Credenciais de Acesso para Resposta ao Inquérito

HOW TO Como distribuir o Aker Client em

Manual de Instalação PIMSConnector em Linux

Protocolo TCP/IP. Neste caso cada computador da rede precisa de, pelo menos, dois parâmetros configurados:

Serviço a Pedido ( On Demand ) da CA - Termos e Política de Manutenção Em vigor a partir de 1 de Setembro de 2010

QUESTINAMENTOS AO EDITAL DE CONCORRÊNCIA 01/2013

Guia Rápido. Versão 9.0. Mover a perícia - não as pessoas

Introdução. Capítulo Breve sinopse

Laboratório de Redes de Computadores e Sistemas Operacionais

Gerenciamento de Incidentes

Sistema de Chamados Protega

Conceitos de relação de confiança

Guia de instalação do Player Displr Windows 7, 8.1 e 10

Laboratório de Redes. Professora Marcela Santos

Figura 01 Kernel de um Sistema Operacional

Manual do PolicyKit-kde. Daniel Nicoletti Tradução: Luiz Fernando Ranghetti

ISO/IEC 12207: Gerência de Configuração

Desenvolvimento de Software para UNIX

BlackBerry Mobile Voice System

Novell. Novell Teaming 1.0. novdocx (pt-br) 6 April 2007 EXPLORAR O PORTLET BEM-VINDO DESCUBRA SEU CAMINHO USANDO O NOVELL TEAMING NAVIGATOR

MANUAL DE OPERAÇÃO do aremoto

Organização e Arquitetura de Computadores I. de Computadores

CONCEITOS INICIAIS. Agenda A diferença entre páginas Web, Home Page e apresentação Web;

Sistemas Multimédia. Arquitectura Protocolar Simples Modelo OSI TCP/IP. Francisco Maia Redes e Comunicações

O que é a assinatura digital?... 3

1 REQUISITOS BÁSICOS PARA INSTALAR O SMS PC REMOTO

Migração da Versão 4.0 para a Versão 4.1 do MSS. Versão 1.0 de Português

Relatório de Instalação do Windows 2003 Server

Generated by Foxit PDF Creator Foxit Software For evaluation only. Capitulo 1

Noções de. Microsoft SQL Server. Microsoft SQL Server

Manual do utilizador. Aplicação de agente

Programa de Atualização de Pontos do Lince GPS

Cláusula 1.º Objecto. Cláusula 2.º Especificação da prestação

3. No painel da direita, dê um clique com o botão direito do mouse em qualquer espaço livre (área em branco).

PROCEDIMENTO DE ATUALIZAÇÃO PARA VERSÕES 2015 POS / REST / DISCO

Transcrição:

UNIVERSIDADE DE LISBOA Faculdade de Ciências Departamento de Informática INTEGRAÇÃO DE UBUNTU LINUX EM AMBIENTES MICROSOFT Susana Bela Vinhas Pereira DISSERTAÇÃO MESTRADO EM INFORMÁTICA 2013

UNIVERSIDADE DE LISBOA Faculdade de Ciências Departamento de Informática INTEGRAÇÃO DE UBUNTU LINUX EM AMBIENTES MICROSOFT Susana Bela Vinhas Pereira DISSERTAÇÃO MESTRADO EM INFORMÁTICA Trabalho orientado pelo Prof. Doutor Hugo Alexandre Tavares Miranda e co-orientado por Engenheiro Gustavo Alberto Vouga de Carvalho Homem 2013

Agradecimentos Esta tese representa a conclusão de mais um ciclo de vida cujos resultados não seriam possíveis de alcançar sem a ajuda e o apoio de várias pessoas. É desta forma que expresso a minha gratidão. Em primeiro lugar quero agradecer à minha família por todo o apoio incondicional que me deram durante a realização deste ciclo de estudos. Pai, Mãe, Paula e Lara obrigada pelo apoio, pela partilha das alegrias e dos momentos menos bons que me ajudaram a ultrapassar. Em segundo lugar quero agradecer a um grande amigo, Diogo Cruchinho, pelo apoio e ajuda na pesquisa de soluções para o desenvolvimento do estágio. Em terceiro lugar quero agradecer a todos os meus amigos pela partilha de bons e momentos menos bons. Obrigada pelo voto de confiança no meu projeto. Em terceiro lugar, mas não menos importante, quero agradecer ao meu orientador, Professor Hugo Miranda, pelo apoio e sobretudo paciência durante a realização da minha tese. As suas sugestões contribuiram em larga escala para aumentar os meus conhecimentos na realização de estágio e para trabalho futuro. Em quarto lugar, quero agradecer à empresa Ângulo Sólido, especialmente ao meu coorientador Gustavo Homem, pelo conhecimento técnico transmitido e pelas discussões construtivas que me permitiram evoluir profissionalmente. Finalmente, e não menos importante, quero agradecer aos elementos da Unidade de Informática da Faculdade de Ciências da Universidade de Lisboa pelo apoio dado durante a realização desta tese.

When we build, let us think that we build forever. John Ruskin

Resumo A constante procura por parte das empresas de soluções aplicacionais e de sistemas com menor custo faz com que, cada vez mais, as empresas acabem por optar por aplicações e sistemas de código aberto em detrimento de soluções proprietárias. Para que estas soluções tenham algum sucesso no mercado empresarial é necessário que muitas das aplicações sejam parametrizadas e adequadas a essa mesma realidade (tal como já é feito em ambientes proprietários). A missão da Ângulo Sólido é proporcionar às organizações portuguesas soluções chave na mão que garantam a segurança, fiabilidade e interoperabilidade de qualquer parque informático a um custo inferior ao dos seus concorrentes. Para concretizar os objectivos acima descritos, a Ângulo Sólido optou por sistemas abertos baseados em Linux. Este relatório descreve o esforço de melhoria e a automatização de integração do posto de trabalho Ubuntu em ambientes Microsoft realizado no âmbito do Projeto em Informática. Devido à empresa ter optado por um sistema aberto, foi necessário proceder a algumas alterações de modo a que fosse compatível com serviços exclusivos em ambientes proprietários, de que é exemplo o tipo de autenticação usado para iniciar sessões. Com este objetivo em mente foi inicialmente explorada a forma de gerar um ambiente de desenvolvimento (ao nível do servidor e das formas de empacotamento), de criação e alteração de pacotes, parametrizando-os consoante as necessidades das organizações clientes e que foram posteriormente certificados pela Ângulo Sólido e pelos seus parceiros de negócio, de forma a garantir um comportamento fiável. Palavras-chave: Ubuntu, código aberto, pacotes, parametrização, certificação i

Abstract The constant search for more economical and flexible application solutions has increased the number of companies that opt for open source systems as an alternative to proprietary solutions. In order to open source solutions to succeed in the business market, it is necessary for many applications to be parameterized and adapted to a new reality, something that is common in proprietary environments. The mission of Ângulo Sólido is to provide "turnkey" solution to organizations, ensuring security, reliability and interoperability of any computer facilities at low cost compared to its competitors. Ângulo Sólido opted for the Ubuntu Linux distribution. This document the efforts made to improve and automate the integration process using Ubuntu 10.04 in Microsoft environments. Since the company has choosed to use a open source system, it was necessary to make some changes to make the system compatible with exclusive services in proprietary environments, such as the authentication type used to logon. For this purpose, it was first explored how to generate a development environment (at the server level and forms of packaging) to create, modify and parameterize packages according to the needs of clientes organizations. This tasks were certified by the Ângulo Sólido and its business parterns to ensure a reliable system. Keywords: Ubuntu, open source, packaging, parametrization, certification iii

Índice 1 Introdução... 1 1.1 Motivação... 1 1.2 Objectivos... 1 1.3 Trabalho realizado... 2 1.4 Instituição de acolhimento... 3 1.5 Planeamento... 4 1.5.1 Tarefas realizadas... 5 1.5.2 Sub-Tarefas de Implementação de Soluções... 5 1.6 Estrutura do documento... 6 2 Sistema de pacotes Debian... 8 2.1 Sistemas de Pacotes... 8 2.2 Sistema de Pacotes e o Projeto Debian... 9 2.3 Ambiente de geração de pacotes Debian packaging... 10 2.3.1 Ferramentas de empacotamento... 10 2.3.2 Processo de empacotamento... 12 2.4 Resumo... 19 3 Personalização de Pacotes... 20 3.1 Ambiente para geração de pacote.deb do X11RDP... 20 3.1.1 Definição de X11RDP... 20 3.1.2 Geração do pacote... 20 3.1.3 Problemas e resolução... 20 3.1.4 Compilação e construção do pacote X11RDP... 22 3.1.5 Teste de integração do pacote X11RDP... 22 3.2 Ambiente para geração de pacote.deb do XRDP... 23 3.2.1 Definição de XRDP... 23 3.2.2 Geração do pacote... 23 3.2.3 Problemas e resolução... 23 3.2.4 Compilação e construção do pacote XRDP... 27 3.2.5 Testes de integração do pacote XRDP... 28 3.3 Ambiente para geração de pacote.deb Firefox e Samba... 33 3.3.1 Definição de Firefox... 33 3.3.2 Definição de Samba... 34 3.3.3 Geração dos pacotes Firefox e Samba... 35 3.3.4 Problemas e resolução do pacote do Firefox... 35 3.3.5 Problemas e resolução do pacote Samba... 37 3.3.6 Compilação e construção do pacote Samba... 39 3.3.7 Teste de integração do Firefox... 39 3.3.8 Teste de integração do Samba... 40 3.4 Activar blacklist de pacotes... 40 3.4.1 Definição de blacklist... 40 3.4.2 Problemas e resolução... 41 3.4.3 Teste da aplicação da blacklist... 41 3.5 Pré- requisitos para administração remota automatizada... 42 3.5.1 Definição de administração remota automatizada... 42 3.5.2 Problemas e resolução... 42 3.5.3 Teste da implementação da administração remota automatizada... 43 3.6 Testar integração com AD via winbind... 43 3.6.1 Definição de Winbind... 43 3.6.2 Teste de integração com a AD via Winbind... 43 4 Personalização de Postos de Trabalho e Servidores... 44 v

4.1 Descrição... 44 4.2 Instalação e operação de sistemas... 44 4.2.1 Instalação do Sistema... 45 4.2.2 Operação do sistema: configuração de perfis baseada em políticas... 47 4.2.3 Administração remota automatizada... 51 4.3 Portar os scripts do Ubuntu 10.04 para o 12.04... 54 4.3.1 Necessidade de portar o script... 54 4.3.2 Problemas encontrados inicialmente... 54 4.3.3 Funcionalidades... 55 4.3.4 Testes da integração do script na versão 12.04 LTS... 55 4.4 Avaliação e Resultados... 56 5 Conclusão e trabalho futuro... 58 5.1 Trabalho Futuro... 59 6 Bibliografia... 60 vi

Índice de Tabelas e Figuras Tabela 1: Plano inicial de tarefas... 4 Tabela 2: Sub-tarefas da Implementação de Soluções... 6 Figura 1: Fluxograma do processo de empacotamento... 12 vii

1 Introdução Atualmente, cada vez mais empresas optam por usar sistemas abertos não só ao nível dos servidores mas também ao nível dos postos de trabalho. Apesar de optarem por este tipo de sistemas, por vezes é necessário utilizar serviços disponíveis apenas em sistemas proprietários. Uma das dificuldades frequentes é a integração de serviços entre sistemas abertos e os diversos ambientes proprietários. Um dos objetivos deste relatório é apresentar os desafios que foram surgindo durante a inclusão de serviços proprietários em plataformas abertas e a forma como as mesmas foram solucionadas. 1.1 Motivação Conhecendo a realidade do mercado, os seus receios relativos a grandes alterações de metodologias ou ferramentas de trabalho, e pretendendo, simultaneamente, reduzir custos com licenciamento, considera-se o projeto de integração de serviços proprietários em sistemas abertos aliciante, ao nível da motivação pessoal, pois permite demonstrar que é possível integrar num sistema operativo aberto os mesmos serviços e funcionalidades existentes em sistemas operativos proprietários. 1.2 Objectivos O estágio enquadra-se no objetivo da Ângulo Sólido de desenvolver uma solução de integração de postos de trabalho Linux, mais concretamente Ubuntu[1] na versão 10.04 LTS[2], num ambiente empresarial baseado em tecnologias Microsoft. Embora não sendo o foco principal do estágio, pretende-se também analisar qual o comportamento na aplicação da solução criada para o ambiente Ubuntu versão 10.04 na versão 12.04. 1

1.3 Trabalho realizado Com o trabalho realizado foi criado uma solução configurável para os postos de trabalho em ambiente GNU/Linux de acordo com os requisitos de cada cliente da entidade de acolhimento. Com esta solução, e através de um script parametrizado podem ser instalados e configurados postos de trabalho minimizando o esforço e tempo de instalação e integração com sistemas proprietários. A aplicação da solução personalizada desta plataforma foi realizada em vários postos de trabalho sendo o conjunto constituído por postos físicos e virtuais (postos de trabalho de um ambiente virtual simulado num ambiente físico). Esta solução não só consistia em personalizar os postos de trabalho mas também o perfil do utilizador através da gestão de perfis por políticas, tal como é explicado mais detalhadamente na secção 4. Um exemplo da aplicação de políticas no perfil de utilizador é a alteração da imagem de fundo do ambiente de trabalho associado ao utilizador em questão. Um exemplo da personalização dos postos de trabalho é a aplicação de um conjunto de pacotes de software modificados de modo a que fosse possível usar diversos serviços baseados em tecnologias Microsoft. A título exemplificativo podem destacar-se os seguintes serviços: usar um posto de trabalho Linux de forma a ser possível fazer uma ligação remota a outros postos de trabalho Windows ou Linux através do protocolo Remote Desktop Protocol (RDP)[3][4]; aceder a Groupware[5] Exchange[6] (versão 2010); autenticar sessões de utilizadores utilizando Kerberos[7][8]; aceder a diretorias partilhadas em ambientes Microsoft (automatizado e personalizado em função de utilizador e grupo); autenticar automaticamente em páginas Web via Kerberos e NTLM[9]. Outras metas desta solução foram as seguintes: atualização remota automatizada de aplicações instaladas nos postos de trabalho; adaptação e desenvolvimento de pacotes modificados consoante as necessidades dos clientes da instituição de acolhimento. 2

Durante a implementação da solução surgiu a necessidade de atualizar a versão do sistema operativo instalado nos clientes da instituição de acolhimento e verificar se as soluções anteriormente criadas também eram compatíveis com a nova versão, modificando-as se necessário. Algumas das metas a atingir neste novo enquadramento passam por: testar as ligações entre o Microsoft Exchange 2010 e o Ubuntu versão 12.04; modificar o ficheiro que permitia, de forma automatizada, a customização dos postos de trabalho com o sistema operativo Ubuntu 10.04 para que fosse também suportado pelo Ubuntu 12.04. 1.4 Instituição de acolhimento A empresa Ângulo Sólido, criada em 2005, com 100% de capitais nacionais, é especializada em Tecnologias de Informação e apresenta-se no mercado português como fornecedora de serviços à medida em open source. A missão desta empresa é proporcionar às organizações portuguesas soluções chave na mão que permitam garantir a segurança, fiabilidade e interoperabilidade de qualquer parque informático a baixo custo comparado com os seus concorrentes. A Ângulo Sólido tem várias equipas, uma das quais é a de Administração de Sistemas. Esta equipa tem de garantir que a integração de diversos sistemas, serviços e aplicações funcionam de forma correta, independentemente do sistema operativo em que se está a trabalhar. Por exemplo, um dos objetivos desta equipa é parametrizar postos de trabalho que funcionem em Ubuntu, mas com integração num ambiente onde coexistam serviços Windows. Para a equipa conseguir garantir a interação entre diversos sistemas, a mesma usa a seguinte infraestrutura: servidores de Domain Host Configuration Protocol (DHCP)[10]/ Domain Name Server (DNS)[11]/ Proxy[12]/Servidor Web em Linux; um servidor de Domain Control (DC)[13]/DNS em Windows 2003; um servidor Web/Exchange em Windows 2008; um encaminhador (router)[14]; 3

um servidor onde são desenvolvidos os vários pacotes modificados; um computador de testes em Ubuntu; um servidor Vmware[15]. O estágio surge no âmbito da realização do Projeto de Informática do Mestrado em Informática em parceria com o Departamento de Informática da Faculdade de Ciências da Universidade de Lisboa. Dado o currículo e percurso profissional na área de Administração de Sistemas optouse por um tema que permitisse adicionar valor aos conhecimentos já adquiridos, podendo aprofundá-los e evoluir nesta área. 1.5 Planeamento De acordo com a proposta submetida ao Departamento de Informática da Faculdade de Ciências, as tarefas a realizar e o tempo de duração do período de estágio na empresa Ângulo Sólido estavam estipuladas da seguinte forma: Tarefas Análise global do projeto de integração e seleção de tópicos de trabalho Análise dos vários tópicos e respectiva estimativa de esforço Tempo previsto (em meses) 0.5 0.5 Implementação de soluções 6 Testes 1 Dissertação 1 Total 9 Tabela 1: Plano inicial de tarefas 4

1.5.1 Tarefas realizadas A metodologia de desenvolvimento que foi utilizada para a realização das tarefas durante o período de estágio na empresa Ângulo Sólido foi a seguinte: inicialmente, pela instituição de acolhimento, foram recolhidos os requisitos junto de um cliente com necessidade específicas de integração. A primeira tarefa atribuída no estágio foi a de analisar quais as incompatibilidades na utilização de serviços entre os ambientes de sistema aberto e proprietários, procurando uma forma de as resolver; após a primeira análise, foram efectuadas alterações ao código-fonte dos pacotes de forma a corrigir alguns erros que os mesmos apresentavam e adicionadas as funcionalidades necessárias. Posteriormente, foram criados os novos pacotes debian com as alterações; para a validação da solução foi utilizada uma ou mais máquinas virtuais instaladas de raiz apenas com o Ubuntu 10.04 e foi também testado um script, indicado na secção 4. Este script foi inicialmente disponibilizado pela Ângulo Sólido e continha algumas alterações ao nível de configurações e pacotes. Posteriormente, foram adicionadas outras alterações, sobretudo ao nível de correções do código-fonte dos pacotes, de forma a verificar se o pacote alterado resolveria o problema. 1.5.2 Sub-Tarefas de Implementação de Soluções Como a maior parte do tempo de estágio foi consumido pela tarefa Implementação de Soluções, optou-se por detalhar melhor quais as sub-tarefas associadas diretamente a esta tarefa. As sub-tarefas realizadas na implementação de soluções associadas à integração da plataforma Linux (Ubuntu) foram as seguintes: 5

Tarefas 1 Preparação do ambiente para a geração do pacote debian relativo ao XRDP; 2 - Preparação do ambiente para a geração do pacote debian relativo ao X11RDP; 3 - Preparação do ambiente para a geração dos pacotes debian relativos ao Firefox e ao Samba; 4 - Integração com NTLM; 5 Ativação da blacklist para um determinado conjunto de pacotes pré-definidos no script (evitar que o sistema faça a atualização desses pacotes); 6 Implementação de uma lista de pré-requisitos para administração remota automatizada; 7 Conexão do Ubuntu 12.04 com o Microsoft Exchange 2010; 8 Modificação do script da versão 10.04 de forma a ser compatível com a versão 12.04, garantindo que o mesmo funcione para as duas versões. Tabela 2: Sub-tarefas da Implementação de Soluções 1.6 Estrutura do documento Este documento está organizado em cinco capítulos. No primeiro capítulo é feita a introdução e enquadramento do estágio. No segundo capítulo, Sistema de Pacotes Debian, são introduzidos o conceito de pacote de software e os passos necessários desde a obtenção do código-fonte até à criação de um pacote. O terceiro capítulo, Personalização de Pacotes, apresenta o conjunto de pacotes gerados no âmbito deste trabalho, descrevendo para cada um a motivação para as alterações realizadas e os testes que permitiram validar as alterações. No quarto capítulo são descritas as contribuições para o sistema de administração remota de postos de trabalhos e os testes de migração dos pacotes da versão 10.04 LTS para a versão 12.04 LTS. Por último, o quinto capítulo, designado de Conclusão e Trabalho Futuro, encerra este 6

relatório. Nesse capítulo são indicadas as conclusões possíveis durante a realização do projeto e apresentadas as sugestões para o trabalho futuro. 7

2 Sistema de pacotes Debian O projeto GNU s Not Unix! (GNU)[16] foi publicamente anunciado em 1983 por Richard Stallman como um sistema operativo livre, de forma a que todos os utilizadores pudessem controlar e configurar o computador à sua maneira. O Linux[17] foi criado por um estudante finlandês chamado Linus Torvals em 1991. Inicialmente, este foi criado para satisfazer as necessidades de acesso a servidores Unix da universidade onde Linus estudava. O objetivo do desenvolvimento do Linux era apenas ser um emulador de terminal, mas rapidamente Linus apercebeu-se de que este poderia ser utilizado como o núcleo de um sistema operativo. Posteriormente, este núcleo passou a ser usado com as aplicações do GNU. Ao longo do tempo foram surgindo diversas distribuições que utilizam como base as aplicações GNU e o núcleo do sistema operativo Linux. Designa-se por distribuição (também conhecida como distro) um conjunto de programas, serviços e controladores que facilitam o utilizador a interagir e realizar tarefas com o computador. São exemplos de distribuição o projeto Debian e o projeto Ubuntu. 2.1 Sistemas de Pacotes Um pacote de software é um programa/serviço que está acondicionado num formato de arquivo e que está disponível para ser instalado através de um sistema de gestão de pacotes ou através de um instalador autónomo. A utilização de sistemas de pacotes, como qualquer outro sistema, como por exemplo o esquema que é utilizado em sistemas Microsoft, apresenta as suas vantagens e desvantagens. As principais vantagens associadas à utilização de pacotes de sistemas são a simplicidade e rapidez na instalação do software, a estabilidade das versões, a facilidade de atualização e ainda a possibilidade dos pacotes funcionarem em diferentes distribuições que suportem o mesmo sistema de pacotes. Contudo, a manutenção de um sistema de pacotes obriga a algum esforço, por parte da equipa de Administração de Sistemas, de forma a evitar obsolescências por 8

incompatibilidade com novas versões de outros pacotes e a garantir que os pacotes são preparados com os conjuntos de documentação adequada. A maioria das distribuições GNU/Linux assenta sobre um de dois sistemas de pacotes. Um deles é o sistema de pacotes desenvolvido no âmbito da distribuição Debian, conhecidos como pacotes.deb e o outro sistema designa-se RPM Package Manager (RPM), desenvolvido pela Red Hat, que utiliza o formato de ficheiros.rpm. O sistema de pacotes da distribuição Debian utiliza formatos bem definidos de ficheiros compactados, como o tar (tape archive) e o gzip (GNU Zip), o que permite que sejam facilmente verificados e adicionadas pequenas alterações. A oferta de pacotes disponíveis nos repositórios Debian é maior e mais diversificada do que a existente nos repositórios Red Hat[18] essencialmente devido ao número de versões disponibilizadas por cada uma das empresas no mercado[19]. A atualização dos pacotes disponibilizados pela Red Hat tem um custo associado ao contrário da atualização dos pacotes disponibilizados nos repositórios Debian. 2.2 Sistema de Pacotes e o Projeto Debian O projeto Debian[20] foi iniciado em 1993 por Ian Murdock, com o objetivo de criar e desenvolver uma distribuição gratuita seguindo a filosofia do Linux e do GNU. A combinação da filosofia Debian e da metodologia das ferramentas GNU e adicionando o núcleo de Linux[21] (kernel) e outras aplicações gratuitas, tais como o Firefox [22](browser) ou o Libreoffice[23], formam a distribuição designada de Debian GNU/Linux. Ian pretendia que a distribuição Debian mantivesse um desenvolvimento e suporte estáveis. Esta distribuição tem origem num grande número de pacotes de software. Cada pacote disponibilizado na distribuição contém ficheiros executáveis, scripts, documentação e informação de configuração. Estes pacotes têm um gestor associado que é o principal responsável por: manter este atualizado, verificar os relatórios de anomalias e comunicar as mesmas ao(s) autor(es) do software original do pacote. Ainda a referir que a distribuição Debian possui um conjunto de programas básicos e utilitários estáveis que permitem o bom funcionamento de um computador ou servidor. Uma grande parte das ferramentas básicas que formam o sistema operativo são originais do projeto GNU. 9

O Ubuntu[24] foi lançado oficialmente em Outubro de 2004 pela empresa Canonical[25]. O objetivo do seu fundador, Mark Shuttleworth, era transformar o Linux, conhecido até então como uma plataforma de servidores empresarias, numa distribuição estável para postos de trabalho. Para isso escolheu como base o projeto Debian, por ser um dos projetos alicerçados em GNU/Linux mais desenvolvidos na época, tendo reunido uma equipa de desenvolvimento para concretizar essa tarefa. O que Mark Shuttleworth pretendia para o Ubuntu era atingir duas partes importantes na introdução de uma nova distribuição, sendo uma delas a parte social (de forma a que a sociedade aceitasse, interagisse e utilizasse esta distribuição) e a outra a parte económica (disponibilizar gratuitamente a distribuição, fornecer software livre de custos e que fosse financiado através de um portefólio de serviços prestados pela Canonical). 2.3 Ambiente de geração de pacotes Debian packaging A preparação de pacotes de software (também conhecida como packaging)[26] consiste em criar um pacote a partir do código-fonte da aplicação. Este processo é facilitado por um ambiente de empacotamento. Por norma, o ambiente de empacotamento de software é instalado num computador configurando um ambiente controlado em que apenas se instala a versão base da distribuição e as ferramentas necessárias para que se possa proceder ao empacotamento, como por exemplo as ferramentas gcc, make, debuild e autoconf que se encontram definidas na secção 3. 2.3.1 Ferramentas de empacotamento Para a preparação do empacotamento de software é necessário proceder à transferência do código-fonte do pacote e verificar quais os pré-requisitos que são necessários instalar e configurar de forma a ser possível criar um novo pacote. O ambiente de empacotamento é composto pelas ferramentas necessárias à compilação 10

do código-fonte e por um conjunto de utilitários que fazem parte da instalação base da distribuição, nomeadamente: make: lê ficheiros do tipo Makefile para saber o que é necessário compilar; apt/dpkg: para além da sua utilização básica de instalar pacotes, estes comandos têm muitas funcionalidades úteis para o empacotamento, como por exemplo, ver o conteúdo dos pacotes, procurar um pacote no repositório e fazer a atualização da lista de pacotes existentes nos repositórios; grep-dctrl - procura uma determinada palavra no pacote; diff - compara dois ficheiros, apresentando as diferenças entre eles e é utilizado frequentemente para a criação de correções (patches) no códigofonte; patch é criado para aplicar atualizações, criadas pelo diff ou por um programa semelhante, a múltiplos ficheiros ou diretórios; debhelper são scripts que executam tarefas comuns do empacotamento; dh_make este comando permite iniciar o processo de empacotamento criando as diretorias e os ficheiros necessários; gnupg é um substituto completo e livre para o PGP usado para assinar digitalmente ficheiros (incluindo pacotes); fakeroot simula a execução de um comando com privilégios de root; lintian verifica as inconsistências e erros existentes num determinado pacote Debian. A lista básica de pacotes necessária para obtermos o ambiente Packaging do Ubuntu é a seguinte: build-essential é um conjunto de ferramentas necessárias para o empacotamento que inclui as aplicações básicas de compilação (gcc, g++ e make) e as bibliotecas de desenvolvimento (libc6-dev e dpkg-dev) no empacotamento; devscripts contém muitos dos scripts utilizados, dos quais são exemplo debdiff (mostra a diferença entre dois pacotes debian), dch (permite editar o ficheiro debian/changelog) e debuild (cria pacotes debian); ubuntu-dev-tools é uma coleção de scripts, tal como o devscripts, sendo 11

específico para Ubuntu; contém algumas ferramentas, como o pbuilder-dist que permite construir pacotes indicando as suas dependências, ou seja, os pacotes que são necessários para a sua instalação. 2.3.2 Processo de empacotamento Apesar de existirem diferentes pacotes debian disponíveis para as distribuições e versões onde são utilizados, é possível utilizar um desses pacotes e personalizar de acordo com as necessidades do ambiente de utilização. A personalização do pacote terá sempre associada a particularidade do ambiente de utilização e o facto de poderem existir diferentes formas de desenvolver o processo de empacotamento. Esta situação poderá causar dificuldades na modificação do pacote por pessoas externas a este novo pacote, pois estas podem não conhecer a forma como o pacote foi construído e dado que esta tarefa é muito especializada. No geral, o processo de empacotamento consiste na execução das seguintes etapas: Figura 1: Fluxograma do processo de empacotamento De seguida vão ser analisadas as etapas indicadas no fluxograma. 12

2.3.2.1 Obtenção do código-fonte A forma mais simples de fazer o empacotamento é fazer a criação do pacote a partir do código-fonte. Esse código-fonte por norma está disponível nos repositórios do Ubuntu. As versões do código-fonte nos repositórios do Ubuntu vêm optimizadas para a distribuição, o que permite realizar de uma forma mais rápida e eficaz o empacotamento. Por vezes é necessário proceder à alteração do pacote para adicionar funcionalidades não previstas ou para corrigir problemas/erros da aplicação. Se os pacotes não existirem pode ser usado o código-fonte disponibilizado no sítio oficial do software, sendo necessário, posteriormente, realizar algumas alterações de modo a que o software seja compatível com a distribuição usada. Outro mecanismo que se pode utilizar para descarregar o código-fonte diretamente do sítio da aplicação, é utilizar a ferramenta wget. Esta ferramenta permite descarregar um ou vários ficheiros da internet. No entanto, o utilizador necessita de saber o endereço exato da localização dos ficheiros do código-fonte para conseguir descarregar com sucesso. Para transferir o código-fonte diretamente do repositório do Ubuntu, também é possível utilizar a ferramenta apt que permite obter o código-fonte utilizado na geração dos pacotes oficiais. Quando se obtém o código-fonte através da ferramenta apt ou através do repositório oficial do Ubuntu são descarregados três ficheiros: um com a extensão.orig.tar.gz, outro com a extensão.dsc e, por fim, o terceiro ficheiro com a extensão.diff.gz. Estes ficheiros têm sempre a seguinte designação: packagename_version.extension (exemplo: samba_3.4.7.orig.taz.gz). O ficheiro.orig.tar.gz contém o código-fonte do(s) autor(es), o ficheiro.dsc descreve o pacote e fornece a soma de controlo (md5sums) da fonte do pacote e o ficheiro.diff.gz contém os ficheiros (no diretório debian/) e as correções determinadas pelo maintainer para serem aplicadas ao código-fonte original. Posteriormente, deve descompactar-se o ficheiro.orig.taz.gz no diretório onde estão as alterações do pacote. O código-fonte do ficheiro.orig.tar.gz será descompactado para um diretório com a seguinte designação packagename-version (exemplo: samba-3.4.7). 13

2.3.2.2 Configuração de pacote A configuração de pacotes pode ser feita de duas formas. A configuração de pacotes usando um método tradicional ou a forma considerada mais comum que é a configuração via CDBS. A forma de configurar cada uma delas é descrita nos pontos seguintes. 2.3.2.2.1 Configuração de pacote usando método tradicional Após a obtenção do código-fonte e a extração do mesmo, é necessário proceder às alterações dos ficheiros do código-fonte. Caso ainda não exista a diretoria debian, deve executar-se o comando dh_make para criar a diretoria debian, a qual irá conter pelo menos quatro ficheiros fulcrais que, posteriormente, devem ser editados de forma a personalizar o comportamento do pacote. São eles: control, changelog, copyright e rules. O ficheiro control contém informações de controlo de pacote, tais como: a fonte do código, a descrição, o sítio oficial e o seu gestor do pacote (representado pelo nome e email do mesmo), bem como os pacotes dos quais depende e os conflitos com outros pacotes. O ficheiro copyright contém informações sobre os direitos de autor. O ficheiro changelog indica todas as alterações que foram efectuadas ao longo das várias versões. Este tem uma formatação especial, a qual está descrita no manual de políticas Debian. Esta formatação é utilizada por diversos programas, entre eles o dpkg, para obter o nome do pacote, o número da versão, o tipo de distribuição, a urgência e as mudanças feitas na revisão do pacote. O ficheiro rules é interpretado pelo comando dpkg-buildpackage e contém o conjunto de instruções a seguir para a geração do pacote. Este ficheiro é, na realidade, outro tipo de makefile e, ao contrário dos outros ficheiros indicados anteriormente, é criado um ficheiro com permissões de execução. Com este tipo de ficheiro pretende-se, essencialmente, automatizar uma ordem de compilação entre etapas ou pacotes. Algumas etapas do ficheiro de regras são indicadas pelos seguintes comandos: clean remove tudo o que foi compilado anteriormente (etapa obrigatória); 14