2019.03.15
古いシステムをそのままCentOS6.10上で動かす必要がありyumではインストールできなかったので
ソースコードからインストールしました。
まずは、https://www.cpan.org/src にブラウザでアクセスしてみて
該当のソースファイルがどれかを確認しておきます。
1 2 | cd /tmp wget https://www.cpan.org/src/perl-5.8.8.tar.gz |
これで/tmpディレクトリに、perl-5.8.8.tar.gzをダウンロードする事ができました。
続けて、ダウンロードしたファイルを解凍して展開します。
解凍すると /tmpディレクトリにperl-5.8.8ディレクトリが作成され、そこにソース一式が展開されます。
1 | tar zxvf perl-5.8.8.tar.gz |
解凍したディレクトリに移動しconfigure.gnuを実行します。
-Dprefixには「/usr/bin/perl5.8.8」を指定しています。
これは、/usr/bin直下のperl5.8.8というディレクトリにインストールされることを意味しています。
このようにしておけば、perlのバージョンを変更したいときに簡単に切り替えられるようになります。
1 2 | cd /tmp/perl-5.8.8 ./configure.gnu -Dprefix=/usr/bin/perl5.8.8 -Dusethreads -Dlibpth="/usr/local/lib64 /lib64 /usr/lib64 /usr/local/lib /lib /usr/lib" -ds && make |
実行すると以下のようなエラーが出ました。
どうやら Cコンパイラがインストールされていなかったようです。
1 2 3 4 5 6 7 8 9 10 | ・・・ Use which C compiler? [cc] ./trygcc: line 10: cc: コマンドが見つかりません Uh-oh, the C compiler 'cc' doesn't seem to be working. ./checkcc: line 10: cc: コマンドが見つかりません Uh-oh, the C compiler 'cc' doesn't seem to be working. You need to find a working C compiler. Either (purchase and) install the C compiler supplied by your OS vendor, or for a free C compiler try http://gcc.gnu.org/ I cannot continue any further, aborting. |
Cコンパイラをインストールし、再度、上記のconfigure.gnuを実行。
1 | yum install gcc |
今度は動き出し、ずらずらとログが表示されます。
しかし、またしてもエラーが表示されました。
1 2 3 4 5 6 | If you compile perl5 on a different machine or from a different object directory, copy the Policy.sh file from this object directory to the new one before you run Configure -- this will help you with most of the policy defaults. make: *** `miniperlmain.o' に必要なターゲット `' を make するルールがありません. 中止. |
このエラーに対応する方法は、 makedepend.SHファイルの170行目に以下のように1行追加します。
1 | $ vi makedepend.SH |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 165 -e '1d' \ 166 -e '/^#.*<stdin>/d' \ 167 -e '/^#.*<builtin>/d' \ 168 -e '/^#.*<built-in>/d' \ 169 -e '/^#.*<command line>/d' \ 170 -e '/^#.*<command-line>/d' \ 171 -e '/^#.*"-"/d' \ 172 -e '/: file path prefix .* never used$/d' \ 173 -e 's#\.[0-9][0-9]*\.c#'"$file.c#" \ 174 -e 's/^[ ]*#[ ]*line/#/' \ 175 -e '/^# *[0-9][0-9]* *[".\/]/!d' \ 176 -e 's/^.*"\(.*\)".*$/'$filebase'\$(OBJ_EXT): \1/' \ 177 -e 's/^# *[0-9][0-9]* \(.*\)$/'$filebase'\$(OBJ_EXT): \1/' \ 178 -e 's|: \./|: |' \ 179 -e 's|\.c\.c|.c|' $uwinfix .cout .cerr| \ |
再度、上記のconfigure.gnuを実行。 次は以下のエラーが発生しました。 どうやら、今度はpage.hが無いと怒られました。
1 2 3 4 5 6 7 | cp SysV.pm ../../../lib/IPC/SysV.pm ../../../miniperl "-I../../../lib" "-I../../../lib" ../../../lib/ExtUtils/xsubpp -typemap ../../../lib/ExtUtils/typemap SysV.xs > SysV.xsc && mv SysV.xsc SysV.c cc -c -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -O2 -DVERSION=\"1.04\" -DXS_VERSION=\"1.04\" -fpic "-I../../.." SysV.c SysV.xs:7:25: error: asm/page.h: そのようなファイルやディレクトリはありません make[1]: *** [SysV.o] エラー 1 make[1]: ディレクトリ `/tmp/perl-5.8.8/ext/IPC/SysV' から出ます make: *** [lib/auto/IPC/SysV/SysV.so] エラー 2 |
page.hをインストールするために以下のコマンドを実行します。
1 | yum install automake gcc kernel-devel |
/usr/src/kernels/2.6.32-754.11.1.el6.x86_64/arch/x86/include/asm/ インストールが成功すると上記のディレクトリに page.hが格納されているはずです。 以下のように、シンボリックリンクを張っておきます。
1 | ln -s /usr/src/kernels/2.6.32-754.11.1.el6.x86_64/arch/x86/include/asm/page.h /usr/include/asm/page.h |
もう一度、上記のconfigure.gnuを実行。 今度はエラーが発生する事なく最後まで成功。 以下のコマンドを実行します。
1 | make test |
以下のようなエラーが表示されました。 このエラーは色々調べましたが、修正する事ができず とりあえずこのままにして先に進めることにします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | t/op/split................................ok t/op/sprintf..............................FAILED--no leader found t/op/sprintf2.............................FAILED--expected 263 tests, saw 3 t/op/srand................................ok : : : Failed 3 test scripts out of 967, 99.69% okay. ### Since not all tests were successful, you may want to run some of ### them individually and examine any diagnostic messages they produce. ### See the INSTALL document's section on "make test". ### You have a good chance to get more information by running ### ./perl harness ### in the 't' directory since most (>=80%) of the tests succeeded. ### You may have to set your dynamic library search path, ### LD_LIBRARY_PATH, to point to the build directory: ### setenv LD_LIBRARY_PATH `pwd`; cd t; ./perl harness ### LD_LIBRARY_PATH=`pwd`; export LD_LIBRARY_PATH; cd t; ./perl harness ### export LD_LIBRARY_PATH=`pwd`; cd t; ./perl harness ### for csh-style shells, like tcsh; or for traditional/modern ### Bourne-style shells, like bash, ksh, and zsh, respectively. u=0.64 s=0.43 cu=89.36 cs=9.96 scripts=967 tests=118056 make[2]: *** [_test_tty] エラー 1 make[2]: ディレクトリ `/tmp/perl-5.8.8' から出ます make[1]: *** [_test] エラー 2 make[1]: ディレクトリ `/tmp/perl-5.8.8' から出ます make: *** [test] エラー 2 |
以下のコマンドを実行してインストールします。 なんとかperl5.8.8を導入する事ができました。
1 2 | make depend && make sudo make install |
とりあえず、インストールしたディレクトリに移動して 正常に動作するかを確認してみます。
1 2 | cd /usr/bin/perl5.8.8/bin ./perl -v |
1 2 3 4 5 6 7 8 9 10 | This is perl, v5.8.8 built for x86_64-linux-thread-multi Copyright 1987-2006, 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. |
/usr/binにはすでにperlのプログラムが格納されており とりあえず、リネームして別名にします。
1 | mv perl perl_bk |
そのあとに、先ほどインストールした perl5.8.8にシンボリックリンクを張り参照できるようににします。
1 | ln -s /usr/bin/perl5.8.8/bin/perl /usr/bin/perl |
以上で導入ができました。