しかし、通常のCentOS 7でも同じ手順でインストールの作業はできると思う。
一部、Dockerコンテナにまつわる作業が混ざっています。
(警告)
ここで作成しているDockerコンテナは、信頼のおけるローカルネットワークのみで動作するホストで運用するものとして構築している。
ホスト上のいずれかのネットワークインターフェイスがインターネットに直接接している場合、このコンテナの運用はセキュリティの観点から非常に危険なので動作させてはいけない。
(インターネットに直に接している場合、Dockerのデフォルトではiptablesを書き換えて外部からのアクセスを許してしまうことになってしまうため厳禁である。)
■必要なファイルのダウンロード
http://taku910.github.io/mecab/#download から次の3つのファイルを、Dockerホストにダウンロードしておいた。
1、MeCab 本体(mecab-0.996.tar.gz)
2、MeCab 用の辞書IPA 辞書(mecab-ipadic-2.7.0-20070801.tar.gz)
3、perl バインディング(mecab-perl-0.996.tar.gz)
■設定するコンテナの起動
以下で使用するDockerコンテナは、
「【Linux CentOS 7】(ベースコンテナの作成)SSH接続可能なDockerコンテナでの日本用ロケールの有効化と検証(man,dateの日本語表示)」で作成したイメージから生成したものである。
これは日本のロケールを利用できるようにしたものである。
またSSH接続も利用できるように構成している。
このイメージからコンテナを起動した。
(SSH接続のためホスト側222番ポートをコンテナの22番へ通している。)
(インターネットに直に接している場合、Dockerのデフォルトではiptablesを書き換えて外部からのアクセスを許してしまうことになってしまうため厳禁である。)
# docker run --privileged -d -p 222:22 --name centos7-popfile image-centos7-ja /sbin/init
■perlとperlモジュールのインストール
次のページを参考に行った。
ただし、perlモジュールのインストール手順が少し異なった。
「【Linux CentOS 6.5 64bit minimal】 POPFileインストール手順 (依存PerlモジュールをYUMで導入し、POPFileの起動と初期設定を完了させる)」
○perlのインストール
[root@2d82556b4724 ~]# yum install perl
Total download size: 11 M
Installed size: 36 M
Installed:
perl.x86_64 4:5.16.3-292.el7
Dependency Installed:
perl-Carp.noarch 0:1.26-244.el7
perl-Encode.x86_64 0:2.51-7.el7
perl-Exporter.noarch 0:5.68-3.el7
perl-File-Path.noarch 0:2.09-2.el7
perl-File-Temp.noarch 0:0.23.01-3.el7
perl-Filter.x86_64 0:1.49-3.el7
perl-Getopt-Long.noarch 0:2.40-3.el7
perl-HTTP-Tiny.noarch 0:0.033-3.el7
perl-PathTools.x86_64 0:3.40-5.el7
perl-Pod-Escapes.noarch 1:1.04-292.el7
perl-Pod-Perldoc.noarch 0:3.20-4.el7
perl-Pod-Simple.noarch 1:3.28-4.el7
perl-Pod-Usage.noarch 0:1.63-3.el7
perl-Scalar-List-Utils.x86_64 0:1.27-248.el7
perl-Socket.x86_64 0:2.010-4.el7
perl-Storable.x86_64 0:2.45-3.el7
perl-Text-ParseWords.noarch 0:3.29-4.el7
perl-Time-HiRes.x86_64 4:1.9725-3.el7
perl-Time-Local.noarch 0:1.2300-2.el7
perl-constant.noarch 0:1.27-2.el7
perl-libs.x86_64 4:5.16.3-292.el7
perl-macros.x86_64 4:5.16.3-292.el7
perl-parent.noarch 1:0.225-244.el7
perl-podlators.noarch 0:2.5.1-3.el7
perl-threads.x86_64 0:1.87-4.el7
perl-threads-shared.x86_64 0:1.43-6.el7
Complete!
○popfileが必要とするperlモジュールのインストール
次の三つについては、既にインストールされていたことがわかった。
[root@2d82556b4724 ~]# perl -M-MIME::Base64 -e 'print $MIME::Base64::VERSION'
3.13[root@2d82556b4724 ~]# perl -M-MIME::QuotedPrint -e 'print $MIME::QuotedPrinERSION'
3.13[root@2d82556b4724 ~]# perl -M-Encode -e 'print $Encode::VERSION'
2.51
したがって、popfileを利用するためにインストールすべきモジュールは次の通りである。
(1) DBI
(2) DBD::SQLite
(3) HTML::Tagset
(4) Date::Parse (all platforms except Windows)
(5) HTML::Template
(6) IO::Socket::Socks (if you want to use a SOCKS proxy)
(7) Net::SSLeay (if you want to use SSL)
(8) IO::Socket::SSL (if you want to use SSL)
(9) SOAP::Lite (if you want to use XMLRPC)
(10) Digest::base
(11) Digest::MD5
○一つ一つyumを使ってインストールを行った。
(1) DBI
[root@2d82556b4724 ~]# yum install perl-DBI
Total download size: 1.3 M
Installed size: 3.2 M
Installed:
perl-DBI.x86_64 0:1.627-4.el7
Dependency Installed:
perl-Compress-Raw-Bzip2.x86_64 0:2.061-3.el7
perl-Compress-Raw-Zlib.x86_64 1:2.061-4.el7
perl-Data-Dumper.x86_64 0:2.145-3.el7
perl-IO-Compress.noarch 0:2.061-2.el7
perl-Net-Daemon.noarch 0:0.48-5.el7
perl-PlRPC.noarch 0:0.2020-14.el7
Complete!
(2) DBD::SQLite
[root@2d82556b4724 ~]# yum install perl-DBD-SQLite
Total download size: 1.3 M
Installed size: 5.4 M
Installed:
perl-DBD-SQLite.x86_64 0:1.39-3.el7
Complete!
(3) HTML::Tagset
[root@2d82556b4724 ~]# yum install perl-HTML-Tagset
Total download size: 18 k
Installed size: 19 k
Installed:
perl-HTML-Tagset.noarch 0:3.20-15.el7
Complete!
(4) Date::Parse (all platforms except Windows)
[root@2d82556b4724 ~]# yum install perl-DateTime-Format-DateParse
Total download size: 2.5 M
Installed size: 14 M
Installed:
perl-DateTime-Format-DateParse.noarch 0:0.05-5.el7
Dependency Installed:
perl-Class-Load.noarch 0:0.20-3.el7
perl-Class-Singleton.noarch 0:1.4-14.el7
perl-Data-OptList.noarch 0:0.107-9.el7
perl-DateTime.x86_64 2:1.04-6.el7
perl-DateTime-Locale.noarch 0:0.45-6.el7
perl-DateTime-TimeZone.noarch 0:1.70-1.el7
perl-List-MoreUtils.x86_64 0:0.33-9.el7
perl-Module-Implementation.noarch 0:0.06-6.el7
perl-Module-Runtime.noarch 0:0.013-4.el7
perl-Package-DeprecationManager.noarch 0:0.13-7.el7
perl-Package-Stash.noarch 0:0.34-2.el7
perl-Package-Stash-XS.x86_64 0:0.26-3.el7
perl-Params-Util.x86_64 0:1.07-6.el7
perl-Params-Validate.x86_64 0:1.08-4.el7
perl-Sub-Install.noarch 0:0.926-6.el7
perl-TimeDate.noarch 1:2.30-2.el7
perl-Try-Tiny.noarch 0:0.12-2.el7
Complete!
(5) HTML::Template
epelリポジトリが必要なので導入しておく。
[root@2d82556b4724 ~]# yum install epel-release
Installed:[root@2d82556b4724 ~]# yum install perl-HTML-Template
epel-release.noarch 0:7-11
Complete!
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
perl-HTML-Template noarch 2.95-1.el7 epel 76 k
Installing for dependencies:
perl-Digest noarch 1.17-245.el7 base 23 k
perl-Digest-MD5 x86_64 2.52-3.el7 base 30 k
Transaction Summary
================================================================================
Install 1 Package (+2 Dependent packages)
Total download size: 129 k
Installed size: 274 k
Complete!
(6) IO::Socket::Socks (if you want to use a SOCKS proxy)
Socksを用いない場合は不要なのでパスした。
(7) Net::SSLeay (if you want to use SSL)
[root@2d82556b4724 ~]# yum install perl-Net-SSLeay
Total download size: 285 k
Installed size: 991 k
Installed:
perl-Net-SSLeay.x86_64 0:1.55-6.el7
Complete!
(8) IO::Socket::SSL (if you want to use SSL)
[root@2d82556b4724 ~]# yum install perl-IO-Socket-SSL
Total download size: 1.1 M
Installed size: 2.3 M
Installed:
perl-IO-Socket-SSL.noarch 0:1.94-7.el7
Dependency Installed:
make.x86_64 1:3.82-23.el7 openssl.x86_64 1:1.0.2k-12.el7
perl-IO-Socket-IP.noarch 0:0.21-5.el7 perl-Mozilla-CA.noarch 0:20130114-5.el7
perl-Net-LibIDN.x86_64 0:0.12-15.el7
Complete!
(9) SOAP::Lite (if you want to use XMLRPC)
これもepelリポジトリが必要である。
[root@2d82556b4724 ~]# yum install perl-SOAP-Lite
================================================================================
Package Arch Version Repository
Size
================================================================================
Installing:
perl-SOAP-Lite noarch 1.10-1.el7 epel 293 k
Installing for dependencies:
mailcap noarch 2.1.41-2.el7 base 31 k
perl-Business-ISBN noarch 2.06-2.el7 base 25 k
perl-Business-ISBN-Data noarch 20120719.001-2.el7 base 24 k
perl-Class-Inspector noarch 1.28-2.el7 base 31 k
perl-Convert-BinHex noarch 1.119-20.el7 epel 44 k
perl-Email-Date-Format noarch 1.002-15.el7 epel 17 k
perl-Encode-Locale noarch 1.03-5.el7 base 16 k
perl-File-Listing noarch 6.04-7.el7 base 13 k
perl-HTML-Parser x86_64 3.71-4.el7 base 115 k
perl-HTTP-Cookies noarch 6.01-5.el7 base 26 k
perl-HTTP-Daemon noarch 6.01-7.el7 base 21 k
perl-HTTP-Date noarch 6.02-8.el7 base 14 k
perl-HTTP-Message noarch 6.06-6.el7 base 82 k
perl-HTTP-Negotiate noarch 6.01-5.el7 base 17 k
perl-IO-HTML noarch 1.00-2.el7 base 23 k
perl-IO-SessionData noarch 1.03-1.el7 epel 8.5 k
perl-LWP-MediaTypes noarch 6.02-2.el7 base 24 k
perl-MIME-Lite noarch 3.030-1.el7 epel 96 k
perl-MIME-Types noarch 1.38-2.el7 epel 38 k
perl-MIME-tools noarch 5.505-1.el7 epel 256 k
perl-MailTools noarch 2.12-2.el7 base 108 k
perl-Net-HTTP noarch 6.06-2.el7 base 29 k
perl-Net-SMTP-SSL noarch 1.01-13.el7 base 9.1 k
perl-URI noarch 1.60-9.el7 base 106 k
perl-WWW-RobotRules noarch 6.02-5.el7 base 18 k
perl-XML-Parser x86_64 2.41-10.el7 base 223 k
perl-libwww-perl noarch 6.05-2.el7 base 205 k
Transaction Summary
================================================================================
Install 1 Package (+27 Dependent packages)
Total download size: 1.9 M
Installed size: 4.2 M
Is this ok [y/d/N]:y
Complete!
(10) Digest::base
[root@2d82556b4724 ~]# yum install perl-Digest
インストール済みとなった。
Package perl-Digest-1.17-245.el7.noarch already installed and latest version
Nothing to do
(11) Digest::MD5
[root@2d82556b4724 ~]# yum install perl-Digest-MD5
Package perl-Digest-MD5-2.52-3.el7.x86_64 already installed and latest version
Nothing to do
■その他必要なツールをインストールした
[root@2d82556b4724 ~]# yum install gcc gcc-c++
Total download size: 40 M
Installed size: 84 M
Dependency Installed:
cpp.x86_64 0:4.8.5-28.el7_5.1
glibc-devel.x86_64 0:2.17-222.el7
glibc-headers.x86_64 0:2.17-222.el7
kernel-headers.x86_64 0:3.10.0-862.14.4.el7
libgomp.x86_64 0:4.8.5-28.el7_5.1
libmpc.x86_64 0:1.0.1-3.el7
libstdc++-devel.x86_64 0:4.8.5-28.el7_5.1
mpfr.x86_64 0:3.1.1-4.el7
Complete!
[root@2d82556b4724 ~]# yum install wget
Installed:
wget.x86_64 0:1.14-15.el7_4.1
Complete!
■mecabのインストール
○mecabに関する3つのファイルのコピー
冒頭に挙げたページからmecabに関する3つのファイルをダウンロードしDockerホスト側に、保存しておいた。
それをコンテナにコピーした。
docker cp ではワイルドカードは使えなかった。
2d82556b4724は、コンテナIDである。
/root/software/popfile/mecab/ は予めコンテナに作成した。
ホストからコンテナへのコピー作業
# docker cp /mecab-0.996.tar.gz 2d82556b4724:/root/software/popfile/mecab/
# docker cp /mecab-ipadic-2.7.0-20070801.tar.gz 2d82556b4724:/root/software/popfile/mecab/
# docker cp /mecab-perl-0.996.tar.gz 2d82556b4724:/root/software/popfile/mecab/
コピーされたファイルの確認
[root@2d82556b4724 mecab]# ls
mecab-0.996.tar.gz mecab-ipadic-2.7.0-20070801.tar.gz
○mecab本体のインストール
[root@2d82556b4724 mecab-0.996]# tar -zxvf mecab-0.996.tar.gz
[root@2d82556b4724 mecab-0.996]# cd mecab-0.996
[root@2d82556b4724 mecab-0.996]# ./configure[root@2d82556b4724 mecab-0.996]# make
[root@2d82556b4724 mecab-0.996]# make install
○mecab辞書のインストール
[root@2d82556b4724 mecab-0.996]# cd ..
[root@2d82556b4724 mecab]# tar -zxvf mecab-ipadic-2.7.0-20070801.tar.gz
[root@2d82556b4724 mecab]# cd mecab-ipadic-2.7.0-20070801
[root@2d82556b4724 mecab-ipadic-2.7.0-20070801]# ./configure --with-charset=utf8
[root@2d82556b4724 mecab-ipadic-2.7.0-20070801]# make
done![root@2d82556b4724 mecab-ipadic-2.7.0-20070801]# make install
echo To enable dictionary, rewrite /usr/local/etc/mecabrc as \"dicrc = /usr/local/lib/mecab/dic/ipadic\"
To enable dictionary, rewrite /usr/local/etc/mecabrc as "dicrc = /usr/local/lib/mecab/dic/ipadic"
○mecabの動作テスト
[root@2d82556b4724 mecab-ipadic-2.7.0-20070801]# mecab
日本語の文を適当に入力してエンターを押すと自動的に次のように解析された。
テスト中ですCTRL+cで抜ける。
テスト 名詞,サ変接続,*,*,*,*,テスト,テスト,テスト
中 名詞,接尾,副詞可能,*,*,*,中,チュウ,チュー
です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
EOS
^C
○mecab-perl-bindのインストール
[root@2d82556b4724 mecab-ipadic-2.7.0-20070801]# cd ..
[root@2d82556b4724 mecab]# tar -zxvf mecab-perl-0.996.tar.gz
[root@2d82556b4724 mecab]# cd mecab-perl-0.996
[root@2d82556b4724 mecab-perl-0.996]# yum install perl-ExtUtils-MakeMaker
[root@2d82556b4724 mecab-perl-0.996]# perl Makefile.PL
Checking if your kit is complete...
Looks good
Writing Makefile for MeCab
[root@2d82556b4724 mecab-perl-0.996]# make
[root@2d82556b4724 mecab-perl-0.996]# make install
Files found in blib/arch: installing files in blib/lib into architecture dependent library tree
Installing /usr/local/lib64/perl5/auto/MeCab/MeCab.so
Installing /usr/local/lib64/perl5/auto/MeCab/MeCab.bs
Installing /usr/local/lib64/perl5/MeCab.pm
Appending installation info to /usr/lib64/perl5/perllocal.pod
■popfile本体の導入
○準備
[root@2d82556b4724 mecab-perl-0.996]# cd ..
[root@2d82556b4724 mecab]# cd ..
[root@2d82556b4724 popfile]# mkdir popfile-1.1.3
[root@2d82556b4724 popfile]# cd popfile-1.1.3
[root@2d82556b4724 popfile-1.1.3]# yum install unzip
Total download size: 170 k
Installed size: 365 k
Installed:
unzip.x86_64 0:6.0-19.el7
Complete!
○popfileをダウンロードし展開した。
[root@2d82556b4724 popfile-1.1.3]# wget http://getpopfile.org/downloads/popfile-1.1.3.zip
popfile-1.1.3.zip’ saved [523431/523431]
[root@2d82556b4724 popfile-1.1.3]# unzip popfile-1.1.3.zip
[root@2d82556b4724 popfile-1.1.3]# ls
Classifier bayes.pl license popfile-1.1.3.zip v1.1.3.change
POPFile black.gif otto.gif popfile.pck v1.1.3.change.nihongo
Proxy favicon.ico otto.png popfile.pl
Services insert.pl pipe.pl skins
UI languages pix.gif stopwords
○popfileの設定
popfileを一度起動して設定ファイルを生成させた。
[root@2d82556b4724 popfile-1.1.3]# perl ./popfile.pl
POPFile Engine loading
Loading...
{core: config history logger mq}
{classifier: bayes wordmangle}
{interface: html xmlrpc}
{proxy: nntp pop3 smtp}
{services: imap}
POPFile Engine v1.1.3 starting
Initializing...
{core: config history logger mq}
{classifier: bayes wordmangle}
{interface: html xmlrpc}
{proxy: nntp pop3 smtp}
{services: imap}
Starting...
{core: config history logger mq}
{classifier: bayes wordmangle}
{interface: html}
{proxy: pop3}
{services:}
POPFile Engine v1.1.3 running
^C ←ctrl+cを入力して一旦終了させた。
POPFile Engine v1.1.3 stopping
Stopping...
{classifier: bayes wordmangle}
{core: config history logger mq}
{interface: html}
{proxy: pop3}
{services:}
POPFile Engine v1.1.3 terminated
設定ファイルの確認
[root@2d82556b4724 popfile-1.1.3]# ls
Classifier favicon.ico pipe.pl popfile1542758400.log
POPFile insert.pl pix.gif skins
Proxy languages popfile-1.1.3.zip stopwords
Services license popfile.cfg v1.1.3.change
UI messages popfile.db v1.1.3.change.nihongo
bayes.pl otto.gif popfile.pck
black.gif otto.png popfile.pl
必要最低限の設定を行った。
[root@2d82556b4724 popfile-1.1.3]# vi popfile.cfg
bayes_nihongo_parser MeCab ←大文字小文字に注意。さもなければ動作せず文字化けする。
html_language Nihongo ←日本語メールの処理、GUIの日本語化
html_local 0 ←127.0.0.1以外のインターフェイスへのアクセスでもGUIにアクセス許可(ただし、予めIPフィルタの設定を必ず適切に行っておくこと)
html_port 8081 ←GUIアクセスのためのTCPポートの設定
以上で、popfileの設定は完了した。
■popfileの起動(コンテナのイメージ化を伴う)
popfileを起動してhttp接続するためには、コンテナに8081ポートを通す必要がある。
そのため、一旦コンテナを終了し、ポートの設定を加えて起動する。
○コンテナの終了
[root@2d82556b4724 popfile-1.1.3]# poweroff
以下は、Dockerホストでの作業である。
○コンテナをコミットして、イメージ化を行った。
2d82556b4724はコンテナIDである。
2d82556b4724はコンテナIDである。
[root@localhost ~]# docker commit 2d82556b4724 image-centos7-popfile-20181122
○イメージを使用して、コンテナを生成し動作させた。
8081ポートを開いた。
(インターネットに直に接している場合、Dockerのデフォルトではiptablesを書き換えて外部からのアクセスを許してしまうことになってしまうため厳禁である。)
8081ポートを開いた。
(インターネットに直に接している場合、Dockerのデフォルトではiptablesを書き換えて外部からのアクセスを許してしまうことになってしまうため厳禁である。)
[root@localhost ~]# docker run --privileged -d -p 222:22 -p 8081:8081 --name centos7-popfile-test image-centos7-popfile-20181122 /sbin/init
991e42c74bc86b9244ffda479c5e2786808525408bcb5cb0fad8c6d63c606a3a
○コンテナにSSH接続を行った。
$ ssh -p 222 root@192.168.10.3
root@192.168.10.3's password:
以下はコンテナでの作業である。
○popfileの起動
ディレクトリへ移動した。
[root@991e42c74bc8 ~]# cd software/popfile/popfile-1.1.3/
[root@991e42c74bc8 popfile-1.1.3]# ls
Classifier Services black.gif languages otto.gif pix.gif popfile.db popfile1542758400.log v1.1.3.change
POPFile UI favicon.ico license otto.png popfile-1.1.3.zip popfile.pck skins v1.1.3.change.nihongo
Proxy bayes.pl insert.pl messages pipe.pl popfile.cfg popfile.pl stopwords
バックグラウンドで動作させた。
[root@991e42c74bc8 popfile-1.1.3]# perl ./popfile.pl &
[1] 161
[root@991e42c74bc8 popfile-1.1.3]#
POPFile Engine loading
Loading...
{core: config history logger mq}
{classifier: bayes wordmangle}
{interface: html xmlrpc}
{proxy: nntp pop3 smtp}
{services: imap}
POPFile Engine v1.1.3 starting
Initializing...
{core: config history logger mq}
{classifier: bayes wordmangle}
{interface: html xmlrpc}
{proxy: nntp pop3 smtp}
{services: imap}
Starting...
{core: config history logger mq}
{classifier: bayes wordmangle}
{interface: html}
{proxy: pop3}
{services:}
POPFile Engine v1.1.3 running
[root@991e42c74bc8 popfile-1.1.3]#
以上
<参考>
・【Linux CentOS 6.5 64bit minimal】 POPFileインストール手順 (依存PerlモジュールをYUMで導入し、POPFileの起動と初期設定を完了させる)
< http://akira-arets.blogspot.com/2014/04/centos65minimal-popfile-mecab-installing.html > 2018年11月22日
・オフライン環境でCentOS7のパッケージをインストールする
< https://qiita.com/goforbroke/items/aafb1cb0549ee90c2d70 > 2018年11月22日
・Dockerでホストとコンテナ間でのファイルコピー
< https://qiita.com/gologo13/items/7e4e404af80377b48fd5 > 2018年11月22日