diff --git a/src/mio.py b/src/mio.py
index 45e0fb1a5734bab588d1a3e8723702c4158011fe..bd65dbccc12499c59a073d3972ca5e3d32dacdc6 100755
--- a/src/mio.py
+++ b/src/mio.py
@@ -81,6 +81,10 @@ if __name__ == '__main__':
     optParser.add_option("--dump",
                          action="store_true", default=False, 
                          help="when listing, dump XML tree")
+    optParser.add_option("--exclude-rpm",
+                         action="append", default=[],
+                         metavar="RPM",
+                         help="exclude RPM")
     optParser.add_option("--install",
                          action="append", default=[],
                          metavar="TARGET",
@@ -217,7 +221,8 @@ if __name__ == '__main__':
 
         if not options.noyum:
             log(NORMAL, "Testing rpms")
-            installer.test_rpms(options.path)
+            installer.test_rpms(options.path,
+                                options.exclude_rpm)
  
         log(NORMAL, "Testing files")
         installer.test_groups(options.prefix)
@@ -229,7 +234,8 @@ if __name__ == '__main__':
 
         if not options.noyum:
             log(NORMAL, "Installing rpms")
-            rpm_result = installer.install_rpms(options.path)
+            rpm_result = installer.install_rpms(options.path,
+                                                options.exclude_rpm)
 
         log(NORMAL, "Installing files")
         installer.install_groups(options.prefix,
diff --git a/src/mio/installer.py b/src/mio/installer.py
index 23b7c4bd2718a39b7a84d82b1e6067aa847e3c97..3e66b533931a5fed6bf3f033a03ac3156ab7661e 100755
--- a/src/mio/installer.py
+++ b/src/mio/installer.py
@@ -162,16 +162,19 @@ class Installer:
         rpms.sort()
         return rpms
             
-    def install_rpms(self, path):
+    def install_rpms(self, path, exclude):
         rpm = []
         version_db = mio.rpmDB.VersionDB()
         for r in self.rpm:
             r.old_version = version_db[r.name]
             if r.old_version == None:
                 rpm.append(r.name)
+                pass
+            pass
+        rpm = filter(lambda p: not p in exclude, rpm)
         rpm.sort()
         print rpm
-        mio.yum.run(path + self.rpmdir, rpm)
+        mio.yum.run(path + self.rpmdir, rpm, exclude)
         version_db = mio.rpmDB.VersionDB()
         for r in self.rpm:
             r.new_version = version_db[r.name]
@@ -186,7 +189,8 @@ class Installer:
         for g in self.group:
             g.install(prefix, backup)
 
-    def test_rpms(self, path):
+    def test_rpms(self, path, exclude):
+        log(NORMAL, "Excluding rpms: "+ ",".join(exclude))
         pass
     
     def test_groups(self, prefix):
diff --git a/src/mio/yum.py b/src/mio/yum.py
index dde39e1f4aa52cb8ece11a1f32d6c0bc2aee0152..4d96022f713f508cf45a6b6d2ab8e3ef8cf09c39 100755
--- a/src/mio/yum.py
+++ b/src/mio/yum.py
@@ -71,7 +71,7 @@ def conf(path):
     
     return "\n".join(result)
 
-def run(path, rpm):
+def run(path, rpm, exclude):
     c = conf(path)
     f = mio.filecache.createfile()
     f.write(c)
@@ -90,7 +90,9 @@ def run(path, rpm):
     # to be done before the install, because outdated packages
     # need to be updated before the install, or we might get
     # a conflict.
-    update = "yum -c %s -e %s -d %s -y update" % (f.name, verb, verb)
+    exclude_arg = map(lambda s: "-x %s" % s, exclude)
+    update = "yum -c %s -e %s -d %s -y update %s" % (f.name, verb, verb,
+                                                     " ".join(exclude_arg))
     mio.log.log(NORMAL, update)
     mio.daemon_cage.system(update)