Мне было поручено идентифицировать новое (не операционное) программное обеспечение, установленное на нескольких компьютерах с Red Hat Enterprise Linux (RHEL). Может ли кто-нибудь предложить эффективный способ сделать это? Я делал это вручную, сравнивая список установленного программного обеспечения со списком на FTP-сайте Red Hat для соответствующей операционной системы:
ftp://ftp.redhat.com/pub /redhat/linux/enterprise/6Server/en/os/SRPMS/
Проблемы, с которыми я сталкиваюсь при использовании этого метода, заключаются в том, что он утомителен/отнимает много времени, и перечислены только исходные пакеты (например, я не могу сказать, установлен ли avahi-glib как часть пакета avahi). Если кто-нибудь может предложить более эффективный способ идентификации программного обеспечения, которое не поставляется с операционной системой на машине RHEL, мы будем очень признательны!
Вот что я придумал как более эффективный метод (хотя я еще не понял последнюю часть, и могут быть более эффективные методы). Если кто-нибудь может помочь мне с последним шагом этого метода или может поделиться лучшим методом, я был бы очень признателен!
Новый метод (в разработке):
Скопируйте список пакетов с FTP-сайта Red Hat в текстовый файл (OSPackages.txt).
Чтобы устранить проблему, связанную с перечислением только исходных пакетов RPM, также скопируйте список файлов из соответствующей соответствующей версии в http://vault.centos.org в текстовый файл и объедините эти данные с OSPackages.txt.
Выполните команду rpm -qa > список1, yum -y список установлен > список2, ls /usr/bin > список3, ls /usr/share > список4, ls /usr/lib > список5.
Используйте cat, чтобы объединить все файлы listX в файл InstalledPackages.txt.
Используйте sort для сортировки уникальных записей, например: sort -u -k 1 InstalledPackages.txt > SortedInstalledPackages.txt
Выполните сравнение между SortedInstalledPackages.txt и OSPackages.txt, используя регулярное выражение (-I regexp), чтобы определить имена пакетов (и исключить номера версий). Мне также нужно было бы сделать «одностороннюю разницу», например. игнорировать дополнительные пакеты ОС в OSPackages.txt, которых нет в файле установленных пакетов.
Примечание. Я задал следующий вопрос, чтобы помочь мне с этой частью, и считаю, что теперь я довольно близок к решению: Как выполнить одностороннее сравнение в Linux?
Если diff (или другая команда) может выполнить последний шаг, она должна создать список пакетов, которых нет в ОС. Это шаг, на котором я застрял, и буду признателен за дальнейшую помощь. Какую команду я бы использовал для выполнения шага 6?