Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 4 Nov 2011 15:01:07 +1030
From:      "Daniel O'Connor" <doconnor@gsoft.com.au>
To:        Alexander Yerenkow <yerenkow@gmail.com>
Cc:        Warren Block <wblock@wonkity.com>, freebsd-current@freebsd.org
Subject:   Re: VM images for FreeBSD
Message-ID:  <0DBBB027-DB51-4245-8DC5-EC5F98D66777@gsoft.com.au>
In-Reply-To: <CAPJF9wmeZadAQjFPBDq4x4fK3KgwnXyTKBmXdp9bRF2piwGJ0Q@mail.gmail.com>
References:  <CAPJF9wmf89mV2M3PO5deoWJ9i2FPHkQ1asgLzd9-bGkAd7j79g@mail.gmail.com> <alpine.BSF.2.00.1110170742420.16168@wonkity.com> <CAPJF9wmeZadAQjFPBDq4x4fK3KgwnXyTKBmXdp9bRF2piwGJ0Q@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help

On 19/10/2011, at 21:19, Alexander Yerenkow wrote:
> I can't specify to pkg_add that it should treat /zpool0/testroot as =
root, as
> I need (so record really should be @cwd /usr/local)
> Instead, pkg_add allows me to make chroot, which as you understand is =
not
> good (In specified chroot all required by pkg* binaries/libraries must
> exists, unfortunately I can't specify some empty dir and install =
there).

Hmmm, why is it empty?
When I have made something analogous I did an installkernel/world into a =
directory and then chroot'd in there and built ports. There is no reason =
you couldn't pkg_add from a local mirror (or nullfs mount a local =
package mirror directory into the chroot).

> Why is that? Because there is +INSTALL script in packages, in which
> package/port system allows execute any code/script written by porter.

This is a feature ;)

> To summarize my efforts:
> I checked 21195 packages;
> I found 880 install scripts;
>=20
> 3 scripts contains plain "exit 0"
> 8 install scripts contains some perl code;
> 17 scripts contains some additional "install" commands;
> 70 scripts contains some chgroup/chown actions (which probably could =
be done
> by specifying mtree file?...)
> 75 contains uncategorized actions (print of license, some interactive
> questions, ghostscript actions, tex, fonts etc.)
> 161 scripts contains some file commands, like (ld / cp / mv, creating
> backups, creating configs if they aren't exists etc. )
> 166 scripts contains useradd/groupadd commands (many similar =
constructions,
> not too hard to move this to .mk, in pkgng group/users can be =
specified in
> yaml config)
> 380 contains pear component registration (md5 -q * | uniq  - produces
> exactly one result, so these all scripts are really one, could be =
moved to
> some pear.mk)

Interesting stats, thanks for taking the time to do the analysis.

I think one of the reasons pkg_add is so slow is that it copies =
everything to a staging directory, then copies the files.. This is very =
tedious (obviously). I wonder if it could be modified to have a "stream" =
mode where it unpacks directly into the target FS.

Alternatively you could cut it in 2 conceptually and modify pkg_add so =
it can run it a mode where it just unpacks to a staging area, and =
another mode where it copies from the staging area to the destination.

--
Daniel O'Connor software and network engineer
for Genesis Software - http://www.gsoft.com.au
"The nice thing about standards is that there
are so many of them to choose from."
  -- Andrew Tanenbaum
GPG Fingerprint - 5596 B766 97C0 0E94 4347 295E E593 DC20 7B3F CE8C









Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?0DBBB027-DB51-4245-8DC5-EC5F98D66777>