libssl1.0.2
и libssl1.0.0
— разные пакеты, предоставляющие несовместимые библиотеки; Вот почему вы не можете удовлетворить зависимость libssl1.0.0
с помощью libssl1.0.2
.
Чтобы удовлетворить требования вашего пакета, я предлагаю добавить репозитории Debian 8 в вашу конфигурацию, так как Debian 8 по-прежнему поддерживается (, поэтому при необходимости вы получите обновления безопасности ). Для этого отредактируйте файл /etc/apt/sources.list
и скопируйте каждую строку stretch
, заменив stretch
на jessie
(, чтобы в итоге вы получили обе строкиstretch
и jessie
). Затем запустите apt update
, и apt install libssl1.0.0
должно заработать.
Кроме того, вы можете загрузить пакет,(найти свою архитектуру внизу страницы )и установить его с помощью dpkg -i
.
В обоих случаях apt-mark auto libssl1.0.0
поможет :таким образом, что пакет будет рассмотрен для автоматического -удаления, если он станет ненужным в будущем.
Я предполагаю, что вы анализируете вывод rpm
в режиме проверки, поэтому были сделаны некоторые незначительные корректировки (, хотя я не уверен насчет строки «не принадлежит» ). Поддержка обработки "?" для неудавшегося теста здесь не .
Основные проблемы с вашим подходом заключаются в том, что не следует (вообще )пытаться постепенно обрабатывать данные по мере их изменения; и что "." в строках, которые вы сопоставляете, является подстановочным знаком регулярного выражения, который затем может соответствовать измененным данным. например. /.M......./
в качестве регулярного выражения будет соответствовать «.M.......
», «Mode differs
», «MD5 sum
» и т. д. (и т. д., если IGNORECASE
не равно 0 в GNU awk.)
Еще одна проблема заключается в количестве перестановок, сопоставить их все программно нецелесообразно.
Этот код работает следующим образом:
desc[]
, проиндексированный "XY"
, где X
— позиция символа, а Y
— буквальный символ XY
» в «...Y.....
», где Y находится в позиции X (вы, конечно, можете сделать это самостоятельно, но это утомительно и чревато ошибками¹)output[]
output[]
в список, разделенный запятыми -В случае, если вы не знакомы, конструкция (expression) ? "true" : "false"
используется здесь для вставки (или без )запятых или множественного числа в конце «s», если это необходимо, с сохранением if/else
и дублированием. "........."
— это волшебная строка, а 9 — это волшебное число (вы можете изменить их, если ваш вывод rpm
действительно устарел и в нем отсутствует «P» в качестве 9-го столбца ).
«%.*s
» в printf()
позволяет выбрать префикс переменной длины заполнения "........."
с каждой стороны. Для позиции N (, начинающейся с 1 ), он выводит N -1 символов в качестве префикса, часть совпадения, затем 9 -N символов в качестве суффикса.
BEGIN {
FS="|"
desc["1S"]="file Size differs"
desc["2M"]="Mode differs (includes permissions and file type)"
desc["35"]="MD5 sum differs"
desc["4D"]="Device major/minor number mismatch"
desc["5L"]="readLink(2) path mismatch"
desc["6U"]="User ownership differs"
desc["7G"]="Group ownership differs"
desc["8T"]="mTime differs"
desc["9P"]="caPabilities differ"
## transform indexes: "4D" -> "...D....." with "D" in the 4th column
for (dd in desc) {
match(dd,/([0-9]+)(.)/,bits)
regex=sprintf("%.*s%s%.*s",bits[1]-1,".........",bits[2],
9-bits[1],"........")
sub(/ differs?/,"",desc[dd])
desc[regex]=desc[dd]; delete desc[dd]
}
}
{
oo=0; out=""
for (regex in desc)
if ($2 ~ regex) output[++oo]=desc[regex]
for (ii=1; ii<=oo; ii++)
out=sprintf("%s%s%s",out, (ii>1)?", ":"", output[ii]);
printf("%s|%s differ%sn",$1,out,(oo==1)?"s":"")
}
Такой код достаточно гибок, чтобы обрабатывать многие варианты подобных флагов.
Если вам нужно обработать "?" во входных данных вы также можете изменить код регулярного выражения, чтобы создать более сложное регулярное выражение, например. ".(M|\?).......
" вместо просто ".M.......
"; а затем обработайте это, проверив совпадения в цикле for (regex in desc)
.