diff --git a/debian/changelog b/debian/changelog
index ac15879e328a1603490bc0a31993dade37b6e8e6..b55eafa01f42eb0c81a29ac4b50db22bb1f4bb22 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,7 +1,10 @@
 python-defaults (2.6.6-11) UNRELEASED; urgency=low
 
-  * dh_python2: fix parsing .pyinstall files (a space between file name and
-    module name is now required)
+  * dh_python2:
+    - fix parsing .pyinstall files (a space between file name and
+      module name is now required)
+    - replace a file with a symlink also if there's a matching one in
+      pyshared directory already
 
  -- Piotr Ożarowski <piotr@debian.org>  Sat, 15 Jan 2011 21:14:38 +0100
 
diff --git a/dh_python2 b/dh_python2
index bc10c7abf6f8e151a178d0eed2e65739bee933da..776bf48f405ffaa91b32377a71765fa540fd37b4 100755
--- a/dh_python2
+++ b/dh_python2
@@ -26,7 +26,7 @@ import logging
 import os
 import re
 import sys
-from filecmp import dircmp, cmpfiles
+from filecmp import dircmp, cmpfiles, cmp as fcmp
 from optparse import OptionParser, SUPPRESS_HELP
 from os.path import isdir, islink, exists, join, realpath
 from shutil import rmtree, copy as fcopy
@@ -261,8 +261,12 @@ def share_2x(dir1, dir2, dc=None):
         # do not touch symlinks created by previous loop or other tools
         if dc and not islink(fpath1):
             # replace with a link to pyshared
-            os.rename(fpath1, fpath3)
-            relative_symlink(fpath3, fpath1)
+            if not exists(fpath3):
+                os.rename(fpath1, fpath3)
+                relative_symlink(fpath3, fpath1)
+            elif fcmp(fpath3, fpath1, shallow=False):
+                os.remove(fpath1)
+                relative_symlink(fpath3, fpath1)
         if dc is None:  # guess/copy mode
             if islink(fpath1):
                 # ralative links will work as well, it's always the same level