Модуль оболочки Ansible не учитывает командный переключатель

Так что, как вы указали, лучше всего было бы, если бы оба пакета имели общий «Provides».

Поскольку это, вероятно, не в ваших силах, другой вариант — создать псевдо RPM в качестве прокси для Oracle Java 11 RPM.

  • Name:java-11-oracle(например)
  • Provides:java-11или любое другое соответствующее значение из RPM openjdk
  • Requires:java>= 11 (или jdk, или jre...)
  • %files:пустой раздел (его можно опустить)

В своем собственном пакете добавьте зависимость к Provides:, которая теперь является общей между этим RPM-прокси и openjdk.

После этого ваш пакет можно будет установить в одной из следующих ситуаций::

  • OpenJDK 11 установлен или доступен в репозиториях
  • Oracle Java 11 RPM и ваш java-11-oracleRPM установлены или доступны в активных репозиториях.
0
07.10.2020, 11:08
1 ответ

По разным историческим причинам разные версии echoтрактуют свои аргументы по-разному...

$ bash -c 'echo -e hello'
hello
$ dash -c 'echo -e hello'
-e hello

Dash используется в Debian и Ubuntu /bin/sh, и это оболочка, которая, вероятно, будет использоваться большинством программ, убегающих в оболочку. Это, наверное, то, что вы бьете здесь.

Вы можете избежать несовместимости, используя вместо этого printf. Это стандартный инструмент, у него меньше подобных несовместимостей (и он всегда обрабатывает \nи т. д.):

shell: printf "First Line\n " > "/tmp/{{ ansible_date_time.date }}_test.txt"

Что касается использования кавычек, параметры обрабатываются самой утилитой, а кавычки полностью являются конструкцией оболочки, поэтому независимо от того, используете ли вы, например. echo '-e'или echo -e, то, что видит сам echo, точно такое же.

См. также:

2
18.03.2021, 22:59

Теги

Похожие вопросы