]> Sergey Matveev's repositories - public-inbox.git/blobdiff - INSTALL
t/multi-mid: skip properly w/o DBD::SQLite
[public-inbox.git] / INSTALL
diff --git a/INSTALL b/INSTALL
index b22d848409c2b6e7c5518cd3274d5cb40b683123..bf1c821a9448602d18c21faf3f761ec67272db38 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -9,8 +9,8 @@ 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 9.x ("stretch")
 
 never depend on packages outside of the "main" component of
 the "stable" distribution, currently Debian 9.x ("stretch")
 
-Most packages are available in other GNU/Linux distributions;
-and FreeBSD support can happen.
+Most packages are available in other GNU/Linux distributions
+and FreeBSD.
 
 TODO: this still needs to be documented better,
 also see the scripts/ and sa_config/ directories in the source tree
 
 TODO: this still needs to be documented better,
 also see the scripts/ and sa_config/ directories in the source tree
@@ -23,7 +23,7 @@ functionality.  The core tools are, of course:
 
 * Git (1.8.0+, 2.6+ for writing v2 repositories)
 * Perl 5.10.1+
 
 * Git (1.8.0+, 2.6+ for writing v2 repositories)
 * Perl 5.10.1+
-* SQLite (needed for Xapian use)
+* DBD::SQLite (needed for NNTP, message threading, and v2 repositories)
 
 To accept incoming mail into a public inbox, you'll likely want:
 
 
 To accept incoming mail into a public inbox, you'll likely want:
 
@@ -32,96 +32,159 @@ To accept incoming mail into a public inbox, you'll likely want:
 
 Beyond that, there is a long list of Perl modules required, starting with:
 
 
 Beyond that, there is a long list of Perl modules required, starting with:
 
-* Date::Parse                   deb: libtimedate-perl
-                                rpm: perl-Time-ParseDate
+* Digest::SHA                      typically installed with Perl
+                                   rpm: perl-Digest-SHA
 
 
-* Email::MIME                   deb: libemail-mime-perl
-                                rpm: perl-Email-MIME
+* Email::MIME                      deb: libemail-mime-perl
+                                   pkg: p5-Email-MIME
+                                   rpm: perl-Email-MIME
 
 
-* Email::MIME::ContentType      deb: libemail-mime-contenttype-perl
-                                rpm: perl-Email-MIME-ContentType
+* URI::Escape                      deb: liburi-perl
+                                   pkg: p5-URI
+                                   rpm: perl-URI
+                                   (for HTML/Atom generation)
 
 
-* Encode::MIME::Header          deb: libencode-perl
-                                rpm: perl-Encode
+Plack and Date::Parse will be optional when v1.3.0 is released,
+but required for current and older releases:
 
 
-* Plack                         deb: libplack-perl
-                                rpm: perl-Plack, perl-Plack-Test,
-                                (for HTML/Atom generation)
+* Plack                            deb: libplack-perl
+                                   pkg: p5-Plack
+                                   rpm: perl-Plack, perl-Plack-Test,
+                                   (for HTML/Atom generation)
 
 
-* URI::Escape                   deb: liburi-perl
-                                rpm: perl-URI
-                                (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 and
+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:
 
 "rpm" is for RPM-based distributions (only known to work on Fedora).
 
 Numerous optional modules are likely to be useful as well:
 
-  - Search::Xapian             deb: libsearch-xapian-perl
-                               rpm: perl-Search-Xapian
-                               (for NNTP service or gzipped mbox over HTTP)
-
-  - IO::Compress::Gzip         deb: perl-modules (or libio-compress-perl)
-                               rpm: perl-PerlIO-gzip
-                               (for gzipped mbox over HTTP)
-
-  - DBI                        deb: libdbi-perl
-                               rpm: perl-DBI
-                               (for gzipped mbox over HTTP)
-
-  - DBD::SQLite                deb: libdbd-sqlite3-perl
-                               rpm: perl-DBD-SQLite
-                               (for NNTP service or gzipped mbox over HTTP)
-
-  - Danga::Socket              deb: libdanga-socket-perl
-                               rpm: perl-Danga-Socket
-                               (for bundled HTTP and NNTP servers)
-
-  - Net::Server                deb: libnet-server-perl
-                               rpm: perl-Net-Server
-                               (for HTTP/NNTP servers as standalone daemons,
-                                not needed as systemd services)
-
-  - Filesys::Notify::Simple    deb: libfilesys-notify-simple-perl
-                               rpm: perl-Filesys-Notify-Simple
-                               (for public-inbox-watch)
-
-  - Inline::C[7]               deb: libinline-c-perl
-                               (speeds up spawning of git(1) on Linux
-                                (see public-inbox-daemon(8))
-
-  - Plack::Middleware::ReverseProxy
-
-                               deb: libplack-middleware-reverseproxy-perl
-                               rpm: perl-Plack-Middleware-ReverseProxy
-                               (ensures redirects are correct when running
-                                behind nginx or Varnish)
-
-  - Plack::Middleware::Deflater
-
-                               deb: libplack-middleware-deflater-perl
-                               rpm: perl-Plack-Middleware-Deflater
-                               (saves bandwidth on responses)
-
-  - Socket6                    deb: libsocket6-perl
-                               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
-                               (for the rarely-used PublicInbox::Unsubscribe)
-
-On Fedora systems, you'll probably also end up wanting
-perl-Test-HTTP-Server-Simple, perl-Devel-Peek, and perl-IPC-Run to run the
-test suite.  On Debian systems, libxml-feed-perl and libipc-run-perl
-will aid in running the test suite (XML::Feed and IPC::Run respectively,
-on CPAN).
+- 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[7]                     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)
+
+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)
 --------------------------------------
 
 
 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:
 
 Once the dependencies are installed, you should be able to build and
 install the system (into /usr/local) with:
 
@@ -141,11 +204,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.
 
 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.
+See the public-inbox-overview(7) man page for the next steps once
+the installation is complete.
 
 Copyright
 ---------
 
 
 Copyright
 ---------
 
-Copyright 2013-2019 all contributors <meta@public-inbox.org>
+Copyright 2013-2020 all contributors <meta@public-inbox.org>
 License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
 License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>