Smart Package Manager was designed to make software installation problem free and simple. Smart can install software packages made by various packaging systems (RPM and .deb) made available by various means (local files, APT, APT-RPM, YUM, URPMI and other repository systems). In effect Smart abstracts away the details of the underlying mechanisms. A significant benefit of this is that software can be installed on many different types of system without having to learn all about the different packaging and distribution systems being used. For example you can learn to use Smart on Fedora and use the same knowledge to install software on Ubuntu.
Smart attempts to install software in the most compatible way on a particular machine with a particular set of software. Smart will try to install the latest software available as long as it does not break other software already installed. If a conflict does occur Smart will backtrack until it finds the most likely set of software that will work. To do this it depends on accurate reliable information from the package metadata it has been provided with. This means that your software will most likely continue working the way you expect without any odd surprises.
Knowing some terminology will help explain the way Smart abstracts from the underlying packaging system.
Packages : Packages usually contain the files required by some software and some instructions to automatically install the software.
Repositories : Repositories are a collection of packages plus some additional data. The additional data is usually extracted from the packages and stored separately. This is called the repository metadata.
Repository Metadata : The metadata contains information on how the packages relate to each other. The metadata usually contains enough information for a package manager to decide how best to install a set of packages. The metadata can also contain other information that might be useful to a user. This saves you from having to download the packages themselves to find out that information. The packages might have been grouped together into a repository because they form a Distribution (e.g. Fedora, Ubuntu, Slackware), because they were packaged by someone developing some software or for other reasons.
Channels : Channels are Smart's way of describing a repository. The metadata is usually constructed according to a standard, for example Yum (a package manager used in Fedora and Centos) uses and XML format to store the information for a group of packages. To use this information a channel is defined which tells Smart what type of repository it is looking at and where it can find the metadata.
Baseurl : The baseurl is the address of the original repository. The original repository can be mirrored onto other servers to help spread the load and to bring the data closer to the people wanting to use that repository. Mirrored repositories is very helpful to the people who provide the repositories.
Mirrors : Smart can use a list of mirrors to collect files from a repository. Smart can save a list of mirrors in two different ways. The repository can provide the mirror information in various formats (these are called automatic mirrors and are usually hidden from the user) or Smart can be configured to use a set of mirrors (these are called manual mirrors).
In Smart collecting channel information is called updating. Installing new packages is called upgrading. It is useful to make this distinction here.
Channel Conflicts : Usually Smart will be using more than one repository. Repositories can sometimes contain the same software. This usually happens when a third party is providing the same software as the distribution. If not carefully designed the packages from the two repositories will conflict. Smart will do it's best to determine the best path to follow to install/upgrade the software but sometimes this is not possible. At this point Smart will tell you it has found a problem it cannot overcome.
Repository Errors : These are usually seen when there is a mis-match between the repository metadata and the package files present in the repository. For example when the repository metadata was created, a package was present which was subsequently removed, Smart will not be able to download the package even though it has been told by the repository metadata that it is present.