[
https://issues.apache.org/jira/browse/DIRSERVER-2175?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Emmanuel Lecharny updated DIRSERVER-2175:
-----------------------------------------
Component/s: installer
> apacheds.sh startup script: support for more shells
> ---------------------------------------------------
>
> Key: DIRSERVER-2175
> URL: https://issues.apache.org/jira/browse/DIRSERVER-2175
> Project: Directory ApacheDS
> Issue Type: Improvement
> Components: installer
> Affects Versions: 2.0.0-M23
> Environment: Linux, Busybox Ash shell
> Reporter: Stan R
> Priority: Trivial
> Attachments: Dockerfile.alpine.apacheds, apacheds.sh.patch
>
>
> Attempting to start ApacheDS via the apacheds.sh startup script with a shell
> other than bash, such as busybox Ash shell, results in the following error:
> {noformat}
> $ sh apacheds.sh run
> apacheds.sh: line 113: syntax error: unexpected "(" (expecting ")")
> {noformat}
> The offending line 113 (and 1 previous) for reference:
> {noformat}
> # Build the classpath (http://stackoverflow.com/a/4729899/516433)
> CLASSPATH=$(JARS=("$ADS_HOME"/lib/*.jar); IFS=:; echo "${JARS[*]}")
> {noformat}
> Analyzing the offending line reveals that the classpath is built using a
> bash-specific syntax/feature for arrays -- functionality not found in other
> shells. Following the helpful link on line 112 to stackoverflow for further
> explanation reveals that while the manual classpath creation methodology via
> bash arrays used to be the "best" available, it is now deprecated. According
> to the stackoverflow page, building the classpath manually is no longer a
> necessity as of at least 2012; the classpath can now contain wildcards, and
> Java will kindly resolve the wildcards on its own. Further investigation of
> the classpath wildcard resolution functionality reveals that the feature has
> been present in Java 1.7 since release 1 (I downloaded the first release and
> looked at the manpage "java.1") in 2011.
> Since ApacheDS requires Java 1.7 as a prerequisite, and the wildcard
> classpath resolution functionality is present in all versions of Java 1.7 and
> up, I propose eliminating the bash-only manual classpath creation, and
> instead take advantage of the 5-year-old enhancement present in Java, so that
> other shells may be supported when executing the apacheds.sh script.
> The largest benefit to supporting shells other than bash, is for situations
> in which ApacheDS is deployed in minimalized container environments for
> security reasons, where attempts are made to reduce potential attack surface
> by removing all unnecessary features, libraries, and software. To this end,
> bash is a prime candidate for removal as a dependency (see shellshock).
> Given the above, changing line 113 to the following allows the script to be
> executed, and ApacheDS to be launched, without error in busybox's ash shell
> and bash shell (and perhaps others):
> {noformat}
> CLASSPATH="$ADS_HOME/lib/*"
> {noformat}
> I will attempt to attach a patchfile if I can.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]