From d06475cc90b2d1f43ef8454d56ddb19e6293a385 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sun, 5 May 2019 01:37:00 +0000 Subject: INSTALL: update with FreeBSD pkg names and reorder Fortunately, there is a pattern to most of these package names in all distros I've tested (and hopefully other BSDs have them, too). Then, reorder the INSTALL document to mention the top-level modules, first, so users can avoid needing to type extra dependencies. However, we still list some implicit dependencies in case the upstream package drops dependencies independently of us. Finally, Devel::Peek is not a dependency worth making optional since it's bundled by Perl upstream. Fedora/RH-based distros are the only one which turn it into a non-standard package when Perl5 is installed. --- INSTALL | 197 ++++++++++++++++++++++++++++++++++++------------------------ Makefile.PL | 8 +++ 2 files changed, 128 insertions(+), 77 deletions(-) diff --git a/INSTALL b/INSTALL index fafaf577..99836c13 100644 --- 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") -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 @@ -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+ -* 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: @@ -32,88 +32,131 @@ 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: -* Date::Parse deb: libtimedate-perl - rpm: perl-Time-ParseDate +* Date::Parse deb: libtimedate-perl + pkg: p5-TimeDate + rpm: perl-TimeDate -* Email::MIME deb: libemail-mime-perl - rpm: perl-Email-MIME +* Devel::Peek deb: libperl5.$MINOR (e.g. libperl5.24) + pkg: perl5 + rpm: perl-Devel-Peek + (typically installed alongside Perl5) -* Email::MIME::ContentType deb: libemail-mime-contenttype-perl - rpm: perl-Email-MIME-ContentType +* Email::MIME deb: libemail-mime-perl + pkg: p5-Email-MIME + rpm: perl-Email-MIME -* Encode::MIME::Header deb: libencode-perl - rpm: perl-Encode +* Encode::MIME::Header deb: libencode-perl + pkg: perl5 + rpm: perl-Encode -* 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) +* URI::Escape deb: liburi-perl + pkg: p5-URI + rpm: perl-URI + (for HTML/Atom generation) -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: - - 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) - - - 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 + (for v2, 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) + +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) + +- DBI deb: libdbi-perl + pkg: p5-DBI + rpm: perl-DBI + (pulled in by DBD::SQLite) + +- Filesys::Notify::Simple deb: libfilesys-notify-simple-perl + pkg: pkg-Filesys-Notify-Simple + rpm: perl-Filesys-Notify-Simple + (for public-inbox-watch, pulled in by Plack) + +- IO::Compress::Gzip deb: perl-modules (or libio-compress-perl) + rpm: perl-PerlIO-gzip + pkg: perl5 + (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: + +- IPC::Run deb: libipc-run-perl + pkg: p5-IPC-Run + rpm: perl-IPC-Run + +- XML::Feed deb: libxml-feed-perl + pkg: p5-XML-Feed + rpm: perl-XML-Feed + +- Test::HTTP::Server::Simple deb: libtest-http-server-simple-perl + pkg: p5-Test-HTTP-Server-Simple + rpm: perl-Test-HTTP-Server-Simple + (XXX is this really needed?) standard MakeMaker installation (Perl) -------------------------------------- @@ -137,8 +180,8 @@ 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. +See the public-inbox-overview(7) man page for the next steps once +the installation is complete. Copyright --------- diff --git a/Makefile.PL b/Makefile.PL index 3bb00725..b8576674 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -29,10 +29,18 @@ WriteMakefile( # Keep this sorted and synced to the INSTALL document 'Date::Parse' => 0, 'Email::MIME' => 0, + + # the following should be pulled in by Email::MIME: 'Email::MIME::ContentType' => 0, 'Email::Simple' => 0, + + # "libencode-perl" on Debian, `perl5' on FreeBSD 'Encode::MIME::Header' => 0, + # libperl$PERL_VERSION on Debian, `perl5' on FreeBSD, + # but Fedora seems to need this separately + 'Devel::Peek' => 0, + # TODO: these should really be made optional... 'Plack' => 0, 'URI::Escape' => 0, -- cgit v1.2.3-24-ge0c7