web-dev-qa-db-fra.com

Comment spécifier une directive environnement systemd contenant =?

Je souhaite spécifier une directive Environmentsystemd contenant =, par exemple.

Environment=CATALINA_OPTS=-Dappserver.home=/var/lib/archiva/Apache-Tomcat-current -Dappserver.base=/var/lib/archiva/Apache-Tomcat-current

et obtenez l'erreur

[/lib/systemd/system/archiva.service:10] Invalid environment assignment, ignoring: CATALINA_OPTS=-Dappserver.home\=/var/lib/archiva/Apache

dans journalctl -xe. J'ai essayé de citer avec " et ' et d'échapper à = avec \ sans succès. Cela semble sans papiers.

18
Karl Richter

Je pense que votre problème est dû à l'espace dans le contenu de la variable d'environnement. En regardant les exemples de les docs systemd , une affectation devrait être une chaîne unique:

Exemple:

Environment="ONE=one" 'TWO=two two'
ExecStart=/bin/echo $ONE $TWO ${TWO}

Ceci exécutera/bin/echo avec quatre arguments: onename__, twoname__, twoet two two.

Exemple:

Environment=ONE='one' "TWO='two two' too" THREE=
ExecStart=/bin/echo ${ONE} ${TWO} ${THREE}
ExecStart=/bin/echo $ONE $TWO $THREE

Ainsi, echo est appelé deux fois, la première fois avec les arguments 'one', 'two two' too et la deuxième fois avec les arguments onename__, two two, tooname__.

J'ai testé cela avec le service suivant (notez les guillemets tout au long de la mission):

[Unit]
Description=My Daemon

[Service]
Environment='CATALINA_OPTS=-Dappserver.home=/var/lib/archiva/Apache-Tomcat-current -Dappserver.base=/var/lib/archiva/Apache-Tomcat-current'
ExecStart=/bin/echo ${CATALINA_OPTS}

[Install]
WantedBy=multi-user.target

Et obtenu le résultat souhaité dans journalctlname__:

Apr 26 08:19:29 laptop echo[28439]: -Dappserver.home=/var/lib/archiva/Apache-Tomcat-current -Dappserver.base=/var/lib/archiva/Apache-Tomcat-current

Bien entendu, il serait plus simple d'utiliser plutôt EnvironmentFilename__. Remplacer Environmentpar ce qui suit a donné le même résultat souhaité:

EnvironmentFile=/tmp/foo

/tmp/foo était contenu (notez le manque de guillemets):

CATALINA_OPTS=-Dappserver.home=/var/lib/archiva/Apache-Tomcat-current -Dappserver.base=/var/lib/archiva/Apache-Tomcat-current
36
muru