Date post: | 30-Jun-2015 |
Category: |
Documents |
Upload: | andre-guerreiro |
View: | 593 times |
Download: | 1 times |
Package dependency visualization for GNU/Linux Systems
André GuerreiroMestrado em Informática e Gestão - ISCTE-IUL
17 de Dezembro de 2010
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
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
Package Dependency VisualizationFor GNU/Linux Systems 4
Ciclo de distribuição de Software
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
Package Dependency VisualizationFor GNU/Linux Systems 6
Dimensão de uma distribuição Linux ao longo do tempo
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.
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
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)
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
Package Dependency VisualizationFor GNU/Linux Systems 11
Package Dependency VisualizationFor GNU/Linux Systems 12
Visualizações nos gestores de pacotes actuais
Limitados os esforços nesta área:● Aptitude● apt-pbo● debtree
Package Dependency VisualizationFor GNU/Linux Systems 13
Formulação do problema
● Como podemos visualizar a complexidade das dependências de pacotes num sistema Linux?
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)
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
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)
Package Dependency VisualizationFor GNU/Linux Systems 17
Ferramentas OSS para visualização/análise de grafos
● Graphviz● Boost::Graph● JIT● NetworkX● JUNG
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
Package Dependency VisualizationFor GNU/Linux Systems 19
Package Dependency VisualizationFor GNU/Linux Systems 20
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
Package Dependency VisualizationFor GNU/Linux Systems 22
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
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
Package Dependency VisualizationFor GNU/Linux Systems 25
Gumby – Arquitectura
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
Package Dependency VisualizationFor GNU/Linux Systems 27
Interface Gráfico
Package Dependency VisualizationFor GNU/Linux Systems 28
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
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
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
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”
Package Dependency VisualizationFor GNU/Linux Systems 33
Fim