I am trying to use a chroot jail to compile ports such that I can install them in other jails. I have multiple jails and previously I had compiled programs in each jail, which meant that a huge amount of compile time had to be duplicated for each jail. I am trying to discover a better method, but it seems that everything I have tried has be very unreliable (such that I can only do it for one or two programs before failing).
I am currently trying to do something like this:
[CMD=" "]chroot /usr/shew/chroots/compile make -C /usr/ports/"$category"/"$program" package-recursive clean[/CMD]
Previously I had tried the following:
Compiling without using [cmd=]make clean[/cmd] and then mounting the ports folders in other jails (via nullfs) and using [cmd=]make install[/cmd]
Both package and install the ports when installing to and individual jail, then using a combination of pkg_add and make to install new ports in other jails. Installing some ports common to all of the jails, and then copying the entire jail directory or using unionfs to use that jail as a template for others.
Nothing seems to work as well as duplicating the work for all the jails. With what I am currently trying, for example, I get an error with Python:
- Code: Select all
tar: lib/python2.6/lib-dynload/_multiprocessing.so: Cannot stat: No such file or directory
tar: Error exit delayed from previous errors.
pkg_create: make_dist: tar command failed with code 256
Now, the packing lists seem to be fairly static, even though one might change the package options (though, I have not in this case), so I'm not sure this is going to work once I start trying to customize my options.
Is there some recommended general method for installing ports across jails? I sure would appreciate a few tips.