Gentoo Archives: gentoo-dev

From: Bernd Waibel <waebbl@×××××.com>
To: gentoo-dev@l.g.o
Cc: Mykyta Holubakha <hilobakho@×××××.com>
Subject: Re: [gentoo-dev] [RFC] [PATCH] appimage.eclass: new eclass
Date: Sun, 07 Oct 2018 13:25:09
Message-Id: CAEdPeHFaw9=vQETeC+6+YJFDyFfF4WJq-mp233YJ5HONZv2Nyw@mail.gmail.com
In Reply to: [gentoo-dev] [RFC] [PATCH] appimage.eclass: new eclass by Mykyta Holubakha
1 Mykyta Holubakha <hilobakho@×××××.com> schrieb am Sa., 6. Okt. 2018 um
2 13:18 Uhr:
3
4 > Signed-off-by: Mykyta Holubakha <hilobakho@×××××.com>
5 >
6 > I'm proposing to add a new eclass: appimage.eclass, to facilitate
7 > extraction off AppImage bundles. The rationale is that some upstreams
8 > have migrated to distributing their proprietary software exclusively as
9 > AppImage bundles. (for instance dev-util/staruml-bin).
10 >
11 > An example ebuild can be seen at https://git.io/fx3Mg
12 >
13 >
14 I was also thinking of something, too. This direction of development
15 happens for a couple of years already, with more and more vendors /
16 upstream jumping on it. It was also highly recommended by Linus Torvalds as
17 a way of distributing packages easily along different linux flavors. I
18 don't think we should easily deny the direction where this is going.
19
20 Most appimages are distributed through central well-known servers. The
21 files have a sha1 BuildID attached to them (can be seen via file command),
22 which can possibly be used to verify them, so decreasing the possible
23 vulnerability to such packages somewhat. There might also be additional
24 ways to verify the integrity of them through the appimage API. They are
25 statically linked packages with no external dependencies, and contain a
26 squashfs filesystem in it.
27
28 From a users point of view, I think it'd be a good idea, to give users the
29 possibility of installing appimages with the package manager, so they can
30 be handled accordingly, instead of just let them download the files and
31 move them into a separate folder in ${HOME} for execution. This would be
32 especially useful for propietary bin-packages, as well as for some big
33 packages, which are actually hard to maintain for proxy-maintainers, and
34 therefore get removed from the tree (freecad comes to my mind as an
35 example).
36
37 2. Are we OK with executing AppImage bundles downloaded from the
38 > Internet (an alternative would be to implement a proper extractor
39 > program, which would unpack the images without executing them, and add
40 > it to DEPENDs).
41 >
42
43 It think, this has mostly the same attack vectors which apply for
44 bin-packages. So there's not much new from my point of view.
45
46
47 > +# @FUNCTION: appimage_src_unpack
48 > +# @DESCRIPTION:
49 > +# Unpack all the AppImage bundles from ${A} (with .appimage extension).
50 > +# Other files are passed to regular unpack.
51 >
52
53 I'm not sure, if it makes sense to unpack them. Most of them are not built
54 on gentoo systems, so the extracted binaries and libraries might not easily
55 run without having the ebuild maintainer check every single one of them for
56 run-time dependencies.
57
58 For example, the freecad appimage contains a bin/mkdir program linked
59 against libselinux.so.1 which is not available on non-selinux profiles by
60 default, or its usr/lib/freecad/lib/DraftUtils.so, a freecad internal
61 library, links against libboost_system.so.1.55.0 while we have
62 libboost_system.so.1.65.0.
63
64 I would propose to keep them packed and install them in /opt/AppImages or
65 something like that, thus providing only a src_install function with the
66 eclass. Ebuild maintainers could then just add a .desktop file or extract
67 one from the image if it's present and add it to the files/ directory for
68 desktop integration.