Validated software installation and dependency graph
AssigneeDell Products L.P.
InventorBenjamin E. Santaus
Life of this patent
Estimating the term…
Abstract
Techniques for verifying a software package version are disclosed. A new package version for a software package is obtained. A repository maintains package versions for the software package. The new package version includes a new dependency and a new installation instruction for the software package. The repository lists one or more other package versions, each of which includes one or more other dependencies, for the software package. The new dependency and the new installation instruction are verified. In response, the new package version, which includes the new dependency and the new installation instruction, is permitted to be added to the repository, resulting in the software package being associated with the new package version.
Claims17
A method comprising:
- obtaining a new package version for a software package, wherein a repository maintains package versions for the software package, wherein the new package version includes a new dependency and a new installation instruction for the software package, and wherein the repository lists one or more other package versions, each of which includes one or more other dependencies, for the software package;
- verifying the new dependency by constructing, using one or more processors, a plurality of dependency-specific installation environments based on combinations of the one or more other dependencies and the new dependency;
- verifying the new installation instruction by executing, within each of the plurality of dependency-specific installation environments, the new installation instruction to produce a corresponding installation result reflecting interaction between the new dependency and the one or more other dependencies;
- in response to detecting, from the installation results, at least one dependency-specific installation environment in which execution of the new installation instruction completes without a dependency conflict or installation failure, permitting the new package version, which includes the new dependency and the new installation instruction, to be added to the repository, resulting in the software package being associated with the new package version;
- and
- in response to detecting that none of the plurality of dependency-specific installation environments produces a successful installation result, preventing the new package version from being added to the repository,
- wherein constructing the plurality of dependency-specific installation environments includes:
- recursively assembling every possible set of dependencies from the one or more other package versions in the repository;
- and
- recursively generating and updating a list of software package versions that are compatible with the new package version,
- wherein each dependency-specific installation environment comprises an isolated file system state and dependency configuration generated from the repository to emulate installation of the new package version under a corresponding dependency set, and
- wherein compatibility of the new dependency with the one or more other dependencies is determined based on the installation results rather than solely on dependency metadata.
One or more hardware storage devices that store instructions that are executable by one or more processors to cause the one or more processors to:
- obtain a new package version for a software package, wherein a repository maintains package versions for the software package, wherein the new package version includes a new dependency and a new installation instruction for the software package, and wherein the repository lists one or more other package versions, each of which includes one or more other dependencies, for the software package;
- verify the new dependency by constructing a plurality of dependency-specific installation environments corresponding to combinations of the one or more other dependencies and the new dependency, each dependency-specific installation environment comprising an isolated dependency configuration derived from the repository;
- verify the new installation instruction by executing the new installation instruction within each of the plurality of dependency-specific installation environments to generate installation results corresponding to each dependency-specific installation environment;
- in response to detecting, from the installation results, at least one dependency-specific installation environment in which execution of the new installation instruction completes without a dependency conflict or installation failure, permit the new package version, which includes the new dependency and the new installation instruction, to be added to the repository, resulting in the software package being associated with the new package version;
- and
- in response to detecting that none of the plurality of dependency-specific installation environments produces a successful installation result, preventing the new package version from being added to the repository,
- wherein constructing the plurality of dependency-specific installation environments includes:
- recursively assembling every possible set of dependencies from the one or more other package versions in the repository;
- and
- recursively generating and updating a list of software package versions that are compatible with the new package version,
- wherein compatibility of the new dependency with the one or more other dependencies is determined based on the installation results generated by execution of the new installation instruction within the plurality of dependency-specific installation environments rather than solely on dependency metadata.
A computer system comprising:
- one or more processors;
- and
- one or more hardware storage devices that store instructions that are executable by the one or more processors to cause the computer system to:
- obtain a new package version for a software package, wherein a repository maintains package versions for the software package, wherein the new package version includes a new dependency and a new installation instruction for the software package, and wherein the repository lists one or more other package versions, each of which includes one or more other dependencies, for the software package;
- verify the new dependency by generating a plurality of dependency-specific installation environments, each dependency-specific installation environment corresponding to a distinct combination of the one or more other dependencies and the new dependency and comprising an isolated dependency configuration derived from the repository;
- verify the new installation instruction by executing the new installation instruction within each of the plurality of dependency-specific installation environments to produce installation outcomes indicative of interactions between the new dependency and the one or more other dependencies;
- and
- in response to detecting, from the installation outcomes, at least one dependency-specific installation environment in which execution of the new installation instruction completes without a dependency conflict or installation failure, permit the new package version, which includes the new dependency and the new installation instruction, to be added to the repository, resulting in the software package being associated with the new package version;
- and
- in response to detecting that the installation outcomes indicate failure across the plurality of dependency-specific installation environments, preventing the new package version from being added to the repository,
- wherein generating the plurality of dependency-specific installation environments includes:
- recursively assembling every possible set of dependencies from the one or more other package versions in the repository;
- and
- recursively generating and updating a list of software package versions that are compatible with the new package version,
- wherein the computer system is configured to determine compatibility of the new dependency with the one or more other dependencies based on the installation outcomes produced by execution within the plurality of dependency-specific installation environments rather than solely on dependency metadata.
Dependencies are inferred from the claim text.