4

port installed显示本地机器上所有已安装的包,但是有没有办法列出每个包的大小?谢谢!

4

3 回答 3

11
port space --units MB installed

好用又简单,从 2011 年的2.0 版开始就一直可用!

于 2016-04-23T03:17:06.187 回答
1

我不相信 Macports 有内置命令来列出安装的大小,但你可以这样做:

在终端中尝试以下命令:

du -sh /opt/local/var/macports/software/*

这将为您提供 /opt/local/var/macports/software/* 中每个包的大小,我相信这是默认安装位置。

显然,如果您将端口安装在其他地方,您可以使用

 du -sh [directory]

如果没有内置的 Macports 命令,这可能是您能做的最好的事情。

想到的一种替代方法是创建一个脚本,该脚本将输出

 port installed

并回显每次安装的大小。

编辑:

我错了。/opt/local/var/macports/software/* 包含从中提取安装的tarbell,因此大小会更小。

如果你做 du -sh /opt/local,它应该列出所有东西的大小,但列表中可能有一些非 macports 包。

该命令port contents installed将向您显示 macports 已安装的所有内容的目录。

于 2013-04-15T04:37:41.953 回答
1

这是一个小的 bash 函数,它将接受任何有效的 macports 查询

function port_size {
    size=0
    pkg_size=0
    for pkg in $(port $@ | tail -n +2 | awk '{ print $1 }')
    do
        pkg_size=$(port contents $pkg \
            | sed -r 's/^[[:space:]]*(.*)[[:space:]]*$/\1/g;s/ /\\ /g' \
            | tail -n +2 | xargs du | cut -f1 | paste -sd '+' | bc)
        size=$(( $size + $pkg_size ))
        printf "%10d %s\n" $pkg_size $pkg
    done
    printf "%10d %s\n" $size "Total Size (KB)"
}

我只用 sed 和 awk 的 GNU 版本对其进行了测试,但无论如何它都应该可以工作。

port_size installed   # will print out all installed packages and their size

port_size installed gcc*    # will print out all packages matching gcc* wildcard

同样,任何有效的 macports 查询都将起作用(包括installed inactiveor outdated.

于 2014-03-02T19:39:46.897 回答