cpio is capable storing and restoring symlinks. In the specific case of dccp, the symlinks are simply not there; they are copies. This was confirmed by doing a root install of the upsteam RPM.
I'll do a bit more poking around to see how common this is, if other packages we convert from RPM to tar.gz do work as expected (with symlinks), and how helpful replacing copies with symlinks would be.
Assuming it's decided that converting identical copies into symlinks is a good idea, we'll need to decide what is identical enough to warrant replacement. Here's my rough proposal:
* Files must be from the same package. (Otherwise uninstalling one package could break another. I also don't expect that cross package links will catch much, if anything.)
* Files must be in the same directory (Probably unnecessary, but erring on the side of caution. Also makes finding identical files faster.)
* Files must be match lib*.so* (We don't want to link other files that may be modified once a service starts. Limiting this to libraries seems a good solution.)
* The file size must be the same (obviously)
* The date does _not_need to be the same.
* We compare MD5sums, Just In Case. (We could do a direct comparison, but using and caching MD5sums means we can easily compare a bunch of binaries if, say, libfoo.so, libfoo.so.1, and libfoo.so.1.0.1 are all present.)
* We link from libFOO.so to libFOO.so.version; keeping with how it's usually done.