blob: 262db3ae8cbe8213971c673424aeae40d6f6b3cb [file] [log] [blame] [view]
> 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 !