diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3ccad6f..a7fce32 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+# Release 0.9.3 (2016-03-09)
+
+- Fixed #324: Glide tries to update ignored package
+
 # Release 0.9.2 (2016-03-08)
 
 - Fixed issue on #317: Some windows calls had the improper path separator.
diff --git a/repo/installer.go b/repo/installer.go
index bebc3df..f14b595 100644
--- a/repo/installer.go
+++ b/repo/installer.go
@@ -118,8 +118,8 @@
 		return newConf, nil
 	}
 
-	ConcurrentUpdate(newConf.Imports, cwd, i)
-	ConcurrentUpdate(newConf.DevImports, cwd, i)
+	ConcurrentUpdate(newConf.Imports, cwd, i, newConf)
+	ConcurrentUpdate(newConf.DevImports, cwd, i, newConf)
 	return newConf, nil
 }
 
@@ -131,12 +131,12 @@
 
 	dest := i.VendorPath()
 
-	if err := ConcurrentUpdate(conf.Imports, dest, i); err != nil {
+	if err := ConcurrentUpdate(conf.Imports, dest, i, conf); err != nil {
 		return err
 	}
 
 	if useDev {
-		return ConcurrentUpdate(conf.DevImports, dest, i)
+		return ConcurrentUpdate(conf.DevImports, dest, i, conf)
 	}
 
 	return nil
@@ -196,7 +196,7 @@
 		msg.Warn("dev imports not resolved.")
 	}
 
-	err = ConcurrentUpdate(conf.Imports, vpath, i)
+	err = ConcurrentUpdate(conf.Imports, vpath, i, conf)
 
 	return err
 }
@@ -239,7 +239,7 @@
 }
 
 // ConcurrentUpdate takes a list of dependencies and updates in parallel.
-func ConcurrentUpdate(deps []*cfg.Dependency, cwd string, i *Installer) error {
+func ConcurrentUpdate(deps []*cfg.Dependency, cwd string, i *Installer, c *cfg.Config) error {
 	done := make(chan struct{}, concurrentWorkers)
 	in := make(chan *cfg.Dependency, concurrentWorkers)
 	var wg sync.WaitGroup
@@ -275,8 +275,10 @@
 	}
 
 	for _, dep := range deps {
-		wg.Add(1)
-		in <- dep
+		if !c.HasIgnore(dep.Name) {
+			wg.Add(1)
+			in <- dep
+		}
 	}
 
 	wg.Wait()
diff --git a/repo/set_reference.go b/repo/set_reference.go
index f171813..2856b89 100644
--- a/repo/set_reference.go
+++ b/repo/set_reference.go
@@ -43,8 +43,10 @@
 	}
 
 	for _, dep := range conf.Imports {
-		wg.Add(1)
-		in <- dep
+		if !conf.HasIgnore(dep.Name) {
+			wg.Add(1)
+			in <- dep
+		}
 	}
 
 	wg.Wait()
