update-alternatives: ошибка: неизвестный аргумент

Вопрос или проблема

Я пытаюсь использовать update-alternatives для разных версий OpenSSL на машине с Ubuntu 22. Следующее работает для OpenSSL 3 (после sudo -i):

update-alternatives \
--install /usr/bin/openssl openssl /usr/local/openssl/3.3.2/bin/openssl 3030200 \
--slave /usr/local/bin/openssl openssl_ /usr/local/openssl/3.3.2/bin/openssl \
--slave /lib/x86_64-linux-gnu/libssl.so libssl /usr/local/openssl/3.3.2/lib64/libssl.so.3 \
--slave /lib/x86_64-linux-gnu/libssl.so.3 libssl_ /usr/local/openssl/3.3.2/lib64/libssl.so.3 \
--slave /lib/x86_64-linux-gnu/libcrypto.so libcrypto /usr/local/openssl/3.3.2/lib64/libcrypto.so.3 \
--slave /lib/x86_64-linux-gnu/libcrypto.so.3 libcrypto_ /usr/local/openssl/3.3.2/lib64/libcrypto.so.3 \
--slave /usr/include/openssl openssl_include /usr/local/openssl/3.3.2/include/openssl

Однако для OpenSSL 1 я получаю update-alternatives: error: unknown argument '/lib/x86_64-linux-gnu/libssl.so.1.1':

update-alternatives \
--install /usr/bin/openssl openssl /usr/local/openssl/1.1.1w/bin/openssl 1010123 \
--slave /usr/local/bin/openssl openssl_ /usr/local/openssl/1.1.1w/bin/openssl \
--slave /lib/x86_64-linux-gnu/libssl.so libssl /usr/local/openssl/1.1.1w/lib/libssl.so.1.1 \
--slave /lib/x86_64-linux-gnu/libssl.so.1.1 libssl_ /usr/local/openssl/1.1.1w/lib/libssl.so.1.1 \
--slave /lib/x86_64-linux-gnu/libcrypto.so libcrypto /usr/local/openssl/1.1.1w/lib/libcrypto.so.1.1 \
--slave /lib/x86_64-linux-gnu/libcrypto.so.1.1 libcrypto_ /usr/local/openssl/1.1.1w/lib/libcrypto.so.1.1 \
--slave /usr/include/openssl openssl_include /usr/local/openssl/1.1.1w/include/openssl

Я пробовал установить альтернативы для OpenSSL 1 перед OpenSSL 3, но получаю тот же результат ошибки. Я подтвердил, что все целевые файлы для OpenSSL 1 существуют в моей файловой системе.

Может кто-то это объяснить? Есть ли известная проблема с update-alternatives, которая объясняет мой случай?

Ответ или решение

Ошибка, с которой вы столкнулись при использовании команды update-alternatives, связана с неправильным форматом или неправильным использованием аргументов в вашей команде. Давайте разберем вашу ситуацию подробнее и предложим решение.

Проблема

Ваша команда для OpenSSL 1.1.1w приводит к ошибке unknown argument '/lib/x86_64-linux-gnu/libssl.so.1.1'. Это чаще всего случается из-за лишнего пробела или других некорректных символов, которые мешают корректной интерпретации аргументов. В вашем коде после libssl.so.1.1 присутствует лишний пробел, что может вызывать ошибку.

Решение

Проверьте формат вашей команды и убедитесь, что между аргументами нет лишних пробелов или символов. Вот исправленная версия вашей команды для OpenSSL 1.1.1w:

update-alternatives \
--install /usr/bin/openssl openssl /usr/local/openssl/1.1.1w/bin/openssl 1010123 \
--slave /usr/local/bin/openssl openssl_ /usr/local/openssl/1.1.1w/bin/openssl \
--slave /lib/x86_64-linux-gnu/libssl.so libssl /usr/local/openssl/1.1.1w/lib/libssl.so.1.1 \
--slave /lib/x86_64-linux-gnu/libssl.so.1.1 libssl_ /usr/local/openssl/1.1.1w/lib/libssl.so.1.1 \
--slave /lib/x86_64-linux-gnu/libcrypto.so libcrypto /usr/local/openssl/1.1.1w/lib/libcrypto.so.1.1 \
--slave /lib/x86_64-linux-gnu/libcrypto.so.1.1 libcrypto_ /usr/local/openssl/1.1.1w/lib/libcrypto.so.1.1 \
--slave /usr/include/openssl openssl_include /usr/local/openssl/1.1.1w/include/openssl

Дополнительные рекомендации

  1. Проверка пространства: Убедитесь, что между каждым аргументом и его значением нет лишних пробелов или невидимых символов.
  2. Проверка путей: Подтвердите, что все указанные пути действительно существуют, включая библиотеки и файлы OpenSSL. Это можно сделать с помощью команды ls.
  3. Использование --remove: Если вы ранее добавляли альтернативы для OpenSSL, рассмотрите возможность использования команды update-alternatives --remove для удаления предыдущих настроек, что поможет избежать потенциальных конфликтов.

Заключение

Если вы исправите указанные моменты, команда update-alternatives должна работать без ошибок. Если проблема все еще проявляется, рассматривайте возможность проверки состояния системы и установленных пакетов, чтобы исключить конфликты версий или другие технические сбои.

Оцените материал
Добавить комментарий

Капча загружается...