Hi Lists,
I proposed this to a Fedora mailing list last night. Below is a) my initial email, b) kanarip's initial response, and c) my reply to that.
---------- Forwarded message ---------- From: Yaakov Nemoy loupgaroublond@gmail.com Date: Nov 22, 2007 2:51 AM Subject: Making respins with custom configs and files To: fedora-advisory-board@redhat.com
Hey List,
I've come out of my coding ban (till finals are over) to work on a small side project. It's a tool that lets you pick a set of files from a running system, they could be anything, config files, random non-free fonts installed to /usr/share/fonts/, grub splash screens, etc..., and lets you make an RPM out of them. Since some of these files might clash with other packages, it doesn't install them directly to the root, but hidden away in /usr/share. There is a second tool that then deploys these lumps of files. It solves the following use cases:
Scenario 1 Tim is a power user. He has a system heavily configured, with a custom set of packages, from five repos, and all sorts of other things he found on online on deviantart. He wants to make a respin of his computer using Revisor, so he can pop a CD in the brand new machine, use it to install Fedora, and be up and running in under 30 minutes. Since a large number of files that are not in his /home partition are just as important still require time setting up, he would rather tell Revisor where to look, and have it copy all these files automatically. He's also given a package full of files that he could drop into a private repo if he ever finds the time to set one up.
Scenario 2 Kim is a computer science student. She's been given an assignment that involves a complicated build and runtime environment. In her proprietary-software centric school, ensuring that her code will compile and run cleanly when she submits it for a grade is a huge chore. She would rather give the professors a Live CD saying 'run this', that drops them into a stripped down Gnome environment, with a terminal, and all her programs sitting on the desktop. She gets an A, and her professor starts considering incorporating Linux into the curriculum for its ease of use.
Scenario 3 Jim is a technician for Megacorp and is configuring a bunch of machines. He knows how to make RPMs, but it is a lengthy process since he is not familiar with it. He has a set of files he wants to include with every system he configures, that include corporate branding on every spot available. The list of files is large, but the only thing he needs to do is copy them to specific places. He would rather just give a command a list of files that spits out a spec file and a tarball that he can add to an automated system. The packages will then be deployed the next time he schedules an update.
Right now, I have two working scripts. There are a couple of minor bugs, and I have some SELinux questions. Is this something people want to see in Fedora 9? Would it be useful to the revisor/respin crowd? Or am I completely off the mark here, and someone has a better idea?
Cheers, Yaakov
---------- Kanarip's message ---------- Hi Yaakov,
the Fedora Advisory Board may not be the most appropriate list to discuss Fedora 9 or Revisor features, more appropriate maybe is the Revisor development or user discussion list[1], and the fedora-livecd-list[2].
However looking at what it is you are trying to solve, have you tried working with copy_dir maybe? Revisor uses that setting to copy all contents from that location onto the live or installation media. With Live Media these files are copied onto "/" which is to become the root filesystem once you boot up the Live Media, and with Installation Media it copies it into the files/ directory in the tree (so that during the installation you can use it in %post).
If this has any short-comings on solving the scenario's you are addressing, please let me know because I think these are perfectly valid use cases.
Kind regards,
Jeroen van Meeuwen -kanarip
---------- My reply ----------
I haven't looked at copy_dir, not knowing it existed, but now that I have my code, I feel like I could use something slightly more organized for lack of a better word. If this seems useful, I can try to merge the two feature sets.
There are two aspects on each of the last two scenarios that I feel copy_dir doesn't quite handle. It doesn't handle the third scenario at all, where the Technician wants to create a dumb package to include in his private repository. That's a feature that goes beyond just a single respin, and he would prefer to include in multiple respins.
In the second scenario, I could imagine a sub scenario where when someone was trying to redeploy those extra files on i slightly different live CD, the Student would want to have a single package as well to remix the LiveCD with.
One aspect that's available with my code is the ability to create multiple packages actually that serve different aspects. The best example I can think of offhand is in the second scenario where the Student has to submit two programs. Each 'boost' (boost being the lousy name i thought of) contains the program separately. She can create a LiveCD with both programs for a friend to play with, and a separate CD for each professor. She could even create a Portfolio CD with all of her projects when doing a senior level project, or when putting together a resume.
Cheers, Yaakov
livecd@lists.fedoraproject.org