Почему “dir-or-file-in-usr-local” является ошибкой, а не предупреждением?

Эта функция делает чтение вывода grep легче. Если Вы хотите проверить данные это grep не может читать непосредственно затем, можно закончить тем, что использовали канал для питания grep вместо того, чтобы создать временный файл который grep может читать. Если бы Вы не хотите временный файл (например, потому что это было бы огромно), затем без --label у Вас была бы проблема этим grep не может распечатать информацию, в которой регистрируют соответствие, был найден.

Это

echo $'fubar\nbaz\nbat' | grep --label=inputfile -H a
inputfile:fubar
inputfile:baz
inputfile:bat

эквивалентно

echo $'fubar\nbaz\nbat' > inputfile
grep -H a inputfile
inputfile:fubar
inputfile:baz
inputfile:bat

Без --label первый подход не работал бы (т.е. не обеспечил бы требуемый вывод), таким образом, необходимо будет сделать что-то вроде этого:

echo $'fubar\nbaz\nbat' | grep a | awk '{print "inputfile:" $0}'

Но это не предлагает соответствия, выделяющегося в консоли.

5
17.04.2014, 01:17
2 ответа

rpmlint - это инструмент для проверки пакетов RPM на соответствие какой-то политике упаковки. Его конфигурация обычно зависит от дистрибутива, и он проверяет пакеты на соответствие определенной политике распространения. Проверка собственных пакетов - это нормально, если вы этого хотите.

Если ваша политика отличается от политики распространения, вы должны либо настроить rpmlint соответственно, воздержаться от его использования или игнорировать определенные ошибки.

Следующее должно помочь при добавлении в / etc / rpmlint / config или ~ / .config / rpmlint (не проверено):

addFilter("E: dir-or-file-in-usr-local")

Источники:

5
27.01.2020, 20:39

Вы не соблюдаете стандарт. / usr / local предназначен для хранения локально скомпилированных файлов, то есть файлов, созданных на локальной машине.

Когда вы создаете пакет, цель состоит в том, чтобы распространить его на другие машины.

Если вы устанавливаете свой пакет на машину, а затем собираете то же программное обеспечение из исходного кода на той же самой машине, файлы пакета будут перезаписаны, если обе цели будут / usr / local . Это конфликт, которого пытается избежать rpmlint .

В вашем случае я бы посоветовал создать пакет для установки файлов в папке /opt/hello2.8 . Последний каталог не будет конфликтовать ни с исходным пакетом, ни с локально созданными файлами.

0
27.01.2020, 20:39

Теги

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