I'm a Gentoo Junkie, and I've been working on a project for the last few months to make it easier to manage a large group of Gentoo computers, like in a lab or lan center. The project is called GEMS, and its an acronym for Gentoo Enterprise Management System.
GEMS aims to be similar to the "Red Hat Network" provided by Red Hat Linux. It gives you a view of your environment hardware, as well as an inventory of Portage installed software, and which packages have GLSA (Gentoo Security Announcments) associated with them. It also allows you to update Portage software on many machines at once with a few simple mouse clicks. This first release has many great features, with many more to come. So if you have more than a few Gentoo boxes to maintain, check out the web site. It's GPL Licensed and totally free. Tested on x86 Gentoo, but should work on any Gentoo supported arch.
http://www.gamehound.net/gems/
Thanks!
Greg _________________Half-life/Source/Urban Terror/Unreal control panel -> www.opengamepanel.org
Linux user #347899
Gentoo has USE flags for a highly configurable system.
Microsoft has SUE flags to stifle innovation

cool diagrams. Your web design could use some work, specifically the homepage.

i've been wanting to discuss gentoo and distributed package installation at work, but until now I haven't really seen a good way to do it.

One thing I'm curious about is if something broke, how easy would it be to flip a switch and revert back?

When I have done 'emerge -uDp world' in the past, it has not once that I can remember gone smoothly. Basically what we would need here is a baseline or a tag like in SCM that we (as a large company deploying updates to 100's of servers and client machines) that we could revert back to immediately, should something crucial come to a grinding halt._________________Woof, Woof! Add "[solved]" to the title! Woof, Woof!

Chovy,
Thanks man. I know the website is a lacking. I'm not the most creative. I'll be making it a little nicer later on. I just wanted to get it up so I could release the project.
GEMS is very simple, it only does what portage can do. I've never done an emerge world for that reason, there's too much stuff that could get broken. If you do use GEMS to install a package that ends up causing problems, you could just log into the box and do emerge unmerge packagename The next version of GEMS will have a package unmerge feature.
Keep in mind that you do need to test the packages you wish to install before you use GEMS to install them. It doesn't do anything special in terms of package conflicts (yet, maybe later). The GEMS endpoint just runs emerge commands and responds to the errors that emerge throws. If you think you want to use it for your company, feel free to ask me questions about deploying it, and I'll help you the best I can. Thanks for checking it out.

Chovy,
Thanks man. I know the website is a lacking. I'm not the most creative. I'll be making it a little nicer later on. I just wanted to get it up so I could release the project.
GEMS is very simple, it only does what portage can do. I've never done an emerge world for that reason, there's too much stuff that could get broken. If you do use GEMS to install a package that ends up causing problems, you could just log into the box and do emerge unmerge packagename The next version of GEMS will have a package unmerge feature.
Keep in mind that you do need to test the packages you wish to install before you use GEMS to install them. It doesn't do anything special in terms of package conflicts (yet, maybe later). The GEMS endpoint just runs emerge commands and responds to the errors that emerge throws. If you think you want to use it for your company, feel free to ask me questions about deploying it, and I'll help you the best I can. Thanks for checking it out.

Maedros,
Thanks man, I'll check it out.

Greg

would emerge --unmerge pkgname revert back to the previously installed version? I would assume it would remove that package all together._________________Woof, Woof! Add "[solved]" to the title! Woof, Woof!

Chovy,
No, that would remove it. You would have to emerge the specific version. I don't remember the exact syntax, you can look it up. But it would be something like this:

Code:

emerge '=category/package-v1.2.3'

That would put you back to the desired version. Thanks.
Greg_________________Half-life/Source/Urban Terror/Unreal control panel -> www.opengamepanel.org
Linux user #347899
Gentoo has USE flags for a highly configurable system.
Microsoft has SUE flags to stifle innovation

yeah, that works on an individual basis, but I think a corporate solution would need the ability to rollback easily on failed deploys. just my experience speaking here, but it's one reason why I haven't even bothered suggesting it at work.

becuse of thevast difference in technilogical expertise at mid-large sized corporations, a distributed development envrionement would have to be easily deployed, ie - the big *green* button (with an *red* button for "undo").

The command line is used quite a bit, but we also support windows for the most part (as a large chunk of our developers simply do not use the CLI, instead we mount the filesystem via samba, and write Win32 scripts that do the same on the nix command line), so it's difficult, there is talk of each developer having their own Linux development box vs. working/testing on a few overloaded servers. Regardless, the problem we face is major breakages in a software update, and having it impact developer productivity.

I think portage is a perfect candidate for deploying internal software packages and upgrades to our developers.

I don't know how well a win32 script to updateportage would work, or if it's even possible. My gut feeling is there would have to be a gui for it for the non-cli users._________________Woof, Woof! Add "[solved]" to the title! Woof, Woof!

Zatalian,
The icons are from fasticon.com. They are free to use personally, but $10 to use on a public website or application. I forget the exact terms of the license, but I decided to just pay it. It's only $10, so I considered it like a donation. They are really sweet, I could never make something like that.

Chovy,
You just game me another "TODO" for the next version... Roll back functionality. I'll have to figure that one out._________________Half-life/Source/Urban Terror/Unreal control panel -> www.opengamepanel.org
Linux user #347899
Gentoo has USE flags for a highly configurable system.
Microsoft has SUE flags to stifle innovation

Zatalian,
The icons are from fasticon.com. They are free to use personally, but $10 to use on a public website or application. I forget the exact terms of the license, but I decided to just pay it. It's only $10, so I considered it like a donation. They are really sweet, I could never make something like that.

Chovy,
You just game me another "TODO" for the next version... Roll back functionality. I'll have to figure that one out.

Is there a way to dump the currently installed packages and versions list, perhaps into a well-formed xml document? That could be enough to write a simple script that could parse it and revert back if it was generated before the update took place._________________Woof, Woof! Add "[solved]" to the title! Woof, Woof!

Is there a way to dump the currently installed packages and versions list, perhaps into a well-formed xml document?

Provided that you have gentoolkit installed first, it's:

Code:

equery list

The output is not an XML file, but rather one package per line (aka atoms) including category, name of the package and its exact version. Would it suffice?_________________My blog: In search for ultimate programming language

I use eix. It allows you to format the output of equery and emerge. I wrote it's output to file, and then parse that for doing inventory collection in GEMS.
Greg_________________Half-life/Source/Urban Terror/Unreal control panel -> www.opengamepanel.org
Linux user #347899
Gentoo has USE flags for a highly configurable system.
Microsoft has SUE flags to stifle innovation

I put a GEMS demo up, check out the webpage.
www.gamehound.net/gems/
Click on the demo link at the top. The login is user:guest password:guest. It's prefilled.
Thanks!
Greg _________________Half-life/Source/Urban Terror/Unreal control panel -> www.opengamepanel.org
Linux user #347899
Gentoo has USE flags for a highly configurable system.
Microsoft has SUE flags to stifle innovation

Last edited by xgregx on Mon Jun 19, 2006 3:58 pm; edited 1 time in total

Here's an idea for managing networks that I've been thinking of that might be of interest:

Image Sets and Client Groups.

Image-Set: An image of all the files installed on a system. Sort of like how when building packages the install is dumped into an image folder and then copied over onto the actual system. An Image Set would be an image of an entire installation. You could delete, duplicate, and create new Image Sets. The sets are stored on a central image server.

Client-Groups: A way of dividing client computers on a LAN into groups for purposes of package management.

Here's an example of how this would be useful. (Examples tend to work better than trying to explain it):

Say you have a network that, like most networks, has a variety of different types of computers on it. You divide them up into client-groups depending upon what compiler settings, USE flags you want used, or what that particular set of computers is used for, etc.

Lets say you have a dozen computers that have athlon processors and are used for general office work and so you have assigned them to a client-group named AMD-Office-Grp. The contents of the computers in this client-group are generally synced to the image-set named AMD-Office-Img on the image server.

You want to update a package on these computers only. So your GEMS starts to build that package using the settings for that client-group. All computers on your network that are in client-groups that have distcc enabled in their config, work together to build the package. (Goes really fast on a big network!!) You don't want to install this pacakage right away though because you want to test it first. So before building it, you duplicated the AMD-Office-Img image-set and named it AMD-Office-TEST. Once the package is built you have it installed to that AMD-Office-TEST image-set on the image server.

To test it you take one the the computers from AMD-Office-Grp and change it's client-group to a new one called AMD-TEST-DUMMY. You then sync that client-group to the AMD-Office-TEST image-set. You can then test on that computer to make sure it works. Let's assume it's all working ok.

Then you move the test computer back to the AMD-Office-Grp client-group. You also delete the AMD-Office-Img image set. It's old now and you don't need it. Now you can rename the AMD-Office-TEST image-set to AMD-Office-Img. This is the new default image-set for the AMD-Office-Grp client-group that has the updated package on it. You then sync the AMD-Office-Grp to the new AMD-Office-Img.

Bleh, that was a little over-stated, but I think I get my idea across of an automated system to manage packages on groups of computers while having distributed compiling.

Does this make sense? Would this be feasible? Are there other management packages that already do this?_________________"...as we enjoy great advantages from the inventions of others, we should be glad of an opportunity to serve others by any invention of ours, and this we should do freely and generously." -Benjamin Franklin

I used to maintain boxes with packages. The problem was portage was slow. And if portage sync changes from system to system, then packages get built anyways. Clients are too slow to compile.

I used ntfs for portage and the package across all systems. If the portage system was maintained eternally (/var/db/pkg) for all systems and a fast package emerging script was uploaded to each system it would stabilize and facilitate upgrades. And not require either a dumb chron to run "emerge --world" but also not require logging into every system.

Sloppy. Slow. Everything breaks.

There is still an element of unpredictability. For this reason I would compile a stable installation and then not touch it ever. That goes for other distros as well.