diff --git a/lib/spack/spack/binary_distribution.py b/lib/spack/spack/binary_distribution.py
index 71e426346b83b628baa4addc71a57d87692fec34..5f36677980cc117408991715de16a6c4e1f9cbd3 100644
--- a/lib/spack/spack/binary_distribution.py
+++ b/lib/spack/spack/binary_distribution.py
@@ -538,11 +538,12 @@ def get_specs(force=False):
         if url.startswith('file'):
             mirror = url.replace('file://', '') + '/build_cache'
             tty.msg("Finding buildcaches in %s" % mirror)
-            files = os.listdir(mirror)
-            for file in files:
-                if re.search('spec.yaml', file):
-                    link = 'file://' + mirror + '/' + file
-                    urls.add(link)
+            if os.path.exists(mirror):
+                files = os.listdir(mirror)
+                for file in files:
+                    if re.search('spec.yaml', file):
+                        link = 'file://' + mirror + '/' + file
+                        urls.add(link)
         else:
             tty.msg("Finding buildcaches on %s" % url)
             p, links = spider(url + "/build_cache")
diff --git a/lib/spack/spack/cmd/install.py b/lib/spack/spack/cmd/install.py
index d1aaf20f1b26cdc8b8e699bdfe68fadf2c32d533..26e77b474a38ee52d437e2937629b773fcf05acb 100644
--- a/lib/spack/spack/cmd/install.py
+++ b/lib/spack/spack/cmd/install.py
@@ -75,7 +75,7 @@ def setup_parser(subparser):
         '--dont-restage', action='store_true',
         help="if a partial install is detected, don't delete prior state")
     subparser.add_argument(
-        '--use-cache', action='store_true', dest='use_cache',
+        '--no-cache', action='store_false', dest='use_cache',
         help="check for pre-built Spack packages in mirrors")
     subparser.add_argument(
         '--show-log-on-error', action='store_true',
diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py
index d164f9e01061692fed2e366c469d1fc607a65431..279ed89d0401b6d72d8884d90c235f338409b50d 100644
--- a/lib/spack/spack/package.py
+++ b/lib/spack/spack/package.py
@@ -1403,7 +1403,7 @@ def do_install(self,
 
         tty.msg(colorize('@*{Installing} @*g{%s}' % self.name))
 
-        if kwargs.get('use_cache', False):
+        if kwargs.get('use_cache', True):
             if self.try_install_from_binary_cache(explicit):
                 tty.msg('Successfully installed %s from binary cache'
                         % self.name)
diff --git a/lib/spack/spack/test/packaging.py b/lib/spack/spack/test/packaging.py
index 2b673f217ebedb54e1c153502eb63435b0ef1b4e..ae7d7678ae3f6cccc4a7e7461c8089c82a4da004 100644
--- a/lib/spack/spack/test/packaging.py
+++ b/lib/spack/spack/test/packaging.py
@@ -198,6 +198,9 @@ def test_buildcache(mock_archive, tmpdir):
     shutil.rmtree(mirror_path)
     stage.destroy()
 
+    # Remove cached binary specs since we deleted the mirror
+    bindist._cached_specs = None
+
 
 def test_relocate_text(tmpdir):
     with tmpdir.as_cwd():