diff --git a/jiri/x.go b/jiri/x.go
index ef78566..09087b5 100644
--- a/jiri/x.go
+++ b/jiri/x.go
@@ -100,7 +100,7 @@
 	root := FindRoot()
 	fi, err := os.Stat(filepath.Join(root, ProfilesDBDir))
 	if err == nil && fi.IsDir() {
-		return ProfilesRootDir
+		return ProfilesDBDir
 	}
 	return legacyProfilesDBFile
 }
diff --git a/profiles/profilescmdline/manager_cmdline.go b/profiles/profilescmdline/manager_cmdline.go
index 344286d..1fa9aa7 100644
--- a/profiles/profilescmdline/manager_cmdline.go
+++ b/profiles/profilescmdline/manager_cmdline.go
@@ -376,11 +376,15 @@
 			return nil
 		}
 	}
-	if !isdir && installer == "" {
+	if installer == "" {
 		// Old setup with no installers and writing to a file.
 		return db.Write(jirix, installer, path)
 	}
-	return fmt.Errorf("Can't write a database file (%v) and specify an installer (%v)", path, installer)
+	// New setup, but the directory doesn't exist yet.
+	if err := os.MkdirAll(path, os.FileMode(0755)); err != nil {
+		return err
+	}
+	return db.Write(jirix, installer, path)
 }
 
 func updateImpl(jirix *jiri.X, cl *updateFlagValues, args []string) error {
@@ -486,7 +490,9 @@
 				return err
 			}
 		}
-		fmt.Fprintln(jirix.Stdout(), out.String())
+		if s := strings.TrimSpace(out.String()); s != "" {
+			fmt.Fprintln(jirix.Stdout(), s)
+		}
 	}
 	mgrs := profilesmanager.Managers()
 	if len(mgrs) == 0 {
diff --git a/profiles/profilesmanager/util.go b/profiles/profilesmanager/util.go
index 3b8bcdf..0a0efef 100644
--- a/profiles/profilesmanager/util.go
+++ b/profiles/profilesmanager/util.go
@@ -32,7 +32,7 @@
 		}
 		return nil
 	}
-	mgr := LookupManager(profile)
+	mgr := LookupManager(profiles.QualifiedProfileName(installer, profile))
 	if mgr == nil {
 		return fmt.Errorf("profile %v is not supported", profile)
 	}
