Configuring cyrus-imapd for compilation
Patrick Goetz
pgoetz at mail.utexas.edu
Wed Mar 13 13:52:00 EDT 2019
On 3/13/19 11:49 AM, Jason Tibbitts wrote:
> In general I agree with you, but for a distro the issue
> generally comes down to dependencies.
>
> In Fedora, for example, we split the virus scanning portion out to a
> separate package, because otherwise cyrus-imapd ends up with a
> dependency on clamav. We want to avoid that because not everyone
> wants to maintain a clamav installation so we put the cyr_virusscan
> binary and its manpage in a separate subpackage.
Unfortunately that's not a model that works for the Arch Linux AUR.
Basically almost anyone can put out an AUR package (this is one of the
reasons nearly everything in the linux ecosystem is readily available on
Arch), but such packages are required to be text files only with
absolutely no exceptions allowed. Most of the heavy lifting is done by a
PKGBUILD file, which is essentially a fancy shell script which relies on
the makepkg utility for interpretation. The PKGBUILD orchestrates
downloading, configuring, and compiling software directly from upstream
sources into a binary pacman package (think of it as Gentoo, but just
for extra goodies and not the base system). In cases where only
binaries are available, the PKGBUILD can download binaries from the
official upstream source and convert them to an Arch package. Users are
encouraged to examine these PKGBUILD files in order to make sure no one
is attempting to install malware on their systems, but of course most
don't, and there have been a couple of cases of AUR packages which
attempted to sneak malware into the AUR. It's still a pretty good
bazaar with no actual examples of serious malware deployment to date.
Enough people do look at the PKGBUILD files, and most convenience
utilities (e.g. yay or pacaur) try and make you look at the PKGBUILD
even though they're doing the work for you.
Generally this system works amazingly well, but this is an example where
it breaks down. And yes, it's precisely the dependencies which are an
issue. I can list the packages found here:
https://www.cyrusimap.org/imap/developer/compiling.html
as optional dependencies, but down the road someone will attempt to use
a feature and likely won't run `pacman -Qi` to remind themselves of the
necessity of these optional dependencies for that feature. The
alternative, requiring the installation of all possible dependencies,
seems unreasonable as well.
The saving grace is perhaps that this is a package aimed at systems
administrators rather than ordinary users, and as such I might be able
to get away with setting up an Arch Wiki page explaining what all the
optional dependencies are.
More information about the Info-cyrus
mailing list