X-Git-Url: http://www.git.stargrave.org/?p=public-inbox.git;a=blobdiff_plain;f=INSTALL;h=0974028d0f73014bd8eb2e7c345441c0df3d6e28;hp=0e9ab6d678a80a480565ee44f97db93cb903fbe2;hb=9b0c238f887475d920a8589b492ec15c63770152;hpb=fa243b4ed7c56b9e4ac5ef6745caf4d35e9b5b28 diff --git a/INSTALL b/INSTALL index 0e9ab6d6..0974028d 100644 --- a/INSTALL +++ b/INSTALL @@ -1,49 +1,214 @@ public-inbox (server-side) installation --------------------------------------- + This is for folks who want to setup their own public-inbox instance. -Clients should see http://ssoma.public-inbox.org/INSTALL.html instead. +Clients should use normal git-clone/git-fetch, IMAP or NNTP clients +if they want to import mail into their personal inboxes. + +As of 2021, public-inbox is packaged by several OS distributions, +listed in alphabetical order: Debian, GNU Guix, NixOS, and Void Linux. + +public-inbox is developed on Debian GNU/Linux systems and will +never depend on packages outside of the "main" component of +the "stable" distribution, currently Debian 10.x ("buster"), +but older versions of Debian remain supported. + +Most packages are available in other GNU/Linux distributions +and FreeBSD. CentOS 7.x users will likely want newer git and +Xapian packages for better performance and v2 inbox support: +https://public-inbox.org/meta/20210421151308.yz5hzkgm75klunpe@nitro.local/ TODO: this still needs to be documented better, also see the scripts/ and sa_config/ directories in the source tree -It should also be possible to use public-inbox with only IMAP -(or even POP(!)) access to a mailbox. +Requirements +------------ + +public-inbox requires a number of other packages to access its full +functionality. The core tools are, of course: + +* Git (1.8.0+, 2.6+ for writing v2 inboxes) +* Perl 5.10.1+ +* DBD::SQLite (needed for IMAP, NNTP, message threading, and v2 inboxes) + +To accept incoming mail into a public inbox, you'll likely want: + +* MTA - postfix is recommended (for public-inbox-mda) +* SpamAssassin (spamc/spamd) (for public-inbox-watch/public-inbox-mda) + +Beyond that, there is one non-standard Perl package required: + +* URI deb: liburi-perl + pkg: p5-URI + rpm: perl-URI + (for HTML/Atom generation) + +Plack and Date::Parse are optional as of public-inbox v1.3.0, +but required for older releases: + +* Plack deb: libplack-perl + pkg: p5-Plack + rpm: perl-Plack, perl-Plack-Test, + (for HTML/Atom generation) + +- Date::Parse deb: libtimedate-perl + pkg: p5-TimeDate + rpm: perl-TimeDate + (for broken, mostly historical emails) + +Where "deb" indicates package names for Debian-derived distributions, +"pkg" is for the FreeBSD package (maybe other common BSDs, too), and +"rpm" is for RPM-based distributions (only known to work on Fedora). + +Numerous optional modules are likely to be useful as well: + +- DBD::SQLite deb: libdbd-sqlite3-perl + pkg: p5-DBD-SQLite + rpm: perl-DBD-SQLite + (for v2, IMAP, NNTP, or gzipped mboxes) + +- Search::Xapian or Xapian(.pm) deb: libsearch-xapian-perl + pkg: p5-Search-Xapian OR p5-Xapian + rpm: perl-Search-Xapian + (HTTP and IMAP search) + +- Inline::C deb: libinline-c-perl + pkg: pkg-Inline-C + rpm: perl-Inline (or perl-Inline-C) + (speeds up process spawning on Linux, + see public-inbox-daemon(8)) + +- Email::Address::XS deb: libemail-address-xs-perl + pkg: pkg-Email-Address-XS + (correct parsing of tricky email + addresses, phrases and comments, + required for IMAP) + +- Parse::RecDescent deb: libparse-recdescent-perl + pkg: p5-Parse-RecDescent + rpm: perl-ParseRecDescent + (optional, for public-inbox-imapd(1)) + +- Mail::IMAPClient deb: libmail-imapclient-perl + pkg: p5-Mail-IMAPClient + rpm: perl-Mail-IMAPClient + (optional for lei and public-inbox-watch) + +- BSD::Resource deb: libbsd-resource-perl + pkg: p5-BSD-Resource + rpm: perl-BSD-Resource + (optional, for PSGI limiters + see public-inbox-config(5)) + +- Plack::Middleware::ReverseProxy deb: libplack-middleware-reverseproxy-perl + pkg: p5-Plack-Middleware-ReverseProxy + rpm: perl-Plack-Middleware-ReverseProxy + (ensures redirects are correct when running + behind nginx or Varnish) + +* highlight deb: libhighlight-perl + (for syntax highlighting with coderepo) + +* xapian-compact (tool) deb: xapian-tools + pkg: xapian-core + rpm: xapian-core + (optional, for public-inbox-compact(1)) + +* curl (tool) deb, pkg, rpm: curl + (for HTTP(S) externals with curl) + +- Linux::Inotify2 deb: liblinux-inotify2-perl + rpm: perl-Linux-Inotify2 + (for lei, public-inbox-watch and -imapd + on Linux) + +- IO::KQueue pkg: p5-IO-KQueue + (for lei, public-inbox-watch and -imapd + on *BSDs) + +- Net::Server deb: libnet-server-perl + pkg: pkg-Net-Server + rpm: perl-Net-Server + (for HTTP/IMAP/NNTP background daemons, + not needed as systemd services or + foreground servers) + +The following module is typically pulled in by dependencies listed +above, so there is no need to explicitly install them: + +- DBI deb: libdbi-perl + pkg: p5-DBI + rpm: perl-DBI + (pulled in by DBD::SQLite) + +Uncommonly needed modules (see HACKING for development-only modules): + +- Socket6 deb: libsocket6-perl + pkg: p5-Socket6 + rpm: perl-Socket6 + (pulled in by SpamAssassin and Net::Server, + only necessary if using IPv6 with + Plack::Middleware::AccessLog or similar + on Perl <= 5.12) + +- Crypt::CBC deb: libcrypt-cbc-perl + pkg: p5-Crypt-CBC + (for PublicInbox::Unsubscribe (rarely used)) standard MakeMaker installation (Perl) -------------------------------------- +To use MakeMaker, you need to ensure ExtUtils::MakeMaker is available. +This is typically installed with Perl, but RPM-based systems will likely +need to install the `perl-ExtUtils-MakeMaker' package. + +Once the dependencies are installed, you should be able to build and +install the system (into /usr/local) with: + + perl Makefile.PL + make + make test # see HACKING for faster tests for hackers + make install # root permissions may be needed + +symlink-install (public-inbox.git and 1.7.0+) +--------------------------------------------- + +For users who lack permissions and/or wish to minimize their +installation footprint, the "symlink-install" target is available in +public-inbox.git. The following installs symlinks to $HOME/bin +pointing to the source tree: + perl Makefile.PL - make - make test - make install # root permissions may be needed - -Requirements (server MDA) -------------------------- -* git -* ssoma - http://ssoma.public-inbox.org/INSTALL.html -* SpamAssassin (spamc/spamd) -* MTA - postfix is recommended -* lynx (for converting HTML messages to text) -* Perl and several modules: (Debian package name) - - CGI[1] perl-modules[2] - - Date::Parse libtimedate-perl - - Email::Address libemail-address-perl - - Email::Filter libemail-filter-perl - - Email::MIME libemail-mime-perl - - Email::MIME::ContentType libemail-mime-contenttype-perl - - Encode::MIME::Header perl - - File::Path::Expand libfile-path-expand-perl - - IPC::Run libipc-run-perl - - Mail::Thread (2.5+)[1] libmail-thread-perl - - URI::Escape[1] liburi-perl - - XML::Atom::SimpleFeed[1] libxml-atom-simplefeed-perl - -[1] - Only required for serving/generating Atom and HTML pages. -[2] - Keep in mind this will be split into a separate Debian package - when CGI.pm is dropped from the Perl standard library. - Plack/PSGI and mod_perl2 are both supported. + make symlink-install prefix=$HOME + +Other installation notes +------------------------ + +Debian 8.x (jessie) users, use Debian 8.5 or later if using Xapian: + https://bugs.debian.org/808610 + +public-inbox-* commands will never store unregeneratable data in +Xapian nor any other search database we might use; Xapian +corruption will not destroy critical data. Note: `lei' DOES store +unregeneratable data in Xapian and SQLite. + +See the public-inbox-overview(7) man page for the next steps once +the installation is complete. + +The following required packages are part of the Perl standard +library. Debian-based distros put them in "libperl5.$MINOR" or +"perl-modules-5.$MINOR"; and FreeBSD puts them in "perl5". +RPM-based distros split them out into separate packages: + +* Digest::SHA rpm: perl-Digest-SHA +* Data::Dumper rpm: perl-Data-Dumper +* Encode rpm: perl-Encode +* IO::Compress rpm: perl-IO-Compress +* Storable rpm: perl-Storable +* Text::ParseWords rpm: perl-Text-Parsewords Copyright --------- -Copyright 2013, Eric Wong and all contributors. -License: AGPLv3 or later + +Copyright 2013-2021 all contributors +License: AGPL-3.0+