Что делать, если для пакета требуется старая версия базовой библиотеки, например SSL?

Примечание:улучшенное решение опубликовано в дублирующем вопросе

Из прочитанного Как получить доступ к временному файлу сразу после его создания? Мне пришла в голову идея использовать inotifyи создать жесткую -ссылку на сам файл. Это, конечно, состояние гонки, так как файл может быть отключен до создания жесткой ссылки, однако мне удалось восстановить данные во временном файле, который создает приложение. Вот короткий конвейер, собранный на вкладке терминала A, с вкладкой терминала B, выполняющей реальную команду:

inotifywait -m -r /tmp/hsperfdata_xie/ 2>&1 | 
while IFS= read -r line; do 

    awk '$2 == "CREATE"{system("ln /tmp/hsperfdata_xie/"$3" /tmp/BACKUP")}' <<< "$line"
    echo "$line" # unnecessary, only if you want to know what's inotify is writing
done

3 недостатка::

  • состояние гонки (объяснено выше)
  • Я очень быстро собрал awkдля одного конкретного файла; но более общая и гибкая awkкоманда, которая анализирует inotifywatchвывод и объединяет пути $1с именами файлов в $3, потребовала бы немного времени, чтобы проанализировать строки, sprintf()все в переменную и передать к system(), который может вернуться к предыдущему пункту маркера -к моменту завершения синтаксического анализа, нет файла для ссылки.
  • Для
  • требуются две вкладки терминала, хотя можно перевести весь конвейер в фоновый режим. Разумнее было бы иметь полный сценарий Python с разветвленными подпроцессами и фактически использовать inotifyмодули Python (, что, возможно, я и сделаю в будущем ).

Что касается рассматриваемого файла, то он выглядит как некоторая форма двоичных данных с повторяющимися 0...sun.rt._sync_Inflationsи 0...sun.rt._sync_Deflationsстроками (, которые могут быть связаны с многопоточностью Java). Но для целей этого вопроса это не имеет значения, -что мы уже имеем. Единственное, что я хотел, это получить сам файл.

1
27.12.2020, 19:27
2 ответа

Для дистрибутивов на основе RPM -вам потребуется установить пакет compat-openssl10.

1
18.03.2021, 22:40

Если по какой-либо причине использование более старой версии OpenSSL невозможно, вы можете рассмотреть возможность использования LibreSSL , которая была создана из OpenSSL 1.0 (, и не было планов по обновлению до OpenSSL 1.1.x API., AFAIK ), поэтому API должен быть совместим. Что касается безопасности, вы получите библиотеку, которая была проверена и усилена, поэтому вероятность нежелательного поведения (меньше самой библиотеки SSL ).

1
18.03.2021, 22:40

Теги

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