Administration / Package Management
All Linux systems are organized by "package" frameworks. On RedHat Linux systems, the package framework is the RPM, which stands for RedHat Package Manager. On a RedHat system, packages will have names like
whatever-2.3-2.i386.rpm
That means the program's version 2.3 is in a package that is called "whatever", and this is the second version of the package (hence the -2) offered by the packager. It is intended for a 32 bit Intel 386 (or better) system.
On Debian Linux systems, the Debian package system is used, and packages have names like
whatever-2.3-2.i386.deb
Notice that's almost the same as the RedHat style, except the suffix is deb.
Almost all Linux distributions currently in use are descended from either RedHat or Debian.
Slackware Linux uses its own package system, but I've not used Slackware since 1997, and don't have anything to say about it.
All of the major Linux distributions have tried to make it easier and easier to 1) get all the packages you need and 2) install the pre-requisites and 3) stop you from removing something that is required for something else. The "basic program" that administers the package system is a command line tool, such as "rpm" on RedHat or "dpkg" on Debian, and then layered "on top" of that we have the "yum" program on RedHat and "apt-get" on Debian systems. "yum" and "apt-get" are network aware and if one asks to install a package, they attempt to find out what else might be needed and download that at the same time.
I would urge any new system administrator to AVOID over reliance on "yum" or "apt-get". They don't always work, and when they don't, there is no alternative but to work directly with "rpm" or "dpkg". I realize this is old school advice. Here are some command line tips
List All Programs | rpm -qa | dpkg -l |
Install a Package | rpm -Uvh whatever-2.3-2.i386.rpm | dpkg -i whatever-2.3-2.i386.deb |
Remove whatever | rpm -e whatever | dpkg -r whatever |
Check if package installed | rpm -q whatever | dpkg -l whatever |
When I started this, I had more energy than I do now. I should come back with a more comprehensive list of rpm and dpkg command options. They are quite powerful.
The term "dependency hell" refers to the difficulty of installing a package that somebody else builds against their system when one's system is slightly different. When programs are compiled, they use "shared libraries" and those libraries may be slightly different on the build system, and so the install system might experience trouble because it does not have access to those libraries.
Most of my experience is with the RPM system, and I have to admit I still think it is superior to the DEB packaging framework, but the differences are all in the packager's work, not on the user end. Users seem to think the DEB system is better, more convenient, but the RedHat system has been fine for me. That being said, on my personal computers--my laptop--I currently run Ubuntu Linux, a Debian derivative. That choice was driven by the need for 3D video drivers. At the new user level, the predominant opinion seems to be that a Debian system, particularly the Ubuntu Linux distribution, makes it easier to get out of "dependency hell".
Security
First of all, realize that not all Linux distributions will have the same assumptions about security. Some are configured in a way that is easy for newcomers, and therefore possibly less secure. Some are configured for experts, thus allowing newcomers to accidentally open up their systems to abuses.
I have been assembling a list of "check points" for security when I install new systems. They are collected in the Security Tips Page
Copy Entire File Systems Exactly
In the "olden days," the default Linux installation would create 7 or so partitions on the hard disk, and it would put the major components in separate partitions. It was difficult/impossible to "resize" a partition, and even today that is somewhat untrustworthy on any OS. Sometimes, it is necessary for me to refer to these old school notes on Copying a File System Entirely.