Re: Cross-architecture package installs
--tjCHc7DPkfUGtrlw
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
On Tue, Feb 05, 2013 at 10:34:18PM -0800, Tim Kientzle wrote:
> I'm working on tools to build ARM system images.
> Usually, these tools run on x86, which creates a problem
> for packages.
First Yes cross-installation of packages is something we highly want in pkg=
ng
and is plan since the beginning, that is one of the reason pkg -c is readig=
the
ABI from the DESTDIR, to make sure we only install things that are abi
compatible..
>=20
> I would like to install packages onto the image as it's built.
> So I've been experimenting with variations of
> pkg -c <DESTDIR> add <package files>
> I'm running into a few problems but I think they can all be
> solved. Only the first is critical; the rest are relatively
> minor annoyances.
>=20
> 1) Pre-install/post-install scripts.
>=20
> These obviously don't work since the DESTDIR
> is for a different architecture.
>=20
> At least for post-install, it should be possible to
> record which packages still need their post-install
> scripts run and arrange to run them after first
> boot. I'm picturing an rc.d script that invokes pkg
> with appropriate options to find all packages
> that still need their post-install run and runs them.
>=20
> This won't work for pre-install, but those are rarer
> and we can hopefully work around them on a
> case-by-case basis.
This is imho the main problem, and one of the long term goal of pkgng is to=
remove
as much as possible any pre-instal/post-install scripts. The second problem=
you
will get into is the API that call system()/exec()/etc for example all the =
call
the pw_mkdb from libutil :(
We are open for all suggestions here
>=20
> 2) The chroot happens before opening the package files.
>=20
> It's possible to work around this by copying all of the
> package files into DESTDIR first, but that's both
> time-consuming and rather awkward. (And quite
> tricky if you're installing directly onto a mounted
> image that has very little free space.)
>=20
> It should be feasible to open the package files first
> and then chroot. Then the actual installation still
> happens entirely inside DESTDIR.
In fact pkg add is only mean to be used in special case if in that particul=
ar
case you would have used pkg -c DESTDIR install <packagename> using a repos=
itory
you would have created on your host using pkg repo to create the metadata t=
hing
necessary. problem your packagesite should served via a http/ftp not file e=
xcept
if the files are also locate inside the chroot.
>=20
> 3) Bogus "failed to install" messages.
>=20
> As far as I can tell, if "bar" depends on "foo", then
> "pkg add bar foo" will do this:
>=20
> Installing bar =E2=80=A6
> Installing foo =E2=80=A6
> done
> done
> Installing foo =E2=80=A6 foo already installed.
Yeah as said above pkg add as to be forgotten as much as possible, it has b=
een
created mostly for the ports tree and the ports build script so that they d=
on't
need too much changes other that s/pkg_add/pkg add/g
>=20
> Failed to install the following package: foo.
>=20
> This is surprising since foo did in fact get installed.
>=20
> In my case, I want to say "pkg add *" and just have
> it DTRT. It mostly does get the ordering right (I'm impressed!)
> but the error message is a bit odd.
Just do "pkg install -x ." or "pkg install -g *" ordering would be ok witho=
ut
odd message.
pkg add does not ordering, I'm surprised you got it right :)
regards,
Bapt
PS: I CCed freebsd-pkg@, which is a new mailing list dedicated to this kind=
of
discussion
--tjCHc7DPkfUGtrlw
Content-Type: application/pgp-signature
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (FreeBSD)
iEYEARECAAYFAlER/lIACgkQ8kTtMUmk6EwWwwCeLQA2NF/FMU/MGDxCmBPZlhbf
N/0AoLZ04bVsLLzY3qG4pGdmRYpLO8RC
=tOn2
-----END PGP SIGNATURE-----
--tjCHc7DPkfUGtrlw--
討論串 (同標題文章)
完整討論串 (本文為第 5 之 7 篇):