-my @EXE_FILES = split("\n", `git ls-files 'script/*' 2>/dev/null`);
-my $PM_FILES = `git ls-files lib '*.pm' 2>/dev/null`;
-$PM_FILES =~ tr/\n/ /;
+open my $m, '<', 'MANIFEST' or die "open(MANIFEST): $!\n";
+chomp(my @manifest = (<$m>));
+my @EXE_FILES = grep(m!^script/!, @manifest);
+my $PM_FILES = join(' ', grep(m!^lib/.*\.pm$!, @manifest));
+
+# Don't waste user's disk space by installing some pods from
+# imported code or internal use only
+my %man3 = map {; # semi-colon tells Perl this is a BLOCK (and not EXPR)
+ my $base = $_;
+ my $mod = $base;
+ $mod =~ s!/!::!g;
+ $mod =~ s/\.\w+\z//;
+ "lib/PublicInbox/$_" => "blib/man3/PublicInbox::$mod.3"
+} qw(Git.pm Import.pm WWW.pod SaPlugin/ListMirror.pod);