Package dependency visualization for GNU/Linux systems
1. Package dependency visualization
for GNU/Linux Systems
André Guerreiro
Mestrado em Informática e Gestão - ISCTE-IUL
17 de Dezembro de 2010
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 Visualization
For GNU/Linux Systems 2
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 Visualization
For GNU/Linux Systems 3
4. Ciclo de distribuição de Software
Package Dependency Visualization
For GNU/Linux Systems 4
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 Visualization
For GNU/Linux Systems 5
6. Dimensão de uma distribuição Linux
ao longo do tempo
Package Dependency Visualization
For GNU/Linux Systems 6
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 Visualization
For GNU/Linux Systems 7
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 Visualization
For GNU/Linux Systems 8
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 Visualization
For GNU/Linux Systems 9
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.i386
libjpeg.so.62 is needed by google-chrome-stable-
8.0.552.215-67652.i386
Package Dependency Visualization
For GNU/Linux Systems 10
12. Visualizações nos gestores de
pacotes actuais
Limitados os esforços nesta área:
● Aptitude
● apt-pbo
● debtree
Package Dependency Visualization
For GNU/Linux Systems 12
13. Formulação do problema
● Como podemos visualizar a
complexidade das dependências de
pacotes num sistema Linux?
Package Dependency Visualization
For GNU/Linux Systems 13
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 Visualization
For GNU/Linux Systems 14
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 Visualization
For GNU/Linux Systems 15
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 Visualization
For GNU/Linux Systems 16
17. Ferramentas OSS para
visualização/análise de grafos
● Graphviz
● Boost::Graph
● JIT
● NetworkX
● JUNG
Package Dependency Visualization
For GNU/Linux Systems 17
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 Visualization
For GNU/Linux Systems 18
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 Visualization
For GNU/Linux Systems 21
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 Visualization
For GNU/Linux Systems 23
24. Gumby – o código
● Disponível em:
http://people.caixamagica.pt/aguerreiro/gumby
ou
http://bit.ly/hzMKHF
Package Dependency Visualization
For GNU/Linux Systems 24
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 Visualization
For GNU/Linux Systems 26
27. Interface Gráfico
Package Dependency Visualization
For GNU/Linux Systems 27
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 Visualization
For GNU/Linux Systems 29
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 Visualization
For GNU/Linux Systems 30
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 Visualization
For GNU/Linux Systems 31
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 Visualization
For GNU/Linux Systems 32