当前位置: 首页>>技术教程>>正文


在下载之前使用apt时如何确定软件包的大小?

,

问题描述

使用apt-get install <package_name>时,需要下载依赖项,终端输出附加软件包的名称和总大小,并在下载前要求确认。

但是,当满足依赖关系并且仅下载命名的程序包时,就不会输出大小,也不会进行确认。

使用Synaptic时,我可以看到安装后新软件包将使用的总大小,但是看不到需要下载的大小,除了从一个软件包到另一个软件包并使用属性查看压缩后的大小。

我想知道是否有办法在下载和安装它们之前在终端和Synaptic中查看软件包的大小?

最佳思路

在终端中,对于单个包装:

apt-cache --no-all-versions show $package | grep '^Size: '

不仅仅是一个包:

apt-cache --no-all-versions show $packages | 
    awk '$1 == "Package:" { p = $2 }
         $1 == "Size:"    { printf("%10d %s\n", $2, p) }'

我不知道Synaptic。

次佳思路

apt-cache show <package>aptitude show <package>将显示有关包装的更多信息,包括包装的尺寸。

仅对于包装尺寸,可以使用:

apt-cache show <package> | grep Installed-Size

要么

aptitude show <package> | grep 'Uncompressed Size'

对于.deb软件包,可以使用:

dpkg-deb -I <package>.deb | grep Installed-Size

第三种思路

您可以使用”dry run”模式,该模式只是假装下载并安装软件包

$ aptitude install -sy xlockmore
The following NEW packages will be installed:
  xlockmore 
0 packages upgraded, 1 newly installed, 0 to remove and 27 not upgraded.
Need to get 194 kB of archives. After unpacking 373 kB will be used.
Would download/install/remove packages.

第四种思路

This也是正确的,但是大小以字节为单位显示。并且this以更好的格式显示大小,但是如果软件包的大小很小(例如<1MB),则echo 'n'的in-spite将安装软件包(因为在这种情况下,apt不会提示)。

因此,您可以将--no-download--assume-no结合使用,如下所示:

sudo apt-get --no-download --assume-no install <package_name> | grep 'Need to get'

在此,--no-download主张不下载软件包,而--assume-no则假定在没有任何提示的情况下不提供(n)。

例:

$ sudo apt-get --no-download --assume-no install ttf-devanagari-fonts 2>/dev/null | grep 'Need to get'
Need to get 938 kB of archives.

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/8869.html,未经允许,请勿转载。