What is really a package in Ubuntu?

In Windows I am familiar with .exe and .dll files (two essential files for running or writing a program). But when I want to install manually an application in Ubuntu, most of the time I will need extra packages. What are these packages? Are they like dll files in Windows? Where are they save in Ubuntu? What types of packages are there? How can I find what packages are needed to install an application and where can I find them?


Solution 1:

What are these packages?

Consider this real life example of what a package is: packages are what UPS delivers on your doorstep: exactly that what you ordered from somewhere packaged neatly collected in 1 box.

An Ubuntu package is exactly that: a collection of items (scripts, libraries, text files, a manifest, license, etc) that enable you to install a piece of software ordered in such a way that the package manager can unpack it and put it into your system.

Are they like dll files in Windows?

No the equivalent of a DLL would be what we call a library. Those will be inside the package.

Where are they save in Ubuntu?

In a cached directory. See /var/cache/apt/archives/

What types of packages are there?

Technically there is just one. We use ".deb" files. Redhat uses ".rpm". Suse uses ".rpm". We can use ".rpm" by converting it into a ".deb" but that is for the more experienced user (I have been using Ubuntu since the beginning and I rather spent 10 more minutes searching for a .deb). There are other methods of installing but a installation files that are zipped (like a .tar file) are not a package.

How can I find what packages are needed to install an application and where can I find them?

You can use your own Ubuntu software center to search for software based on text. If you are interested in an on-line method where you can also find the debian installation package and all of the source files: ubuntu.packages.com

Mind you: you technically do not need to know what you need to install. The system itself know what to install (including dependencies related to that package you choose).


Edit based on comments:

The intriguing part of this question starts to show. The android SDK is not an Ubuntu package so the common Ubuntu rules do not apply. It is 3rd party software, and it is offered as a general Linux ZIP file. Those can be annoying in that they often only tell you you need other software. And often put those requirements in a text file (a "readme").

Eclipse and Aptana are similar: they require java but do not install it for you. They put a notice with the download though that you need java. It is up to you to install a java version (since there are more than one).