IP Library Granted Patent US 8,352,935
Granted Patent B2
US 8,352,935 · App. 11/134,535 · Granted Jan 8, 2013

System for creating a customized software distribution based on user requirements

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,352,935
App. No.
11/134,535
Granted
Jan 8, 2013
Kind
B2
Abstract

A customized distribution, e.g. of Linux software, is built using only packages that satisfy a customer's individual requirements. The packages are verified, at build time, to be interoperable at run-time. Also, the distribution is verified to ensure all package dependencies are included. In cases where no package already exists that meets a user requirements, a new package can be created for this purpose. The packages in the distribution customized for the user can be tracked, so that as updates to the packages are released, the customer can be notified about those updates (without being notified about packages not in the customer's customized distribution). Finally, once the distribution has been built for the user, it can then be offered as a general-purpose distribution for future customers.

Claims (64)

1. A system for assembly of a customized software distribution to a user, comprising:

a computer;

a set of available software packages available on the computer;

a set of user software requirements, the set of user software requirements specifying desired features for a machine of the user without identifying specific software packages from the set of available software packages; and

an assembler on the computer to assemble a distribution including a subset of the available software packages that satisfies the set of user software requirements, the subset including at least a first package and a second package and omitting a non-included package of the set of available software packages, the distribution usable to install the subset of the available software packages on the machine of the user.

2. A system according to claim 1 , further comprising a database of package dependencies, a package dependency including the first package in the distribution that depends on a third package in the set of available software packages.

3. A system according to claim 2 , further comprising an adder to add the third package to the distribution.

4. A system according to claim 3 , wherein the adder is operative to automatically add the third package to the distribution as a consequence of the first package depending on the third package.

5. A system according to claim 1 , further comprising a validator to validate that the first package in the distribution and the second package in the distribution do not conflict at run-time.

6. A system according to claim 5 , further comprising a database including information indicating that the first package and the second package that do not conflict at run-time.

7. A system according to claim 6 , wherein the database further includes information indicating that the first package and a third package conflict at run-time, so that the assembler would not select both the first package and the third package for inclusion in the distribution.

8. A system according to claim 1 , further comprising a deliverer to deliver the distribution to the user.

9. A system according to claim 1 , further comprising an installer to install the distribution.

10. A system according to claim 9 , further comprising a notifier so that the system can notify the user of an update package for the distribution.

11. A system according to claim 10 , further comprising a distributor to distribute the package update upon request by the user.

12. A system according to claim 11 , further comprising an installer to install the update after installing the distribution.

13. A system according to claim 10 , wherein the notifier is operative to notify the user of the update without the machine of the user checking whether the update exists.

14. A system according to claim 1 , wherein the set of available software packages includes a set of available Linux packages.

15. A system according to claim 1 , wherein the assembler includes means for selecting the subset of available software packages from the set of available software packages using the user software requirements.

16. A system according to claim 1 , wherein the set of available software packages includes a set of available compiled software packages.

17. A system according to claim 1 , wherein the set of user software requirements includes a hardware requirement to execute the subset of the available software packages that satisfies the set of user software requirements.

18. A system according to claim 1 , wherein the subset of the available software packages can be one of a plurality of subsets of the available software packages that satisfies the set of user software requirements.

19. A system according to claim 1 , wherein the set of user software requirements specifies desired features for a machine of the user using categories without identifying specific software packages from the set of available software packages.

20. A method for generating a customized distribution of software packages for a user, comprising:

determining a set of available software packages;

determining a set of user software requirements, the set of user software requirements specifying desired features for a machine of the user without identifying specific software packages from the set of available software packages; and

generating a distribution of a subset of the set of available software packages that satisfies the user software requirements, the subset including at least a first package and a second package and omitting a non-included package of the set of available software packages, the distribution usable to install the subset of the available software packages on the machine of the user.

21. A method according to claim 20 , further comprising:

identifying the first package that is included in the distribution; and

identifying a third package upon which the first package depends.

22. A method according to claim 21 , further comprising adding the third package to the distribution.

23. A method according to claim 22 , wherein adding the third package to the distribution includes automatically adding the third package to the distribution as a consequence of the first package depending on the third package.

24. A method according to claim 20 , further comprising verifying that the first package in the distribution and the second package in the distribution do not conflict at run-time.

25. A method according to claim 20 , further comprising delivering the distribution to the user.

26. A method according to claim 25 , wherein delivering the distribution includes delivering an ISO image.

27. A method according to claim 20 , further comprising notifying the user by a system generating the customized distribution of a package update for the distribution.

28. A method according to claim 27 , further comprising:

distributing the package update upon request by the user; and

installing the package update after installing the distribution.

29. A method according to claim 27 , wherein notifying the user of a package update for the distribution includes notifying the user of the package update for the distribution without the user checking whether the update exists.

30. A method according to claim 20 , wherein determining a set of available software packages includes determining a set of available Linux packages.

31. A method according to claim 20 , wherein generating a distribution of a subset of the set of available software packages includes selecting the subset of available software packages that satisfies the user software requirements.

32. A method according to claim 20 , wherein determining a set of available software packages includes compiling the software packages to generate the set of available software packages.

33. A method according to claim 20 , wherein determining a set of user software requirements includes determining a set of user software requirements, the set of user software requirements including a hardware requirement to execute the subset of the available software packages that satisfies the set of user software requirements.

34. A method according to claim 20 , wherein generating a distribution of a subset of the set of available software packages that satisfies the user software requirements includes generating the distribution of the subset of the set of available software packages that satisfies the user software requirements, wherein the subset of the available software packages is one of a plurality of subsets of the available software packages that satisfies the set of user software requirements.

35. A method according to claim 20 , wherein determining a set of user software requirements includes determining the set of user software requirements, the set of user software requirements specifying desired features for a machine of the user using categories without identifying specific software packages from the set of available software packages.

36. An article, comprising:

a storage medium, said storage medium having stored thereon instructions, that, when executed by a machine, result in:

determining a set of available software packages;

determining a set of user software requirements, the set of user software requirements specifying desired features for a machine of the user without identifying specific software packages from the set of available software packages; and

generating a distribution of a subset of the set of available software packages that satisfies the user software requirements, the subset including at least a first package and a second package and omitting a non-included package of the set of available software packages, the distribution usable to install the subset of the available software packages on the machine of the user.

37. An article according to claim 36 , wherein the storage medium has further instructions stored thereon that, when executed by the machine result in:

identifying the first package that is included in the distribution; and

identifying a third package upon which the first package depends.

38. An article according to claim 36 , wherein the storage medium has further instructions stored thereon that, when executed by the machine result in verifying that the first package in the distribution and the second package in the distribution do not conflict at run-time.

39. An article according to claim 36 , wherein the storage medium has further instructions stored thereon that, when executed by the machine result in notifying the user by a system generating the distribution of a package update for the distribution.

40. An article according to claim 39 , wherein the storage medium has further instructions stored thereon that, when executed by the machine result in:

distributing the package update upon request by the user; and

installing the package update after installing the distribution.

41. An article according to claim 39 , wherein notifying the user of a package update for the distribution includes notifying the user of the package update for the distribution without the user checking whether the update exists.

42. An article according to claim 36 , wherein determining a set of available software packages includes determining a set of available Linux packages.

43. An article according to claim 36 , wherein determining a set of user software requirements includes determining a set of user software requirements, the set of user software requirements including a hardware requirement to execute the subset of the available software packages that satisfies the set of user software requirements.

44. An article according to claim 36 , wherein generating a distribution of a subset of the set of available software packages that satisfies the user software requirements includes generating the distribution of the subset of the set of available software packages that satisfies the user software requirements, wherein the subset of the available software packages is one of a plurality of subsets of the available software packages that satisfies the set of user software requirements.

45. An article according to claim 36 , wherein determining a set of user software requirements includes determining the set of user software requirements, the set of user software requirements specifying desired features for a machine of the user using categories without identifying specific software packages from the set of available software packages.

Assignments (16)
RELEASE OF SECURITY INTEREST REEL/FRAME 035656/0251 Recorded Feb 2, 2023
From: JPMORGAN CHASE BANK, N.A.
To: BORLAND SOFTWARE CORPORATION; ATTACHMATE CORPORATION; NETIQ CORPORATION; MICRO FOCUS (US), INC.; MICRO FOCUS SOFTWARE INC. (F/K/A NOVELL, INC.)
Reel/Frame 062623/0009 →
RELEASE OF SECURITY INTEREST REEL/FRAME 044183/0718 Recorded Feb 2, 2023
From: JPMORGAN CHASE BANK, N.A.
To: MICRO FOCUS LLC (F/K/A ENTIT SOFTWARE LLC); BORLAND SOFTWARE CORPORATION; MICRO FOCUS (US), INC.; SERENA SOFTWARE, INC; ATTACHMATE CORPORATION; MICRO FOCUS SOFTWARE INC. (F/K/A NOVELL, INC.); NETIQ CORPORATION
Reel/Frame 062746/0399 →
CORRECTIVE ASSIGNMENT TO CORRECT THE TO CORRECT TYPO IN APPLICATION NUMBER 10708121 WHICH SHOULD BE 10708021 PREVIOUSLY RECORDED ON REEL 042388 FRAME 0386. ASSIGNOR(S) HEREBY CONFIRMS THE NOTICE OF SUCCESSION OF AGENCY. Recorded Jul 26, 2018
From: BANK OF AMERICA, N.A., AS PRIOR AGENT
To: JPMORGAN CHASE BANK, N.A., AS SUCCESSOR AGENT
Reel/Frame 048793/0832 →
SECURITY INTEREST Recorded Oct 11, 2017
From: ATTACHMATE CORPORATION; BORLAND SOFTWARE CORPORATION; NETIQ CORPORATION; MICRO FOCUS (US), INC.; MICRO FOCUS SOFTWARE, INC.; ENTIT SOFTWARE LLC; ARCSIGHT, LLC; SERENA SOFTWARE, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 044183/0718 →
NOTICE OF SUCCESSION OF AGENCY Recorded May 2, 2017
From: BANK OF AMERICA, N.A., AS PRIOR AGENT
To: JPMORGAN CHASE BANK, N.A., AS SUCCESSOR AGENT
Reel/Frame 042388/0386 →
CHANGE OF NAME Recorded Sep 13, 2016
From: NOVELL, INC.
To: MICRO FOCUS SOFTWARE INC.
Reel/Frame 040020/0703 →
SECURITY INTEREST Recorded May 13, 2015
From: MICRO FOCUS (US), INC.; BORLAND SOFTWARE CORPORATION; ATTACHMATE CORPORATION; NETIQ CORPORATION; NOVELL, INC.
To: BANK OF AMERICA, N.A.
Reel/Frame 035656/0251 →
RELEASE OF SECURITY INTEREST RECORDED AT REEL/FRAME 028252/0216 Recorded Nov 24, 2014
From: CREDIT SUISSE AG
To: NOVELL, INC.
Reel/Frame 034470/0680 →
RELEASE OF SECURITY INTEREST RECORDED AT REEL/FRAME 028252/0316 Recorded Nov 24, 2014
From: CREDIT SUISSE AG
To: NOVELL, INC.
Reel/Frame 034469/0057 →
GRANT OF PATENT SECURITY INTEREST SECOND LIEN Recorded May 23, 2012
From: NOVELL, INC.
To: CREDIT SUISSE AG, AS COLLATERAL AGENT
Reel/Frame 028252/0316 →
GRANT OF PATENT SECURITY INTEREST FIRST LIEN Recorded May 23, 2012
From: NOVELL, INC.
To: CREDIT SUISSE AG, AS COLLATERAL AGENT
Reel/Frame 028252/0216 →
RELEASE OF SECURITY INTEREST IN PATENTS FIRST LIEN (RELEASES RF 026270/0001 AND 027289/0727) Recorded May 22, 2012
From: CREDIT SUISSE AG, AS COLLATERAL AGENT
To: NOVELL, INC.
Reel/Frame 028252/0077 →
RELEASE OF SECURITY IN PATENTS SECOND LIEN (RELEASES RF 026275/0018 AND 027290/0983) Recorded May 22, 2012
From: CREDIT SUISSE AG, AS COLLATERAL AGENT
To: NOVELL, INC.
Reel/Frame 028252/0154 →
GRANT OF PATENT SECURITY INTEREST (SECOND LIEN) Recorded May 13, 2011
From: NOVELL, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 026275/0018 →
GRANT OF PATENT SECURITY INTEREST Recorded May 12, 2011
From: NOVELL, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 026270/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 19, 2005
From: ISAACSON, SCOTT A.; ANDERSON, ERIC W.B.; WIPFEL, ROBERT
To: NOVELL, INC.
Reel/Frame 016599/0179 →