diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py
index d1c36d067044bcf910ab8355bd738f68332ab0aa..2e7d8a7709911e362a12d08c5e9df19d0f8ed79e 100644
--- a/lib/spack/spack/package.py
+++ b/lib/spack/spack/package.py
@@ -888,6 +888,11 @@ def do_install(self,
         # Ensure package is not already installed
         if spack.install_layout.check_installed(self.spec):
             tty.msg("%s is already installed in %s" % (self.name, self.prefix))
+            rec = spack.installed_db.get_record(self.spec)
+            if (not rec.explicit) and explicit:
+                with spack.installed_db.write_transaction():
+                    rec = spack.installed_db.get_record(self.spec)
+                    rec.explicit = True
             return
 
         tty.msg("Installing %s" % self.name)