diff --git a/bin/is b/bin/is
index ebff7b4fe710f187f43b186d9b33e18a3c7d9d68..8477730633bc2fea3fbc79caf8b587f59f31a133 100755
--- a/bin/is
+++ b/bin/is
@@ -412,10 +412,17 @@ def c_repo(parser, args):
     '''
     Get information about repositories
     '''
+    # in cleaning mode we doesn't needs to get repositories
+    if args.purge:
+        args.force_offline = True
     repoman = load_repositories(args)
     for pattern in args.repository:
-        show_repositories(repoman, pattern, online=args.online, local=args.local,
-                          url=args.url, state=args.state)
+        if args.purge:
+            repoman.purge_cache(pattern)
+        else:
+            show_repositories(repoman, pattern,
+                              online=args.online, local=args.local,
+                              url=args.url, state=args.state)
 
 def c_search(parser, args):
     '''
@@ -675,8 +682,6 @@ p_prepare_chroot.set_defaults(func=c_prepare_chroot)
 
 # repo command parser
 p_repo = subparsers.add_parser("repo", help=c_repo.__doc__.lower())
-p_repo.add_argument("--force-offline", action="store_true", default=False,
-                    help="force repository to be offline")
 p_repo_mgroup = p_repo.add_mutually_exclusive_group()
 p_repo_mgroup.add_argument("-l", "--local", action="store_true", default=None,
                            help="list local repository (filter)")
@@ -687,6 +692,10 @@ p_repo_mgroup.add_argument("-o", "--online", action="store_true", default=None,
                            help="list online repository (filter)")
 p_repo_mgroup.add_argument("-O", "--offline", action="store_false", dest="online",
                            help="list offline repository (filter)")
+p_repo.add_argument("--purge", action="store_true", default=False,
+                    help="remove cache databases")
+p_repo.add_argument("--force-offline", action="store_true", default=False,
+                    help="force repository to be offline")
 p_repo.add_argument("-s", "--state", action="store_true", default=False,
                     help="display repository state (online/offline/local/remote)")
 p_repo.add_argument("-u", "--url", action="store_true", default=False,
diff --git a/completion/bash/is b/completion/bash/is
index 66bcfd634e6c0ba243bf099ee080f10430dd274a..9572036f7af96815f2f3fdf02e29ab681cbe96ad 100644
--- a/completion/bash/is
+++ b/completion/bash/is
@@ -139,7 +139,7 @@ _is() {
             _filedir -d
             ;;
 	repo)
-            [[ "$cur" == -* ]] && _opt '-h --help -l --local -r --remote -o --online -O --offline -s --state --force-offline -u --url' && return 0
+            [[ "$cur" == -* ]] && _opt '-h --help -l --local -r --remote -o --online -O --offline -s --state --force-offline --purge -u --url' && return 0
 	    _repo
 	    ;;
 	search)
diff --git a/installsystems/repository.py b/installsystems/repository.py
index cfa0d4d382f18e01a4cac66d445fa64260aa4bb5..80fe9a5349a49baf95cba0ec0d3e186d90529653 100644
--- a/installsystems/repository.py
+++ b/installsystems/repository.py
@@ -528,7 +528,7 @@ class RepositoryManager(object):
         '''
         try:
             if temp and nosync:
-                raise IOError("unable to cache, sync is disabled")
+                raise IOError("Unable to cache, sync is disabled")
             # Ensure destination file exists
             if temp is True or self.cache_path is None:
                 # this is a forced temporary repository or without name repo
@@ -663,6 +663,22 @@ class RepositoryManager(object):
             arrow(repo.config.name)
             repo.search(pattern)
 
+    def purge_cache(self, pattern):
+        '''
+        Remove local cached repository files
+        '''
+        for reponame in fnmatch.filter(self.names, pattern):
+            arrow("Purging cache of repository %s" % reponame)
+            db = os.path.join(self.cache_path, reponame)
+            if os.path.exists(db):
+                try:
+                    os.unlink(db)
+                    arrow("done", 1)
+                except:
+                    arrow("failed", 1)
+            else:
+                arrow("nothing to do", 1)
+
 
 class RepositoryConfig(object):
     '''