Hi! IMHO this problem is more general and serious, and this should be solved. Either you specify some strict Arch packaging standards to avoid this bug or you improve pacman. I prefer the 2nd, and that is not easy; I make some suggestions here to discuss: First I define the goal: the content of foo's .FILELIST exists on filesystem iff foo is installed. OK, I assume that the goal above holds for all installed package; we just need to keep this during package install/removal. Install: -If we install /dir/file: That exists until package foo is removed (in normal case). If dir is a symlink, we MUST record the "real" destination of file to localdb/foo/files too, because the dir symlink can be removed/modified during an other package removal (or update!!: you can easily imagine a modified perl example where current is a symlink to the latest version...) or by the user. -If we install /dir/dir_symlink: First, we treat dir2 as a regular file, and do the steps above. Then we check if /dir1/dir2 exists. If no, we simply create it pointing to the requested dir. If yes and that is not a real dir, we can stop with file conflict. If yes and dir_symlink is a real dir, we can move its content to the dir_symlink-pointed dir, then delete/create_link dir_symlink; we must also record the file movements to the localdb as above (this is slow, queryfileowner needed, but this a rare case). Remove: -If we remove /dir/file: no extra work needed, just we need to use "real" path. -If we remove /dir/dir_sl: If dir_sl_pointed is empty or doesn't exist, then simply remove dir_sl. If dir_sl_pointed is not empty then we must create a real dir named dir_sl, and moved some files (we scan localdb for files need to be installed as /dir/dir_sl/file) from dir_sl_pointed to there (and record the movements to localdb again.). Bye, ngaba PS: We can implement these without db conversion (and keep compatibility). ---------------------------------------------------------------- This message was sent using IMP, the Internet Messaging Program.