]> Sergey Matveev's repositories - public-inbox.git/blobdiff - INSTALL
doc: README + INSTALL: update with -imapd info
[public-inbox.git] / INSTALL
diff --git a/INSTALL b/INSTALL
index f834b49f01fe5107415a813fdcf83e62ea7c77af..de871b1afde1bafcd9f038263d7cf2c837ad80d2 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -2,12 +2,13 @@ public-inbox (server-side) installation
 ---------------------------------------
 
 This is for folks who want to setup their own public-inbox instance.
-Clients should use normal git-clone/git-fetch, or NNTP clients
+Clients should use normal git-clone/git-fetch, IMAP or NNTP clients
 if they want to import mail into their personal inboxes.
 
 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")
+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.
@@ -21,9 +22,9 @@ 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 repositories)
+* Git (1.8.0+, 2.6+ for writing v2 inboxes)
 * Perl 5.10.1+
-* DBD::SQLite (needed for NNTP, message threading, and v2 repositories)
+* DBD::SQLite (needed for IMAP, NNTP, message threading, and v2 inboxes)
 
 To accept incoming mail into a public inbox, you'll likely want:
 
@@ -35,52 +36,70 @@ 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)
 
-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).
+Email::MIME will be optional as of public-inbox v1.5.0,
+it may still be used in maintainer comparison tests:
 
-Numerous optional modules are likely to be useful as well:
+* Email::MIME                      deb: libemail-mime-perl
+                                   pkg: p5-Email-MIME
+                                   rpm: perl-Email-MIME
+
+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)
+                                   (for v2, IMAP, NNTP, or gzipped mboxes)
 
 - Search::Xapian                   deb: libsearch-xapian-perl
                                    pkg: p5-Search-Xapian
                                    rpm: perl-Search-Xapian
-                                   (HTTP search)
+                                   (HTTP and IMAP search)
 
 - Net::Server                      deb: libnet-server-perl
                                    pkg: pkg-Net-Server
                                    rpm: perl-Net-Server
-                                   (for HTTP/NNTP background daemons,
+                                   (for HTTP/IMAP/NNTP background daemons,
                                     not needed as systemd services or
                                     foreground servers)
 
-- Inline::C[7]                     deb: libinline-c-perl
+- Inline::C                        deb: libinline-c-perl
                                    pkg: pkg-Inline-C
                                    (speeds up process spawning on Linux,
                                     see public-inbox-daemon(8))
 
-- Date::Parse                      deb: libtimedate-perl
-                                   pkg: p5-TimeDate
-                                   rpm: perl-TimeDate
-                                   (for broken, mostly historical emails)
+- 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))
+
 
 - Plack::Middleware::ReverseProxy  deb: libplack-middleware-reverseproxy-perl
                                    pkg: p5-Plack-Middleware-ReverseProxy
@@ -88,11 +107,6 @@ Numerous optional modules are likely to be useful as well:
                                    (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)
 
@@ -104,16 +118,6 @@ Numerous optional modules are likely to be useful as well:
 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
@@ -130,22 +134,14 @@ above, so there is no need to explicitly install them:
                                    (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::Inotify                   deb: liblinux-inotify2-perl
+- 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)
+                                   (for public-inbox-watch and -imapd on Linux)
 
-- IO::Compress::Gzip               deb: perl-modules (or libio-compress-perl)
+- IO::Compress (::Gzip)            deb: perl-modules (or libio-compress-perl)
                                    pkg: perl5
                                    rpm: perl-IO-Compress
-                                   (for gzipped mbox over HTTP)
+                                   (for gzipped mbox over HTTP, v2 format)
 
 Uncommonly needed modules:
 
@@ -171,9 +167,9 @@ Optional packages testing and development:
                                    pkg: perl5
                                    rpm: perl-Test-Simple
 
-- XML::Feed                        deb: libxml-feed-perl
-                                   pkg: p5-XML-Feed
-                                   rpm: perl-XML-Feed
+- XML::TreePP                      deb: libxml-treepp-perl
+                                   pkg: p5-XML-TreePP
+                                   rpm: perl-XML-TreePP
 
 standard MakeMaker installation (Perl)
 --------------------------------------
@@ -187,7 +183,7 @@ install the system (into /usr/local) with:
 
         perl Makefile.PL
         make
-        make test
+        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
@@ -207,5 +203,5 @@ the installation is complete.
 Copyright
 ---------
 
-Copyright 2013-2019 all contributors <meta@public-inbox.org>
+Copyright 2013-2021 all contributors <meta@public-inbox.org>
 License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>