I only scratch my head and wonder why when I look at other setups posted…
here is my setup, it’s simple, easy to maintain, a tiny bit more secure and… just plain easy…
/usr/share/php/mylib/CI/system <~ CI system folder (owned by root)
/var/www/mysite/application/ <~ CI application set above public level for security
/var/www/mysite/public_html/ <~ set this as DocumentRoot in Apache vhost.conf file
edit index.php thusly…
$system_folder = "/usr/share/php/mylib/CI/system";
$application_folder = "../application";
no symlinks and no *nix magic required….
you can set CI to update through SVN or copy/replace of the system folder, you can host multiple CI websites from one CI system folder, etc and not turn your site directory into one big CF looking mess.
If for some reason you have to leave the CI system at a lower version simply copy the old version to /usr/share/php/mylib/CI1x/ and edit the index.php file, which would allow you to host multiple versions of multiple CI apps relatively easily, or name the newest version to that version, etc.
I edited my application/config/config.php file so that I can change one variable and the entire thing is configured for production or testing - though the file is a bit bigger than original.
Finally this allows me to ensure that no one else can modify the CI system without my knowledge and it also prevents me and others from editing the Core files during development.