當前位置: 首頁>>技術教程>>正文


在下載之前使用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/zh-tw/article/8869.html,未經允許,請勿轉載。