Pular para o conteúdo principal

Analisando o Debian

Já faz algum tempo que eu estudo as comunidades de software livre. Para mim, sempre foi um desafio conseguir analisá-las de uma forma sistemática e consistente. Em 2006, eu pensei em materializar meu estudo. Tive várias idéias, mas pouca coisa foi implementado. Uma dessas idéias era avaliar o "poder" de uma comunidade pela dependência que outros projetos teriam do projeto dessa comunidade. Essa análise poderia ser feita com ajuda do sistema de pacotes do Debian.
O Debian é uma das mais reconhecidads distribuições do Linux, sendo base para várias outras distribuições como Ubuntu, Knopixx, etc. O que a distribuição Debian fez, que as outras distribuições não fizeram foi trazer um sistema eficiente para instalação de programas ao Sistema Operacional. O eficiente sistema de pacotes do Debian é baseado no utilitário apt-get que antes de baixar e instalar o programa desejado com um simples comando, descobre todas as dependências (e as dependências das dependências) daquele pacote e caso algum esteja faltando, pergunta ao usuário se quer as instalar tais dependências. Se o usuário confirmar a seleção, o utilitário baixa e instala todas as dependências e, lógico, o progama escolhido.
Analisando o código fonte do apt-get, eu descobri que toda a informação de depedências encontra-se no arquivo Packages de uma distribuição debian. O arquivo Packages é um arquivo texto com blocos de informações sobre cada um dos pacotes.


Package: 3270-common
Priority: optional
Section: net
Installed-Size: 96
Maintainer: Bastian Blank
Architecture: i386
Source: ibm-3270
Version: 3.3.4p6-3.3
Depends: libc6 (>= 2.3.6-6)
Recommends: x3270 (= 3.3.4p6-3.3) | c3270 (= 3.3.4p6-3.3), pr3287 (= 3.3.4p6-3.3)
Filename: pool/main/i/ibm-3270/3270-common_3.3.4p6-3.3_i386.deb
Size: 21910
MD5sum: 209bb0595c53421c433f4524147d6335
SHA1: c89e5ef06fa0978b5a0935c90273b5c5997b2142
SHA256: 881cf62382b9e1945155bdd366645d9660c1848aaab3a58e73d2bdfaa49301ae
Description: Common files for IBM 3270 emulators and pr3287
3270-common contains files referenced in other 3270 packages


Bom, agora é hora de procurar uma ferramenta já disponível para trabalhar com grafos. Tenho uma experiência negativa com SGB (Stanford Graph Base, do Donald Knuth), então espero que o arcabouço que eu encontrar seja mais amigável. E eis que surge o jung (Java Universal Network Graph).

Bom, é muito simples utilizar o JUNG e ele fornece um monte de coisas como diversos algoritmos diferentes de visualização, análise de grafos, etc. Munido desse poderoso arcabouço tentei VISUALIZAR O DEBIAN. Parece ser uma tarefa bem mais complicada do que eu imaginei...

Comentários

Postagens mais visitadas deste blog

Expressões, preconceito e racismo

Expressões preconceituosas e racistas Antes de alguma outra frase, primeiro peço licença para falar de mais um assunto do qual não domino. Falo por acreditar que um leigo presta serviço maior ao debater assunto com base em fontes (ainda que seja uma Wikipedia) e no pensamento lógico do que simplesmente se manter mudo a questões do cotidiano. Em voga agora está em falar quais são ou eram as expressões preconceituosas e racistas que até a pouco eram toleradas em muitos meios. Como é covarde dizer que em boca fechada não entra racismo. O racismo não é perpetrado apenas por quem profere mas por quem se cala à agressão perpetrada a outrem. Mas veremos que a questão é muito mais complexa que os cães raivosos do politicamente correto querem dizer. Tomo aqui a palavra racista, como sendo algo usado para impor a dominação de uma “raça” sobre outra. Portanto, a acusação de racismo vai muito além da mera acusação de preconceito. Não tenho o menor apreso por vitimismo barato, onde expressões q...

A hard logic problem - The escape of blue eyed vampires

Once upon a time, a vampire clan lived peacefully on an island (as long as vampire clans can live peacefully). Then, a demon lord came, overwhelmed the vampires and became the ruler of the island. The demon didn't want any vampire to escape so he created a gargoyle to guard the only way out. This gargoyle was a fantastic creature, so powerful that he was kept petrified for the whole time until a vampire appears. Then he awakened and started to fight until seeing no more vampire "alive" (as far a vampire can be alive). All vampires crazy enough to try were killed only left a hundred of vampires. There was a catch, of course. The gargoyle was not perfectly designed. It did not awaken when blue eyes vampires appeared. And all remaining vampire were blue eyes but as you know vampires cannot see him/her selves on reflections. For any reason, they were not aware of their eye colors. Besides all that, blue eyed vampires didn't like each other (so they would never say ...

Curry with JS

Partial application and currying with Javascript In the strict way, currying is the technique of transforming a function that takes multiple arguments (a tuple of arguments) to one function that receive only one. In such way, currying techniques allow transform one multi-parameter function in a chain of functions, each one with a single argument. Looks complicated? Blah.. it is not true. In this little article, we are actually more interesting in partial applications. Let’s take the Mozilla Example for replace function in String. As we know, we can use a “replacer” function as paramenter for replace method in String object. Let’s say that we want to split a String defined by a non-numerical part, a numerical part and finally a non-alphanumeric part. Here is how: function replacer(match, p1, p2, p3, offset, string){ // p1 is nondigits, p2 digits, and p3 non-alphanumerics return [p1, p2, p3].join(' - '); }; We can try it as usual… var newString = "abc12345#$*%...