checkinstall works yes. I myself use a different method that doesn't require any additional programs. The only required programs are find and sed which are present on most any Linux system.
The method is simplicity in itself: before installing a package take note of the current time on the system then use 'find' and tel lit to return all files whose status was changed after the noted timestamp you took earlier. This will return a list of all new and modified files.
The only drawback is that this method takes some time because it needs to scan every file on the filesystem. This might take a while on slow harddrives.
The script I use can be found at
http://linuxfromscratch.org/~gerard/log-install
Another method could be using a program like "strace" or "checkinstall" which can be told to intercept system calls relating to file creation and writing. This is a faster method since it only scans what a process like "make install" actually does in real-time, instead of scanning the entire filesystem afterwards to see what it has done.
There are many other forms of package management that people have implemented. I suggest using the LFS search engine at
http://search.linuxfromscratch.org and look around some yourself.
Lastly, go to
http://hints.linuxfromscratch.org/hints.shtml and look for the "package management" section. It has a number of examples there too