How To Download APT And All It's Dependencies?

Solution 1:

Either I am gravely mistaken, or there's something fundamentally wrong with apt having 302 dependencies + sub-dependencies. How can any distribution claim to lightweight if it depends on apt, then? At least, in my laptop, reinstalling apt doesn't mention any dependencies at all, so I am not sure where you got that figure from. I cooked up a script to check. On Ubuntu 14.04, I get 24 dependencies:

dpkg gcc-4.8-base gcc-4.9-base gnupg gpgv install-info libacl1 libapt-pkg4.12 libattr1 libbz2-1.0 libc6 libgcc1 liblzma5 libpcre3 libreadline6 libselinux1 libstdc++6 libtinfo5 libusb-0.1-4 multiarch-support readline-common tar ubuntu-keyring zlib1g

I then learned about apt-rdepends: http://xmodulo.com/2013/07/how-to-check-package-dependencies-on-ubuntu-or-debian.html

I installed and ran it, filtered the dependencies, sorted and compared to find the same list I got with the script. So I can safely conclude that these are all the packages you need to install apt. I think one of those gcc-4.[89] can be ignored depending on which one you want to install. Note that this list has trimmed down from Ubuntu 12.04, on which running this script (on a server) gave me 28 dependencies:

coreutils debconf dpkg gcc-4.6-base gnupg gpgv install-info libacl1 libapt-pkg4.12 libattr1 libbz2-1.0 libc6 libc-bin libgcc1 liblzma5 libreadline6 libselinux1 libstdc++6 libtinfo5 libusb-0.1-4 multiarch-support perl-base readline-common tar tzdata ubuntu-keyring xz-utils zlib1g

Presumably the packages have been trimmed down. The lack of dependency on coreutils and debconf is startling, I must say.

On a side note, I agree with this bug given in apt-rdepends man page:

  apt-rdepends exists.  This functionality should really reside in apt-
   cache itself.

The apt-cache tool provides four relevant commands that Braiam, unorthodox-grammar and I have discussed:

  • depends: List the (forward) dependencies. This also includes all the packages that are recommended, and also includes packages in the Breaks, Conflicts and Replaces sections. We just need to look at the Depends and Pre-Depends packages.
  • rdepends: There's an unfortunate naming clash with apt-rdepends. Both apt-rdepends and my aforementioned script check for dependencies recursively, whereas the apt-cache command is looking for reverse dependencies - packages which depend on the package in consideration. Use this command to check for potentially breakages caused by a package depending on a specific version of the one you are going got change.
  • showsrc: This command gives information about the source package that was use to build a package. A single source package can be used to build multiple binary packages - each of which may or may not depend on the others. apt, for example, depends on libapt-pkg, but not on libapt-inst, both of which are provided by the apt source package. Use this command to gain some insight into other packages you should install, which may not be dependencies, but which may be needed for greater utility,
  • showpkg: This command, among other things, lists both reverse and forward dependencies. The reverse dependencies are listed in a straightforward list, but the forward ones are a bit of a jumble - I still am not sure what the numbers mean. In any case, the individual commands depends and rdepends are clearer.

Thus, if we need to look at all the packages that a package might depend on directly or indirectly, apt-rdepends is what we need.

Solution 2:

There are only 4 packages which you should to be preoccupated with: libapt-pkg4.12, apt-utils, libapt-inst1.5 and apt. The other dependencies to the apt packages are standard to all installations of Ubuntu. Why do I say only those 4 packages?

apt-cache showsrc apt
[...]
Package-List: 
 apt deb admin important arch=any
 apt-doc deb doc optional arch=all
 apt-transport-https deb admin optional arch=any
 apt-utils deb admin important arch=any
 libapt-inst1.5 deb libs important arch=any
 libapt-pkg-dev deb libdevel optional arch=any
 libapt-pkg-doc deb doc optional arch=all
 libapt-pkg4.12 deb libs important arch=any

As you can see, the only packages that really comes from apt sources and are important are those.

Through the libapt-pkg4.12 package is pretty stable (there isn't right now a version on experimental, through all other packages have a new version) is recommended that you install them all together.

Also remember that product of this upgrade, you may break reverse dependencies to all those packages. First do apt-cache rdepends libapt-pkg4.12 apt-utils libapt-inst1.5 apt and check for any package that depends on a specific version of apt.

Solution 3:

You can use Cube in that case. Cube downloads apps and all of its dependencies, and you can set whether to use apt-get or dpkg in installing them. Just select dpkg as default installer instead of apt-get in "Settings=>Preferences=>Installer Tab"

Check this tutorial to know more : http://community.linuxmint.com/tutorial/view/1583

Solution 4:

Xubuntu includes in the base installation apt-offline to get around this situation provided you already have apt in place. It determines what dependencies need to be downloaded and maps it out so that you do not have issues handling such download bundles. The online documentation set contains a chapter on how to use the tool.