X-Git-Url: http://www.git.stargrave.org/?p=public-inbox.git;a=blobdiff_plain;f=INSTALL;h=2dd7dcff7013303091575e3c7e818a1fd50a6c8a;hp=3a2f840caf9e55dc9aeb2161894801c3782f46c0;hb=46742d95647c7a80cb2f60d5c134717dd91e22e2;hpb=172416d1cd465da4242cc744a3f309d307f1311d diff --git a/INSTALL b/INSTALL index 3a2f840c..2dd7dcff 100644 --- a/INSTALL +++ b/INSTALL @@ -2,61 +2,202 @@ public-inbox (server-side) installation --------------------------------------- This is for folks who want to setup their own public-inbox instance. -Clients should see https://ssoma.public-inbox.org/INSTALL.html instead +Clients should use normal git-clone/git-fetch, or NNTP clients if they want to import mail into their personal inboxes. -TODO: this still needs to be documented better, -also see the scripts/ and sa_config/ directories in the source tree +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. -It should also be possible to use public-inbox with only IMAP -(or even POP(!)) access to a mailbox. - -standard MakeMaker installation (Perl) --------------------------------------- +Most packages are available in other GNU/Linux distributions +and FreeBSD. - perl Makefile.PL - make - make test - make install # root permissions may be needed +TODO: this still needs to be documented better, +also see the scripts/ and sa_config/ directories in the source tree Requirements ------------ -* git -* Perl and several modules: (Debian package name) - - Date::Parse libtimedate-perl - - Email::MIME libemail-mime-perl - - Email::MIME::ContentType libemail-mime-contenttype-perl - - Encode::MIME::Header perl +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 NNTP, message threading, and v2 inboxes) -Optional components: +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) -Optional Perl modules: - - - Plack[1] libplack-perl - - URI::Escape[1] liburi-perl - - Search::Xapian[2][3] libsearch-xapian-perl - - IO::Compress::Gzip[3] perl-modules (or libio-compress-perl) - - DBI[3] libdbi-perl - - DBD::SQLite[2][3] libdbd-sqlite3-perl - - Danga::Socket[4] libdanga-socket-perl - - Net::Server[5] libnet-server-perl - - Filesys::Notify::Simple[6] libfilesys-notify-simple-perl - -[1] - Optional, needed for serving/generating Atom and HTML pages -[2] - Optional, only required for NNTP server -[3] - Optional, needed for gzipped mbox support over HTTP -[4] - Optional, needed for bundled HTTP and NNTP servers -[5] - Optional, needed for standalone daemonization of HTTP+NNTP servers -[6] - Optional, needed for public-inbox-watch Maildir watcher +Beyond that, there is a long list of Perl modules required, starting with: + +* Digest::SHA typically installed with Perl + rpm: perl-Digest-SHA + +* Email::MIME deb: libemail-mime-perl + pkg: p5-Email-MIME + rpm: perl-Email-MIME + +* URI::Escape 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, NNTP, or gzipped mboxes) + +- Search::Xapian deb: libsearch-xapian-perl + pkg: p5-Search-Xapian + rpm: perl-Search-Xapian + (HTTP search) + +- Net::Server deb: libnet-server-perl + pkg: pkg-Net-Server + rpm: perl-Net-Server + (for HTTP/NNTP background daemons, + not needed as systemd services or + foreground servers) + +- Inline::C deb: libinline-c-perl + pkg: pkg-Inline-C + (speeds up process spawning on Linux, + see public-inbox-daemon(8)) + +- 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) + +- Plack::Middleware::Deflater deb: libplack-middleware-deflater-perl + pkg: p5 -Plack-Middleware-Deflater + rpm: perl-Plack-Middleware-Deflater + (saves bandwidth on responses) + +* 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)) + +The following modules are typically pulled in by dependencies listed +above, so there is no need to explicitly install them: + +- Email::MIME::ContentType deb: libemail-mime-contenttype-perl + pkg: p5-Email-MIME-ContentType + rpm: perl-Email-MIME-ContentType + (pulled in by Email::MIME) + +- Email::Simple deb: libemail-simple-perl + pkg: p5-Email-Simple + rpm: perl-Email-Simple + (pulled in by Email::MIME) + +* Encode deb: libperl5.$MINOR (or libencode-perl) + pkg: perl5 + rpm: perl-Encode + (likely installed with Perl) + +- DBI deb: libdbi-perl + pkg: p5-DBI + rpm: perl-DBI + (pulled in by DBD::SQLite) + +* Devel::Peek deb: libperl5.$MINOR (e.g. libperl5.24) + pkg: perl5 + rpm: perl-Devel-Peek + (optional for stale FD cleanup in daemons, + typically installed alongside Perl5) + +- Filesys::Notify::Simple deb: libfilesys-notify-simple-perl + pkg: p5-Filesys-Notify-Simple + rpm: perl-Filesys-Notify-Simple + (for public-inbox-watch, pulled in by Plack) + +- Linux::Inotify2 deb: liblinux-inotify2-perl + rpm: perl-Linux-Inotify2 + (for public-inbox-watch on Linux) + +- Filesys::Notify::KQueue pkg: p5-Filesys-Notify-KQueue + (for public-inbox-watch on FreeBSD) + +- IO::Compress (::Gzip) deb: perl-modules (or libio-compress-perl) + pkg: perl5 + rpm: perl-IO-Compress + (for gzipped mbox over HTTP, v2 format) + +Uncommonly needed 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)) + +Optional packages testing and development: + +- Plack::Test deb: libplack-test-perl + pkg: p5-Plack + rpm: perl-Plack-Test + +- Test::Simple deb: perl-modules-5.$MINOR + pkg: perl5 + rpm: perl-Test-Simple + +- XML::TreePP deb: libxml-treepp-perl + pkg: p5-XML-TreePP + rpm: perl-XML-TreePP + +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 When installing Search::Xapian, make sure the underlying Xapian installation is not affected by an index corruption bug: - https://bugs.debian.org/808610 + https://bugs.debian.org/808610 For Debian 8.x (jessie), this means using Debian 8.5 or later. @@ -64,8 +205,11 @@ public-inbox will never store unregeneratable data in Xapian or any other search database we might use; Xapian corruption will not destroy critical data. +See the public-inbox-overview(7) man page for the next steps once +the installation is complete. + Copyright --------- -Copyright 2013-2016 all contributors +Copyright 2013-2020 all contributors License: AGPL-3.0+