The hardest part of creating a ci has nothing to do with compressing them. The hardest part is to make a self-contained application under /opt. Because openoffice and firefox are pretty much self contained and are under /opt they were good test cases. I have since made python2.3.4 which works under /opt so to make it a ci is easy. Also, the ci has a limitiation of being read only. That is why there is an oouser.tar.gz. Those parts that require updates can be "linked" into a writeable directory. I see user Chris V made a firefox user file. Try to avoid making .dsl as they cause additional demands on the system. Sometimes, you will be required to make a shell wrapper to start the app. As being self contained implies that the app's libraries are also stored locally with the app. This usually implies requiring a LD_LIBRARY_PATH, thus the shell wrapper. Anyway, make the app. Test it as a .tar.gz. Once the app is working then to make a ci do the following.
1. The app is installed into /opt in the your_app directory
1. become root
2. cd /opt
3. mkisofs -R -hide-rr your_app | create_compressed_fs - 65536 > /mnt/somedrive/your_app.ci
Note: there is currently a limit of 4 cloop devices available. So, I don't see a need for many .ci files unless the app is very large and is very popular.
Follow-up there are now 8 devices for uci extensions.
Follow-up for UCI files
UCI files are ci files that store the user.tar.gz (writeable areas) inside the mounted ci with the specific name of user.tar.gz. Then when the uci is mounted the system looks insdide the mount for a user.tar.gz and then performs a mydsl-load on that tar.gz. This makes for an easy single file download and load.
To change/update a UCI file do the following: (example here is firefox.uci)
1. mount the uci as normal
2. mkdir work
3. cd work
4. cp -a /opt/firefox/.
5. cd firefox
6. mkdir user
7. cd user
8. tar -zxvf ../user.tar.gz
9. tar -ztf ../user.tar.gz > list
10. -- now edit the actual files as needed --
11. -- be sure to edit/update the "list"
12. tar -T list --numeric-owner --no-recursion -czvf ../user.tar.gz
13. cd ..
14. rm -rf user
15. cd ..
16. mkisofs -R -hide-rr-moved -cache-inodes -pad firefox/|create_compressed_fs - 65536 > ../firefox.uci
17. cd ..
20. rm -rf work
(Thanks to Robert Shingledecker)