| > Licensed to the Apache Software Foundation (ASF) under one |
| > or more contributor license agreements. See the NOTICE file |
| > distributed with this work for additional information |
| > regarding copyright ownership. The ASF licenses this file |
| > to you under the Apache License, Version 2.0 (the |
| > "License"); you may not use this file except in compliance |
| > with the License. You may obtain a copy of the License at |
| > |
| > http://www.apache.org/licenses/LICENSE-2.0 |
| > |
| > Unless required by applicable law or agreed to in writing, |
| > software distributed under the License is distributed on an |
| > "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| > KIND, either express or implied. See the License for the |
| > specific language governing permissions and limitations |
| > under the License. |
| |
| # Installers |
| |
| We provide installers for various OSes (**Linux**, **Windows**, **macOSX**) and architectures (32 bits and 64 bits). We also provide |
| generic binaries which don't install a daemon. |
| |
| This document explains how those installers are working, for people who want to get deep into the process. As it, this |
| document is not targeting users, but rather developers. |
| |
| ## Supported OSes |
| |
| We support: |
| * Linux (*rpm* and *deb* packages), for 32 bits and 64 bits |
| * Mac OSX (tm), for 32 bits and 64 bits |
| * Windows, 32 bit sonly |
| * a default binary that can be installed but does not provide a daemon |
| |
| |
| ## Wrapper/daemon |
| |
| It's convenient to have a package that can be installed as a daemon. We provide such package. We use |
| a wrapper (Tanuki) |
| |
| ## Building installers |
| |
| It's quite easy. You need to be in the _installers_ module and launch _mvn clean install -P<target>_ where _<target>_ |
| is one of : |
| * **debian** : Debian installer, 32 and 64 bits |
| * **rpm** : Linux RH/CentOS installer |
| * **windows** : Windows 32 bits installer (we don't provide a 64 bits installer yet) |
| * **mac** : Mac OSX installer, 32 and 64 bits |
| * **bin** : Standard installer, 32 and 64 bits |
| * **archive** : archive - ie not an installer -. |
| * **docker** : A Docker installer |
| * **installers** : all the installers. |
| |
| NOTE: In order to be able to build the *rpm*, *windows* and *deb* packages, you need to install the following tools: |
| |
| ### On Mac OSX: |
| |
| * **deb**: *brew install dpkg*. **BEWARE**: it will install in */usr/local/bin*, instead of */usr/bin*. |
| |
| You'll need to run the installers using this command line: |
| |
| mvn clean install -Pdebian -Dinstallers.dpkg=/usr/local/bin/dpkg |
| |
| * **rpm**: *brew install rpm*. **BEWARE**: it will install in */usr/local/bin*, instead of */usr/bin*. |
| |
| You'll need to run the installers using this command line: |
| |
| mvn clean install -Prpm -Dinstallers.dpkg=/usr/local/bin/rpmbuild |
| |
| |
| * **windows**: *brew install makensis*. **BEWARE**: it will install in */usr/local/bin*, instead of */usr/bin*. |
| |
| You'll need to run the installers using this command line: |
| |
| mvn clean install -Pwindows -Dinstallers.makensis=/usr/local/bin/makensis |
| |
| ### 'bin' installer |
| |
| Building a **bin** installer generates two files : |
| * _apacheds-2.0.0.AM27-SNAPSHOT-32bit.bin_ |
| * _apacheds-2.0.0.AM27-SNAPSHOT-64bit.bin_ |
| |
| Those files are scripts concatenated with a *tar* file. The script will ask you to validate the |
| _Apache_ license, extract the tar file, launch the _install.sh_ script and cleanup temporary files once the |
| installation is done. Here is the layout of the installer once executed, before the installation is ran: |
| |
| / |
| | |
| +--/instance |
| | | |
| | +-- config.ldif |
| | | |
| | +-- etc-initd-script |
| | | |
| | +-- log4j.properties |
| | | |
| | +-- wrapper-instance.conf |
| | |
| +--/server |
| | | |
| | +--/bin |
| | | | |
| | | +-- apacheds* |
| | | | |
| | | +-- wrapper* |
| | | |
| | +--/conf |
| | | | |
| | | +-- wrapper.conf |
| | | |
| | +--/lib |
| | | | |
| | | +-- apacheds-service-2.0.0.AM27-SNAPSHOT.jar |
| | | | |
| | | +-- apacheds-wrapper-2.0.0.AM27-SNAPSHOT.jar |
| | | | |
| | | +-- libwrapper.so |
| | | | |
| | | +-- wrapper-3.2.3.jar |
| | | |
| | +-- NOTICE |
| | | |
| | +-- LICENSE |
| | |
| +--/sh |
| | |
| +-- functions.sh* |
| | |
| +-- install.sh* |
| | |
| +-- variables.sh* |
| |
| The way the _instal.sh_ script works is that it uses the _variable.sh_ file content to configure the server: |
| each variable (**@<name>@**) in the _/server/bin/apacheds_ script will be substituted with the default value or |
| the provided value. Here is an exalple of what happens when the script is executed: |
| |
| $ ./install.sh |
| Where do you want to install ApacheDS? [Default: /opt/apacheds-] |
| |
| Where do you want to install ApacheDS instances? [Default: /var/lib/apacheds-] |
| |
| What name do you want for the default instance? [Default: default] |
| |
| Where do you want to install the startup script? [Default: /etc/init.d] |
| |
| Here are the variables that can be configured : |
| |
| * **APACHEDS_HOME_DIRECTORY** /opt/apacheds-2.0.0.AM26 |
| * **INSTANCES_HOME_DIRECTORY** /var/lib/apacheds-2.0.0.AM26 |
| * **STARTUP_SCRIPT_DIRECTORY** /etc/init.d |
| * **DEFAULT_INSTANCE_NAME** default |
| * **RUN_AS_USER** apacheds |
| * **RUN_AS_GROUP** apacheds |
| |
| Once the installer has been run, the server files are located in various places : |
| |
| /opt/apacheds-2.0.0.AM27-SNAPSHOT |
| | |
| +-- /bin |
| | | |
| | +-- apacheds* |
| | | |
| | +-- wrapper* |
| | |
| +-- /conf |
| | | |
| | +-- wrapper.conf |
| | |
| +-- /lib |
| | |
| +-- apacheds-service-2.0.0.AM27-SNAPSHOT.jar |
| | |
| +-- apacheds-wrapper-2.0.0.AM27-SNAPSHOT.jar |
| | |
| +-- libwrapper.so |
| | |
| +-- wrapper-3.2.3.jar |
| . |
| . |
| . |
| /var/lib/apacheds-2.0.0.AM27-SNAPSHOT |
| | |
| +-- /default |
| | |
| +-- /conf |
| | | |
| | +-- config.ldif |
| | | |
| | +-- log4j.properties |
| | | |
| | +-- wrapper-instance.conf |
| | |
| +-- /log |
| | |
| +-- /partitions |
| | |
| +-- /run |
| . |
| . |
| . |
| /etc/rc.d/init.d |
| | |
| +-- apacheds-2.0.0.AM27-SNAPSHOT-default |
| |
| In the process, a user and group will be created if they didn't exist beforhand. |
| |
| **NOTE**: if one want to run the server with a port under **389**, there are some configuration to change, as this is a privileged port. |
| |
| |
| ### The 'bin' installer plugin |
| |
| This plugin just create the initial installer, copying various files in the right place before creating the tar file. |
| |
| At the end, it calls the _createInstaller.sh_ script that will generate the final package. |
| |
| ## Debugging a Maven plugin under Eclipse |
| |
| Debugging one of the installers maven plugins in Eclipse is quite easy: |
| |
| * First set a breakpoint in the _execute()_ function of the plugin you are interested in debugging |
| * Create a new *Maven Build* debug configuration |
| * Set the base Directory to _${workspace_loc:/apacheds-installers-2.0.0.AM27-SNAPSHOT}_ (or whatever version you are debugging). This can be done using the _workspace_ button below the input box. |
| * Set the goals to _clean install_ |
| * Set the _profile_ to match the plugin you want to debug (**mac**, **bin**, **debian**, **rpm**, **windows**, **archive**, **docker**, or **installers**) |
| * You are good to go ! |
| |
| NOTE: If you were to modify the plugin, do not forget to recompile it before debugging it ! |