packages and base jails

Miroslav Lachman 000.fbsd at quip.cz
Mon Nov 26 22:18:21 UTC 2018


Ernie Luzar wrote on 2018/11/26 22:12:
> Michael W. Lucas wrote:
>> Hi,
>>
>> I'm writing a book on jails and am looking for BCP. I'd like to
>> present either "This is the approved solution and should work" or
>> "these are the gotchas with any of these, choose your pain."
>>
>> Folks want base jails to include packages, but also want to install
>> additional packages--which won't happen if /usr/local is mounted
>> read-only in the base jail. Trawling around the Net I see a couple
>> options. Both involve the primary jail using a different package
>> repo. The overlay jail uses the standard package repo.
>>
>> 1) primary jail uses a repo with PREFIX=/usr/pkg or /opt. Works in my
>> simple use cases once I set ldconfig directories in rc.conf, but I'm
>> told programs like pkgconfig can go sideways.
>>
>> 2) base jail repo uses with PREFIX=/. Utterly violates separation of
>> base and pkg, but everything should find everything out of the
>> box. Again, seems to work in my wimpy use cases.
>>
>> Is there an option that should work? Or is a matter of choosing
>> between horrors?
>>
>> Thanks,
>> ==ml
>>
>>
>>
> I use a common base jail mounted read only and the jail /usr/local & 
> /etc mounted r/w. From the jail console bootstrap pkg and every thing 
> works just like on the host. Now the ports tree is totally different, I 
> create the ports tree normally on the host. And then if I need the ports 
> tree in a jail I issue the mv command to move from host to jail and when 
> its not needed any more I mv it back to the host. Only one ports tree 
> for host and all jails. Haven't had the need to do that since new pkg 
> works so good now. Saw this is how qjail does it so used that concept in 
> my own manual jail system.

You don't need to move ports tree in and out, you can use nullfs mount 
of a directory, probably read only in jail with some tweaks in make.conf 
in jail:

WRKDIRPREFIX=   /var/ports
DISTDIR=        /var/ports/distfiles
PACKAGES=       /var/ports/packages
INDEXDIR=       /var/ports

Or you can share distfiles between host and jail.

Miroslav Lachman


More information about the freebsd-ports mailing list