Как определить менеджер пакетов, используемый для установки программного обеспечения в CentOS?

Я бы не стал использовать sed - я не думаю, что это хороший инструмент для этой цели из-за присущей ему строчно-ориентированной природы.

Вместо этого я бы предложил:

#!/usr/bin/env perl
use strict;
use warnings;

while (<>) {
    #print current line (because we insert _after) 
    print;
    #extract the number. If you need to work on _actual_ line number, you need $.
    my ($num) = m/^(\d+)/;
    if ( $num > 13 and m/;/ ) {
        #print snippet, bail out
        print ++$num, " SNIPPET\n";    
        last;
    }
}
#print rest of file
print <>;

Примечание - это извлекает нумерацию из содержимого на основе вашего примера. Я не мог точно сказать, нужны ли вам реальные номера строк - хотя sed -e '13 .. ' подразумевает, что вы это делаете.

В каком случае:

if ( $. > 13 and m/;/ ) {
    print "SNIPPET\n"; 
    last;
}
0
20.09.2018, 14:40
2 ответа

Ответить на этот вопрос может быть, а может и не быть.

Сначала используйте yum, чтобы проверить, принадлежит ли бинарный файл PHP установленному пакету:yum whatprovides '*bin/php'

Если yumне находит пакет, то, скорее всего, он не был установлен через yum. Я говорю, скорее всего, в случае повреждения базы данных yum.

Если он не был установлен viayum, то было бы невозможно определить, был ли он установлен через make, потому что makeобычно не оставляет никаких следов его использования; Он копирует файлы туда, куда им нужно, но не оставляет записи об этом.

0
28.01.2020, 02:42

Выполнить rpm -qf /usr/local/php-7.1.16/bin/php.

Если он отвечает:

file /usr/local/php-7.1.16/bin/php is not owned by any package

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

Как уже говорили другие, тот факт, что он установлен в /usr/local, указывает на то, что он определенно не установлен из стандартных пакетов дистрибутива. Он может быть установлен с использованием makeили RPM-пакета стороннего -.

Единственный способ (в некоторой степени )подтвердить, что файлы были установлены вместе с make, — это найти в системе дерево исходного кода PHP 7.1.16 с .oили другими файлами объектного кода. присутствует (= указывает, что исходный код действительно был скомпилирован )и их временные метки близки к временным меткам двоичного файла PHP в /usr/local/php -7.1.16/bin/php.

1
28.01.2020, 02:42

Теги

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