Software package management
First Claim
1. A computerized method for installing a software package on a computer over a network with reference to a code store data structure tracking whether components of software packages are installed on the computer, comprising:
- downloading to the computer from the network a manifest file that describes at least one distribution unit for a software package, wherein the manifest file specifies a non-local location for acquiring a distribution unit when not present on the computer;
resolving software dependencies on the computer for the software package by consulting the code store data structure and the manifest file to identify at least one distribution unit indicated in the manifest file as depended on by the software package but not yet installed on the computer;
responsive to determining that the code store data structure tracking whether components of software packages are installed indicates the identified depended on distribution unit is not installed on the computer, acquiring from the network the at least one identified distribution unit for the software package from the non-local location specified in the manifest file;
causing installation of the software package on the computer; and
updating the code store data structure on the computer to indicate that the at least one identified distribution unit indicated in the manifest file as depended on by the software package and acquired from the non-local location specified in the manifest file is installed on the computer.
2 Assignments
0 Petitions
Accused Products
Abstract
A software package manager uses a distribution unit containing components for a software package and a manifest file that describes the distribution unit to manage the installation, execution, and uninstallation of software packages on a computer. Information in the manifest file pertaining to a software package is stored in a code store data structure upon installation of the package. The manifest file also contains information that permits the software package manager to resolve any software dependencies upon installation. The software package manager uses the code store data structure to locate the required components when the software is executed and to remove the components appropriately when the software is uninstalled.
-
Citations
43 Claims
-
1. A computerized method for installing a software package on a computer over a network with reference to a code store data structure tracking whether components of software packages are installed on the computer, comprising:
-
downloading to the computer from the network a manifest file that describes at least one distribution unit for a software package, wherein the manifest file specifies a non-local location for acquiring a distribution unit when not present on the computer;
resolving software dependencies on the computer for the software package by consulting the code store data structure and the manifest file to identify at least one distribution unit indicated in the manifest file as depended on by the software package but not yet installed on the computer;
responsive to determining that the code store data structure tracking whether components of software packages are installed indicates the identified depended on distribution unit is not installed on the computer, acquiring from the network the at least one identified distribution unit for the software package from the non-local location specified in the manifest file;
causing installation of the software package on the computer; and
updating the code store data structure on the computer to indicate that the at least one identified distribution unit indicated in the manifest file as depended on by the software package and acquired from the non-local location specified in the manifest file is installed on the computer. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19)
acquiring, for each of the software dependencies in turn, a dependency manifest file that describes a dependency distribution unit for a dependency software package;
resolving software dependencies for the dependency software package as specified by the dependency manifest file;
acquiring the dependency distribution unit for the dependency software package;
extracting components in the dependency software package from the dependency distribution unit into a directory on the computer;
causing the installation of the dependency software package on the computer; and
updating the code store data structure on the computer with information from the dependency manifest file pertaining to the dependency software package.
-
-
3. The method of claim 1, wherein the software dependencies are nested so that resolving the software dependencies is processed recursively.
-
4. The method of claim 1 further comprising:
locating the components for the software package using the code store data structure when execution of software in the software package is requested.
-
5. The method of claim 1 further comprising:
-
modifying the code store data structure to reflect removal of the software package when uninstallation of the software package is requested; and
deleting each component for the software package when the code store data structure indicates no other software package uses the component.
-
-
6. The method of claim 1, wherein the manifest file specifies a directory into which the components of the software package are extracted, the method further comprising:
extracting components in the software package from the at least one acquired distribution unit into the directory.
-
7. The method of claim 1, wherein the distribution unit is a compressed file.
-
8. The method of claim 1, wherein the manifest file and the distribution unit comprise a distribution unit file and the manifest file and the distribution unit are acquired by extracting each from the distribution unit file.
-
9. The method of claim 8, wherein the distribution unit file comprises a dependency distribution unit.
-
10. The method of claim 8, wherein the distribution unit file comprises a plurality of distribution units.
-
11. The method of claim 8, wherein the distribution unit file is a compressed file.
-
12. The method of claim 1, wherein the manifest file and the distribution unit are distributed on a computer-readable medium.
-
13. The method of claim 1, wherein the components in the software package and the software dependencies comprise native code components.
-
14. The method of claim 1, wherein the components in the software package and the software dependencies comprise Java classes.
-
15. The method of claim 1, wherein the components in the software package and the software dependencies comprise a mixture of native code components and Java classes.
-
16. The method of claim 1, wherein extracting the components comprises:
-
copying the components from the distribution unit into a file structure having a file directory;
updating the file directory with information about each component in the file; and
storing the file structure into the file directory on the computer.
-
-
17. The method of claim 1, wherein the code store data structure resides in an existing system data structure and the step of updating the code store data structure comprises the step of interfacing with an existing system data structure manager.
-
18. The method of claim 1, further comprising:
-
determining when a component in the software package already exists on the computer;
comparing the versions of the components; and
updating the code store data structure with the location for the component which is the later version.
-
-
19. The method of claim 1 wherein
at least one software dependency specifies a plurality of components via a single name; - and
the code store data structure is operable to indicate, via the single name, whether the plurality of components are installed.
- and
-
20. A computerized method for managing software packages on a target computer, comprising the steps of:
-
acquiring, by the target computer, a manifest file that describes at least one distribution unit for a software package, wherein the manifest file is Open Software Description format;
resolving software dependencies for the software package as specified by the manifest file by identifying at least one distribution unit depended on by the software package but not yet installed on the target computer;
acquiring the at least one identified distribution unit for the software package;
extracting components in the software package from the at least one acquired distribution unit into a directory on the target computer;
causing the installation of the software package on the target computer; and
updating a code store data structure on the target computer with information from the manifest file pertaining to the software package.
-
-
21. A computerized method for managing software packages on a computer comprising the steps of:
-
acquiring, by the computer a manifest file that describes at least one distribution unit for a software package;
resolving software dependencies for the software package as specified by the manifest file by identifying at least one distribution unit depended on by the software package but not yet installed on the computer;
acquiring the at least one identified distribution unit for the software package;
extracting components in the software package from the at least one acquired distribution unit into a directory on the computer;
causing the installation of the software package on the computer;
updating a code store data structure on the computer with information from the manifest file pertaining to the software package;
determining if the manifest file specifies that the software package cannot share components with a software package previously installed on the computer; and
isolating the components in the software package by associating the components in the code store data structure with a unique execution space specified by the manifest file.
-
-
22. A computer-readable medium having computer-executable instructions to cause a client computer to install a software package via a network on a computer with reference to a code store data structure tracking whether components of software packages are installed on the client computer by performing the following:
-
downloading to the client computer from the network a manifest file and a distribution unit for a software package described by the manifest file from a server computer;
resolving software dependencies on the client computer for the software by consulting the code store data structure tracking whether components of software packages are installed on the client computer and the manifest to identify at least one distribution unit indicated in the manifest file as depended on by the software package but not yet installed on the client computer, wherein the manifest file specifies a non-local location for acquiring the distribution unit when not present on the client computer;
responsive to determining that the code store data structure tracking whether components of software packages are installed indicates the identified depended on distribution unit is not installed on the client computer, acquiring from the network the at least one identified distribution unit for the software package from the non-local location specified in the manifest file;
causing the client computer to install the software package; and
updating the code store data structure in the client computer to indicate that the at least one identified distribution unit indicated in the manifest file as depended on by the software package and acquired from the non-local location specified in the manifest file is installed on the client computer. - View Dependent Claims (23, 24, 25)
acquiring, from a server computer for each of the software dependencies in turn, a dependency manifest file that describes a dependency distribution unit for a dependency software package;
resolving software dependencies for the dependency software package as specified by the dependency manifest file;
extracting components in the dependency software package from the dependency distribution unit into a directory on the client computer;
causing the client computer to install the dependency software package; and
updating the code store data structure on the client computer with information from each dependency manifest file pertaining to the dependency software package.
-
-
24. The computer-readable medium of claim 22, wherein the software dependencies are nested so that the client computer processes resolving the software dependencies recursively.
-
25. The computer-readable medium of claim 22, wherein the code store data structure resides in an existing system data structure managed by an operating system in the client computer and updating the code store data structure comprises interfacing with the operating system.
-
26. A computer-readable medium having stored thereon a code store data structure for tracking whether components of software packages are installed on a computer, the data structure comprising:
-
a name field containing data representing a name of a distribution unit for a software package installed on the computer;
a unit version field containing data representing a version for the distribution unit represented by the name field;
a component field containing data representing a list of components in the distribution unit represented by the name field;
a location field containing data representing a location, if any, on the computer at which components in the list can be found; and
a source field containing data representing a source from which the distribution unit represented by the name field can be acquired by the computer, wherein the source field is operable to specify a non-local location. - View Dependent Claims (27, 28, 29)
a component version field containing data representing a version for a component in the list represented in the component field; and
a component type field containing data representing a data type for the component represented in the component version field.
-
-
29. The computer-readable medium of claim 26, wherein the data structure further comprises a digital signature data field containing data representing a digital signature affixed to the distribution unit.
-
30. A computer system comprising:
-
a processing unit;
a system memory coupled to the processing unit through a system bus;
a computer-readable medium coupled to the processing unit through the system bus; and
a software package manager executed from the computer-readable medium by the processing unit, wherein the software package manager comprises a software installation function that causes the processing unit to store components comprising software and contained in a distribution unit onto a computer-readable medium as directed by a manifest file, to identify and acquire at least one distribution unit listed in the manifest file depended on by the software that a code store data structure indicates is not yet installed from a non-local location listed in the manifest file, to install the software, and to update the code store data structure stored on a computer-readable medium with information contained in the manifest file, a software execution function that causes the processing unit to locate the appropriate components using the code store data structure when the processing unit is instructed to execute the software, and an uninstallation function that causes the processing unit to remove the components from the computer-readable medium and to modify the code store data structure when the processing unit is instructed to uninstall the software. - View Dependent Claims (31)
-
-
32. A computer-readable medium having computer-executable instructions to cause a client computer to perform a method comprising:
-
downloading a manifest file and a distribution unit for a software package described by the manifest file from a server computer, wherein the manifest file is Open Software Description format;
resolving software dependencies for the software package as specified by the manifest file by identifying at least one distribution unit depended on by the software package but not yet installed on the client computer;
acquiring, by the client computer, the at least one identified distribution unit for the software package;
extracting components in the at least one acquired software package from the distribution unit into a directory on the client computer;
causing the client computer to install the software package; and
updating a code store data structure in the client computer with information from the manifest file pertaining to the software package.
-
-
33. A computer-readable medium having computer-executable instructions to cause a client computer to perform a method comprising:
-
downloading a manifest file and a distribution unit for a software package described by the manifest file from a server computer;
resolving software dependencies for the software package as specified by the manifest file by identifying at least one distribution unit depended on by the software package but not yet installed on the client computer;
acquiring the at least one identified distribution unit for the software package by the client computer;
extracting components in the software package from the at least one acquired distribution unit into a directory on the client computer;
causing the client computer to install the software package;
updating a code store data structure in the client computer with information from the manifest file pertaining to the software package;
determining if the manifest file specifies that the software package cannot share components with a software package previously installed on the client computer; and
isolating the components in the software package by associating the components in the code store data structure with a unique execution space specified by the manifest file.
-
-
34. A computer-implemented method for distributing software to a computer having a data structure for tracking whether software components are installed on the computer, the method comprising:
-
downloading to the computer a software package, wherein the software package comprises a dependency list indicating one or more items depended upon by the software package, wherein at least one of the items on the dependency list is not contained in the software package, and the software package indicates a remote location from which the item can be obtained;
consulting the data structure to determine that at least one of the items on the dependency list is not installed on the computer;
responsive to determining that the item in the dependency list is not installed on the computer, downloading the item from the remote location specified in the software package; and
updating the data structure to indicate that the downloaded item is installed on the computer. - View Dependent Claims (35)
-
-
36. A software installation system for installing software at a computer, the software installation system comprising:
-
a data structure indicating whether or not a software package is installed at the computer;
a software package receiver for receiving a software package comprising a dependency list indicating one or more items depended upon by the software package, wherein at least one of the items on the dependency list is not contained in the software package, and the software package indicates a remote location from which the item can be obtained;
a dependency resolver operable to consult the data structure to determine that at least one of the items on the dependency list is not installed on the computer;
a downloader responsive to the resolver and operable to download the item from the remote location specified in the software package when it is determined that the item in the dependency list is not installed on the computer; and
a data structure updater to update the data structure to indicate that the downloaded item is installed on the computer. - View Dependent Claims (37)
-
-
38. A computer-implemented method for installing a software package on a computer system, wherein the software package comprises a name and a list of software dependencies, and the computer system comprises a code store data structure indicating whether a software package has been installed, the method comprising:
-
via the software package name, consulting the code store data structure to identify whether the software package is already installed on the computer system;
responsive to determining the software package is not already installed on the computer system, consulting the list of dependencies and the code store data structure to identify whether the dependencies are already installed on the computer system, wherein at least one of the dependencies indicates another software package;
responsive to determining the dependency that is a software package is not installed, acquiring a list of further dependencies for the dependency that is a software package and consulting the list of the further dependencies and the code store data structure to identify whether the further dependencies are already installed on the computer system; and
responsive to determining a dependency is not already installed on the computer system, acquiring the dependency from a location indicated in its respective software package. - View Dependent Claims (39, 40, 41, 42, 43)
-
Specification