How to determine the size of a package while using apt prior to downloading?

When using apt-get install <package_name>, and there are dependencies that need to be downloaded, the terminal outputs names of additional packages and total size, and asks for confirmation before downloading.

But, when dependencies are satisfied and nothing but the named package needs to be downloaded there is no size output and no confirmation.

When using Synaptic, I can see the total size that new packages that will use after installation but no way to see the size that needs to be downloaded, except to go from package to package and use properties to see the compressed size.

I would like to know if there is a way to see the size of a package(s) in terminal and Synaptic prior to downloading and installing it/them?


In the terminal, for a single package:

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

for more than a package:

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

I have no idea about Synaptic.


apt-cache show <package> or aptitude show <package> will show more information about a package, including its size.

For the package size only, you can use:

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

or

aptitude show <package> | grep 'Uncompressed Size'

For .deb packages you can use:

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

The latest and best way to do this is with apt show, which includes units:

apt show firefox | grep Size

Installed-Size: 202 MB
Download-Size: 51.7 MB

apt show can be used to see lots of other useful information about a package before you install it, including version, dependencies, "Breaks", "Replaces", and a description.


This is also right but size is displayed in bytes. And this shows size in better format but if package is of very small size (say < 1MB) then in-spite of echo 'n'it will install package (Because in that case, apt doesn't prompt).

So, You use --no-download with --assume-no as follows:

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

Here --no-download argues not to download package and --assume-no is for assuming no (n) in case of any prompt.

Example:

$ 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.

You could use the "dry run" mode, which just pretends to download and install packages

$ 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.