Linux平台打包Perl脚本为独立运行程序

一、安装打包工具

安装注意事项:

1)尽量选择与这个Perl版本兼容的相关Perl模块;

2)由于PAR-Packer-1.013对perl版本需求决定,必须卸载系统中不兼容的perl版本及所有Perl开头相关包,源码编译安装perl-5.10.1.tar.gz,下载网址:http://www.cpan.org/src/5.0/perl-5.10.1.tar.gz

安装步骤如下:

tar zxvf perl-5.10.1.tar.gz

cd perl-5.10.1

sh Configure -de

make

make test

make install

[root@test test]# perl -v

This is perl, v5.10.1 (*) built for x86_64-linux

Copyright 1987-2009, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the

GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on

this system using "man perl" or "perldoc perl".  If you have access to the

Internet, point your browser at http://www.perl.org/, the Perl Home Page.

1.安装Archive-Zip-1.29.tar.gz

[root@test software]# tar zxvf Archive-Zip-1.29.tar.gz

Archive-Zip-1.29/

Archive-Zip-1.29/META.yml

Archive-Zip-1.29/LICENSE

Archive-Zip-1.29/Makefile.PL

Archive-Zip-1.29/README

Archive-Zip-1.29/script/

Archive-Zip-1.29/script/crc32

Archive-Zip-1.29/MANIFEST

Archive-Zip-1.29/examples/

Archive-Zip-1.29/examples/writeScalar2.pl

Archive-Zip-1.29/examples/mailZip.pl

Archive-Zip-1.29/examples/ziptest.pl

Archive-Zip-1.29/examples/zipinfo.pl

Archive-Zip-1.29/examples/selfex.pl

Archive-Zip-1.29/examples/writeScalar.pl

Archive-Zip-1.29/examples/updateTree.pl

Archive-Zip-1.29/examples/zipcheck.pl

Archive-Zip-1.29/examples/ziprecent.pl

Archive-Zip-1.29/examples/calcSizes.pl

Archive-Zip-1.29/examples/zipGrep.pl

Archive-Zip-1.29/examples/zip.pl

Archive-Zip-1.29/examples/copy.pl

Archive-Zip-1.29/examples/readScalar.pl

Archive-Zip-1.29/examples/extract.pl

Archive-Zip-1.29/examples/unzipAll.pl

Archive-Zip-1.29/examples/updateZip.pl

Archive-Zip-1.29/examples/mfh.pl

Archive-Zip-1.29/Changes

Archive-Zip-1.29/lib/

Archive-Zip-1.29/lib/Archive/

Archive-Zip-1.29/lib/Archive/Zip.pm

Archive-Zip-1.29/lib/Archive/Zip/

Archive-Zip-1.29/lib/Archive/Zip/FAQ.pod

Archive-Zip-1.29/lib/Archive/Zip/Tree.pm

Archive-Zip-1.29/lib/Archive/Zip/MockFileHandle.pm

Archive-Zip-1.29/lib/Archive/Zip/MemberRead.pm

Archive-Zip-1.29/lib/Archive/Zip/DirectoryMember.pm

Archive-Zip-1.29/lib/Archive/Zip/NewFileMember.pm

Archive-Zip-1.29/lib/Archive/Zip/BufferedFileHandle.pm

Archive-Zip-1.29/lib/Archive/Zip/ZipFileMember.pm

Archive-Zip-1.29/lib/Archive/Zip/Archive.pm

Archive-Zip-1.29/lib/Archive/Zip/Member.pm

Archive-Zip-1.29/lib/Archive/Zip/StringMember.pm

Archive-Zip-1.29/lib/Archive/Zip/FileMember.pm

Archive-Zip-1.29/t/

Archive-Zip-1.29/t/common.pl

Archive-Zip-1.29/t/09_output_record_sep.t

Archive-Zip-1.29/t/06_update.t

Archive-Zip-1.29/t/02_main.t

Archive-Zip-1.29/t/08_readmember_record_sep.t

Archive-Zip-1.29/t/07_filenames_of_0.t

Archive-Zip-1.29/t/97_meta.t

Archive-Zip-1.29/t/01_compile.t

Archive-Zip-1.29/t/11_explorer.t

Archive-Zip-1.29/t/98_pod.t

Archive-Zip-1.29/t/10_chmod.t

Archive-Zip-1.29/t/05_tree.t

Archive-Zip-1.29/t/data/

Archive-Zip-1.29/t/data/perl.zip

Archive-Zip-1.29/t/data/chmod.zip

Archive-Zip-1.29/t/data/linux.zip

Archive-Zip-1.29/t/data/winzip.zip

Archive-Zip-1.29/t/12_bug_47223.t

Archive-Zip-1.29/t/99_pmv.t

Archive-Zip-1.29/t/badjpeg/

Archive-Zip-1.29/t/badjpeg/source.zip

Archive-Zip-1.29/t/badjpeg/expected.jpg

Archive-Zip-1.29/t/03_ex.t

Archive-Zip-1.29/t/04_readmember.t

[root@test software]# cd Archive-Zip-1.29

[root@test Archive-Zip-1.29]# perl Makefile.PL

Checking if your kit is complete...

Looks good

Writing Makefile for Archive::Zip

[root@test Archive-Zip-1.29]# make

cp lib/Archive/Zip/MemberRead.pm blib/lib/Archive/Zip/MemberRead.pm

cp lib/Archive/Zip/FileMember.pm blib/lib/Archive/Zip/FileMember.pm

cp lib/Archive/Zip/MockFileHandle.pm blib/lib/Archive/Zip/MockFileHandle.pm

cp lib/Archive/Zip/BufferedFileHandle.pm blib/lib/Archive/Zip/BufferedFileHandle.pm

cp lib/Archive/Zip/StringMember.pm blib/lib/Archive/Zip/StringMember.pm

cp lib/Archive/Zip/Tree.pm blib/lib/Archive/Zip/Tree.pm

cp lib/Archive/Zip/Member.pm blib/lib/Archive/Zip/Member.pm

cp lib/Archive/Zip/FAQ.pod blib/lib/Archive/Zip/FAQ.pod

cp lib/Archive/Zip.pm blib/lib/Archive/Zip.pm

cp lib/Archive/Zip/Archive.pm blib/lib/Archive/Zip/Archive.pm

cp lib/Archive/Zip/ZipFileMember.pm blib/lib/Archive/Zip/ZipFileMember.pm

cp lib/Archive/Zip/NewFileMember.pm blib/lib/Archive/Zip/NewFileMember.pm

cp lib/Archive/Zip/DirectoryMember.pm blib/lib/Archive/Zip/DirectoryMember.pm

cp script/crc32 blib/script/crc32

/usr/bin/perl -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/crc32

Manifying blib/man3/Archive::Zip::Tree.3

Manifying blib/man3/Archive::Zip::FAQ.3

Manifying blib/man3/Archive::Zip.3

Manifying blib/man3/Archive::Zip::MemberRead.3

[root@test Archive-Zip-1.29]# make test

PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t

t/01_compile.t ................ ok

t/02_main.t ................... ok

t/03_ex.t ..................... ok

t/04_readmember.t ............. ok

t/05_tree.t ................... ok

t/06_update.t ................. ok

t/07_filenames_of_0.t ......... ok

t/08_readmember_record_sep.t .. ok

t/09_output_record_sep.t ...... ok

t/10_chmod.t .................. ok

t/11_explorer.t ............... ok

t/12_bug_47223.t .............. skipped: Only required on Win32.

t/97_meta.t ................... skipped: Author tests not required for installation

t/98_pod.t .................... skipped: Author tests not required for installation

t/99_pmv.t .................... skipped: Author tests not required for installation

All tests successful.

Files=15, Tests=211,  9 wallclock secs ( 0.23 usr  0.14 sys +  2.85 cusr  1.46 csys =  4.68 CPU)

Result: PASS[root@test Archive-Zip-1.29]# make install

Installing /usr/local/lib/perl5/site_perl/5.10.1/Archive/Zip.pm

Installing /usr/local/lib/perl5/site_perl/5.10.1/Archive/Zip/NewFileMember.pm

Installing /usr/local/lib/perl5/site_perl/5.10.1/Archive/Zip/MemberRead.pm

Installing /usr/local/lib/perl5/site_perl/5.10.1/Archive/Zip/FileMember.pm

Installing /usr/local/lib/perl5/site_perl/5.10.1/Archive/Zip/Member.pm

Installing /usr/local/lib/perl5/site_perl/5.10.1/Archive/Zip/Tree.pm

Installing /usr/local/lib/perl5/site_perl/5.10.1/Archive/Zip/FAQ.pod

Installing /usr/local/lib/perl5/site_perl/5.10.1/Archive/Zip/StringMember.pm

Installing /usr/local/lib/perl5/site_perl/5.10.1/Archive/Zip/BufferedFileHandle.pm

Installing /usr/local/lib/perl5/site_perl/5.10.1/Archive/Zip/ZipFileMember.pm

Installing /usr/local/lib/perl5/site_perl/5.10.1/Archive/Zip/Archive.pm

Installing /usr/local/lib/perl5/site_perl/5.10.1/Archive/Zip/MockFileHandle.pm

Installing /usr/local/lib/perl5/site_perl/5.10.1/Archive/Zip/DirectoryMember.pm

Installing /usr/local/share/man/man3/Archive::Zip.3

Installing /usr/local/share/man/man3/Archive::Zip::FAQ.3

Installing /usr/local/share/man/man3/Archive::Zip::Tree.3

Installing /usr/local/share/man/man3/Archive::Zip::MemberRead.3

Installing /usr/local/bin/crc32

Appending installation info to /usr/local/lib/perl5/5.10.1/x86_64-linux/perllocal.pod

[root@test Archive-Zip-1.29]#

2.安装Getopt-ArgvFile-1.07.tgz

[root@test software]# tar zxvf Getopt-ArgvFile-1.07.tgz

Getopt-ArgvFile-1.07/

Getopt-ArgvFile-1.07/ArgvFile.pm

Getopt-ArgvFile-1.07/Makefile.PL

Getopt-ArgvFile-1.07/MANIFEST

Getopt-ArgvFile-1.07/README

Getopt-ArgvFile-1.07/t/

Getopt-ArgvFile-1.07/t/prefix.t

Getopt-ArgvFile-1.07/t/case.cfg

Getopt-ArgvFile-1.07/t/base.t

Getopt-ArgvFile-1.07/t/.base.t

Getopt-ArgvFile-1.07/t/.prefix.t

Getopt-ArgvFile-1.07/t/.base.t.cfg

Getopt-ArgvFile-1.07/t/use.t

Getopt-ArgvFile-1.07/t/noHOMEvar.t

[root@test software]# cd Getopt-ArgvFile-1.07

[root@test Getopt-ArgvFile-1.07]# perl Makefile.PL

Checking if your kit is complete...

Looks good

Writing Makefile for Getopt::ArgvFile

[root@test Getopt-ArgvFile-1.07]# make

cp ArgvFile.pm blib/lib/Getopt/ArgvFile.pm

Manifying blib/man3/Getopt::ArgvFile.3

[root@test Getopt-ArgvFile-1.07]# make test

PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t

t/base.t ....... ok

t/noHOMEvar.t .. ok

t/prefix.t ..... ok

t/use.t ........ ok

All tests successful.

Files=4, Tests=9,  0 wallclock secs ( 0.04 usr  0.02 sys +  0.16 cusr  0.06 csys =  0.28 CPU)

Result: PASS

[root@test Getopt-ArgvFile-1.07]# make install

Installing /usr/local/lib/perl5/site_perl/5.10.1/Getopt/ArgvFile.pm

Installing /usr/local/share/man/man3/Getopt::ArgvFile.3

Appending installation info to /usr/local/lib/perl5/5.10.1/x86_64-linux/perllocal.pod

[root@test Getopt-ArgvFile-1.07]#

3.安装Module-ScanDeps-1.09.tar.gz

[root@test software]# tar zxvf Module-ScanDeps-1.09.tar.gz

Module-ScanDeps-1.09/

Module-ScanDeps-1.09/inc/

Module-ScanDeps-1.09/inc/Module/

Module-ScanDeps-1.09/inc/Module/Install.pm

Module-ScanDeps-1.09/inc/Module/Install/

Module-ScanDeps-1.09/inc/Module/Install/Scripts.pm

Module-ScanDeps-1.09/inc/Module/Install/Win32.pm

Module-ScanDeps-1.09/inc/Module/Install/Makefile.pm

Module-ScanDeps-1.09/inc/Module/Install/WriteAll.pm

Module-ScanDeps-1.09/inc/Module/Install/Fetch.pm

Module-ScanDeps-1.09/inc/Module/Install/Metadata.pm

Module-ScanDeps-1.09/inc/Module/Install/Can.pm

Module-ScanDeps-1.09/inc/Module/Install/Base.pm

Module-ScanDeps-1.09/script/

Module-ScanDeps-1.09/script/scandeps.pl

Module-ScanDeps-1.09/t/

Module-ScanDeps-1.09/t/6-file-glob.t

Module-ScanDeps-1.09/t/4-static_functional_interface_options_fake.t

Module-ScanDeps-1.09/t/5-pluggable_fake.t

Module-ScanDeps-1.09/t/1-static_functional_interface_real.t

Module-ScanDeps-1.09/t/17-private_methods.t

Module-ScanDeps-1.09/t/0-pod.t

Module-ScanDeps-1.09/t/16-scan_line.t

Module-ScanDeps-1.09/t/10-case-insensitive-keys.t

Module-ScanDeps-1.09/t/12-ScanFileRE.t

Module-ScanDeps-1.09/t/7-check-dynaloader.t

Module-ScanDeps-1.09/t/2-static_functional_interface_fake.t

Module-ScanDeps-1.09/t/data/

Module-ScanDeps-1.09/t/data/file-glob-no.pl

Module-ScanDeps-1.09/t/data/file-glob-yes.pl

Module-ScanDeps-1.09/t/data/duplicated_entries/

Module-ScanDeps-1.09/t/data/duplicated_entries/Scoped/

Module-ScanDeps-1.09/t/data/duplicated_entries/Scoped/Package.pm

Module-ScanDeps-1.09/t/data/duplicated_entries/use_scoped_package.pl

Module-ScanDeps-1.09/t/data/static/

Module-ScanDeps-1.09/t/data/static/Duplicated.pm

Module-ScanDeps-1.09/t/data/static/useVERSION.pm

Module-ScanDeps-1.09/t/data/static/TestD.pm

Module-ScanDeps-1.09/t/data/static/inner_diamond_W.pm

Module-ScanDeps-1.09/t/data/static/null.pl

Module-ScanDeps-1.09/t/data/static/chicken.pm

Module-ScanDeps-1.09/t/data/static/Duplicator.pl

Module-ScanDeps-1.09/t/data/static/inner_diamond_S.pm

Module-ScanDeps-1.09/t/data/static/InputA.pl

Module-ScanDeps-1.09/t/data/static/outer_diamond_E.pm

Module-ScanDeps-1.09/t/data/static/outer_diamond_W.pm

Module-ScanDeps-1.09/t/data/static/TestA.pm

Module-ScanDeps-1.09/t/data/static/inner_diamond_E.pm

Module-ScanDeps-1.09/t/data/static/TestC.pm

Module-ScanDeps-1.09/t/data/static/TestB.pm

Module-ScanDeps-1.09/t/data/static/outer_diamond_N.pm

Module-ScanDeps-1.09/t/data/static/egg.pm

Module-ScanDeps-1.09/t/data/static/InputC.pl

Module-ScanDeps-1.09/t/data/static/inner_diamond_N.pm

Module-ScanDeps-1.09/t/data/static/outer_diamond_S.pm

Module-ScanDeps-1.09/t/data/static/InputB.pl

Module-ScanDeps-1.09/t/data/ScanFileRE/

Module-ScanDeps-1.09/t/data/ScanFileRE/example_too.pm

Module-ScanDeps-1.09/t/data/ScanFileRE/example.pm

Module-ScanDeps-1.09/t/data/ScanFileRE/auto/

Module-ScanDeps-1.09/t/data/ScanFileRE/auto/example/

Module-ScanDeps-1.09/t/data/ScanFileRE/auto/example/example.h

Module-ScanDeps-1.09/t/data/use_lib.pl

Module-ScanDeps-1.09/t/data/pluggable/

Module-ScanDeps-1.09/t/data/pluggable/Foo.pm

Module-ScanDeps-1.09/t/data/pluggable/Foo/

Module-ScanDeps-1.09/t/data/pluggable/Foo/Plugin/

Module-ScanDeps-1.09/t/data/pluggable/Foo/Plugin/Bar.pm

Module-ScanDeps-1.09/t/data/pluggable/Foo/Plugin/Baz.pm

Module-ScanDeps-1.09/t/data/case-insensitive-keys/

Module-ScanDeps-1.09/t/data/case-insensitive-keys/this_case.pl

Module-ScanDeps-1.09/t/data/case-insensitive-keys/Test.pm

Module-ScanDeps-1.09/t/data/case-insensitive-keys/that_case.pl

Module-ScanDeps-1.09/t/data/case-insensitive-keys/Test2.pm

Module-ScanDeps-1.09/t/data/check_path_to_inc_name/

Module-ScanDeps-1.09/t/data/check_path_to_inc_name/Scoped/

Module-ScanDeps-1.09/t/data/check_path_to_inc_name/Scoped/Package.pm

Module-ScanDeps-1.09/t/data/check_path_to_inc_name/Some.pm

Module-ScanDeps-1.09/t/data/check_path_to_inc_name/use_scoped_package.pl

Module-ScanDeps-1.09/t/Utils.pm

Module-ScanDeps-1.09/t/14-scan_chunk.t

Module-ScanDeps-1.09/t/9-check_path_to_inc_name.t

Module-ScanDeps-1.09/t/8-check_duplicated_entries.t

Module-ScanDeps-1.09/t/14-static_functional_cached.t

Module-ScanDeps-1.09/t/13-static_prefork_test.t

Module-ScanDeps-1.09/t/3-static_oo_interface_real.t

Module-ScanDeps-1.09/Makefile.PL

Module-ScanDeps-1.09/META.json

Module-ScanDeps-1.09/lib/

Module-ScanDeps-1.09/lib/Module/

Module-ScanDeps-1.09/lib/Module/ScanDeps/

Module-ScanDeps-1.09/lib/Module/ScanDeps/Cache.pm

Module-ScanDeps-1.09/lib/Module/ScanDeps/DataFeed.pm

Module-ScanDeps-1.09/lib/Module/ScanDeps.pm

Module-ScanDeps-1.09/Changes

Module-ScanDeps-1.09/MANIFEST

Module-ScanDeps-1.09/README

Module-ScanDeps-1.09/AUTHORS

Module-ScanDeps-1.09/META.yml

[root@test software]# cd Module-ScanDeps-1.09

[root@test Module-ScanDeps-1.09]# perl Makefile.PL

Checking if your kit is complete...

Looks good

Writing Makefile for Module::ScanDeps

[root@test Module-ScanDeps-1.09]# make

cp lib/Module/ScanDeps/Cache.pm blib/lib/Module/ScanDeps/Cache.pm

cp lib/Module/ScanDeps/DataFeed.pm blib/lib/Module/ScanDeps/DataFeed.pm

cp lib/Module/ScanDeps.pm blib/lib/Module/ScanDeps.pm

cp script/scandeps.pl blib/script/scandeps.pl

/usr/bin/perl "-Iinc" -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/scandeps.pl

Manifying blib/man1/scandeps.pl.1

Manifying blib/man3/Module::ScanDeps.3

[root@test Module-ScanDeps-1.09]# make test

PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'inc', 'blib/lib', 'blib/arch')" t/*.t

t/0-pod.t ....................................... skipped: Test::Pod 1.00 required for testing POD

t/1-static_functional_interface_real.t .......... ok

t/10-case-insensitive-keys.t .................... skipped: Test irrelevant on case intolerant systems

t/12-ScanFileRE.t ............................... ok

t/13-static_prefork_test.t ...................... skipped: This test requires prefork.pm which is not installed. Skipping.

t/14-scan_chunk.t ............................... ok

t/14-static_functional_cached.t ................. 1/? 0

Couldn't retrieve data from file deps_cache.dat. Building new cache.

t/14-static_functional_cached.t ................. ok

t/16-scan_line.t ................................ ok

t/17-private_methods.t .......................... ok

t/2-static_functional_interface_fake.t .......... ok

t/3-static_oo_interface_real.t .................. ok

t/4-static_functional_interface_options_fake.t .. ok

t/5-pluggable_fake.t ............................ ok

t/6-file-glob.t ................................. ok

t/7-check-dynaloader.t .......................... # dynamic modules used for test: Cwd File::Glob Data::Dumper List::Util Time::HiRes Compress::Raw::Zlib

t/7-check-dynaloader.t .......................... 1/36 /tmp/2Ut1xsSWwO syntax OK

/tmp/rcU0jjBOLS syntax OK

/tmp/mp0HTi3KFa syntax OK

/tmp/EDSSDzmJU9 syntax OK

t/7-check-dynaloader.t .......................... 21/36 /tmp/dHd8Jgno2n syntax OK

/tmp/NKyoxJBgZn syntax OK

t/7-check-dynaloader.t .......................... ok

t/8-check_duplicated_entries.t .................. ok

t/9-check_path_to_inc_name.t .................... ok

All tests successful.

Files=17, Tests=18553, 23 wallclock secs ( 3.05 usr  0.36 sys + 13.95 cusr  2.71 csys = 20.07 CPU)

Result: PASS

[root@test Module-ScanDeps-1.09]# make install

Installing /usr/local/lib/perl5/site_perl/5.10.1/Module/ScanDeps.pm

Installing /usr/local/lib/perl5/site_perl/5.10.1/Module/ScanDeps/Cache.pm

Installing /usr/local/lib/perl5/site_perl/5.10.1/Module/ScanDeps/DataFeed.pm

Installing /usr/local/share/man/man1/scandeps.pl.1

Installing /usr/local/share/man/man3/Module::ScanDeps.3

Installing /usr/local/bin/scandeps.pl

Appending installation info to /usr/local/lib/perl5/5.10.1/x86_64-linux/perllocal.pod

[root@test Module-ScanDeps-1.09]#

4.安装PAR-Dist-0.48.tar.gz

[root@test software]# tar zxvf PAR-Dist-0.48.tar.gz

PAR-Dist-0.48/

PAR-Dist-0.48/Changes

PAR-Dist-0.48/Makefile.PL

PAR-Dist-0.48/META.json

PAR-Dist-0.48/t/

PAR-Dist-0.48/t/data/

PAR-Dist-0.48/t/data/dist2.par

PAR-Dist-0.48/t/data/dist1.par

PAR-Dist-0.48/t/02parsedistname.t

PAR-Dist-0.48/t/01basic.t

PAR-Dist-0.48/t/00podcover.t

PAR-Dist-0.48/t/00pod.t

PAR-Dist-0.48/t/03merge_meta.t

PAR-Dist-0.48/MANIFEST

PAR-Dist-0.48/README

PAR-Dist-0.48/META.yml

PAR-Dist-0.48/lib/

PAR-Dist-0.48/lib/PAR/

PAR-Dist-0.48/lib/PAR/Dist.pm

[root@test software]# cd PAR-Dist-0.48

[root@test PAR-Dist-0.48]# perl Makefile.PL

Checking if your kit is complete...

Looks good

Writing Makefile for PAR::Dist

[root@test PAR-Dist-0.48]# make

cp lib/PAR/Dist.pm blib/lib/PAR/Dist.pm

Manifying blib/man3/PAR::Dist.3

[root@test PAR-Dist-0.48]# make test

PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t

t/00pod.t ............ skipped: Set environment variable PERL_TEST_POD=1 to test POD

t/00podcover.t ....... skipped: Set environment variable PERL_TEST_POD=1 to test POD

t/01basic.t .......... ok

t/02parsedistname.t .. ok

t/03merge_meta.t ..... PAR::Dist testers/debug info: Using 'Parse::CPAN::Meta' as YAML implementation at /home/software/PAR-Dist-0.48/blib/lib/PAR/Dist.pm line 1357.

No YAML support for Dump found.

No YAML support for DumpFile found.

Using Archive::Zip as ZIP tool.

t/03merge_meta.t ..... skipped: Skip because no YAML loader/dumper could be found

All tests successful.

Files=5, Tests=7,  0 wallclock secs ( 0.04 usr  0.03 sys +  0.23 cusr  0.10 csys =  0.40 CPU)

Result: PASS[root@test PAR-Dist-0.48]# make install

Installing /usr/local/lib/perl5/site_perl/5.10.1/PAR/Dist.pm

Installing /usr/local/share/man/man3/PAR::Dist.3

Appending installation info to /usr/local/lib/perl5/5.10.1/x86_64-linux/perllocal.pod

[root@test PAR-Dist-0.48]#

5.安装PAR-1.005.tar.gz

[root@test software]# tar zxvf PAR-1.005.tar.gz

PAR-1.005/

PAR-1.005/inc/

PAR-1.005/inc/Test/

PAR-1.005/inc/Test/Builder.pm

PAR-1.005/inc/Test/Builder/

PAR-1.005/inc/Test/Builder/Module.pm

PAR-1.005/inc/Test/More.pm

PAR-1.005/inc/PerlIO.pm

PAR-1.005/inc/Module/

PAR-1.005/inc/Module/Install.pm

PAR-1.005/inc/Module/Install/

PAR-1.005/inc/Module/Install/Include.pm

PAR-1.005/inc/Module/Install/Makefile.pm

PAR-1.005/inc/Module/Install/Metadata.pm

PAR-1.005/inc/Module/Install/WriteAll.pm

PAR-1.005/inc/Module/Install/Win32.pm

PAR-1.005/inc/Module/Install/Fetch.pm

PAR-1.005/inc/Module/Install/Base.pm

PAR-1.005/inc/Module/Install/Can.pm

PAR-1.005/inc/parent.pm

PAR-1.005/lib/

PAR-1.005/lib/PAR.pm

PAR-1.005/lib/PAR/

PAR-1.005/lib/PAR/FAQ.pod

PAR-1.005/lib/PAR/Heavy.pm

PAR-1.005/lib/PAR/SetupProgname.pm

PAR-1.005/lib/PAR/SetupTemp.pm

PAR-1.005/lib/PAR/Environment.pod

PAR-1.005/lib/PAR/Tutorial.pod

PAR-1.005/MANIFEST

PAR-1.005/TODO

PAR-1.005/t/

PAR-1.005/t/hello.par

PAR-1.005/t/40-par-hashref.t

PAR-1.005/t/60-cleanup.t

PAR-1.005/t/00-pod.t

PAR-1.005/t/Hello.pm

PAR-1.005/t/01-basic.t

PAR-1.005/t/50-autoloaderfix.t

PAR-1.005/META.yml

PAR-1.005/ChangeLog

PAR-1.005/MANIFEST.SKIP

PAR-1.005/AUTHORS

PAR-1.005/Makefile.PL

PAR-1.005/README

[root@test software]# cd PAR-1.005

[root@test PAR-1.005]# perl Makefile.PL

Checking if your kit is complete...

Looks good

Writing Makefile for PAR

[root@test PAR-1.005]# make

cp lib/PAR/FAQ.pod blib/lib/PAR/FAQ.pod

cp lib/PAR/Tutorial.pod blib/lib/PAR/Tutorial.pod

cp lib/PAR/Environment.pod blib/lib/PAR/Environment.pod

cp lib/PAR/Heavy.pm blib/lib/PAR/Heavy.pm

cp lib/PAR.pm blib/lib/PAR.pm

cp lib/PAR/SetupProgname.pm blib/lib/PAR/SetupProgname.pm

cp lib/PAR/SetupTemp.pm blib/lib/PAR/SetupTemp.pm

Manifying blib/man3/PAR::Tutorial.3

Manifying blib/man3/PAR::FAQ.3

Manifying blib/man3/PAR::Environment.3

Manifying blib/man3/PAR::Heavy.3

Manifying blib/man3/PAR.3

Manifying blib/man3/PAR::SetupProgname.3

Manifying blib/man3/PAR::SetupTemp.3

[root@test PAR-1.005]# make test

PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'inc', 'blib/lib', 'blib/arch')" t/*.t

t/00-pod.t ............ skipped: Set environment variable PERL_TEST_POD=1 to test POD

t/01-basic.t .......... ok

t/40-par-hashref.t .... ok

t/50-autoloaderfix.t .. ok

t/60-cleanup.t ........ ok

All tests successful.

Files=5, Tests=21,  2 wallclock secs ( 0.06 usr  0.02 sys +  0.86 cusr  0.31 csys =  1.25 CPU)

Result: PASS[root@test PAR-1.005]# make install

Installing /usr/local/lib/perl5/site_perl/5.10.1/PAR.pm

Installing /usr/local/lib/perl5/site_perl/5.10.1/PAR/SetupTemp.pm

Installing /usr/local/lib/perl5/site_perl/5.10.1/PAR/Environment.pod

Installing /usr/local/lib/perl5/site_perl/5.10.1/PAR/SetupProgname.pm

Installing /usr/local/lib/perl5/site_perl/5.10.1/PAR/Heavy.pm

Installing /usr/local/lib/perl5/site_perl/5.10.1/PAR/FAQ.pod

Installing /usr/local/lib/perl5/site_perl/5.10.1/PAR/Tutorial.pod

Installing /usr/local/share/man/man3/PAR::FAQ.3

Installing /usr/local/share/man/man3/PAR::SetupProgname.3

Installing /usr/local/share/man/man3/PAR::SetupTemp.3

Installing /usr/local/share/man/man3/PAR::Heavy.3

Installing /usr/local/share/man/man3/PAR::Tutorial.3

Installing /usr/local/share/man/man3/PAR::Environment.3

Installing /usr/local/share/man/man3/PAR.3

Appending installation info to /usr/local/lib/perl5/5.10.1/x86_64-linux/perllocal.pod

[root@test PAR-1.005]#

6.安装PAR-Packer-1.013.tar.gz

[root@test software]# tar zxvf PAR-Packer-1.013.tar.gz

PAR-Packer-1.013/

PAR-Packer-1.013/myldr/

PAR-Packer-1.013/myldr/run_with_inc.pl

PAR-Packer-1.013/myldr/encode_append.pl

PAR-Packer-1.013/myldr/Dynamic.in

PAR-Packer-1.013/myldr/sha1.c.PL

PAR-Packer-1.013/myldr/boot.c

PAR-Packer-1.013/myldr/winres/

PAR-Packer-1.013/myldr/winres/pp.ico

PAR-Packer-1.013/myldr/winres/pp.rc

PAR-Packer-1.013/myldr/winres/pp.manifest

PAR-Packer-1.013/myldr/Makefile.PL

PAR-Packer-1.013/myldr/env.c

PAR-Packer-1.013/myldr/internals.c

PAR-Packer-1.013/myldr/main.c

PAR-Packer-1.013/myldr/file2c.pl

PAR-Packer-1.013/myldr/usernamefrompwuid.c

PAR-Packer-1.013/myldr/mktmpdir.h

PAR-Packer-1.013/myldr/utils.c

PAR-Packer-1.013/myldr/mktmpdir.c

PAR-Packer-1.013/myldr/Static.in

PAR-Packer-1.013/MANIFEST.SKIP

PAR-Packer-1.013/contrib/

PAR-Packer-1.013/contrib/stdio/

PAR-Packer-1.013/contrib/stdio/Stdio_readme.txt

PAR-Packer-1.013/contrib/stdio/Stdio.pm

PAR-Packer-1.013/contrib/gui_pp/

PAR-Packer-1.013/contrib/gui_pp/gpp_readme.txt

PAR-Packer-1.013/contrib/gui_pp/gpp

PAR-Packer-1.013/contrib/pare/

PAR-Packer-1.013/contrib/pare/pare_readme.txt

PAR-Packer-1.013/contrib/pare/pare

PAR-Packer-1.013/contrib/procedural_pp/

PAR-Packer-1.013/contrib/procedural_pp/pp_old

PAR-Packer-1.013/contrib/automated_pp_test/

PAR-Packer-1.013/contrib/automated_pp_test/automated_pp_test.pl

PAR-Packer-1.013/contrib/automated_pp_test/hello_tk.pl

PAR-Packer-1.013/contrib/automated_pp_test/hi.ico

PAR-Packer-1.013/contrib/automated_pp_test/pipe_a_command.pm

PAR-Packer-1.013/contrib/automated_pp_test/prior_to_test.pm

PAR-Packer-1.013/contrib/automated_pp_test/remove_file_and_try_executable_again.pm

PAR-Packer-1.013/contrib/automated_pp_test/test_in_further_subdir.pm

PAR-Packer-1.013/contrib/extract_embedded/

PAR-Packer-1.013/contrib/extract_embedded/extract-embedded.pl

PAR-Packer-1.013/contrib/docs/

PAR-Packer-1.013/contrib/docs/where_is_it.txt

PAR-Packer-1.013/contrib/docs/who_am_i.txt

PAR-Packer-1.013/inc/

PAR-Packer-1.013/inc/Module/

PAR-Packer-1.013/inc/Module/Install.pm

PAR-Packer-1.013/inc/Module/Install/

PAR-Packer-1.013/inc/Module/Install/Win32.pm

PAR-Packer-1.013/inc/Module/Install/Makefile.pm

PAR-Packer-1.013/inc/Module/Install/WriteAll.pm

PAR-Packer-1.013/inc/Module/Install/PAR.pm

PAR-Packer-1.013/inc/Module/Install/Fetch.pm

PAR-Packer-1.013/inc/Module/Install/Include.pm

PAR-Packer-1.013/inc/Module/Install/Metadata.pm

PAR-Packer-1.013/inc/Module/Install/Can.pm

PAR-Packer-1.013/inc/Module/Install/Base.pm

PAR-Packer-1.013/script/

PAR-Packer-1.013/script/pp

PAR-Packer-1.013/script/par.pl

PAR-Packer-1.013/script/tkpp

PAR-Packer-1.013/script/parl.pod

PAR-Packer-1.013/t/

PAR-Packer-1.013/t/20-pp.t

PAR-Packer-1.013/t/30-current_exec.t

PAR-Packer-1.013/t/00-pod.t

PAR-Packer-1.013/t/test-proc

PAR-Packer-1.013/t/40-packer_cd_option.t

PAR-Packer-1.013/t/90-rt59710.t

PAR-Packer-1.013/t/10-parl-generation.t

PAR-Packer-1.013/Makefile.PL

PAR-Packer-1.013/package/

PAR-Packer-1.013/package/parl.nsi

PAR-Packer-1.013/ChangeLog

PAR-Packer-1.013/lib/

PAR-Packer-1.013/lib/PAR/

PAR-Packer-1.013/lib/PAR/Packer.pm

PAR-Packer-1.013/lib/PAR/StrippedPARL/

PAR-Packer-1.013/lib/PAR/StrippedPARL/Base.pm

PAR-Packer-1.013/lib/PAR/Filter/

PAR-Packer-1.013/lib/PAR/Filter/PodStrip.pm

PAR-Packer-1.013/lib/PAR/Filter/Bleach.pm

PAR-Packer-1.013/lib/PAR/Filter/PatchContent.pm

PAR-Packer-1.013/lib/PAR/Filter/Bytecode.pm

PAR-Packer-1.013/lib/PAR/Filter/Obfuscate.pm

PAR-Packer-1.013/lib/PAR/Filter.pm

PAR-Packer-1.013/lib/pp.pm

PAR-Packer-1.013/lib/App/

PAR-Packer-1.013/lib/App/Packer/

PAR-Packer-1.013/lib/App/Packer/PAR.pm

PAR-Packer-1.013/TODO

PAR-Packer-1.013/MANIFEST

PAR-Packer-1.013/README

PAR-Packer-1.013/AUTHORS

PAR-Packer-1.013/META.yml

[root@test software]# cd PAR-Packer-1.013

[root@test PAR-Packer-1.013]# perl Makefile.PL

Checking if your kit is complete...

Looks good

Prototype mismatch: sub main::prompt: none vs ($;$) at /usr/local/lib/perl5/5.10.1/ExtUtils/MakeMaker.pm line 202(注意:本行提示信息不影响此程序编译安装)

Writing Makefile for par

Writing Makefile for PAR::Packer

[root@test PAR-Packer-1.013]# make

cp lib/App/Packer/PAR.pm blib/lib/App/Packer/PAR.pm

cp lib/PAR/Packer.pm blib/lib/PAR/Packer.pm

cp lib/PAR/Filter/PodStrip.pm blib/lib/PAR/Filter/PodStrip.pm

cp lib/PAR/Filter/Obfuscate.pm blib/lib/PAR/Filter/Obfuscate.pm

cp lib/PAR/StrippedPARL/Base.pm blib/lib/PAR/StrippedPARL/Base.pm

cp lib/PAR/Filter.pm blib/lib/PAR/Filter.pm

cp lib/PAR/Filter/PatchContent.pm blib/lib/PAR/Filter/PatchContent.pm

cp lib/PAR/Filter/Bytecode.pm blib/lib/PAR/Filter/Bytecode.pm

cp lib/pp.pm blib/lib/pp.pm

cp lib/PAR/Filter/Bleach.pm blib/lib/PAR/Filter/Bleach.pm

make[1]: Entering directory `/home/software/PAR-Packer-1.013/myldr'

Makefile:721: warning: overriding commands for target `.c.o'

Makefile:331: warning: ignoring old commands for target `.c.o'

/usr/bin/perl ./file2c.pl -s ../script/par.pl my_par_pl.c load_my_par_pl

/usr/bin/perl sha1.c.PL

cc -c -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -I/usr/local/lib/perl5/5.10.1/x86_64-linux/CORE  -DPARL_EXE=\"parl\" -O2 main.c

cc main.o  -s -Wl,-E  -fstack-protector -L/usr/local/lib  -L/usr/local/lib/perl5/5.10.1/x86_64-linux/CORE -lperl -lnsl -ldl -lm -lcrypt -lutil -lc -o ./par

true

/usr/bin/perl encode_append.pl Dynamic.in ./par Dynamic.pm

/usr/bin/perl ./file2c.pl -c 30000 ./par my_par.c load_my_par

/usr/bin/perl ./file2c.pl -c 30000 -n libperl.a /usr/local/lib/perl5/5.10.1/x86_64-linux/CORE/libperl.a my_libperl.c load_my_libperl

cc -c -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -I/usr/local/lib/perl5/5.10.1/x86_64-linux/CORE  -DPARL_EXE=\"parl\" -O2 boot.c

cc boot.o -s -Wl,-E  -fstack-protector -L/usr/local/lib  -L/usr/local/lib/perl5/5.10.1/x86_64-linux/CORE -lnsl -ldl -lm -lcrypt -lutil -lc  -o ./boot

true

/usr/bin/perl encode_append.pl Static.in ./boot Static.pm

cp Static.pm ../blib/lib/PAR/StrippedPARL/Static.pm

cp Dynamic.pm ../blib/lib/PAR/StrippedPARL/Dynamic.pm

/usr/bin/perl -Mblib run_with_inc.pl ./par -q -B -Oparldyn

cp parldyn ../blib/script/parldyn

true ../blib/script/parldyn

/usr/bin/perl -Mblib run_with_inc.pl ./boot -q -B -Oparl

cp parl ../blib/script/parl

true ../blib/script/parl

Manifying ../blib/man1/parldyn.1

Manifying ../blib/man1/parl.1

make[1]: Leaving directory `/home/software/PAR-Packer-1.013/myldr'

cp script/tkpp blib/script/tkpp

/usr/bin/perl "-Iinc" -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/tkpp

cp script/pp blib/script/pp

/usr/bin/perl "-Iinc" -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/pp

cp script/par.pl blib/script/par.pl

/usr/bin/perl "-Iinc" -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/par.pl

Manifying blib/man1/tkpp.1

Manifying blib/man1/pp.1

Manifying blib/man1/par.pl.1

Manifying blib/man3/PAR::StrippedPARL::Base.3

Manifying blib/man3/PAR::Filter::Obfuscate.3

Manifying blib/man3/PAR::Filter::PodStrip.3

Manifying blib/man3/PAR::Packer.3

Manifying blib/man3/App::Packer::PAR.3

Manifying blib/man3/PAR::Filter.3

Manifying blib/man3/PAR::Filter::PatchContent.3

Manifying blib/man3/PAR::Filter::Bytecode.3

Manifying blib/man3/pp.3

Manifying blib/man3/PAR::Filter::Bleach.3

[root@test PAR-Packer-1.013]# make test

make[1]: Entering directory `/home/software/PAR-Packer-1.013/myldr'

Makefile:721: warning: overriding commands for target `.c.o'

Makefile:331: warning: ignoring old commands for target `.c.o'

make[1]: Leaving directory `/home/software/PAR-Packer-1.013/myldr'

PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'inc', 'blib/lib', 'blib/arch')" t/00-pod.t t/10-parl-generation.t t/20-pp.t t/30-current_exec.t t/40-packer_cd_option.t t/90-rt59710.t

t/00-pod.t ............... skipped: Set environment variable PERL_TEST_POD=1 to test POD

t/10-parl-generation.t ... ok

t/20-pp.t ................ 12/34 /tmp/RkZF8yOqmI syntax OK

t/20-pp.t ................ ok

t/30-current_exec.t ...... # Please wait

t/30-current_exec.t ...... ok

t/40-packer_cd_option.t .. ok

t/90-rt59710.t ........... ok

All tests successful.

Files=6, Tests=74, 216 wallclock secs ( 0.07 usr  0.01 sys + 193.49 cusr 18.80 csys = 212.37 CPU)

Result: PASSmake[1]: Entering directory `/home/software/PAR-Packer-1.013/myldr'

Makefile:721: warning: overriding commands for target `.c.o'

Makefile:331: warning: ignoring old commands for target `.c.o'

make[1]: Nothing to be done for `test'.

make[1]: Leaving directory `/home/software/PAR-Packer-1.013/myldr'

[root@test PAR-Packer-1.013]#

[root@test PAR-Packer-1.013]# make install

make[1]: Entering directory `/home/software/PAR-Packer-1.013/myldr'

Makefile:721: warning: overriding commands for target `.c.o'

Makefile:331: warning: ignoring old commands for target `.c.o'

make[1]: Leaving directory `/home/software/PAR-Packer-1.013/myldr'

Installing /usr/local/lib/perl5/site_perl/5.10.1/pp.pm

Installing /usr/local/lib/perl5/site_perl/5.10.1/App/Packer/PAR.pm

Installing /usr/local/lib/perl5/site_perl/5.10.1/PAR/Filter.pm

Installing /usr/local/lib/perl5/site_perl/5.10.1/PAR/Packer.pm

Installing /usr/local/lib/perl5/site_perl/5.10.1/PAR/Filter/PodStrip.pm

Installing /usr/local/lib/perl5/site_perl/5.10.1/PAR/Filter/Obfuscate.pm

Installing /usr/local/lib/perl5/site_perl/5.10.1/PAR/Filter/Bleach.pm

Installing /usr/local/lib/perl5/site_perl/5.10.1/PAR/Filter/Bytecode.pm

Installing /usr/local/lib/perl5/site_perl/5.10.1/PAR/Filter/PatchContent.pm

Installing /usr/local/lib/perl5/site_perl/5.10.1/PAR/StrippedPARL/Static.pm

Installing /usr/local/lib/perl5/site_perl/5.10.1/PAR/StrippedPARL/Base.pm

Installing /usr/local/lib/perl5/site_perl/5.10.1/PAR/StrippedPARL/Dynamic.pm

Installing /usr/local/share/man/man1/par.pl.1

Installing /usr/local/share/man/man1/parldyn.1

Installing /usr/local/share/man/man1/tkpp.1

Installing /usr/local/share/man/man1/parl.1

Installing /usr/local/share/man/man1/pp.1

Installing /usr/local/share/man/man3/PAR::Filter::Obfuscate.3

Installing /usr/local/share/man/man3/PAR::StrippedPARL::Base.3

Installing /usr/local/share/man/man3/PAR::Filter::PodStrip.3

Installing /usr/local/share/man/man3/pp.3

Installing /usr/local/share/man/man3/PAR::Packer.3

Installing /usr/local/share/man/man3/PAR::Filter::PatchContent.3

Installing /usr/local/share/man/man3/PAR::Filter.3

Installing /usr/local/share/man/man3/App::Packer::PAR.3

Installing /usr/local/share/man/man3/PAR::Filter::Bleach.3

Installing /usr/local/share/man/man3/PAR::Filter::Bytecode.3

Installing /usr/local/bin/parl

Installing /usr/local/bin/tkpp

Installing /usr/local/bin/parldyn

Installing /usr/local/bin/par.pl

Installing /usr/local/bin/pp

Appending installation info to /usr/local/lib/perl5/5.10.1/x86_64-linux/perllocal.pod

[root@test PAR-Packer-1.013]#

二、安装脚本PTY相关包

[root@test software]# tar zxvf IO-Tty-1.09.tar.gz

IO-Tty-1.09/

IO-Tty-1.09/ChangeLog

IO-Tty-1.09/Makefile.PL

IO-Tty-1.09/MANIFEST

IO-Tty-1.09/META.yml

IO-Tty-1.09/Pty.pm

IO-Tty-1.09/README

IO-Tty-1.09/t/

IO-Tty-1.09/try

IO-Tty-1.09/Tty.pm

IO-Tty-1.09/Tty.xs

IO-Tty-1.09/t/test.t

[root@test software]# cd IO-Tty-1.09

[root@test IO-Tty-1.09]# perl Makefile.PL

Now let's see what we can find out about your system

(logfiles of failing tests are available in the conf/ dir)...

Looking for _getpty()...... not found.

Looking for getpt()........ FOUND.

Looking for grantpt()...... FOUND.

Looking for openpty()...... FOUND.

Looking for posix_openpt(). FOUND.

Looking for ptsname()...... FOUND.

Looking for ptsname_r().... FOUND.

Looking for sigaction().... FOUND.

Looking for strlcpy()...... not found.

Looking for ttyname()...... FOUND.

Looking for unlockpt()..... FOUND.

Looking for libutil.h...... not found.

Looking for pty.h.......... FOUND.

Looking for sys/pty.h...... not found.

Looking for sys/ptyio.h.... not found.

Looking for sys/stropts.h.. FOUND.

Looking for termio.h....... FOUND.

Looking for termios.h...... FOUND.

Looking for util.h......... not found.

Checking which symbols compile OK...

(sorry for the tedious check, but some systems have not too clean

header files, to say the least;  '+' means OK, '-' means not defined

and '*' has compile problems...)

+B0 +B110 +B115200 +B1200 +B134 +B150 -B153600 +B1800 +B19200 +B200 +B230400 +B2400 +B300 -B307200 +B38400 +B460800 +B4800 +B50 +B57600 +B600 +B75 -B76800 +B9600 +BRKINT +BS0 +BS1 +BSDLY +CBAUD -CBAUDEXT +CBRK -CCTS_OFLOW -CDEL +CDSUSP +CEOF +CEOL -CEOL2 +CEOT +CERASE -CESC +CFLUSH +CIBAUD -CIBAUDEXT +CINTR +CKILL +CLNEXT +CLOCAL -CNSWTCH -CNUL +CQUIT +CR0 +CR1 +CR2 +CR3 +CRDLY +CREAD +CRPRNT +CRTSCTS -CRTSXOFF -CRTS_IFLOW +CS5 +CS6 +CS7 +CS8 +CSIZE +CSTART +CSTOP +CSTOPB +CSUSP -CSWTCH +CWERASE -DEFECHO -DIOC -DIOCGETP -DIOCSETP -DOSMODE +ECHO +ECHOCTL +ECHOE +ECHOK +ECHOKE +ECHONL +ECHOPRT +EXTA +EXTB +FF0 +FF1 +FFDLY -FIORDCHK +FLUSHO +HUPCL +ICANON +ICRNL +IEXTEN +IGNBRK +IGNCR +IGNPAR +IMAXBEL +INLCR +INPCK +ISIG +ISTRIP +IUCLC +IXANY +IXOFF +IXON -KBENABLED -LDCHG -LDCLOSE -LDDMAP -LDEMAP -LDGETT -LDGMAP -LDIOC -LDNMAP -LDOPEN -LDSETT -LDSMAP -LOBLK +NCCS +NL0 +NL1 +NLDLY +NOFLSH +OCRNL +OFDEL +OFILL +OLCUC +ONLCR +ONLRET +ONOCR +OPOST -PAGEOUT +PARENB -PAREXT +PARMRK +PARODD +PENDIN -RCV1EN -RTS_TOG +TAB0 +TAB1 +TAB2 +TAB3 +TABDLY -TCDSET +TCFLSH +TCGETA +TCGETS +TCIFLUSH +TCIOFF +TCIOFLUSH +TCION +TCOFLUSH +TCOOFF +TCOON +TCSADRAIN +TCSAFLUSH +TCSANOW +TCSBRK +TCSETA +TCSETAF +TCSETAW -TCSETCTTY +TCSETS +TCSETSF +TCSETSW +TCXONC -TERM_D40 -TERM_D42 -TERM_H45 -TERM_NONE -TERM_TEC -TERM_TEX -TERM_V10 -TERM_V61 +TIOCCBRK -TIOCCDTR +TIOCCONS +TIOCEXCL -TIOCFLUSH -TIOCGETC +TIOCGETD -TIOCGETP -TIOCGLTC +TIOCGPGRP +TIOCGSID +TIOCGSOFTCAR +TIOCGWINSZ -TIOCHPCL -TIOCKBOF -TIOCKBON -TIOCLBIC -TIOCLBIS -TIOCLGET -TIOCLSET +TIOCMBIC +TIOCMBIS +TIOCMGET +TIOCMSET +TIOCM_CAR +TIOCM_CD +TIOCM_CTS +TIOCM_DSR +TIOCM_DTR +TIOCM_LE +TIOCM_RI +TIOCM_RNG +TIOCM_RTS +TIOCM_SR +TIOCM_ST +TIOCNOTTY +TIOCNXCL +TIOCOUTQ -TIOCREMOTE +TIOCSBRK +TIOCSCTTY -TIOCSDTR -TIOCSETC +TIOCSETD -TIOCSETN -TIOCSETP -TIOCSIGNAL -TIOCSLTC +TIOCSPGRP -TIOCSSID +TIOCSSOFTCAR -TIOCSTART +TIOCSTI -TIOCSTOP +TIOCSWINSZ -TM_ANL -TM_CECHO -TM_CINVIS -TM_LCF -TM_NONE -TM_SET -TM_SNL +TOSTOP -VCEOF -VCEOL +VDISCARD -VDSUSP +VEOF +VEOL +VEOL2 +VERASE +VINTR +VKILL +VLNEXT +VMIN +VQUIT +VREPRINT +VSTART +VSTOP +VSUSP -VSWTCH +VT0 +VT1 +VTDLY +VTIME +VWERASE -WRAP +XCASE -XCLUDE -XMT1EN +XTABS

>>> Configuration looks good! <<<

Writing IO::Tty::Constant.pm...

DEFINE = -DHAVE_DEV_PTMX -DHAVE_GETPT -DHAVE_GRANTPT -DHAVE_OPENPTY -DHAVE_POSIX_OPENPT -DHAVE_PTSNAME -DHAVE_PTSNAME_R -DHAVE_PTY_H -DHAVE_SIGACTION -DHAVE_SYS_STROPTS_H -DHAVE_TERMIOS_H -DHAVE_TERMIO_H -DHAVE_TTYNAME -DHAVE_UNLOCKPT

Checking if your kit is complete...

Looks good

Writing Makefile for IO::Tty

[root@test IO-Tty-1.09]# make

cp Tty.pm blib/lib/IO/Tty.pm

cp Tty/Constant.pm blib/lib/IO/Tty/Constant.pm

cp Pty.pm blib/lib/IO/Pty.pm

/usr/bin/perl /usr/local/lib/perl5/5.10.1/ExtUtils/xsubpp  -typemap /usr/local/lib/perl5/5.10.1/ExtUtils/typemap  Tty.xs > Tty.xsc && mv Tty.xsc Tty.c

cc -c   -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2   -DVERSION=\"1.09\" -DXS_VERSION=\"1.09\" -fPIC "-I/usr/local/lib/perl5/5.10.1/x86_64-linux/CORE"  -DHAVE_DEV_PTMX -DHAVE_GETPT -DHAVE_GRANTPT -DHAVE_OPENPTY -DHAVE_POSIX_OPENPT -DHAVE_PTSNAME -DHAVE_PTSNAME_R -DHAVE_PTY_H -DHAVE_SIGACTION -DHAVE_SYS_STROPTS_H -DHAVE_TERMIOS_H -DHAVE_TERMIO_H -DHAVE_TTYNAME -DHAVE_UNLOCKPT Tty.c

Running Mkbootstrap for IO::Tty ()

chmod 644 Tty.bs

rm -f blib/arch/auto/IO/Tty/Tty.so

cc  -shared -O2 -L/usr/local/lib -fstack-protector Tty.o  -o blib/arch/auto/IO/Tty/Tty.so       \

-lutil       \

chmod 755 blib/arch/auto/IO/Tty/Tty.so

cp Tty.bs blib/arch/auto/IO/Tty/Tty.bs

chmod 644 blib/arch/auto/IO/Tty/Tty.bs

Manifying blib/man3/IO::Tty::Constant.3

Manifying blib/man3/IO::Tty.3

Manifying blib/man3/IO::Pty.3

[root@test IO-Tty-1.09]# make test

PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t

t/test.t .. # Configuration: -DHAVE_DEV_PTMX -DHAVE_GETPT -DHAVE_GRANTPT -DHAVE_OPENPTY -DHAVE_POSIX_OPENPT -DHAVE_PTSNAME -DHAVE_PTSNAME_R -DHAVE_PTY_H -DHAVE_SIGACTION -DHAVE_SYS_STROPTS_H -DHAVE_TERMIOS_H -DHAVE_TERMIO_H -DHAVE_TTYNAME -DHAVE_UNLOCKPT

# Checking for appropriate ioctls:

# TIOCNOTTY

# TIOCSCTTY

trying posix_openpt()...

trying grantpt()...

trying unlockpt()...

trying ptsname_r()...

trying to open /dev/pts/2...

trying to I_PUSH ptem...

trying to I_PUSH ldterm...

trying to I_PUSH ttcompat...

t/test.t .. 1/5 #  === Checking if child gets pty as controlling terminal

trying posix_openpt()...

trying grantpt()...

trying unlockpt()...

trying ptsname_r()...

trying to open /dev/pts/2...

trying to I_PUSH ptem...

trying to I_PUSH ldterm...

trying to I_PUSH ttcompat...

t/test.t .. 3/5

WARNING: when the client closes the slave pty, the master gets an error

(undef return value and $! eq "Input/output error")

instead of EOF (0 return value).  Please be sure to handle this

in your application (Expect already does).

# Checking basic functionality and how your ptys handle large strings...

#   This test may hang on certain systems, even though it is protected

#   by alarm().  If the counter stops, try Ctrl-C, the test should continue.

trying posix_openpt()...

trying grantpt()...

trying unlockpt()...

trying ptsname_r()...

trying to open /dev/pts/2...

trying to I_PUSH ptem...

trying to I_PUSH ldterm...

trying to I_PUSH ttcompat...

# isatty($master): YES

# isatty($slave): YES

# Child PID = 19271

# Good, your raw ptys can handle at least 530 bytes at once.

t/test.t .. 5/5 Slave got EOF at line 530, byte 0.

t/test.t .. ok

All tests successful.

Files=1, Tests=5,  4 wallclock secs ( 0.04 usr  0.01 sys +  0.22 cusr  0.77 csys =  1.04 CPU)

Result: PASS

[root@test IO-Tty-1.09]# make install

Files found in blib/arch: installing files in blib/lib into architecture dependent library tree

Installing /usr/local/lib/perl5/site_perl/5.10.1/x86_64-linux/auto/IO/Tty/Tty.bs

Installing /usr/local/lib/perl5/site_perl/5.10.1/x86_64-linux/auto/IO/Tty/Tty.so

Installing /usr/local/lib/perl5/site_perl/5.10.1/x86_64-linux/IO/Tty.pm

Installing /usr/local/lib/perl5/site_perl/5.10.1/x86_64-linux/IO/Pty.pm

Installing /usr/local/lib/perl5/site_perl/5.10.1/x86_64-linux/IO/Tty/Constant.pm

Installing /usr/local/share/man/man3/IO::Tty::Constant.3

Installing /usr/local/share/man/man3/IO::Tty.3

Installing /usr/local/share/man/man3/IO::Pty.3

Appending installation info to /usr/local/lib/perl5/5.10.1/x86_64-linux/perllocal.pod

[root@test IO-Tty-1.09]#

三、打包perl脚本

典型用法

方法1

- Stand-alone setup

% pp -o packed.exe source.pl # makes packed.exe

# Now, deploy 'packed.exe' to target machine...

$ packed.exe   # run it

[root@test test]# pp -o packed opensource.pl

[root@test test]# ls

packed  opensource.pl

两种情况适用:

1)系统中没有Perl程序及相关包;

2)Perl版本不同,且脚本内关联包不存在时,亦可运行。

方法2

- Perl interpreter only, without core modules:

% pp -B -p source.pl  # makes source.par

% par.pl -B -Opacked.pl source.par  # makes packed.pl

# Now, deploy 'packed.pl' to target machine...

$ perl packed.pl   # run it

[root@test test]# pp -B -p opensource.pl

[root@test test]# ll

total 1740

-rw-r--r-- 1 root root 1773299 Oct  9 14:17 a.par

-rwxr-xr-x 1 root root    1176 Oct  9 14:14 opensource.pl

[root@test test]# par.pl -B -Opacked.pl a.par

[root@test test]# ll

total 4472

-rw-r--r-- 1 root root 1773299 Oct  9 14:17 a.par

-rwxr-xr-x 1 root root 2791806 Oct  9 14:17 packed.pl

-rwxr-xr-x 1 root root    1176 Oct  9 14:14 opensource.pl

[root@test test]#

方法3

- Perl with core module installed:

% pp -p source.pl   # makes source.par

% par.pl -b -Opacked.pl source.par # makes packed.pl

# Now, deploy 'packed.pl' to target machine...

$ perl packed.pl   # run it

测试结果失败,无法在其他没有模块的机器上运行

perl linux 独立运行,Perl脚本打包为独立执行程序相关推荐

  1. 在linux上运行python脚本(安装pytorch踩坑记录,pyinstaller使用方式,构建docker镜像)

    背景 脚本需要导入pytorch等库才能运行. 脚本在windows上运行成功,尝试放到linux上运行. linux服务器内存较小. 方法一:在linux上安装依赖 把脚本放到linux上,直接安装 ...

  2. perl linux 遍历文件,Perl/Linux过滤大文件与其他文件的内容

    我正在使用另一个较小文件的内容过滤580 MB文件. File1中(较小的文件)Perl/Linux过滤大文件与其他文件的内容 chr start End 1 123 150 2 245 320 2 ...

  3. Linux定时运行Python脚本

    Linux–CentOS定时运行Python脚本 最近公司的项目开始进入运营阶段,数据库的记录也开始多了起来.看了postgresql的自动清理好像不太符合需求,暂定对接口请求记录表保留3个月内的记录 ...

  4. Linux nohup运行.sh脚本文件

    记录一下,在Linux 终端运行.sh文件,以前只在终端nohup过.py文件. nohup python -u Job.py >/dev/null 2>error.log 2>&a ...

  5. linux运行时命令找不到,linux - 在运行Bash脚本时找不到命令,但是在直接运行命令时有效 - 堆栈内存溢出...

    我一直在使用letencrypt为我的网站生成SSL证书,更具体地说是letencrypt_webfaction. 当我在项目中运行此命令时,它可以工作 letsencrypt_webfaction ...

  6. Linux关机运行的脚本,Linux关机时执行指定脚本功能实现

    1.关机时执行某个脚本的具体思路 (1)在文件夹/etc/init.d/下创建关机时需要执行的脚本file_name: (2)分别在文件夹/etc/rc0.d/和/etc/rc6.d/下创建该该脚本文 ...

  7. Linux下运行Jmeter脚本

    一.在Linux服务器先安装sdk 1. 下载JDK Java JDK是区分32位和64位的,所以在安装JDK之前需要首先判断一下我们Linux是哪一个版本的,在linux上通过执行以下命令: cat ...

  8. 征服Perl——Linux下安装Perl——里程碑M2

    1 从Internet上download下来perl的安装包,是linux下的. 2 传到我的linux下 3 tar -zxvf perl 4 cd perl 5 sh configure -de ...

  9. Linux定时运行程序脚本

    项目开发中经常需要用将某个脚本定时运行从而避免其运行并不会影响到其他程序.虽说可以在脚本中利用sleep命令来做这一点,Linux自带了crontab命令可以很好的执行这一操作. 比如我们有名为som ...

最新文章

  1. break 与continue 语句
  2. 图像识别(2)—验证码篇
  3. 中国电信:1月5G套餐用户数净增826万户
  4. 隐藏java_Java方法隐藏
  5. Java中4种引用类型笔记
  6. 在Windows Server 2008中安装Exchange Server 2007 SP1
  7. 基于ace admin 的左侧菜单及tab,tab支持右键菜单及与左侧菜单联动
  8. mysql2008安装失败_sql server 2008为什么会安装失败 sql2008安装失败解决办法
  9. matlab对5个矩阵循环求均值,MATLAB循环求数组的平均值 每隔几个数据求一下平均值...
  10. 华为路由器ip地址和mac地址绑定命令
  11. 美国计算机专业研究生学制几年,美国硕士学制:美国硕士读几年毕业
  12. android 自定义控件 书籍,android整理之自定义控件
  13. python暂停和恢复按钮,Python:如何暂停和恢复线程
  14. ios设置tabbar背景颜色_IOS UITabBarViewController 修改背景颜色
  15. 织梦CMS插件-支持dedeCMS各大主题
  16. 使用PIXI制作简单canvas逐帧动画的心得
  17. 信道容量受哪三个要素_连续信道容量与
  18. Scratch五子棋
  19. Data-driven methods for solving algebra word problems论文阅读
  20. android webview崩溃,Android-未知的webview崩溃原因

热门文章

  1. 把自定义类实例存储到LSO
  2. Python是编译运行的
  3. CCF202009-5 密信与计数【AC自动机】(100分题解链接)
  4. ACM程序设计基础(1)题解
  5. 二叉堆(binary heap)—— 优先队列的实现
  6. 精度、误差与分辨率的研究
  7. 物理学基石 —— 麦克斯韦方程组
  8. 电学 —— 家庭用电中的电学现象
  9. 强悍的 Linux —— 权限管理(组及用户管理)
  10. Python 基础 —— Python程序员常犯的那些错误