Kan-Ru Chen's Weblog

TOP 20 Space-Hungry Packages

Arch Linux 與 Debian 皆可以在安裝的時候選擇最小安裝,究竟哪一個 Distribution 在使用一段時間之後最佔空間呢? 剛安裝完的時候似乎是 Arch 比較小一點,但是因為 Debian 套件切的比較細,所以最後可能是 Debian 會比 較小。

當初在試用 Arch 的時候寫了小程式來畫出前 20 個最佔空間的套件,並依此來 瘦身,結果如下:

Arch Linux Package Size TOP 20

Debian Package Size TOP 20

兩邊因為安裝的套件種類不同因此無從比較,Arch 的 TeXLive 因為沒有切所以 會比 Debian 上較大一點,Debian 上的 ghc6 則是為了測試 xmonad 裝的, Haskell 本身做出來的執行檔就頗大,ghc6 需要 369MB 實在不意外...

底下是製作圖片的程式,實際上是用 Google Chart API 畫的:

    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    from pygooglechart import StackedHorizontalBarChart, Axis
    from subprocess import *
     
    TITLE="Debian Package Size TOP 20"
    PKGSIZE_PROG="./dpkgsize"
    OUTPUT="debian-top20pkg.png"
     
    chart = StackedHorizontalBarChart(930, 320)
    chart.set_bar_width(10)
    chart.set_title(TITLE)
     
    size_data = []
    name_data = []
     
    for ln in Popen([PKGSIZE_PROG], stdout=PIPE).stdout:
        size, name = ln.split()
        size_data.append(int(size))
        name_data.append(name)
     
    chart.add_data(size_data[:20])
     
    max_size = size_data[20]
    min_size = size_data[0]
    label = map(lambda x: str(x / 1024)+"MB",
                xrange(min_size, max_size, (max_size-min_size)/10))
    label.reverse()
     
    rev_name_data = name_data[:20]
    rev_name_data.reverse()
    chart.set_axis_labels(Axis.LEFT, rev_name_data)
    chart.set_axis_labels(Axis.BOTTOM, label)
     
    print(chart.get_url())
    chart.download(OUTPUT)

PKGSIZE_PROG 代換成自己 Distro 的就可以了:

Debian:

    #!/bin/sh
    dpkg-query -W -f='${Installed-Size} ${Package}\n'|sort -nr

Arch:

    #!/bin/sh
    pacman -Qi|awk '/^Installed Size/{print int($4), name} /^Name/{name=$3}'|sort -nr