さて、とりあえず最低限の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にすることで解決しました。
該当部分だけ抜粋
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 |
%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全文
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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 |
%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. |