package dependency visualization for gnu/linux systems

33
Package dependency visualization for GNU/Linux Systems André Guerreiro Mestrado em Informática e Gestão - ISCTE-IUL 17 de Dezembro de 2010

Upload: andre-guerreiro

Post on 30-Jun-2015

592 views

Category:

Documents


1 download

DESCRIPTION

Author: André Guerreiro Lecture Title: Package dependency visualization for GNU/Linux systems

TRANSCRIPT

Page 1: Package dependency visualization for GNU/Linux systems

Package dependency visualization for GNU/Linux Systems

André GuerreiroMestrado em Informática e Gestão - ISCTE-IUL

17 de Dezembro de 2010

Page 2: Package dependency visualization for GNU/Linux systems

Package Dependency VisualizationFor GNU/Linux Systems 2

Estrutura da apresentação● Introdução aos sistemas de pacotes Linux● Problemas identificados em ferramentas

actuais● Formulação do problema● Visualização de grafos – conceitos e

ferramentas OSS● Projecto Gumby● Conclusões● Investigação Futura

Page 3: Package dependency visualization for GNU/Linux systems

Package Dependency VisualizationFor GNU/Linux Systems 3

Introdução aos sistemas de pacotes Linux (1/5)

● Distribuições de Software Livre e de código Aberto (FOSS)

● Particular foco em Linux

● Características comuns:● Elevada modularização do Software● Desenvolvimento distribuído/colaborativo

Page 4: Package dependency visualization for GNU/Linux systems

Package Dependency VisualizationFor GNU/Linux Systems 4

Ciclo de distribuição de Software

Page 5: Package dependency visualization for GNU/Linux systems

Package Dependency VisualizationFor GNU/Linux Systems 5

Introdução aos sistemas de pacotes Linux (2/5)

● Sistemas de componentes (pacotes) de grande dimensão (> 10000 em distribuições actuais)

● Pacotes contêm: Software + Metadados + Scripts de Instalação/Configuração

● Metadados, por ex.:Pacote firefox, versão 3.6

Requires: xulrunner >= 1.9.2.11, libsqlite >= 3.7

Provides: webclient

Conflicts: sqlite < 3.0

Page 6: Package dependency visualization for GNU/Linux systems

Package Dependency VisualizationFor GNU/Linux Systems 6

Dimensão de uma distribuição Linux ao longo do tempo

Page 7: Package dependency visualization for GNU/Linux systems

Package Dependency VisualizationFor GNU/Linux Systems 7

Introdução aos sistemas de pacotes Linux (3/5)

Para gerir a complexidade há ferramentas:

● Instaladores: RPM e dpkg● Meta-instaladores ou gestores de

pacotes: APT, yum, zypper, etc.

Page 8: Package dependency visualization for GNU/Linux systems

Package Dependency VisualizationFor GNU/Linux Systems 8

Introdução aos sistemas de pacotes Linux (4/5)

Problemas identificados:● Solvers incompletos geram soluções sub-

óptimas● As ferramentas são bastante são

heterogéneas,

não existe standardização● Suporte para rollback ao nível do sistema

de pacotes é inexistente

Page 9: Package dependency visualization for GNU/Linux systems

Package Dependency VisualizationFor GNU/Linux Systems 9

Introdução aos sistemas de pacotes Linux (5/5)

●As ferramentas têm de atender a Use Cases bastante diversos●O processo de empacotamento tem ainda bastantes passos manuais passíveis de originar erros Projectos de Investigação nesta área (EDOS, MANCOOSI)

Page 10: Package dependency visualization for GNU/Linux systems

Package Dependency VisualizationFor GNU/Linux Systems 10

Problemas com as ferramentas actuais

Num sistema Linux “moderno” e “actualizado”:

$ rpm -ivh google-chrome-stable_current_i386.rpm

error: Failed dependencies:lsb >= 3.2 is needed by google-chrome-stable-8.0.552.215-67652.i386libjpeg.so.62 is needed by google-chrome-stable-8.0.552.215-67652.i386

Page 11: Package dependency visualization for GNU/Linux systems

Package Dependency VisualizationFor GNU/Linux Systems 11

Page 12: Package dependency visualization for GNU/Linux systems

Package Dependency VisualizationFor GNU/Linux Systems 12

Visualizações nos gestores de pacotes actuais

Limitados os esforços nesta área:● Aptitude● apt-pbo● debtree

Page 13: Package dependency visualization for GNU/Linux systems

Package Dependency VisualizationFor GNU/Linux Systems 13

Formulação do problema

● Como podemos visualizar a complexidade das dependências de pacotes num sistema Linux?

Page 14: Package dependency visualization for GNU/Linux systems

Package Dependency VisualizationFor GNU/Linux Systems 14

Grafos – conceitos fundamentais

● Grafo: objecto matemático constituído por um conjunto de vértices ou nós e um conjunto de arestas (edges) que unem pares de nós.

● Se um grafo G existir uma direcção para todas as arestas (representadas por setas) designa-se por digrafo (directed graph)

Page 15: Package dependency visualization for GNU/Linux systems

Package Dependency VisualizationFor GNU/Linux Systems 15

Visualização de grafos (1/2)

Técnicas de visualização:● Hierarchical● Force-directed Layout● Radial Layout● 3D Layout● Geometria não-euclidiana

Page 16: Package dependency visualization for GNU/Linux systems

Package Dependency VisualizationFor GNU/Linux Systems 16

Visualização de grafos (2/2)

Critérios para uma visualização “agradável” :

● Minimizar intersecções entre vértices● Minimizar área total do desenho● Minimizar comprimento dos vértices● Respeitar um Aspect Ratio standard

(por ex. 4:3 ou 16:9)

Page 17: Package dependency visualization for GNU/Linux systems

Package Dependency VisualizationFor GNU/Linux Systems 17

Ferramentas OSS para visualização/análise de grafos

● Graphviz● Boost::Graph● JIT● NetworkX● JUNG

Page 18: Package dependency visualization for GNU/Linux systems

Package Dependency VisualizationFor GNU/Linux Systems 18

Graphviz● Desenvolvido por investigadores da AT&T

desde os anos '80● Opera sobre representações textuais dos

grafos (fácil de integrar em aplicações/scripts)

● Flexível:

suporta digrafos e grafos não dirigidos e diferentes algoritmos de layout

● Integra optimizações para um layout human-readable

Page 19: Package dependency visualization for GNU/Linux systems

Package Dependency VisualizationFor GNU/Linux Systems 19

Page 20: Package dependency visualization for GNU/Linux systems

Package Dependency VisualizationFor GNU/Linux Systems 20

Page 21: Package dependency visualization for GNU/Linux systems

Package Dependency VisualizationFor GNU/Linux Systems 21

Javascript Infoviz Toolkit

● Projecto bastante recente e promissor● Tira partido de capacidades dos browsers

mais recentes

mas …● Estava à partida fora do âmbito do

projecto

Page 22: Package dependency visualization for GNU/Linux systems

Package Dependency VisualizationFor GNU/Linux Systems 22

Page 23: Package dependency visualization for GNU/Linux systems

Package Dependency VisualizationFor GNU/Linux Systems 23

O Projecto Gumby

Objectivos iniciais / especificação● Aplicação Linux com GUI● Integração com o gestor de pacotes do

sistema● Visualização e exploração de

dependências

Page 24: Package dependency visualization for GNU/Linux systems

Package Dependency VisualizationFor GNU/Linux Systems 24

Gumby – o código

● Disponível em:

http://people.caixamagica.pt/aguerreiro/gumby

ou

http://bit.ly/hzMKHF

Page 25: Package dependency visualization for GNU/Linux systems

Package Dependency VisualizationFor GNU/Linux Systems 25

Gumby – Arquitectura

Page 26: Package dependency visualization for GNU/Linux systems

Package Dependency VisualizationFor GNU/Linux Systems 26

Integração no sistema de pacotes

● APT – meta-instalador bastante popular utilizado em Debian, Ubuntu, Caixa Mágica, …

● Como projecto followup seria interessante integrar a visualização no próprio processo de instalação

Page 27: Package dependency visualization for GNU/Linux systems

Package Dependency VisualizationFor GNU/Linux Systems 27

Interface Gráfico

Page 28: Package dependency visualization for GNU/Linux systems

Package Dependency VisualizationFor GNU/Linux Systems 28

Page 29: Package dependency visualization for GNU/Linux systems

Package Dependency VisualizationFor GNU/Linux Systems 29

Funcionalidades

● Visualização de todas as dependências (requires, provides, conflicts, obsoletes)

● Exploração progressiva● Modo compacto● Zoom e pan● Customização do layout suportada pelo

Graphviz

Page 30: Package dependency visualization for GNU/Linux systems

Package Dependency VisualizationFor GNU/Linux Systems 30

Limitações

A nível do protótipo:● Exploração de dependências por versão● Layout incremental

A nível do projecto:● Avaliar o impacto de usabilidade

Page 31: Package dependency visualization for GNU/Linux systems

Package Dependency VisualizationFor GNU/Linux Systems 31

Conclusões

● É possível melhorar a usabilidade de um sistema de pacotes através de uma ferramenta de visualização

● É importante escolher técnicas de visualização adequadas aos dados a representar

● A gestão de pacotes é um componente vital para um sistema operativo baseado em OSS

Page 32: Package dependency visualization for GNU/Linux systems

Package Dependency VisualizationFor GNU/Linux Systems 32

Sugestões para trabalho futuro

● Usar a componente de visualização para representar outros sistemas de componentes: plugins Eclipse, outras distribuições não suportadas

● Melhorar a componente de visualização de modo a proporcionar visualização mais agradável

● Aprofundar a integração com gestores de pacotes “state-of-the-art”

Page 33: Package dependency visualization for GNU/Linux systems

Package Dependency VisualizationFor GNU/Linux Systems 33

Fim