The new IPC stuff doesn't work without Storable or Sereal.
Storable is part of the standard library since Perl 5.8, so
we'll put a hard dependency on it for distros that package
it separately.
Data::Dumper is also part of the standard library, and
PublicInbox::MboxReader uses it, and it's frequently useful
during development.
We'll also trim down INSTALL for standard library modules so
it's hopefully less daunting for new users.
Development dependencies are noted in HACKING, now.
Email::MIME is only used for maintainer tests, so it's only
documented in HACKING.
See Documentation/technical/ in the source tree for more details
on specific topics, in particular data_structures.txt
See Documentation/technical/ in the source tree for more details
on specific topics, in particular data_structures.txt
+Optional packages for testing and development
+---------------------------------------------
+
+Optional packages testing and development:
+
+- Plack::Test deb: libplack-test-perl
+ pkg: p5-Plack
+ rpm: perl-Plack-Test
+
+- Plack::Test::ExternalServer deb: libplack-test-externalserver-perl
+ pkg: p5-Plack-Test-ExternalServer
+
+- 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
+
+Email::MIME is optional as of public-inbox v1.5.0 but still
+used for maintainer comparison tests:
+
+* Email::MIME deb: libemail-mime-perl
+ pkg: p5-Email-MIME
+ rpm: perl-Email-MIME
+
Faster tests
------------
Faster tests
------------
* MTA - postfix is recommended (for public-inbox-mda)
* SpamAssassin (spamc/spamd) (for public-inbox-watch/public-inbox-mda)
* MTA - postfix is recommended (for public-inbox-mda)
* SpamAssassin (spamc/spamd) (for public-inbox-watch/public-inbox-mda)
-Beyond that, there is a long list of Perl modules required, starting with:
-
-* Digest::SHA typically installed with Perl
- rpm: perl-Digest-SHA
+Beyond that, there is one non-standard Perl module required:
* URI::Escape deb: liburi-perl
pkg: p5-URI
rpm: perl-URI
(for HTML/Atom generation)
* URI::Escape deb: liburi-perl
pkg: p5-URI
rpm: perl-URI
(for HTML/Atom generation)
-Email::MIME will be optional as of public-inbox v1.5.0,
-it may still be used in maintainer comparison tests:
-
-* 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 and Date::Parse are optional as of public-inbox v1.3.0,
but required for older releases:
rpm: perl-DBD-SQLite
(for v2, IMAP, NNTP, or gzipped mboxes)
rpm: perl-DBD-SQLite
(for v2, IMAP, NNTP, or gzipped mboxes)
-- Search::Xapian deb: libsearch-xapian-perl
- pkg: p5-Search-Xapian
+- Search::Xapian or Xapian(.pm) deb: libsearch-xapian-perl
+ pkg: p5-Search-Xapian OR p5-Xapian
rpm: perl-Search-Xapian
(HTTP and IMAP search)
rpm: perl-Search-Xapian
(HTTP and IMAP search)
rpm: xapian-core
(optional, for public-inbox-compact(1))
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:
+- Linux::Inotify2 deb: liblinux-inotify2-perl
+ rpm: perl-Linux-Inotify2
+ (for public-inbox-watch and -imapd on Linux)
-* Encode deb: libperl5.$MINOR (or libencode-perl)
- pkg: perl5
- rpm: perl-Encode
- (likely installed with Perl)
+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)
- 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)
-
-- Linux::Inotify2 deb: liblinux-inotify2-perl
- rpm: perl-Linux-Inotify2
- (for public-inbox-watch and -imapd on Linux)
-
-- 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:
+Uncommonly needed modules (see HACKING for development-only modules):
- Socket6 deb: libsocket6-perl
pkg: p5-Socket6
- Socket6 deb: libsocket6-perl
pkg: p5-Socket6
pkg: p5-Crypt-CBC
(for PublicInbox::Unsubscribe (rarely used))
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)
--------------------------------------
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.
+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
+
# We also depend on git.
# Keep this sorted and synced to the INSTALL document
# We also depend on git.
# Keep this sorted and synced to the INSTALL document
- # libperl$PERL_VERSION,
- # `perl5' on FreeBSD
- # perl-Digest-SHA on RH-based
- 'Digest::SHA' => 0,
-
- # libperl$PERL_VERSION or libencode-perl on Debian,
- # `perl5' on FreeBSD
- 'Encode' => 2.35, # 2.35 shipped with 5.10.1
-
- # libperl$PERL_VERSION + perl-modules-$PERL_VERSION
+ # perl-modules-5.xx or libperl5.xx in Debian-based
+ # part of "perl5" on FreeBSD
'Compress::Raw::Zlib' => 0,
'Compress::Zlib' => 0,
'Compress::Raw::Zlib' => 0,
'Compress::Zlib' => 0,
+ 'Data::Dumper' => 0,
+ 'Digest::SHA' => 0, # rpm: perl-Digest-SHA
+ 'Encode' => 2.35, # 2.35 shipped with 5.10.1
'IO::Compress::Gzip' => 0,
'IO::Compress::Gzip' => 0,
+ 'Storable' => 0, # rpm: perl-Storable
# Plack is needed for public-inbox-httpd and PublicInbox::WWW
# 'Plack' => 0,
# Plack is needed for public-inbox-httpd and PublicInbox::WWW
# 'Plack' => 0,
- # TODO: this should really be made optional...
'URI::Escape' => 0,
# We have more test dependencies, but do not force
'URI::Escape' => 0,
# We have more test dependencies, but do not force