Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 10 Apr 2010 00:34:53 -0700
From:      Garrett Cooper <yanefbsd@gmail.com>
To:        Tim Kientzle <kientzle@freebsd.org>
Cc:        arch@freebsd.org, freebsd-ports <freebsd-ports@freebsd.org>, portmgr@freebsd.org
Subject:   Re: [RFC] Remove pkg_add -C (chroot functionality)
Message-ID:  <r2u7d6fde3d1004100034me51d782pec1d4ef163e3262a@mail.gmail.com>
In-Reply-To: <v2g7d6fde3d1004072049mf8dfd7fcz800dca96f7d27123@mail.gmail.com>
References:  <t2m7d6fde3d1004070216m94cfea44s86e70cf8ac9895d5@mail.gmail.com> <4BBD3DCB.4030902@freebsd.org> <v2g7d6fde3d1004072049mf8dfd7fcz800dca96f7d27123@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Apr 7, 2010 at 8:49 PM, Garrett Cooper <yanefbsd@gmail.com> wrote:
> On Wed, Apr 7, 2010 at 7:22 PM, Tim Kientzle <kientzle@freebsd.org> wrote=
:
>> Garrett Cooper wrote:
>>>
>>> =A0 =A0There's an outstanding bug to fix chroot(2)'ing functionality wi=
th
>>> pkg_add(1) [1]. Anyone that has tried this functionality knows that
>>> it's currently crippled
>>
>> If it's currently broken, it's better to
>> simply remove it.
>>
>> I'm not sure I understand why anyone wants
>> pkg_add to call chroot(2) at the top, though.
>> As you pointed out, "chroot pkg_add" exists
>> already.
>>
>> The feature we need should:
>> =A0* update $ROOTDIR/var/db/pkg
>> =A0* Add $ROOTDIR as a prefix to all installed file locations
>> This would allow pkg_add when running outside of
>> a chroot to install packages into a chrooted
>> system, which is what you can't easily do with
>> "chroot pkg_add".
>
> As discussed in #bsdports with flz, it's much more complicated because
> in the future we'll most likely have mainstream support for
> cross-building where this isn't possible, i.e. build arm on i386 --
> the point is that there are some steps that must be run on the target
> system or chroot, and this quite frankly isn't possible without being
> able to install directly on the target. Regardless, cross-building
> right now requires that one define the proper environment, and again
> that can't be delivered with pkg_add without introducing unneeded
> complexity. Point being, if someone wants to chroot, and they
> understand the complete exercise, or if we have documentation provided
> which demonstrates how to do so, people will use it, and potentially
> grow upon it in a positive way. Right now this is just a vestige of
> brokenness in pkg_install that should go IMO.
>
>> Of course, this isn't particularly easy to do when
>> forking tar(1), so the libarchive integration
>> might be a necessary prerequisite. =A0(Command-line
>> tar doesn't support re-rooting absolute paths.
>> There is a --chroot option to tar, but it's
>> currently broken in some rather complex ways.
>> As I'm composing this message, I'm starting to
>> wonder if it also should not use chroot(2).
>> Hmmm....)
>>
>> The hard part is @exec/@unexec. =A0On the one
>> hand, you don't necessarily want to require
>> the install dependencies of a package to be
>> installed in the chroot, which argues against
>> running those under chroot(2). =A0On the other hand,
>> a lot of the commands used within @exec/@unexec
>> manipulate common system databases (e.g., ldconfig),
>> which argues that those commands should be run
>> under chroot(2).
>
> Bingo -- that is the cruxt of the problem with doing chroot(2) with
> pkg_add. From a support perspective it's a nightmare because when
> something does go south, you're up a crik without a paddle trying to
> figure out what the heck is going on... it's better for us that
> someone is running with a stable, pre-defined system than try and
> force them to use a home grown / unknown method built around a shaky
> base.

    It's been two days without a lot of commentary. Expanding to a
larger audience...
Thanks,
-Garrett



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?r2u7d6fde3d1004100034me51d782pec1d4ef163e3262a>