Dig more and find this is not related to rpm/zypper. it is cairo upgration specific issue:
In cairo 1.8.10, it only contains library, so according to the Debian renaming hook, the package is renamed to libcairo2. the generated rpm is libcairo2-1.8.10-r0.i586.rpm
when upgrade to cairo 1.10.0, it also has bin executable, so the package name becomes cairo. the generated rpm is cairo-1.10.0-r0.i586.rpm.
in this case, those packages (e.g. screenshot) which depend on libcairo2-1.8.10-r0.i586.rpm can not find libcairo-1.10.0-r0.i586.rpm, and reports dependency failure.
I will update the cairo patch to specifiy the package name as libcairo2 to fix this issue.
tracker