On Thu, Nov 29, 2012 at 09:18:23PM +0100, Olaf Hering wrote:
On Mon, Oct 08, Richard W.M. Jones wrote:
> On Mon, Oct 08, 2012 at 08:50:47PM +0200, Olaf Hering wrote:
> > On Mon, Oct 08, Richard W.M. Jones wrote:
> >
> > > But out of interest, how are you creating this appliance? I thought
> > > we'd ripped out support for old-style appliances from the rest of the
> > > toolchain ...
> >
> > I use mkinitrd to pull in all tools and run guestfsd instead of
> > /sysroot/sbin/init. This allows me to build the package automated as
> > unprivileged user in the buildsystem. Creating a loop file requires
> > root, which is cumbersome in the openSuSE buildservice.
>
> BTW, febootstrap (which is what we use) runs unprivileged and should
> be able to process SuSE rpms. However it does require yum, not
> zypper, but that's probably easy to fix if zypper has a way to take a
> list of package names and resolve all the dependencies without needing
> root and without needing to install any packages.
I just looked at this.
Does febootstrap do some sort of unrpm? Does it call %pre/%post install
scripts?
Not sure what unrpm is, but it does unpack the RPM (using rpm2cpio).
It does *not* call %pre or %post scripts.
zypper alone can not be used because it calls rpm, which does
chroot.
It can however download the required rpms and place them into a
directory:
zypper \
--verbose \
--verbose \
--gpg-auto-import-keys \
--root /dev/shm/${LOGNAME} \
--reposd-dir /etc/zypp/repos.d \
--pkg-cache-dir /dev/shm/${LOGNAME}--pkg-cache-dir \
--non-interactive \
install \
--auto-agree-with-licenses \
--no-recommends \
--download-only \
kernel-default
So what do you suggest to do on a system with zypper/libzypp?
This sounds fine. This is basically the same as what this horrible
bit of Python code does:
https://github.com/libguestfs/febootstrap/blob/master/src/febootstrap_yum...
followed by the call to yumdownloader.
As long as the above zypper command doesn't need root, it should
all just work fine.
My suggestion is to take the current febootstrap_yum_rpm.ml file,
rename it and modify it. The 'yum_rpm_resolve_dependencies_and_download'
function (renamed) should end up being considerably shorter.
BTW we found it was useful to be able to pass a yum configuration file
through to the yum-rpm package handler. That's the purpose of the
yum_config global variable. It is set in febootstrap_cmdline.ml.
Rich.
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
Read my programming blog:
http://rwmj.wordpress.com
Fedora now supports 80 OCaml packages (the OPEN alternative to F#)
http://cocan.org/getting_started_with_ocaml_on_red_hat_and_fedora