--- a/libopkg/opkg_cmd.c
+++ b/libopkg/opkg_cmd.c
@@ -500,17 +500,6 @@ opkg_upgrade_cmd(int argc, char **argv)
 		    opkg_install_by_name(arg);
                }
 	  }
-     } else {
-	  pkg_vec_t *installed = pkg_vec_alloc();
-
-	  pkg_info_preinstall_check();
-
-	  pkg_hash_fetch_all_installed(installed);
-	  for (i = 0; i < installed->len; i++) {
-	       pkg = installed->pkgs[i];
-	       opkg_upgrade_pkg(pkg);
-	  }
-	  pkg_vec_free(installed);
      }
 
      r = opkg_configure_packages(NULL);
@@ -1173,7 +1162,7 @@ opkg_print_architecture_cmd(int argc, ch
    array for easier maintenance */
 static opkg_cmd_t cmds[] = {
      {"update", 0, (opkg_cmd_fun_t)opkg_update_cmd, PFM_DESCRIPTION|PFM_SOURCE},
-     {"upgrade", 0, (opkg_cmd_fun_t)opkg_upgrade_cmd, PFM_DESCRIPTION|PFM_SOURCE},
+     {"upgrade", 1, (opkg_cmd_fun_t)opkg_upgrade_cmd, PFM_DESCRIPTION|PFM_SOURCE},
      {"list", 0, (opkg_cmd_fun_t)opkg_list_cmd, PFM_SOURCE},
      {"list_installed", 0, (opkg_cmd_fun_t)opkg_list_installed_cmd, PFM_SOURCE},
      {"list-installed", 0, (opkg_cmd_fun_t)opkg_list_installed_cmd, PFM_SOURCE},
--- a/src/opkg-cl.c
+++ b/src/opkg-cl.c
@@ -187,7 +187,7 @@ usage()
 
 	printf("\nPackage Manipulation:\n");
 	printf("\tupdate			Update list of available packages\n");
-	printf("\tupgrade			Upgrade installed packages\n");
+	printf("\tupgrade <pkgs>		Upgrade package(s)\n");
 	printf("\tinstall <pkgs>		Install package(s)\n");
 	printf("\tconfigure <pkgs>	Configure unpacked package(s)\n");
 	printf("\tremove <pkgs|regexp>	Remove package(s)\n");
