libre10 rhel6/7向けリポジトリ追加

後々記事を載せるつもりではいますが、open Suse Buildserviceに個人リポジトリを作成しました。

https://build.opensuse.org/project/show/home:gn64:libre10

今後はここで各ディストリ向けのパッケージングを行いたいと思います。

リポジトリはこちら

http://download.opensuse.org/repositories/home:/gn64:/libre10/

rhel7/centos7向けのrpmsに関しては動作確認を行いました。

rhel6/centos6向けは少々お待ちください。  (2014.07.19 Centos6.5にて動作確認しました)

Libre10パッケージング for Centos6.5 <3> SELinux関連

前回前々回の続きです

さて、とりあえず最低限のrpmを作ってみたはいいものの、実際にインストールしてもうまく動きません。

何が行けないのでしょうか。そうです、SELinuxのことを何も考慮していません。

SELinuxの説明に関してはgoogle先生にお任せするとしますが、

webで軽く検索するとすぐにselinux 無効と言った文言を散見することになります。

 

確かに今のままでもselinuxを無効にすれば動きますが、せっかくパッケージを作っているのだからselinuxに適応させたい!

と言うことで問題を調べてみました。

インストール直後だと

#ファイル

/var/libre10          system_u:object_r:var_t:s0
/var/tmp/libre10     unconfined_u:object_r:rpm_tmp_t:s0
#プロセス
tomcat             unconfined_u:system_r:unconfined_java_t:s0
httpd(apache)        unconfined_u:system_r:httpd_t:s0
となっていて、
  • /var/tmp/libre10にhttpdプロレスがアクセスできないこと
  • /var/libre10以下にhttpdプロセスがアクセスできないこと
  • httpdプロセスがtomcatのポートを見に行けないこと
が問題のようです。

そこでファイルを全てhttpdからアクセスできるsystem_u:object_r:httpd_sys_content_t:s0

へ変更し bool : httpd_can_network_connect を1にすることで解決しました。

該当部分だけ抜粋


%package selinux
Summary: selinux related files
Requires: libre10 = %{version}-%{release} libre10-www = %{version}-%{release}
Requires(post): policycoreutils-python
Requires(postun): policycoreutils-python
AutoReqProv: no
%description selinux
This rpm change selinux bool option httpd_can_network_connect to 1.

~~~

%post selinux
semanage fcontext -a -t httpd_sys_content_t '/var/tmp/libre10(/.*)?' 2>/dev/null || :
semanage fcontext -a -t httpd_sys_content_t '/var/libre10/db(/.*)?' 2>/dev/null || :
semanage fcontext -a -t httpd_sys_content_t '/var/libre10/pdf(/.*)?' 2>/dev/null || :
restorecon -R /var/tmp/libre10 || :
restorecon -R /var/libre10/db || :
restorecon -R /var/libre10/pdf || :
setsebool -P httpd_can_network_connect 1

%postun selinux
if [ $1 -eq 0 ] ; then
semanage fcontext -d -t httpd_sys_content_t '/var/tmp/libre10(/.*)?' 2>/dev/null || :
semanage fcontext -d -t httpd_sys_content_t '/var/libre10/db(/.*)?' 2>/dev/null || :
semanage fcontext -d -t httpd_sys_content_t '/var/libre10/pdf(/.*)?' 2>/dev/null || :
setsebool -P httpd_can_network_connect 0
fi

%files selinux

これでlibre10のパッケージングが完了しました。

 

パッケージはこちらにあります。

 

以下spec全文


%define debug_package %{nil}
%define _unpackaged_files_terminate_build 0
%define _rpmfilename %%{ARCH}/%%{NAME}-%%{VERSION}-%%{RELEASE}.%%{DISTRIBUTION}.%%{ARCH}.rpm

#please change these path
#settings for Centos6
#%define tomcat /usr/share/tomcat6
#%define tomcat_lib /usr/share/tomcat6/lib
#settings for Centos6 with EPEL
%define tomcat /etc/tomcat
%define tomcat_lib /usr/share/java/tomcat
%define tomcat_conf /etc/tomcat/Catalina/localhost
Summary: libre10 - yet another hoge -
Name: libre10
Version: 0.8.7
Release: 2
Distribution: el6.rec10
Group: Applications/Multimedia
Source: %{name}-%{version}.tar.gz
Vendor: rec10
License: GPL ver.3
URL: http://www.rec10.org/
BuildRoot: %{_tmppath}/%{name}-%{version}-buildroot
Requires(pre): libxml2 libxml2-devel libxslt libxslt-devel libyaml-devel perl-CPAN python-devel python-setuptools
Requires: python > 2.5 GraphicsMagick libjpeg poppler-utils libyaml libxml2 libxslt
Requires: gcc kernel-devel libyaml-devel libxml2-devel libxslt-devel
Requires: python-devel python-setuptools PyYAML tomcat >= 7 java >= 1.6.0 jre >= 1.6.0 libre10-www = %{version}-%{release}
AutoReqProv: no
Provides: libre10 = %{version}-%{release}

%description
libre10 is a all text search and viewing tool for pdf files.

%package www
Summary: www files for libre10
Group: Applications/Multimedia
Requires: libre10 = %{version}-%{release} httpd mod_perl perl-DBD-SQLite perl-DBI perl-CGI
Requires: perl-YAML-LibYAML perl-HTML-Template-Pro perl-File-Slurp perl-Data-Dumper-Concise
Requires: perl-JSON-XS perl-Moose perl-XML-Simple
AutoReqProv: no
%description www
libre10-www

%package selinux
Summary: selinux related files
Requires: libre10 = %{version}-%{release} libre10-www = %{version}-%{release}
Requires(post): policycoreutils-python
Requires(postun): policycoreutils-python
AutoReqProv: no
%description selinux
This rpm change selinux bool option httpd_can_network_connect to 1.
%prep
rm -rf %{buildroot}

%setup

%build

%pre
easy_install cssselect==0.8
easy_install lxml==3.2.3
easy_install pysolr==3.1.0
yes '' | cpan URI::Escape WebService::Solr
yes '' | cpan WebService::Solr

%install
%__mkdir -p %{buildroot}/usr/local/bin
%__mkdir -p %{buildroot}/usr/lib/libre10
%__mkdir -p %{buildroot}/var/tmp/libre10/cache/2000
%__mkdir -p %{buildroot}/var/tmp/libre10/cache/900
%__mkdir -p %{buildroot}/var/tmp/libre10/cache/orig
%__mkdir -p %{buildroot}/var/log
%__mkdir -p %{buildroot}/var/libre10/solr
%__mkdir -p %{buildroot}/var/libre10/db
%__mkdir -p %{buildroot}/var/libre10/pdf
%__mkdir -p %{buildroot}/etc/httpd/conf.d/
%__mkdir -p %{buildroot}/var/www/html/libre10/
%__mkdir -p %{buildroot}%{tomcat_lib}/
%__mkdir -p %{buildroot}%{tomcat_conf}/
cd index
%__cp libre10-index %{buildroot}/usr/local/bin
%__cp pdf2xml.py %{buildroot}/usr/lib/libre10
cd ../solr-4.7.1
%__cp ./example/lib/ext/*.jar %{buildroot}%{tomcat_lib}
%__cp ./example/resources/log4j.properties %{buildroot}%{tomcat_lib}
%__cp -r ./* %{buildroot}/var/libre10/solr
cd ../conf
%__cp ./libre10.conf %{buildroot}/etc/
%__cp ./schema.xml %{buildroot}/var/libre10/solr/example/solr/collection1/conf
%__cp ./solrconfig.xml %{buildroot}/var/libre10/solr/example/solr/collection1/conf
%__cp ./libre10.xml %{buildroot}%{tomcat_conf}/

cd ../www
%__cp libre10.conf %{buildroot}/etc/httpd/conf.d/
%__cp *.pl %{buildroot}/var/www/html/libre10/
%__cp -r ./template %{buildroot}/var/www/html/libre10/

%post

%clean
rm -rf %{buildroot}

%post selinux
semanage fcontext -a -t httpd_sys_content_t '/var/tmp/libre10(/.*)?' 2>/dev/null || :
semanage fcontext -a -t httpd_sys_content_t '/var/libre10/db(/.*)?' 2>/dev/null || :
semanage fcontext -a -t httpd_sys_content_t '/var/libre10/pdf(/.*)?' 2>/dev/null || :
restorecon -R /var/tmp/libre10 || :
restorecon -R /var/libre10/db || :
restorecon -R /var/libre10/pdf || :
setsebool -P httpd_can_network_connect 1

%postun selinux
if [ $1 -eq 0 ] ; then
semanage fcontext -d -t httpd_sys_content_t '/var/tmp/libre10(/.*)?' 2>/dev/null || :
semanage fcontext -d -t httpd_sys_content_t '/var/libre10/db(/.*)?' 2>/dev/null || :
semanage fcontext -d -t httpd_sys_content_t '/var/libre10/pdf(/.*)?' 2>/dev/null || :
setsebool -P httpd_can_network_connect 0
fi

%files
%defattr(-,root,root)
%attr(755,root,root)/usr/local/bin/libre10-index
/usr/lib/libre10/pdf2xml.py
%{tomcat_lib}/jcl-over-slf4j-1.6.6.jar
%{tomcat_lib}/jul-to-slf4j-1.6.6.jar
%{tomcat_lib}/log4j-1.2.16.jar
%{tomcat_lib}/slf4j-api-1.6.6.jar
%{tomcat_lib}/slf4j-log4j12-1.6.6.jar
%{tomcat_lib}/log4j.properties
%attr(-,tomcat,tomcat)/var/libre10/solr/
%{tomcat_conf}/libre10.xml
%config(noreplace) /etc/libre10.conf
/etc/httpd/conf.d/libre10.conf
/var/www/html/libre10/
%attr(777,root,root)/var/tmp/libre10/
%attr(777,root,root)/var/libre10/db
%attr(777,root,root)/var/libre10/pdf

%files www
%defattr(-,root,root,-)
%config(noreplace)/etc/httpd/conf.d/libre10.conf
%attr(755,root,users)/var/www/html/libre10/*.pl
%attr(644,root,users)/var/www/html/libre10/template/*.html

%files selinux

%changelog
* Fri Jul 04 2014 gn64 <gn64@rec10.org>
- add selinux related settings.
* Sat May 17 2014 gn64 <gn64@rec10.org>
- remove obsolute files list.
* Tue Apr 08 2014 gn64 <gn64@rec10.org>
- update solr to 4.7.1
* Tue Apr 06 2014 gn64 <gn64@rec10.org>
- make spec file.

Libre10パッケージング for Centos6.5 <2>ファイル一覧

前回依存関係について設定しました。

続いてfilesの設定です。

solrを動かす方法として、jettyとtomcatがあります。

元々はjettyを使用していたのですが、tomcatの方が管理が楽だろうということで

tomcat関連の設定をします。

solrに含まれているライブラリ、設定ファイルをtomcatのライブラリ以下に移動し、

tomcat用に/var/libre10フォルダを作り、関連ファイルを移動させます。(Centosには /srvが無いため仮にこうしています。良い方法はないものか・・・)


%defattr(-,root,root)   #以下のファイルのownerをroot:rootに設定し

%attr(755,root,root)/usr/local/bin/libre10-index    #各々のファイルについてパーミッションを設定

%config(noreplace) /etc/libre10.conf    #configファイルは指定しておくと

アップデート時に上書きされなくなります(置き換える代わりに~~.conf.rpmnewが作られる)

尚、/var/www/html/libre10/のように指定すると

/var/www/html/libre10/フォルダ以下のファイル/サブディレクトリが指定されます。

以上を踏まえてspecファイルは以下のようになりました。

次 : Libre10パッケージング for Centos6.5  <3> SELinux関連


%define debug_package %{nil}
%define _unpackaged_files_terminate_build 0
%define _rpmfilename %%{ARCH}/%%{NAME}-%%{VERSION}-%%{RELEASE}.%%{DISTRIBUTION}.%%{ARCH}.rpm

#please change these path
#settings for Centos6
#%define tomcat /usr/share/tomcat6
#%define tomcat_lib /usr/share/tomcat6/lib
#settings for Centos6 with EPEL
%define tomcat /etc/tomcat
%define tomcat_lib /usr/share/java/tomcat
%define tomcat_conf /etc/tomcat/Catalina/localhost
Summary: libre10 - yet another hoge -
Name: libre10
Version: 0.8.7
Release: 2
Distribution: el6.rec10
Group: Applications/Multimedia
Source: %{name}-%{version}.tar.gz
Vendor: rec10
License: GPL ver.3
URL: http://www.rec10.org/
BuildRoot: %{_tmppath}/%{name}-%{version}-buildroot
Requires(pre): libxml2 libxml2-devel libxslt libxslt-devel libyaml-devel perl-CPAN python-devel python-setuptools
Requires: python > 2.5 GraphicsMagick libjpeg poppler-utils libyaml libxml2 libxslt
Requires: gcc kernel-devel libyaml-devel libxml2-devel libxslt-devel
Requires: python-devel python-setuptools PyYAML tomcat >= 7 java >= 1.6.0 jre >= 1.6.0 libre10-www = %{version}-%{release}
AutoReqProv: no
Provides: libre10 = %{version}-%{release}

%description
libre10 is a all text search and viewing tool for pdf files.

%package www
Summary: www files for libre10
Group: Applications/Multimedia
Requires: libre10 = %{version}-%{release} httpd mod_perl perl-DBD-SQLite perl-DBI perl-CGI
Requires: perl-YAML-LibYAML perl-HTML-Template-Pro perl-File-Slurp perl-Data-Dumper-Concise
Requires: perl-JSON-XS perl-Moose perl-XML-Simple
AutoReqProv: no
%description www
libre10-www

%prep
rm -rf %{buildroot}

%setup

%build

%pre
easy_install cssselect==0.8
easy_install lxml==3.2.3
easy_install pysolr==3.1.0
yes '' | cpan URI::Escape WebService::Solr
yes '' | cpan WebService::Solr

%install
%__mkdir -p %{buildroot}/usr/local/bin
%__mkdir -p %{buildroot}/usr/lib/libre10
%__mkdir -p %{buildroot}/var/tmp/libre10/cache/2000
%__mkdir -p %{buildroot}/var/tmp/libre10/cache/900
%__mkdir -p %{buildroot}/var/tmp/libre10/cache/orig
%__mkdir -p %{buildroot}/var/log
%__mkdir -p %{buildroot}/var/libre10/solr
%__mkdir -p %{buildroot}/var/libre10/db
%__mkdir -p %{buildroot}/var/libre10/pdf
%__mkdir -p %{buildroot}/etc/httpd/conf.d/
%__mkdir -p %{buildroot}/var/www/html/libre10/
%__mkdir -p %{buildroot}%{tomcat_lib}/
%__mkdir -p %{buildroot}%{tomcat_conf}/
cd index
%__cp libre10-index %{buildroot}/usr/local/bin
%__cp pdf2xml.py %{buildroot}/usr/lib/libre10
cd ../solr-4.7.1
%__cp ./example/lib/ext/*.jar %{buildroot}%{tomcat_lib}
%__cp ./example/resources/log4j.properties %{buildroot}%{tomcat_lib}
%__cp -r ./* %{buildroot}/var/libre10/solr
cd ../conf
%__cp ./libre10.conf %{buildroot}/etc/
%__cp ./schema.xml %{buildroot}/var/libre10/solr/example/solr/collection1/conf
%__cp ./solrconfig.xml %{buildroot}/var/libre10/solr/example/solr/collection1/conf
%__cp ./libre10.xml %{buildroot}%{tomcat_conf}/

cd ../www
%__cp libre10.conf %{buildroot}/etc/httpd/conf.d/
%__cp *.pl %{buildroot}/var/www/html/libre10/
%__cp -r ./template %{buildroot}/var/www/html/libre10/

%post

%clean
rm -rf %{buildroot}

%files
%defattr(-,root,root)
%attr(755,root,root)/usr/local/bin/libre10-index
/usr/lib/libre10/pdf2xml.py
%{tomcat_lib}/jcl-over-slf4j-1.6.6.jar
%{tomcat_lib}/jul-to-slf4j-1.6.6.jar
%{tomcat_lib}/log4j-1.2.16.jar
%{tomcat_lib}/slf4j-api-1.6.6.jar
%{tomcat_lib}/slf4j-log4j12-1.6.6.jar
%{tomcat_lib}/log4j.properties
%attr(-,tomcat,tomcat)/var/libre10/solr/
%{tomcat_conf}/libre10.xml
%config(noreplace) /etc/libre10.conf
/etc/httpd/conf.d/libre10.conf
/var/www/html/libre10/
%attr(777,root,root)/var/tmp/libre10/
%attr(777,root,root)/var/libre10/db
%attr(777,root,root)/var/libre10/pdf

%files www
%defattr(-,root,root,-)
%config(noreplace)/etc/httpd/conf.d/libre10.conf
%attr(755,root,users)/var/www/html/libre10/*.pl
%attr(644,root,users)/var/www/html/libre10/template/*.html

%changelog
* Fri Jul 04 2014 gn64 <gn64@rec10.org>
- add selinux related settings.
* Sat May 17 2014 gn64 <gn64@rec10.org>
- remove obsolute files list.
* Tue Apr 08 2014 gn64 <gn64@rec10.org>
- update solr to 4.7.1
* Tue Apr 06 2014 gn64 <gn64@rec10.org>
- make spec file.

 

Libre10パッケージング for Centos6.5 <1>依存関係

rec10のパッケージングが課題山積で進んでいませんが、

libre10のパッケージングはぼちぼち進んできたので

記事にしてみます。

 

そもそも、libre10が何を使っているかと言うことですけれども

Libre10は文字データベースにsolrを使っていて、solrはtomcatもしくはjetty上で動きます。

その他に検索/管理ページにperlのcgi、index作成にpythonを使っています。

纏めると、httpdserver(apacheなど), tomcat, python, perl, スクリプトの各モジュール群 pdfからテキストを抜き出すためのソフト(poppler-utils), 画像軽量化のためのソフト群(GraphicsMagick libjpeg)

になりました。

これらをlibre10パッケージとlibre10-wwwパッケージに分けて記載します。

尚、GraphicMagickを使う関係から、標準リポジトリではパッケージが足らないため、EPELの設定済みであることを前提とします。

メインパッケージ
Requires: python > 2.5 GraphicsMagick libjpeg poppler-utils libyaml
       libxml2 libxslt
Requires: gcc kernel-devel libyaml-devel libxml2-devel libxslt-devel
Requires: python-devel python-setuptools PyYAML tomcat >= 7
      java >= 1.6.0 jre >= 1.6.0 libre10-www = %{version}-%{release}

libre10-www
Requires: libre10 = %{version}-%{release} httpd mod_perl perl-DBD-SQLite
      perl-DBI perl-CGI
Requires: perl-YAML-LibYAML perl-HTML-Template-Pro perl-File-Slurp
      perl-Data-Dumper-Concise
Requires: perl-JSON-XS perl-Moose perl-XML-Simple

libre10-wwwに大量のスクリプト関係のライブラリが入ってしまいました。

しかしlibre10-wwwはEPELパッケージングされていないライブラリも使うので、

あまり良くない事とは思いますが、cpanやpip/easy_installで関連パッケージを入れます。


%pre
easy_install cssselect==0.8
easy_install lxml==3.2.3
easy_install pysolr==3.1.0
yes '' | cpan URI::Escape WebService::Solr
yes '' | cpan WebService::Solr

lxmlはリポジトリのバージョンが古すぎるため。他のライブラリは一部動かないバージョンがあったため指定しています。

 

加えて、cpanやpip/easy_installでビルドするのに必要なライブラリのソースを依存関係に加えておきます。


Requires(pre):libxml2 libxml2-devel libxslt libxslt-devel libyaml-devel

perl-CPAN python-devel python-setuptools

とりあえずこれにて依存関係の設定はおしまいです。

ここまでのspecファイルを張っておきます。

次 : Libre10パッケージング for Centos6.5 <2>ファイル一覧


%define debug_package %{nil}
%define _unpackaged_files_terminate_build 0

#please change these path
#settings for tomcat6 for Centos6
#%define tomcat /usr/share/tomcat6
#%define tomcat_lib /usr/share/tomcat6/lib
#settings for tomcat7 in EPEL for Centos6
%define tomcat /etc/tomcat
%define tomcat_lib /usr/share/java/tomcat
%define tomcat_conf /etc/tomcat/Catalina/localhost
Summary: libre10 - yet another hoge -
Name: libre10
Version: 0.8.6
Release: 38
Group: Applications/Multimedia
Source: %{name}-%{version}.tar.gz
Vendor: rec10
License: GPL ver.3
URL: http://www.rec10.org/
BuildRoot: %{_tmppath}/%{name}-%{version}-buildroot
Requires(pre): libxml2 libxml2-devel libxslt libxslt-devel libyaml-devel perl-CPAN python-devel python-setuptools
Requires: python > 2.5 GraphicsMagick libjpeg poppler-utils libyaml libxml2 libxslt
Requires: gcc kernel-devel libyaml-devel libxml2-devel libxslt-devel
Requires: python-devel python-setuptools PyYAML tomcat >= 7 java >= 1.6.0 jre >= 1.6.0 libre10-www = %{version}-%{release}
AutoReqProv: no
Provides: libre10 = %{version}-%{release}

%description
libre10 is a all text search and viewing tool for pdf files.

%package www
Summary: www files for libre10
Group: Applications/Multimedia
Requires: libre10 = %{version}-%{release} httpd mod_perl perl-DBD-SQLite perl-DBI perl-CGI
Requires: perl-YAML-LibYAML perl-HTML-Template-Pro perl-File-Slurp perl-Data-Dumper-Concise
Requires: perl-JSON-XS perl-Moose perl-XML-Simple
AutoReqProv: no
%description www
libre10-www

%prep
rm -rf %{buildroot}

%setup

%build

%pre
easy_install cssselect==0.8
easy_install lxml==3.2.3
easy_install pysolr==3.1.0
yes '' | cpan URI::Escape WebService::Solr
yes '' | cpan WebService::Solr

%install
%__mkdir -p %{buildroot}/usr/local/bin
%__mkdir -p %{buildroot}/usr/lib/libre10
%__mkdir -p %{buildroot}/var/tmp/libre10/cache/2000
%__mkdir -p %{buildroot}/var/tmp/libre10/cache/900
%__mkdir -p %{buildroot}/var/tmp/libre10/cache/orig
%__mkdir -p %{buildroot}/var/log
%__mkdir -p %{buildroot}/var/libre10/solr
%__mkdir -p %{buildroot}/var/libre10/db
%__mkdir -p %{buildroot}/var/libre10/pdf
%__mkdir -p %{buildroot}/etc/httpd/conf.d/
%__mkdir -p %{buildroot}/var/www/html/libre10/
%__mkdir -p %{buildroot}%{tomcat_lib}/
%__mkdir -p %{buildroot}%{tomcat_conf}/
cd index
%__cp libre10-index %{buildroot}/usr/local/bin
%__cp pdf2xml.py %{buildroot}/usr/lib/libre10
cd ../solr-4.7.1
%__cp ./example/lib/ext/*.jar %{buildroot}%{tomcat_lib}
%__cp ./example/resources/log4j.properties %{buildroot}%{tomcat_lib}
%__cp -r ./* %{buildroot}/var/libre10/solr
cd ../conf
%__cp ./libre10.conf %{buildroot}/etc/
%__cp ./schema.xml %{buildroot}/var/libre10/solr/example/solr/collection1/conf
%__cp ./solrconfig.xml %{buildroot}/var/libre10/solr/example/solr/collection1/conf
%__cp ./libre10.xml %{buildroot}%{tomcat_conf}/

cd ../www
%__cp libre10.conf %{buildroot}/etc/httpd/conf.d/
%__cp *.pl %{buildroot}/var/www/html/libre10/
%__cp -r ./template %{buildroot}/var/www/html/libre10/

%post

%clean
rm -rf %{buildroot}

%files
%defattr(-,root,root)
%attr(755,root,root)/usr/local/bin/libre10-index
/usr/lib/libre10/pdf2xml.py
%{tomcat_lib}/jcl-over-slf4j-1.6.6.jar
%{tomcat_lib}/jul-to-slf4j-1.6.6.jar
%{tomcat_lib}/log4j-1.2.16.jar
%{tomcat_lib}/slf4j-api-1.6.6.jar
%{tomcat_lib}/slf4j-log4j12-1.6.6.jar
%{tomcat_lib}/log4j.properties
%attr(-,tomcat,tomcat)/var/libre10/solr/*
%{tomcat_conf}/libre10.xml
%config(noreplace) /etc/libre10.conf
/etc/httpd/conf.d/libre10.conf
/var/www/html/libre10/*
%attr(777,root,root)/var/tmp/libre10/
%attr(777,root,root)/var/tmp/libre10/cache
%attr(777,root,root)/var/tmp/libre10/cache/orig
%attr(777,root,root)/var/tmp/libre10/cache/900
%attr(777,root,root)/var/tmp/libre10/cache/2000
%attr(777,root,root)/var/libre10/db
%attr(777,root,root)/var/libre10/pdf

%files www
%defattr(-,root,root,-)
%config(noreplace)/etc/httpd/conf.d/libre10.conf
%attr(755,root,users)/var/www/html/libre10/*.pl
%attr(644,root,users)/var/www/html/libre10/template/*.html

パッケージング入門

はて、前々からやりたいと思っていた、rec10およびlibre10のパッケージングにチャレンジしてみることとします。これまではmake&make installで依存関係から何からcpanとか使って入れるようになっていましたが、

cpanやpipだとバージョン管理が出来ない、アンインストールがやりずらい等の問題があったためこの機会にrpmやdebファイルを作ってみようと言うことです。

とりあえずこの記事はじわじわ更新していく予定なのでやる予定のことをリスト化していきます。

TO DO

<rec10のパッケージング化>

  1. 録画フォルダの標準パスをどこにするか、インストールパスをどこにするか
  2. 依存関係をどのようにするか、rpmの作り方
  3. debの作り方
  4. rectool(rec10-web)のインストール先をどうするか
  5. b25のインストールをどうするか
  6. MySQL,録画ユーザーをどうするか
  7. rec10デーモン化

<libre10のパッケージング化>

  1. Libre10パッケージング for Centos6.5  <1>  依存関係
  2. Libre10パッケージング for Centos6.5  <2> ファイル一覧
  3. Libre10パッケージング for Centos6.5  <3> SELinux関連

以上、ぱっと思いつく限りでも問題は山積ですがぼちぼちやっていきたいと思います。

x264とL-Smash

皆様新年あけましておめでとうございます。

新年の番組を録画、エンコードしがてら久しぶりにx264を最新版にするかと思い公式を見に行ったところ

ここしばらく(2013/10/30以来)更新が止まっていました。

公式はこちらhttp://www.videolan.org/developers/x264.html

gitはこちらhttp://git.videolan.org/?p=x264.git;a=summary

x265の開発もされているようだし、そんなものかななど考えつつ変更点を見ていると

>Add L-SMASH support as preferable alternative for MP4-muxing

http://git.videolan.org/?p=x264.git;a=commit;h=7664b45570e4262c4d22bb89f4d395edcb4a639e

キタ――(゚∀゚)――!!

ついにx264がl-smashをサポートしたようです!!

日本語処理が怪しいからという理由で、泣く泣くファイル名を一度英数字に変換してから無理矢理処理しているgpac(MP4Box)を使わなくとも

mp4のmuxが出来るかもしれません!!

と思って早速インストール

公式はこちらのようです


$ git clone https://code.google.com/p/l-smash/

$ cd l-smash

$ ./configure

$ make

$ sudo make install

これでインストールできます。

この後にx264の最新版をダウンロードして


$ git clone git://git.videolan.org/x264.git

$ cd x264

$ ./congure

$ make

で最新版のl-smashビルド込みのx264が作れます

これでこれまで

mpeg2-ts→(mencoder)→yuv4mpeg→(fifo)→x264→raw

raw→(MP4Box)→mp4

としていたのがmp4まで一連の流れでいけるようになります。

あとは音ズレがしないかどうか、音声のインポートがうまくいくかですね。

UHS-I対応SD購入

本ブログで以前白芝のベンチマークを取ったことがありました。

あの際結構な枚数のSDカードを購入したので、その後しばらくSDカード購入はしていませんでしたが、

電子シャッター対応のNikonV1を買ったこともあり、新たに購入してみました。

ネットで調べていると、昔の白芝のようにこれを買っておけば間違いないといったものは存在しないようです。

内部のチップもSLCはほぼ姿を消し、MLC/TLCの時代になっているようで、まさに隔世の感がありますね。

さて、今回買ったのはSanDisk Extreme Pro SDHCカード UHS-I Class10 32GB です。

UHS-I、Class10対応の読み込み書き込みともに90MB/sec対応をうたうSanDiskの高級モデルです。

2013-12-30 15.09.48.jpg 2013-12-30 15.09.56.jpg

僕が買ったのは国内正規版ではないので、英語での説明になります。

さて、気になるベンチマークです。

いつものCrystal Disk Markを使用します。

【Amazon.co.jp限定】SanDisk Extreme Pro SDHCカード UHS-I Class10 32GB (無期限保証)[国内正規品] SDSDXPA-032G-JAZSanDisk_ExtremePro_32GB.png

 このような結果となりました。

Seqのwriteが少し90MBpsに足りませんが、誤差の範囲内でしょう。

比較のために白芝の結果を乗せておきます。

東芝 SDHCカード 16GB 日本製 クラス10 TOSHIBA Class10 海外向けパッケージ品 並行輸入品WA-16GB.JPG

 当然と言われればそれまでなのですが、SanDisk Extreme Proの方が段違いに速度が速いです。

自分自身、白芝を持っているからまぁ良いだろうと思っていた面もあったのですが、ここまで速度の差があると買い換えるのもありかもしれませんね。

Nikon V1もNikon D7000もUHS-Iに対応しているのでRAW連写などでその真価を発揮してくれそうです。

緑芝も買ったのですが、そのベンチは次回紹介します。

Nikon D7000+AF-S DX NIKKOR 16-85mm 作例集

Nikon デジタル一眼レフカメラ D7000 ボディー D7000Nikon D7000  +

Nikon 超広角ズームレンズ AF-S DX NIKKOR 16-85mm f/3.5-5.6G ED VR ニコンDXフォーマット専用AF-S DX NIKKOR 16-85mm f/3.5-5.6G ED VR

個人的に一番気に入っている組み合わせです。

いまはD7000も非常に安くなっているようで、レンズは結構値が張りますが

最後に頼るのはやっぱりこの組み合わせですね。

ReadyNAS 316 -ベンチマーク編-

さて、ReadyNAS316を購入してしばらく使ってみたわけですが

ふと思い立ち、ベンチマークを取ってみました。

今回は以前から使っている、ReadyNAS Ultra4とのベンチマークです。

さて、重要なHDDのスペックは以下の通りです

ReadyNAS 316 (2TB*6 RAID6)
  1. Hitachi HDS722020ALA330 2TB 2009-
  2. WDC WD20EARS-00MVWB0 2TB 2012-(RMA済み)
  3. WDC WD20EFRX-68EUZN0 2TB 2013/11/15-
  4. WDC WD20EFRX-68EUZN0 2TB 2013/10/13-
  5. WDC WD20EFRX-68EUZN0 2TB 2013/10/13-
  6. WDC WD20EFRX-68AX9N0 2TB 2013/10/13-
ReadyNAS Ultra4 (3TB*4 RAID5)
  1. WDC WD30EZRX-00MMMB0
  2. Seagate ST3000DM001-9YN166
  3. Seagate ST3000DM001-9YN166
  4. WDC WD30EZRX-00DC0B0

特段どちらかに低速なHDDが偏っているわけではありません。

強いて言うならReadyNAS 316の1が古いといったところでしょうか。

ベンチマークはhdparm -t デバイス名で行い、

各HDDに対しては1回、RAIDディスクに対しては3回行いました。

さて、結果ですが
先ず各々のHDDの結果
読み込み-デバイス毎.jpg

全体的にReadyNAS Ultra4に載っているHDDの方が高速となっています。

特にsdcの

Seagate 3.5inch 3.0TB ST3000DM001/N が高速です。とはいえ試行回数が1回なのではっきりとはわかりません。
次に全体のベンチマークです
読み込み-total.jpg

ReadyNAS316はRAID6でハンデがあるにもかかわらず、ReadyNAS Ultra4に比べ50MB/secほどの大差を付けて高速になっています。

やはりCPU,メモリの効果が生きているんでしょうか

ReadyNAS+SoftEther

ReadyNASのアプリに、VPN Serverと言う名のSoftEther Serverがあります。

これまではOpenVPNを使ってきましたが、今回ReadyNAS Ultra4とReadyNAS 316の相互バックアップの経路としてSSLの暗号化を掛けたかったので

最初から用意されているSoftEtherにチャレンジしてみました。

ネットワークの構成は

NETWORK1 192.168.A.0/255.255.255.0

Router 1——-ReadyNAS 316(eth 0+eth 1)

NETWORK2 192.168.B.0/255.255.255.0

Router 2——-ReadyNAS Ultra4

このような状態でUltra4から316にSoftEtherのVPNを引いて、rsyncを使って定期バックアップをすることとしました。

今回VPN Serverは316なのでServer側でSoftEther Serverの設定をします。

Server管理ツールという便利な物があるので、これを使わせてもらいます。

細かな設定は割愛しますが、設定はOpenVPNに比べても楽だと感じました。

さて、316とUltra4を繋ぐネットワークはできましたが、

Ultra4からNETWORK1のパソコンやそもそも316が見えません。

Ultra4からRouter1配下の他のパソコンが見えないのはわかりますが(316から先へのブリッジが要ります)

316が見えないのはちょっと謎です

まぁさておき、おとなしく本家のおすすめの通り、ローカルブリッジを作ります。

eth1を割り当てましたが、注意することがあります。

eth1とVPNをブリッジする際には、eth1のプロトコルスタックを無効化して下さい。

これはReadyNAS管理画面からはできません

SSHをオンにして


#ifconfig eth1 0.0.0.0

#

でうまくいくようになります。

これをやるとやらないとでは安定性が全く違うので注意して下さい

(通信できなくなることがありました)