Index: head/textproc/elasticsearch6/Makefile =================================================================== --- head/textproc/elasticsearch6/Makefile (revision 464525) +++ head/textproc/elasticsearch6/Makefile (revision 464526) @@ -1,95 +1,94 @@ # Created by: Tom Judge # $FreeBSD$ PORTNAME= elasticsearch PORTVERSION= 6.2.2 -PORTREVISION= 5 +PORTREVISION= 6 CATEGORIES= textproc java devel MASTER_SITES= https://artifacts.elastic.co/downloads/${PORTNAME}/ \ http://mirrors.rit.edu/zi/ PKGNAMESUFFIX= 6 MAINTAINER= feld@FreeBSD.org COMMENT= Full-text search engine for Java LICENSE= APACHE20 BUILD_DEPENDS= jna>0:devel/jna RUN_DEPENDS= bash>0:shells/bash \ jna>0:devel/jna CONFLICTS= elasticsearch-[0-9]* elasticsearch2-[0-9]* elasticsearch5-[0-9]* USES= cpe shebangfix NO_ARCH= yes USE_JAVA= yes NO_BUILD= yes JAVA_VERSION= 1.8+ USE_RC_SUBR= ${PORTNAME} SHEBANG_FILES= bin/elasticsearch \ bin/elasticsearch-env \ bin/elasticsearch-plugin OPTIONS_DEFINE= DOCS .include CONFIG_FILES= elasticsearch.yml log4j2.properties jvm.options BINS= elasticsearch \ elasticsearch-env \ elasticsearch-plugin PORTDOCS= LICENSE.txt \ NOTICE.txt \ README.textile SIGAR_ARCH= ${ARCH:S|i386|x86|} SEARCHUSER?= elasticsearch SEARCHGROUP?= ${SEARCHUSER} USERS= ${SEARCHUSER} GROUPS= ${SEARCHGROUP} SUB_LIST= ETCDIR=${ETCDIR} JAVA=${JAVA} SUB_FILES= pkg-message post-patch: ${REINPLACE_CMD} -e "s|%%PREFIX%%|${PREFIX}|g" ${WRKSRC}/config/elasticsearch.yml ${REINPLACE_CMD} -e "s|%%PREFIX%%|${PREFIX}|g" ${WRKSRC}/bin/elasticsearch ${RM} ${WRKSRC}/lib/jna-*.jar do-install: ${MKDIR} ${STAGEDIR}${PREFIX}/etc/elasticsearch .for f in ${CONFIG_FILES} ${INSTALL} ${WRKSRC}/config/${f} ${STAGEDIR}${ETCDIR}/${f}.sample .endfor ${MKDIR} ${STAGEDIR}${PREFIX}/lib/elasticsearch/bin .for f in ${BINS} ${INSTALL_SCRIPT} ${WRKSRC}/bin/${f} ${STAGEDIR}${PREFIX}/lib/elasticsearch/bin .endfor ${MKDIR} ${STAGEDIR}${PREFIX}/lib/elasticsearch/lib (cd ${WRKSRC}/lib && ${COPYTREE_SHARE} . ${STAGEDIR}${PREFIX}/lib/elasticsearch/lib/ "-name *\.jar") ${MKDIR} ${STAGEDIR}${PREFIX}/lib/elasticsearch/modules (cd ${WRKSRC}/modules && ${COPYTREE_SHARE} . ${STAGEDIR}${PREFIX}/lib/elasticsearch/modules/) ${MKDIR} ${STAGEDIR}${PREFIX}/lib/elasticsearch/plugins ${MKDIR} ${STAGEDIR}${PREFIX}/libexec/elasticsearch - ${INSTALL} -lrs ${STAGEDIR}${PREFIX}/lib/elasticsearch/bin/elasticsearch-plugin ${STAGEDIR}${PREFIX}/bin/elasticsearch-plugin + ${INSTALL} -lrs ${STAGEDIR}${ETCDIR} ${STAGEDIR}${PREFIX}/lib/elasticsearch/config ${LN} -s ${JAVASHAREDIR}/classes/jna.jar ${STAGEDIR}${PREFIX}/lib/elasticsearch/lib/jna.jar do-install-DOCS-on: ${MKDIR} ${STAGEDIR}${DOCSDIR} .for f in ${PORTDOCS} ${INSTALL_DATA} ${WRKSRC}/${f} ${STAGEDIR}${DOCSDIR} .endfor post-install: ${ECHO} "@sample ${ETCDIR}/elasticsearch.yml.sample" >> ${TMPPLIST} ${ECHO} "@sample ${ETCDIR}/log4j2.properties.sample" >> ${TMPPLIST} ${ECHO} "@sample ${ETCDIR}/jvm.options.sample" >> ${TMPPLIST} - ${ECHO} "bin/elasticsearch-plugin" >> ${TMPPLIST} ${FIND} -s ${STAGEDIR}${PREFIX}/lib/elasticsearch -not -type d | ${SORT} | \ ${SED} -e 's#^${STAGEDIR}${PREFIX}/##' >> ${TMPPLIST} ${ECHO} "@dir lib/elasticsearch/plugins" >> ${TMPPLIST} ${ECHO} "@dir libexec/elasticsearch" >> ${TMPPLIST} .include Index: head/textproc/elasticsearch6/files/elasticsearch.in =================================================================== --- head/textproc/elasticsearch6/files/elasticsearch.in (revision 464525) +++ head/textproc/elasticsearch6/files/elasticsearch.in (revision 464526) @@ -1,125 +1,126 @@ #!/bin/sh # # $FreeBSD$ # # PROVIDE: elasticsearch # REQUIRE: NETWORKING SERVERS # BEFORE: DAEMON # KEYWORD: shutdown # # Add the following line to /etc/rc.conf to enable elasticsearch: # # elasticsearch_enable="YES" # # elasticsearch_user (username): Set to elasticsearch by default. # Set it to required username. # elasticsearch_group (group): Set to elasticsearch by default. # Set it to required group. # elasticsearch_config (path): Set to %%PREFIX%%/etc/elasticsearch/elasticsearch.yml by default. # Set it to the config file location. # . /etc/rc.subr name=elasticsearch rcvar=elasticsearch_enable load_rc_config ${name} : ${elasticsearch_enable:=NO} : ${elasticsearch_user=elasticsearch} : ${elasticsearch_group=elasticsearch} : ${elasticsearch_config=%%PREFIX%%/etc/elasticsearch} +: ${elasticsearch_login_class=root} required_files="${elasticsearch_config}/elasticsearch.yml" _pidprefix=/var/run/elasticsearch pidfile=${_pidprefix}.pid procname=%%JAVA%% extra_commands="console status" console_cmd=elasticsearch_console start_precmd=elasticsearch_precmd command=%%PREFIX%%/lib/elasticsearch/bin/elasticsearch command_args="-d --pidfile=${pidfile}" export ES_PATH_CONF=${elasticsearch_config} elasticsearch_precmd() { /usr/bin/install -o ${elasticsearch_user} -g ${elasticsearch_group} /dev/null ${pidfile} /usr/bin/install -d -o ${elasticsearch_user} -g ${elasticsearch_group} -m 755 /var/db/elasticsearch /usr/bin/install -d -o ${elasticsearch_user} -g ${elasticsearch_group} -m 755 /var/log/elasticsearch } elasticsearch_console() { command_args="" run_rc_command "start" } if [ -n "$2" ]; then profile="$2" if [ "x${elasticsearch_profiles}" != "x" ]; then eval elasticsearch_config="\${elasticsearch_${profile}_config:-}" if [ "x${elasticsearch_config}" = "x" ]; then echo "You must define a configuration (elasticsearch_${profile}_config)" exit 1 fi export ES_PATH_CONF=${elasticsearch_config} required_files="${elasticsearch_config}/elasticsearch.yml" required_files="${elasticsearch_config}/jvm.options" eval elasticsearch_enable="\${elasticsearch_${profile}_enable:-${elasticsearch_enable}}" pidfile="${_pidprefix}.${profile}.pid" command_args="-d --pidfile=${pidfile}" echo "===> elasticsearch profile: ${profile}" else echo "$0: extra argument ignored" fi else if [ "x${elasticsearch_profiles}" != "x" -a "x$1" != "x" ]; then for profile in ${elasticsearch_profiles}; do eval _enable="\${elasticsearch_${profile}_enable}" case "x${_enable:-${elasticsearch_enable}}" in x|x[Nn][Oo]|x[Nn][Oo][Nn][Ee]) continue ;; x[Yy][Ee][Ss]) ;; *) if test -z "$_enable"; then _var=elasticsearch_enable else _var=elasticsearch_"${profile}"_enable fi echo "Bad value" \ "'${_enable:-${elasticsearch_enable}}'" \ "for ${_var}. " \ "Profile ${profile} skipped." continue ;; esac %%PREFIX%%/etc/rc.d/elasticsearch $1 ${profile} retcode="$?" if [ "0${retcode}" -ne 0 ]; then failed="${profile} (${retcode}) ${failed:-}" else success="${profile} ${success:-}" fi done exit 0 fi fi if [ "x${elasticsearch_mem_min}" != "x" ]; then echo "The elasticsearch_mem_min variable is no longer supported please set this in %%PREFIX%%/etc/jvm.options" exit 1; fi if [ "x${elasticsearch_mem_max}" != "x" ]; then echo "The elasticsearch_mem_max variable is no longer supported please set this in %%PREFIX%%/etc/jvm.options" exit 1; fi if [ "x${elasticsearch_props}" != "x" ]; then echo "The elasticsearch_props variable is no longer supported please set this in %%PREFIX%%/etc/jvm.options" exit 1; fi run_rc_command "$1" Index: head/textproc/elasticsearch6/files/pkg-message.in =================================================================== --- head/textproc/elasticsearch6/files/pkg-message.in (revision 464525) +++ head/textproc/elasticsearch6/files/pkg-message.in (revision 464526) @@ -1,17 +1,35 @@ ====================================================================== Please see %%ETCDIR%% for sample versions of elasticsearch.yml and logging.yml. ElasticSearch requires memory locking of large amounts of RAM. -You will either need to set: +You may need to set: -sysrc elasticsearch_login_class="root" +sysctl security.bsd.unprivileged_mlock=1 -or +!!! PLUGINS NOTICE !!! -sysctl security.bsd.unprivileged_mlock=1 +ElasticSearch plugins such as X-Pack should only be installed via the +elasticsearch-plugin script included with this software. As we strive +to provide a minimum semblance of security, the files installed by +the package are owned by root:wheel. This is different than upstream +which expects all of the files to be owned by the user and for you to +execute the elasticsearch-plugin script as said user. -to prevent the process from failing the bootstrap. +You will encounter permissions errors with configuration files and +directories created by plugins which you will have to manually correct. +This is the price we have to pay to protect ourselves in the face of +a poorly designed security model. + +e.g., after installing X-Pack you will have to correct: + +%%ETCDIR%%/elasticsearch.keystore file to be owned by root:elasticsearch +%%ETCDIR%%/x-pack directory/files to be owned by root:elasticsearch + +Also you need to add "xpack.ml.enabled: false" to your elasticsearch.yml +configuration as this plugin does not support FreeBSD. + +!!! PLUGINS NOTICE !!! ======================================================================