1. データの準備
現在インストールされているパッケージは 1,100 ほど.eix と equery を使用して,それぞれのパッケージの依存関係をすべて CSV に落とす.# eix-installed -q all | while read pkg; do equery -q d $pkg | sed -e "s|$|,$pkg|"; done | tee data.csv
# wc -l data.csv
9783 data.csv
# head data.csv
x11-libs/gtk+-3.18.7,app-accessibility/at-spi2-atk-2.18.1
app-accessibility/at-spi2-atk-2.18.1,app-accessibility/at-spi2-core-2.18.3
app-accessibility/speech-dispatcher-0.8.1,app-accessibility/espeak-1.47.11-r1
www-client/chromium-49.0.2623.75,app-accessibility/speech-dispatcher-0.8.1
app-eselect/eselect-blas-0.1,app-admin/eselect-1.4.4
app-eselect/eselect-cblas-0.1,app-admin/eselect-1.4.4
app-eselect/eselect-ctags-1.18,app-admin/eselect-1.4.4
app-eselect/eselect-fontconfig-1.1,app-admin/eselect-1.4.4
app-eselect/eselect-java-0.1.0,app-admin/eselect-1.4.4
app-eselect/eselect-lib-bin-symlink-0.1.1,app-admin/eselect-1.4.4
それなりの規模のデータになった.2. グラフの作成
Gephi のチュートリアルを見ながら試行錯誤してみた結果が以下.SVG 版: https://drmn.jp/blog/20160307-portage.svg
何かの目的を持ってグラフを作成したわけではないのだけれど,簡単なことは見えてくる.
- pkgconfig が依存され度ナンバーワン
- Python, Perl, Java, Haskell 関連のパッケージは当該言語内の依存関係が強い (当然).そのなかでも Haskell は孤高の存在
- 依存によるコミュニティ分類が,パッケージの種類に対応していそうなところと,混ざっていそうなところがある.メディア関連ライブラリはかなり独立しているのに対し,X 関連と開発関連が混じっているという点が見られる
参考
- Quick Start - Gephi.org
https://gephi.org/users/quick-start/