Revision 0.3
Copyright (c) 2005 Eskild Hustvedt.
Permission is granted to copy, distribute and/or modify this document under
the terms of the CreativeCommons Attribution-ShareAlike license version 2.5
A summary of the license can be found here, the full license here.
This howto is written for users of Mandriva Linux that wants to learn (more?) about how to install, remove
and update RPM's using the tools included in the Mandriva Linux distribution.
It is not universal and is only written for the Mandriva Linux distribution and does not apply
to other distributions that use other package management systems.
RPM is a packaging system for Linux originally developed by Red Hat (but now maintained independendly), and are used by many
of the major Linux distributions, including (but not limited to)
Mandriva Linux, RedHat,
Fedora Core and SUSE.
RPM is short for "RPM Package Manager". It makes installing
and maintaining installed software in Linux easy. An RPM package
contains either the entire compiled (binary) software, or in some rare
cases the source code for the software so that you may compile it
yourself (called a SRPM or Source RPM). Mandriva has developed
some tools that makes keeping your system up-to-date, installing,
removing and upgrading RPM's easier. All the tools described in this HOWTO are
created by Mandriva with the exception of "rpm" wich is the original rpm tool.
On a technical note, an RPM is really a CPIO archive with gzip or bzip2 compression.
Choosing which tool you want to use is a matter of taste more than anything else. If you are new to Linux/Unix and not fammillar with using the commandline I would recommend that you start by using the graphical tools and perhaps move on to the commandline ones later. If, however, you are experienced with the use of the commandline you might want to use the console tools instead. With time, try them both and decide which one you like best, it's all a matter of preference.
COMMAND: | Description: | Section: |
rpmdrake | Installs RPM's from URPM sources |
2.3 |
rpmdrake-remove | Removes (uninstalls) installed RPM's |
2.4 |
edit-urpm-sources.pl | Edits URPM sources |
2.5 |
MandrakeUpdate | Updates your system |
2.6 |
RPMDrake is divided into four tools, each of which has a different task as you can see above. Rpmdrake is the graphical way to install, remove and update packages on your system.
rpmdrake is the tool that installs software on your computer, you can
start it by using one of the following methods:
- Open up your menu, select System -> Configuration -> Configure your computer
Then choose: Software Management -> Install
- Open up your menu, select System -> Configuration -> Packaging -> Install Software
- Open up a terminal emulator and type: rpmdrake --root
rpmdrake-remove is the tool that removes software from your computer, you can
start it by using one of the following methods:
- Open up your menu, select System -> Configuration -> Configure your computer
Then choose: Software Management -> Remove
- Open up your menu, select System -> Configuration -> Packaging -> Remove Software
- Open up a terminal emulator and type: rpmdrake-remove --root
MandrakeUpdate is the tool that helps you update your installed software,
you can start it by using one of the following methods:
- Open up your menu, select System -> Configuration -> Configure your computer
Then choose: Software Management -> Update
- Open up your menu, select System -> Configuration -> Packaging -> Mandrakelinux Update
- Open up a terminal emulator and type: MandrakeUpdate
edit-urpm-sources.pl is the graphical urpm media configuration program.
You can start it by using one of the following methods:
- Open up your menu, select System -> Configuration -> Configure your computer
Then choose: Software Management -> Media Manager
- Open up your menu, select System -> Configuration -> Packaging -> Software Media Manager
- Open up a terminal emulator and type: edit-urpm-sources.pl
Installation in rpmdrake is really easy, first start rpmdrake.
You will then be presented with a window similar to this:
[1] is where you select what you want to search. It can be package names, descriptions or files
[2] is where you enter what you want to search for.
[3] is where you select which packages you want to view. Selecting "Mandrakelinux choices" can be a good idea for beginners
[4] is where you can browse the available packages, clicking the
square box on the left side of a package selects it for installation.
[5] is where information about the currently selected package will appear.
[6] is the button you click to install the packages you selected in [4].
[7] is the button you click to update your urpm sources, it's a
good idea to click this once in a while in case some updates are out.
Removing software using rpmdrake is just as easy as installing and the procedure is almost identical. First start rpmdrake-remove.
You will then be presented with a window similar to this:
[1] is where you select what you want to search. It can be package names, descriptions or files
[2] is where you enter what you want to search for.
[3] is where you select which packages you want to view.
Selecting "Mandrakelinux choices" here might not have the desired
effect since that might hide the package you are trying to remove.
[4] is where you can browse the available packages, clicking the square box on the left side of a package selects it for removal.
[5] is where information about the currently selected package will appear.
[6] is the button you click to remove the packages you selected in [4].
Updating software using rpmdrake is also just about identical to installing/removing. First Start MandrakeUpdate.
A question box similar to this will then pop up:
Make sure that you are connected to the internet then click "Yes".
If this is the first time you're running MandrakeUpdate, the following window will appear (if it isn't, skip ahead):
Here you choose the mirror you want to download the updates from.
Select the one that is closest to you geographically, then click "Ok".
Now you will need to wait a little bit while it updates your update source information.
How long this will take depends upon your connection, but you should have a pretty progress bar to look at.
Once that is done, you will see a screen similar to this one:
[1] is where you select what you want to search. It can be package names, descriptions or files.
[2] is where you enter what you want to search for.
[3] is where you select which type of updates you want to install. I suggest you select all of them.
[5] is where you can browse the available choices. I suggest you just select them all [4].
[6] is where information about the currently selected package will appear.
[7] is the button you click to download and install the updates.
[8] is the button you click if for some reason you want to update your urpm media information again.
Start the rpmdrake URPM source editing tool by choosing "Configuration->Packaging->Software sources manager" in your favourite window manager or desktop, or by entering edit-urpm-sources.pl in a console. When you have done this you may do any of the additional things described in this section. When you are done you may click "Save and quit" to do exactly that, or simply Quit to not save your changes.
[1] If this is checked then the source is enabled. If it isn't then it's disabled.
If you disable the media (by unchecking the
checkbox) you will not be able to install from this media while it is
disabled.
[2] This is the name of the media.
[3] Click this button to remove the selected media.
[4] Click this button to edit the selected media..
[5] Click this button to add a new urpm media, see sectin 2.6.2 for more information.
[6] Click this button to update the selected media.
[7] Click this button to manage your gpg keys, don't mess with this i you don't know what you're doing.
[8] Click this button to set up your proxy for use with rpmdrake.
[9] Click this button to configure paralell urpmi (distributed
execution of urpmi). See the respective documentation for more
information about this.
[1] Here you select which type of medium you want to add. This is usually ftp or removeable device.
If you need to add a Security Update source, then you should just follow the instructions in section 2.5
I will explain how to add ftp and removable sources here.
[2] Here you enter the name of the source you want to add - this can be just about anything you want.
[3] Here you enter the URL to the source you are adding, for instance:
ftp://ftp.uninett.no/pub/unix/Linux/Mandrakelinux/official/10.1/i586/media/main
[4] Here you enter the Relative path to the HDLIST
[5] Here you enter the username/password to log into the ftp. This is rarely used.
[1] This is where you enter the name of the source you awnt to add - this can be just about anything you want.
[2] This is where you either enter or browse your way to the directory on the CD-ROM/DVD-ROM that contains the RPMs.
for instance: /mnt/cdrom/media/main
[3] Here you enter the Relative path to the HDLIST
for instance: ../media_info/hdlist1.cz
When you are browsing the RPM database as a user, the interface is the same as explained in sections 2.3 and 2.4, but you will not have the ability to install or remove software, just browse it.
To start rpmdrake as a user you can use one of the following methods:
- Open up your menu, select System -> Configuration -> Configure your computer -> Browse Available Software
- Open up a terminal and type: rpmdrake
COMMAND: | Description: | Section: | Usage: |
urpmi | Installs local RPM's or RPMs from URPM sources |
3.2 |
urpmi [packagename or file.rpm] |
urpme | Removes (uninstalls) installed RPM's |
3.3 |
urpme [program] |
urpmi.addmedia | Adds a URPM source |
3.5.1/3.5.2 |
urpmi.addmedia [name] [URL or Path] with [relative path to hdlist] |
urpmi.removemedia | Removes a URPM source |
3.5.3 |
urpmi.removemedia [name] |
urpmi.update | Updates your URPM sources |
3.6 |
urpmi.update [NAME or -a (to update all)] |
urpmf | Lists packages containing the file specified |
3.7 |
urpmf [file] |
urpmq | Lists available URPMI packages |
3.8/3.9 |
urpmq (-i for verbose info.) [package] |
There are two ways to install an RPM using urpmi. You can either install a local rpm (an RPM on your hard drive) or you can install from a URPM source. Both of which you will probably use often so read both of those sections.
When installing from a local RPM there are a few things you must make sure of
first. The RPM must have "mdk" (or src) in it's name. This is because then you
know that the rpm has been specially built for Mandrakelinux. Installing RPM's built
for other systems it can mess things up a bit, and the software you installed may not work.
I say can, because in many cases they don't mess anything up - but they can.
To install a local RPM you first have to open up a console. Then you enter
"su" and when prompted, your root password. If the RPM is not saved
in the current directory (which will be your home directory) you have to
cd to the directory containing the rpm (you can give URPMI the complete
path to it too but to cd to the dir is easier). If you don't know how to cd to a
dir you probably should learn how to use a console a bit more (see
section 4.1 for descriptions of some
simple console commands). When you are in the
directory containing the RPM, enter "urpmi ./[Name of RPM]".
urpmi will now prompt you for any additional dependencies it needs to install
and if you accept the dependencies it will then install the RPM.
Example:
[user@localhost user]$ su Password: [root@localhost user]# urpmi ./someprogram-2.3.1.mdk.i586.rpm installing ./someprogram-2.3.1.mdk.i586.rpm Preparing... ################################################## 1:someprogram ################################################## |
If you are connected to the internet I reccomend that you use online URPM sources, rather than your own install CDs. Online sources contain more packages than your CDs and the update source provides you with the latest versions of the available packages. (see section 3.5.1 on how to add the sources) To install from a URPM source, you as always open up a console, enter "su" and when prompted, your root password. Then you enter "urpmi [package]".
URPMI will now search the sources it has defined for the package you specified and prompt you for any additional dependencies it needs. If you accept the dependencies it will download and install both the package supplied and it's dependencies automatically.
Example:
[user@localhost user]$ su Password: [root@localhost user]# urpmi someprogram ftp://ftp.example.org/linux/mandrakelinux/official/10.1/i586/media/main/someprogram-2.3.1.mdk.i586.rpm installing /var/cache/urpmi/rpms/someprogram-2.3.1.mdk.i586.rpm Preparing... ################################################## 1:someprogram ################################################## |
To remove (uninstall) an rpm you use the "urpme" tool. As usually you open up a console and enter "su" then your root password. Then you enter "urpme [package to remove]". You will then be prompted if you really want to remove the package and all packages that depend on it. Remember to read the list of packages being removed in case you're removing something important or something you use.
Example:
[user@localhost user]$ su Password: [root@localhost user]# urpme someprogram removing someprogram-2.3.1.mdk.rpm |
When you get a source rpm (usually an RPM ending with *.src.rpm) you as usual open up a console and enter "su" and when prompted, your root password. Then cd to the directory containing the rpm. Then enter "rpm --rebuild ./[src.rpm]". It will now build the rpm, when it's done it will display a message a bit up on the sceen saying "somerpm was written to someplace" or "Wrote: /usr/src/RPM/someplace". "cd" to "someplace" and follow the normal installation procedures (section 3.2.1).
Example:
[user@localhost user]$ su Password: [root@localhost root]# rpm --rebuild ./someprogram-2.3.1.src.rpm ...Compile garbage... ...garbage... Wrote: /usr/src/RPM/RPMS/i586/someprogram-2.3.1.mdk.i586.rpm ..more garbage... [root@localhost user]# cd /usr/src/RPM/RPMS/i586/ ...Perform normal local installation procedure (3.2.1) |
You may end up with more than one RPM being saved to that spot, depending on what binary packages the one src.rpm provides. Examples include a pkgname-devel-4.i586.rpm, in which case if you wish to compile using functions of the package, you would also install this second package, and not just the first binary package.
This is my preffered method to add URPM sources, it's quick and easy.
You simply open up
http://www.linuxfordummies.org/addmedia/
in your favourite
webbrowser and from there on just follow the instructions on that page.
Remember to check "Show specific sources too".
I recommend to add the "main", "contrib", "updates" and "plf" sources.
I also recommend that you do a "urpmi.removemedia -a" (see section 3.5.3 for more information)
before adding the sources as this will give you a nice and clean URPM setup.
Just one word of warning - to download any of these packages, you will have to
be online. Also, if you do not have your CD sources listed, you MUST have the
"main", "contrib" and "updates" sources mentioned to replace them with.
The first thing you have to do is find a mirror, you can do this on the download page at mandrakelinux.com. When you have found a mirror and the hdlist file for it you open up a console and enter "su" then your root password. Now enter "urpmi.addmedia [NAME] [URL] with [RELATIVE PATH TO HDLIST]". Where [NAME] is the name you want the source to have. [URL] is the URL to the directory containing the RPM's in one of the following ways:
http://[host]/[path]
ftp://[host]/[path]
ftp://[login]:[password]@[host]/[path]
And finally [RELATIVE PATH TO HDLIST] is the path to the hdlist file for the mirror (usually named hdlist.cz but on official mirrors is not in the directory contining the rpms (but in ../base/hdlist.cz for normal source and ../../i586/Mandrake/base/hdlist2.cz for contrib))
Example:
[user@localhost user]$ su Password: [root@localhost root]# urpmi.addmedia contrib ftp://ftp.sunet.se/pub/Linux/distributions/mandrake/9.1/contrib/RPMS with ../../i586/Mandrake/base/hdlist2.cz added medium contrib examining synthesis file [/var/lib/urpmi/synthesis.hdlist.main.cz] examining synthesis file [/var/lib/urpmi/synthesis.hdlist.updates.cz] examining synthesis file [/var/lib/urpmi/synthesis.hdlist.plf.cz] retrieving description file of "contrib"... retrieving source hdlist (or synthesis) of "contrib"... ftp://ftp.sunet.se/pub/Linux/distributions/mandrake/9.1/i586/Mandrake/base/hdlist2.cz ...retrieving done examining MD5SUM file examining hdlist file [/var/cache/urpmi/partial/hdlist.contrib.cz] writing list file for medium "contrib" built hdlist synthesis file for medium "contrib" found 0 headers in cache removing 0 obsolete headers in cache write config file [/etc/urpmi/urpmi.cfg] |
Adding local sources is mostly the same way as adding online sources. Open up a console, enter "su" then root's password.
Now you enter "urpmi.addmedia [NAME] [PATH] with [RELATIVE PATH TO HDLIST]". Where [NAME] is the name you want the source to have, [PATH] is the path to the directory containing the RPM's in one of the following ways:
file://[path]
removable://[path]
and [RELATIVE PATH TO HDLIST] is the relative path to the hdlist file for the source, which, for a Mandrakelinux CD, will be in ../base/hdlist.cz for normal source and ../base/hdlist2.cz for the contrib source. The hdlist files are not usually stored in the same directories as the RPMs they are for.
Example:
[user@localhost user]$ su Password: [root@localhost root]# urpmi.addmedia CD2 removable://mnt/cdrom/Mandrake/RPMS2 with ./synthesis.hdlist2rpms.cz examining synthesis file [/var/lib/urpmi/synthesis.hdlist.main.cz] examining synthesis file [/var/lib/urpmi/synthesis.hdlist.contrib.cz] examining synthesis file [/var/lib/urpmi/synthesis.hdlist.updates.cz] examining synthesis file [/var/lib/urpmi/synthesis.hdlist.plf.cz] copying source hdlist (or synthesis) of "CD2"... ...copying done examining hdlist file [/var/cache/urpmi/partial/hdlist.CD2.cz] examining synthesis file [/var/cache/urpmi/partial/hdlist.CD2.cz] found 0 headers in cache removing 0 obsolete headers in cache write config file [/etc/urpmi/urpmi.cfg] |
First, open up a console and enter "su" then root's password. Then enter "urpmi.removemedia [name]" where [name] is the name of the source you want to remove. If you do not know the name of the source you can enter "urpmi.removemedia" for a list of sources. Alternatively you can enter "urpmi.removemedia -a" which will remove all sources you have (this is especially useful when you're adding online sources to replace the local cd sources).
Example:
[user@localhost user]$ su Password: [root@localhost user]# urpmi.removemedia CD2 removing medium "CD2" examining synthesis file [/var/lib/urpmi/synthesis.hdlist.main.cz] examining synthesis file [/var/lib/urpmi/synthesis.hdlist.contrib.cz] examining synthesis file [/var/lib/urpmi/synthesis.hdlist.updates.cz] examining synthesis file [/var/lib/urpmi/synthesis.hdlist.plf.cz] found 0 headers in cache removing 0 obsolete headers in cache write config file [/etc/urpmi/urpmi.cfg] |
Yet again open up a console and enter "su" then root's password. Then you enter "urpmi.update [name]" where name is the name of the source you want to update. If you do not know the name of the source you can enter "urpmi.update" for a list. An even better way to do it is to use "urpmi.update -a" which will update all of your sources.
Example:
[user@localhost user]$ su Password: [root@localhost user]# urpmi.update contrib examining synthesis file [/var/lib/urpmi/synthesis.hdlist.main.cz] examining synthesis file [/var/lib/urpmi/synthesis.hdlist.contrib.cz] examining synthesis file [/var/lib/urpmi/synthesis.hdlist.updates.cz] examining synthesis file [/var/lib/urpmi/synthesis.hdlist.plf.cz] retrieving description file of "contrib"... retrieving source hdlist (or synthesis) of "contrib"... ...retrieving done examining hdlist file [/var/cache/urpmi/partial/hdlist.contrib.cz] writing list file for medium "contrib" built hdlist synthesis file for medium "contrib" found 0 headers in cache removing 0 obsolete headers in cache write config file [/etc/urpmi/urpmi.cfg] |
A trick if you're too lazy to update manually is to put up a cron job
in /etc/cron.daily (or wherever you want it) which contains this bash script:
#!/bin/bash urpmi.update -a urpmi urpmi # Make sure we have the latest urpmi urpmi --auto --auto-select |
This will do the job for you. Remember to "chmod +x" it. Alternatively you can change "urpmi --auto --auto-select" to "urpmi --update --auto --auto-select" which then will only get packages from your update source(s).
To find out which package contains a file, open up a console and enter "urpmf [file]".
Example:
[user@localhost user]$ urpmf someprogram someprogram:/usr/bin/someprogram |
To list available URPMI packages, open up a console and enter enter
"urpmq [name]". This will display all packages containing the supplied
name (unless there is an exact match, where only the exact match will
be displayed). If you want to list all available update packages enter
"urpmq --update".
Example:
[user@localhost user]$ urpmq someprogram someprogram [user@localhost user]$ urpmq libxmms libxmms1 libxmms1-devel [user@localhost user]$ urpmq --update someprogram |
NOTICE: This requires Mandrakelinux 9.2 and newer (urpmi 4.4 or newer)
To list information on a package you open up a console and enter "urpmq
-i [name]".
This will display Name, version, release, group, size, architecture and
summary.
Example:
[usere@localhost ~]$ urpmq -i urpmi Name : urpmi Version : 4.6.24 Release : 3mdk Group : System/Configuration/Packaging Size : 3519910 Architecture: noarch Source RPM : urpmi-4.6.24-3mdk.src.rpm Build Host: n1.mandrakesoft.com Packager : Rafael Garcia-Suarez URL : http://cvs.mandrakesoft.com/cgi-bin/cvsweb.cgi/soft/urpmi Summary : Command-line software installation tools Description : urpmi is Mandrakelinux's console-based software installation tool. You can use it to install software from the console in the same way as you use the graphical Install Software tool (rpmdrake) to install software from the desktop. urpmi will follow package dependencies -- in other words, it will install all the other software required by the software you ask it to install -- and it's capable of obtaining packages from a variety of media, including the Mandrakelinux installation CD-ROMs, your local hard disk, and remote sources such as web or FTP sites. |
As it has been a little while since I used apt (and dpkg) this list is not complete.
If you have any suggestions or see something missing, don't hesitate to contact me.
APT command: | urpmi command: |
apt-get install package | urpmi package |
apt-get remove package | urpme package |
apt-cache show package | urpmq -i package |
dpkg -i ./package | urpmi ./package |
Command: | Description: |
cd X | Changes the current working directory to X |
man X | Displays the man (manual) page for X |
info X | Displays the info page for X |
exit | Exit the console (or log out if in "su") |
df | Display filesystem info (such as free space) |
su (x) | When no X is specified, log in as root. If X is specified, log in as X. |
For a larger command list see http://mandrakehelp.com/commands.html
1 - What is PLF?
2 - How do I make urpmi not delete downloaded packages?
3 - How can I make urpmi use wget instead of curl?
4 - Can I use rpm's from cooker in a stable distribution?
5 - Can I upgrade my Mandrakelinux system to a newer Mandrakelinux release using urpmi?
6 - How can I upgrade a RPM?
7 - What is the "Relative path to the HDLIST"?
Question #1: What is PLF?
Answer: PLF stands for the Penguin Liberation Front.
It is a RPM package repository that contains packages that cannot be
included in the Mandrakelinux distro for legal reasons.
See http://plf.zarb.org/ for more
information
Question #2: How do I make urpmi not delete
downloaded packages?
Answer: To make urpmi keep the downloaded packages in
/var/cache/urpmi/rpms, run urpmi with "--noclean".
Remember, you have to run urpmi with "--noclean" every time you run it,
if you run it once without "--noclean" all the rpm's will be deleted.
Question #3: How can I make urpmi use wget
instead of curl?
Answer: To make urpmi use wget instead of curl you have to run urpmi
with "--wget".
If you don't have curl installed, urpmi will automatically use wget.
Question #4: Can I use rpm's from cooker in a
stable distribution?
Answer: NO! Do not use RPM's from cooker on a stable distribution! It
has the potential to seriously mess up your system.
Question #5: Can I upgrade my Mandrakelinux system to
a newer Mandrakelinux release using urpmi?
Answer: It is possible to upgrade your system using urpmi, however this
is not supported and may not work.
It is strongly recommended that you do not use urpmi to upgrade your
system. Either use the installation cd-rom's or a netinstall floppy.
Question #6: How can I upgrade a RPM?
Answer: To upgrade a local RPM you do just the same as when installing (section 3.2.1).
Urpmi will notice that a older version of the package is installed and upgrade it automatically.
Question #7: What is the "Relative path to the HDLIST"?
Answer: To explain what the relative path to the hdlist is, I first have to explain what a relative path is.
Say that you have a directory called "bin" in your home directory which is /home/nobody/
In /home/nobody/bin/ you have a executeable called "gfsgl". You are in a commandline and your working
directory is /home/nobody/Documents/. There is two ways to start this
file now (unless bin is in $PATH but in this example, it is not):
Either run the file with it's complete path which is /home/nobody/bin/gfsgl or by it's relative path.
The relative path is ../bin/gfsgl. ".." means the directory one level above your current working directory.
When urpmi/edit-urpm-sources.pl want's the relative path to the Synthesis/HDLIST it want's just that.
So if the ftp server's URL is "ftp://ftp.sunet.se/pub/Linux/distributions/mandrakelinux/official/10.1/i586/media/main" then
the "working directory" is "/pub/Linux/distributions/mandrakelinux/official/10.1/i586/media/main".
The HDLIST is at "ftp://ftp.sunet.se/pub/Linux/distributions/mandrakelinux/official/10.1/i586/media/main/media_info/hdlist.cz"
so the relative path to the HDLIST becomes "media_info/hdlist.cz".
In older versions of Mandrakelinux (pre-10.1) a FTP server's URL would look more like this:
ftp://ftp.sunet.se/pub/Linux/distributions/mandrakelinux/official/10.0/i586/Mandrake/RPMS
the HDLIST would then be at ftp://ftp.sunet.se/pub/Linux/distributions/mandrakelinux/official/10.0/i586/Mandrake/base/hdlist.cz
and the relative path to the HDLIST would be "../base/hdlist.cz"
0.3 (?? ???? 2005) FIXME! TODO! FIXME! 0.2 (30 December 2004) * Minor changes to sections: * 3.2.1, 3.2.2, 3.5.1, 3.5.3, * Rewritten sections: * 1.3 * 2.3, 2.4, 2.5, 2.6 * Added sections: * 2.2, 2.7 * Added FAQ #7 * The rpmdrake (graphical) part (Section 2) now has screenshots (from Mandrakelinux 10.1) * Replaced all instances of "Mandrake" or "Mandrake Linux" with "Mandrakelinux" 0.1-4 * Added section 4.2 - FAQ (and moved old 4.2 to 4.3) * Rewrite of section 1.2 * Nearly rewritten section 3.5.1 * Minor changes to sections: * 1.3 * 2.2 - 2.3 - 2.5 * 3.2 - 3.2.1 - 3.2.2 - 3.5.3 - 3.5.4 * Fixed bad typo section 3.5.2.2 (removeable was suppose to be removable) * Added section 3.9 * Now includes (in-document) links * All examples in section 3 reworked. 0.1-3 * Converted to HTML and minor additions to some sections by Viking667 0.1-2 * Minor changes to sections: * 1.1 - 1.2 - 1.3 * 2.1 * 3.1 - 3.2.1 - 3.2.2 - 3.3 - 3.4 - 3.5.2.1 - 3.5.2.2 * 4.1 * Added more examples for the Console sections * Fixed grammar ;) * Added section 3.7 * Added section 3.8 0.1 * Initial revision - 337 lines