Sonatype/Nexus est un logiciel écrit en JAVA permettant d’offrir une puissance interface de gestion à vos développeurs JAVA pour gérer leurs repositories au format Maven. Sonatype fournit des packages permettant d’installer une version embarquée de nexus utilisant Jetty pour Linux, Solaris, Windows et Mac OSX, mais pas FreeBSD. Il n’est pas non plus disponible dans l’arbre de ports.
Nous allons utiliser la couche d’emulation Linux 32bits afin de pouvoir lancer le wrapper linux de nexus, en espérant une version native FreeBSD un jour. Dans un premier temps on charge le module de compatibilité linux et on l’active au démarrage
kldload linux
sysrc linux_enable=YES
Puis on déclare utiliser un kernel 2.6.32
sysctl compat.linux.osrelease=2.6.32
echo "compat.linux.osrelease=2.6.32" > /etc/sysctl.conf
Enfin on installe le port de compatiblité centos6
cd /usr/ports/emulator/linux_base-c6
make install
ou encore au format binaire
pkg install linux_base-c6
Téléchargez la dernière version de nexus présente ici.
fetch http://download.sonatype.com/nexus/oss/nexus-2.11.1-01-bundle.tar.gz
On va maintenant créer le répertoire d’installation de nexus
mkdir -p /usr/local/sonatype /usr/local/sonatype-work
Et enfin on extrait l’archive
tar xvzf nexus-2.11.1-01-bundle.tar.gz -C /usr/local/sonatype
Afin de lancer proprement nexus, nous allons utiliser l’utilisateur www et le groupe www. On applique les droits sur les répertoires dans lesquels nexus a besoin d’écrire
chown -R www:www /usr/local/sonatype/nexus-2.11.1-01/logs
chown -R www:www /usr/local/sonatype/nexus-2.11.1-01/tmp
chown -R www:www /usr/local/sonatype/sonatype-work
On va faire croire au lanceur que notre version de FreeBSD est en fait un Linux 32 bits afin de pouvoir utiliser le wrapper et la couche d’émulation Linux 32 bits.
ln -s /usr/local/sonatype/nexus-2.11.1-01/bin/jsw/linux-x86-32/ /usr/local/sonatype/nexus-2.11.1-01/bin/jsw/freebsd-x86_64
Enfin on créer un fichier de PID qu’on va attribuer à l’utilisateur www /usr/local/sonatype/nexus-2.11.1-01/bin/../bin/jsw/freebsd-x86-64/nexus.pid
touch /usr/local/sonatype/nexus-2.11.1-01/bin/../bin/jsw/freebsd-x86-64/nexus.pid
chown www:www /usr/local/sonatype/nexus-2.11.1-01/bin/../bin/jsw/freebsd-x86-64/nexus.pid
Pour finir on créée un fichier de démarrage /usr/local/etc/rc.d/nexusd
#!/bin/sh
#
# PROVIDE: nexusd
# REQUIRE: LOGIN
# BEFORE: securelevel
# KEYWORD: shutdown
# Add the following lines to /etc/rc.conf to enable `nexusd':
#
# nexusd_enable="YES"
#
. /etc/rc.subr
name="nexusd"
rcvar=nexusd_enable
command="/usr/local/sonatype/nexus-2.11.1-01/bin/nexus"
mypidfile="/usr/local/sonatype/nexus-2.11.1-01/bin/jsw/freebsd-x86-64/nexus.pid"
nexusd_user="www"
start_precmd="nexus_precmd"
start_arg=$1
# read configuration and set defaults
load_rc_config "$name"
: ${nexusd_enable="NO"}
nexus_precmd()
{
touch $mypidfile
chown $nexusd_user $mypidfile
}
if [ "$start_arg" = "quietstart" ]; then
start_arg="start"
fi
command_args="$start_arg"
run_rc_command "$start_arg"
On lui attribue les droits d’exécution et on peut désormais lancer nexus
chmod +x /usr/local/etc/rc.d/nexusd
sysrc nexusd_enable=YES
service nexusd start
Vous pouvez désormais installer nexus sur vos serveurs FreeBSD. L’installation n’est pas triviale mais cela a le mérite de fonctionner.