1) I am also trying to learn system programming. Where I can find the source codes for the command line tools like ls, cp, mv, mount and other hundreds of commands.
salman@linux:~> which cp /bin/cp salman@linux:~> rpm -qf /bin/cp fileutils-4.1-158 So you would need to get the source rpm of fileutils-4.1-158. Once you have it, do rpm -Uvh <source_rpm.rpm> rpm -bp /usr/src/packages/SPECS/<some_spec_file.spec> Then you would need to go to /usr/src/packages/BUILD/<MYPROGRAM> and do a ./configure and make
2) Another nagging question is, where do I install a new software? /usr/local, /opt or home dir? Until now, I have intalled all the software in my home dir. How do I make them available to other users? Who do I install them as, "root" or a "reqular user"? Do I have to differentiate between system software and application software? for eg: a new browser for every user; a build tool like "ant" just for me.
Install it ins /usr/local. I really don't know what goes in /opt. /opt is supposed to be for really large packages I think. in /etc/profile.local, you have to modify path so that /usr/local/bin is in the path. If you are not sure that /usr/local/bin is there or not, do "echo $PATH" and see what you get.
3) How do I keep track of the software I installed? I mean, some applications are tar balls, others are rpms (binary and source). "rpm" system has a database of its own. What about the tarballs? What if I Install an rpm of an application and try to install the same application again using a tarball? eg: I installed a new orinoco wireless driver, packaged as a tarball. I had to toil, to install it in the right place, to bakup the old module, to document what I have done etc.
Install this program named checkinstall (SuSE CDs has it). When you are done ./configuring and making, then instead of running 'make install', you run "checkinstall'. Checkinstall monitors what changes are made by your program, creates an RPM for you and automatically installs it for you. Its kinda like cleansweep for Windows.
Too many questions, I guess. I actually have a lot more! (mapping special keys, micro-phone not working, audio-cds cannot be ripped ....)