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 -*-
    #a71d5d;">from pygooglechart #a71d5d;">import StackedHorizontalBarChart, Axis
    #a71d5d;">from subprocess #a71d5d;">import #0086b3;">*
     
    #0086b3;">TITLE#a71d5d;">="Debian Package Size TOP 20"
    #0086b3;">PKGSIZE_PROG#a71d5d;">="./dpkgsize"
    #0086b3;">OUTPUT#a71d5d;">="debian-top20pkg.png"
     
    chart #a71d5d;">= StackedHorizontalBarChart(#0086b3;">930, #0086b3;">320)
    chart.set_bar_width(#0086b3;">10)
    chart.set_title(#0086b3;">TITLE)
     
    size_data #a71d5d;">= []
    name_data #a71d5d;">= []
     
    #a71d5d;">for ln #a71d5d;">in Popen([#0086b3;">PKGSIZE_PROG], stdout#a71d5d;">=#0086b3;">PIPE).stdout:
        size, name #a71d5d;">= ln.split()
        size_data.append(#0086b3;">int(size))
        name_data.append(name)
     
    chart.add_data(size_data[:#0086b3;">20])
     
    max_size #a71d5d;">= size_data[#0086b3;">20]
    min_size #a71d5d;">= size_data[#0086b3;">0]
    label #a71d5d;">= #62a35c;">map(#a71d5d;">lambda x: #0086b3;">str(x #a71d5d;">/ #0086b3;">1024)#a71d5d;">+"MB",
                #0086b3;">xrange(min_size, max_size, (max_size#a71d5d;">-min_size)#a71d5d;">/#0086b3;">10))
    label.reverse()
     
    rev_name_data #a71d5d;">= name_data[:#0086b3;">20]
    rev_name_data.reverse()
    chart.set_axis_labels(Axis.#0086b3;">LEFT, rev_name_data)
    chart.set_axis_labels(Axis.#0086b3;">BOTTOM, label)
     
    #62a35c;">print(chart.get_url())
    chart.download(#0086b3;">OUTPUT)

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

Debian:

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

Arch:

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

已發佈

分類:

,

作者:

標籤: