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 que…

Um texto pós-moderno - better man

Espere olhando para as horas... são 4 horas. Tem que parar. Nesse tom melancólico, começa a modesta música "better man", uma balada pop composta por Eddie Vedder ainda na adolescência. A música é a ilustração perfeita da ironia. O próprio título é irônico, uma vez que em momento algum na música aparece um better man.

She lies and says she's in love with him, can't find a better man...

Irônico, não!? Para começar, com a personagem central da história, a mulher que aguarda tarde da noite seu esposo... Ela chega a treinar com o espelho o fim do relacionamento. E o que faz? Diz a negação do que queria dizer.

Vedder escreve músicas sobre sentimentos fortes. Sua relação com a mãe foi bastante complicada pelo o que descreve em suas canções. Na trilogia Mommy, Vedder descreve um homem perturbado com o relacionamento materno; a mãe mente para o filho sobre a identidade do pai, revela a verdade para o garoto na puberdade dizendo a ele como se parece com o verdadeiro pai e o leva …

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#$*%".r…