Both sides previous revisionPrevious revisionNext revision | Previous revision |
installing_prerequisites_on_gentoo [2010/10/29 12:36] – eby | installing_prerequisites_on_gentoo [2017/04/11 09:28] (current) – Deleting obsolete content klussier |
---|
[[user-comments:installing_prerequisites_on_gentoo|User Comments]] | |
| |
====== This is a Work in Progress. Not usable yet. ====== | |
| |
====== Installing prerequisites on Gentoo (x86 64-bit) ====== | |
| |
Using Gentoo 2008.0, dual-core x86 64-bit processor, emerge synced and world updated 2010/10/29. | |
| |
Development with OpenSRF 1.6.1 last successfully tested ..... | |
| |
===== USE flags ===== | |
**As the root user**, add the following USE flags to ''/etc/make.conf'':<code> | |
USE="-ldap apache2 mpm-prefork perl postgres gif jpeg png urandom web" | |
</code> | |
| |
===== Add the opensrf user ===== | |
The ''opensrf'' user is required to start the OpenSRF services that constitute Evergreen. | |
- **As the root user**, issue the following command to create the user and set the password: | |
<code>useradd -m -s /bin/bash opensrf | |
passwd opensrf</code> | |
| |
===== Compile and runtime environment ===== | |
Gentoo relies on files in ''/etc/env.d/'' to set the system environment. We will create our own file with settings required for Evergreen. Perform the following steps **as the root user**. | |
| |
- Open a new file (''/etc/env.d/88evergreen'') in a text editor. The name is actually rather arbitrary, but should start with two digits and must not conflict with any other files in the same directory. | |
- Add the following lines to the file:<code> | |
LDPATH="/openils/lib" | |
PATH="/openils/bin" | |
PERL5LIB="/openils/lib/perl5:/usr/lib/perl5/site_perl/5.12.2/x86_64-linux:/usr/lib/perl5/vendor_perl/5.12.2/x86_64-linux/Bundle"</code> You might need to adjust the ''PERL5LIB'' variable to reflect your own architecture, and eventually a newer version of Perl. | |
- Open another new file (''/etc/env.d/89libdbi'') in a text editor. Add the following line to the file:<code> | |
LDPATH="/usr/local/lib/dbd"</code> | |
- Run ''env-update'' to commit the corresponding changes to the system environment. | |
| |
===== Installing memcached ===== | |
Perform the following steps **as the root user**: | |
- Install the memcached package:<code> | |
emerge memcached</code> | |
- Restrict memcached to only listen to this machines' IP address (might only be necessary for a single-machine instance?) by editing the LISTENON variable in ''/etc/conf.d/memcached'':<code> | |
LISTENON="127.0.0.1" | |
</code> | |
- Start memcached at system boot:<code> | |
rc-update add memcached default | |
</code> | |
| |
===== Installing libmemcache ===== | |
''libmemcache'' provides a C API for putting and getting cached values from ''memcached''. | |
The current stable version of ''libmemcache'' in Gentoo (1.2.0) is subject to memory corruption problems; therefore, we install the pre-release unstable version of ''libmemcache'' (1.4.0-rc2). Perform the following steps as **a root user**:<code> | |
(if /etc/portage directory doesn't exist, create it) | |
echo "dev-libs/libmemcache" >> /etc/portage/package.keywords | |
emerge libmemcache | |
</code> | |
| |
| |
| |
===== Installing PostgreSQL ===== | |
I installed PostgreSQL 8.2.4 on the advice of Mike Rylander. As PostgreSQL 8.0.13 is currently the "stable" version on Gentoo, I had to tell Gentoo to use the unstable version. Perform the following steps **as the root user**:<code> | |
echo "dev-db/postgresql ~x86" >> /etc/portage/package.keywords | |
echo "dev-db/libpq ~x86" >> /etc/portage/package.keywords | |
emerge postgresql | |
emerge postgresql --config | |
rc-update add postgresql default | |
/etc/init.d/postgresql start | |
</code> | |
| |
==== Create the database ==== | |
We need to create the database that Open-ILS will use:<code> | |
createdb -U postgres -E UNICODE evergreen | |
</code> | |
| |
| |
| |
==== Add tsearch2, table functions, and extra languages ==== | |
We need to add tsearch2, table functions, and the plpgsql language to the Open-ILS database:<code> | |
psql -U postgres evergreen | |
pg# \i /usr/share/postgresql/contrib/tsearch2.sql | |
pg# \i /usr/share/postgresql/contrib/tablefunc.sql | |
pg# \q | |
createlang -U postgres plpgsql evergreen | |
createlang -U postgres plperl evergreen | |
createlang -U postgres plperlu evergreen | |
</code> | |
| |
==== Change the postgres administrator password ==== | |
You might as well change the password for the ''postgres'' user in the PostgreSQL database now. Note that this is not the system password stored in ''/etc/passwd''; this is PostgreSQL's internal user authentication mechanism.<code> | |
psql -U postgres evergreen | |
pg# alter user postgres password 'postgres'; | |
pg# \q | |
</code> | |
| |
| |
===== Installing ejabberd ===== | |
Check the revision history of this page if you want instructions for using Wildfire as an alternative Jabber server. | |
| |
Perform the following steps **as the root user**: | |
<code>emerge ejabberd | |
rc-update add ejabberd default | |
</code> | |
| |
===== Installing Apache2 ===== | |
Perform the following steps **as the root user**: | |
- We'll emerge ''mod_perl'' and let that take care of all of the dependencies, including Apache 2 itself:<code> | |
emerge mod_perl</code> | |
- Enable mod_perl and SSL by editing ''/etc/conf.d/apache2'':<code> | |
APACHE2_OPTS="-D PERL -D SSL -D PROXY -D CACHE"</code> | |
- Create a symbolic link from ''/etc/apache2/httpd.conf'' to ''/etc/apache2/apache2.conf'' to enable the Evergreen Apache modules to be installed and configured correctly:<code> | |
ln -sf /etc/apache2/httpd.conf /etc/apache2/apache2.conf</code> | |
- Enable the Apache process to read the ''/openils/var/web'' and ''/openils/var/cgi-bin'' files by editing ''/etc/apache2/httpd.conf'' to start the Apache process as the ''opensrf'' user:<code> | |
User opensrf | |
Group opensrf</code> | |
- Copy ''eg.conf'' and ''eg_vhost.conf'' from ''ILS/Open-ILS/examples/apache/'' into the ''/etc/apache2/vhosts.d/'' directory. | |
- Modify ''eg.conf'' to set the appropriate ''ServerName'', ''ServerAlias'', and ''Allow from'' settings. Here is the ''eg.conf'' file used in the Gentoo VMWare image: {{:gentoo:eg.conf.txt}} | |
- Modify the eg_vhost.conf file ''SSLCertificateFile'' and ''SSLCertificateKeyFile'' settings to point to ''/etc/apache2/ssl/server.crt'' and ''/etc/apache2/ssl/server.key'' respectively. Modify CustomLog to point to a file location to which the apache user can write. | |
- Here is the ''eg_vhost.conf'' file used in the Gentoo VMWare image: {{:gentoo:eg_vhost.conf.txt}} | |
- Add ''startup.pl'' to ''/etc/apache2/vhosts.d/eg.conf'': Here is the ''startup.pl'' file used in the Gentoo VMWare image: {{:gentoo:startup.pl.txt}} | |
| |
===== Installing Perl modules ===== | |
Gentoo doesn't provide all of the modules available in CPAN, and certainly not the most interesting ones used by Open-ILS. | |
| |
We'll use Gentoo's Perl build, but go with CPAN for the rest of the modules. | |
| |
- The Net::ZOOM Perl module requires ''yaz'' version 2.1.50 or higher. At the moment, the ebuild for ''yaz'' is 2.1.42 - so we have to build yaz from source. Perform these steps as a regular user, such as ''opensrf'':<code> | |
wget http://ftp.indexdata.dk/pub/yaz/yaz-2.1.56.tar.gz | |
tar xzf yaz-2.1.56.tar.gz | |
cd yaz-2.1.56 | |
./configure | |
make</code> | |
- Perform the following step **as the root user**:<code> | |
make install</code> | |
- We depend on the ''aspell-en'' ebuild for the ''Text::Aspell'' Perl module. If you are starting from Gentoo 2007.0, you might run into a blocking ebuild that requires you to first unmerge ''aspell-en'', then re-emerge it **as the root user**:<code> | |
emerge --unmerge aspell-en | |
emerge aspell-en</code> | |
- We depend on the ''spidermonkey'' (1.6 or higher) ebuild for the ''JavaScript::SpiderMonkey'' Perl module. ''spidermonkey-1.6'' is the stable ebuild on the ''~x86'' architecture; other architectures may have to use an unstable ebuild or build spidermonkey from source. On ''~x86'', perform the following step **as the root user**:<code> | |
emerge spidermonkey</code> | |
- Now we can install the CPAN modules as the ''opensrf'' user. We set the ''makepl_arg'' parameter in CPAN to install all of these modules into the ''/openils/'' directory structure, so that we can avoid conflicting with the core versions of the Perl modules that we might have installed via ebuilds. Perform the following steps **as the root user**:<code> | |
mkdir -p /openils/lib/perl5 | |
chown -R opensrf:opensrf /openils | |
</code> | |
- Perform the following steps **as the ''opensrf'' user**: | |
<code> | |
export PERL5LIB=/openils/lib/perl5 | |
perl -MCPAN -e shell | |
shell> o conf makepl_arg 'PREFIX=/openils LIB=/openils/lib/perl5' | |
shell> o conf commit | |
shell> install Bundle::CPAN | |
shell> reload cpan | |
shell> install Cache::Memcached Class::DBI::AbstractSearch | |
shell> install DateTime DateTime::Format::ISO8601 DateTime::TimeZone | |
shell> install DBI DBD::Pg Email::Send GD::Graph3d Log::Log4perl | |
shell> install JavaScript::SpiderMonkey JSON::XS | |
shell> install XML::LibXML XML::LibXSLT XML::Simple | |
shell> install MARC::Record MARC::Charset MARC::File::XML | |
shell> install Net::Server::PreFork Net::Z3950::ZOOM | |
shell> install Template Text::Aspell UNIVERSAL::require Unix::Syslog | |
shell> install Text::CSV Text::CSV_XS Spreadsheet::WriteExcel Tie::IxHash</code> | |
| |
We need ''Net::Jabber'' to register users with ejabberd. The gsasl ebuild is required for authentication. I found that I had to select **no** when asked if I wanted to install the optional GSSAPI module for ''XML::Stream'', one of its underlying modules, to avoid severe test failure. I stopped ejabberd before installing this module to avoid any port conflicts during the ''Net::Jabber'' tests. Finally, a few ''Net::Jabber'' tests failed anyways, so I forced the install of that module. | |
| |
If the ''Net::Jabber'' install fails for you as well: | |
- Perform the following steps **as the root user**:<code>/etc/init.d/ejabberd stop | |
emerge gsasl</code> | |
- Perform the following steps **as the ''opensrf'' user**:<code>perl -MCPAN -e shell | |
shell> install Authen::SASL XML::Stream Net::XMPP | |
shell> force install Net::Jabber | |
</code> | |
| |
| |
| |
| |
| |
===== Installing libdbi and libdbi-drivers ===== | |
The [[libdbi|generic instructions]] worked well using libdbi-0.8.2 and libdbi-drivers-0.8.2-1 releases. You do not need to specify a directory for the ''--with-pgsql'' option because we're using the ebuild version of PostgreSQL, so the libdbi-drivers step looks like:<code> | |
./configure --with-pgsql-dir --disable-docs --with-pgsql --enable-libdbi && make all install | |
</code> | |
| |
====== Installing OpenSRF ====== | |
As of Evergreen 1.2.0, you have to download and install OpenSRF separately from Evergreen. Perform the following steps **as the ''opensrf'' user**: | |
- Download OpenSRF:<code> | |
wget http://open-ils.org/downloads/OpenSRF-0.9.tar.gz</code> | |
- Extract OpenSRF:<code> | |
tar xzf OpenSRF-0.9.tar.gz</code> | |
- Change directories into the OpenSRF directory:<code> | |
cd OpenSRF-0.9</code> | |
- Open ''install.conf'' in a text editor and set the default Gentoo settings for ''make'' configuration:<code> | |
export APXS2=/usr/sbin/apxs2 | |
export APACHE2_HEADERS=/usr/include/apache2 | |
export APR_HEADERS=/usr/include/apr-1/ | |
export LIBXML2_HEADERS=/usr/include/libxml2/</code> | |
- Build OpenSRF:<code> | |
CFLAGS=-D_LARGEFILE64_SOURCE make</code> | |
- Install OpenSRF by performing the following step **as the root user**:<code> | |
make install | |
</code> | |
| |
=====Register OpenSRF users===== | |
We have to register the users listed in opensrf_core.xml with our Jabber server. OpenSRF includes a simple script to do this based on Net::Jabber. In our case, we will register two users, "osrf" and "router", each of which uses the password "osrf":<code> | |
# starting in the OpenSRF directory | |
cd examples | |
perl register.pl localhost 5222 osrf osrf | |
perl register.pl localhost 5222 router osrf | |
</code> | |
| |
====== Installing Evergreen ====== | |
Perform the following steps **as the ''opensrf'' user**: | |
- Download Evergreen:<code> | |
wget http://open-ils.org/downloads/Evergreen-ILS-1.2.0-rc4.tar.gz</code> | |
- Extract Evergreen:<code> | |
tar xzf Evergreen-ILS-1.2.0-rc4.tar.gz</code> | |
- Change directories into the Evergreen directory:<code> | |
cd Evergreen-ILS-1.2.0-rc4</code> | |
- Set the configuration for your system; aside from the database name, username, and password, you should only have to change the following settings on Gentoo:<code> | |
Apache2 apxs binary = /usr/sbin/apxs2 | |
Apache2 headers directory = /usr/include/apache2 | |
Apache2 APR headers directory = /usr/include/apr-1 | |
Libxml2 headers directory = /usr/include/libxml2</code> | |
- Due to some confusion caused by apxs, ''make install'' will fail if it cannot find ''/etc/apache2/apache2.conf''. Perform the following hack **as the root user** to fix that problem:<code> | |
ln -sf /etc/apache2/httpd.conf /etc/apache2/apache2.conf</code> | |
- Build Evergreen **as the ''opensrf'' user**:<code> | |
CFLAGS=-D_LARGEFILE64_SOURCE make</code> | |
- Install Evergreen **as the root user**:<code> | |
make install</code> | |
- Change permissions on the Evergreen directories to enable the system to run **as the root user**:<code> | |
chown -R opensrf:opensrf /openils | |
chmod -R +x /openils/var/cgi-bin</code> | |
- Edit the ''/etc/apache2/httpd.conf'' file to correct the LoadModule directives that were added for the mod_xmlent and osrf_json_gateway modules. ''apxs2'' mistakenly tells Apache to load the modules from the ''lib/apache2/modules/'' directory, when (as of Apache 2.2.4 on Gentoo) the prefix should just be ''modules/''. **As the root user**, adjust the lines to read as follows:<code> | |
LoadModule osrf_json_gateway_module modules/osrf_json_gateway.so | |
LoadModule xmlent_module modules/mod_xmlent.so</code> | |
- Create symbolic links to support Windows staff clients and versionless staff clients **as the ''opensrf'' user**:<code> | |
cd /openils/var/web/xul/ | |
rm HEAD | |
ln -sf /root/Evergreen-ILS-1.2.0-rc4/Open-ILS/xul/staff_client/build/ HEAD | |
ln -sf HEAD sc_v100_rc2 | |
ln -sf HEAD rel_1_2_0_rc4</code> | |
| |
====== Starting Evergreen ====== | |
- Become the ''opensrf'' user:<code> | |
su - opensrf</code> | |
- Run the ''osrf_ctl.sh'' script to start up all of the services. We start the services individually because there is a race condition that can affect the C services if the Perl services have not completely finished initializing:<code> | |
/openils/bin/osrf_ctl.sh -c /openils/conf/opensrf_core.xml -a start_router | |
/openils/bin/osrf_ctl.sh -c /openils/conf/opensrf_core.xml -a start_perl | |
/openils/bin/osrf_ctl.sh -c /openils/conf/opensrf_core.xml -a start_c</code> | |
- (Required only once): Run the ''autogen.sh'' script to generate the JavaScript and OrgTree HTML files:<code> | |
cd /openils/bin | |
autogen.sh /openils/conf/opensrf_core.xml</code> | |
- Become the root user and start Apache (which now depends on the open-ils services before it can start successfully): <code> | |
exit | |
su - | |
/etc/init.d/apache2 start</code> | |