如何识别CentOS中安装软件所使用的包管理器?

如何识别CentOS中安装软件所使用的包管理器?

在我的 CentOS 7.2 服务器上:

[root@localhost data]# which php
/usr/local/bin/php
[root@localhost data]# ll /usr/local/bin/php
lrwxrwxrwx. 1 root root 29 Jun 25 08:13 /usr/local/bin/php -> /usr/local/php-7.1.16/bin/php

我的 CentOS 7.2 上正在运行 PHP,但是我如何 dpkg --status 用于安装 PHP 的包管理器?我的意思是它是使用安装yum还是 make 安装?

答案1

跑步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或存在其他目标代码文件(= 表明源实际上已编译)并且它们的时间戳接近 /usr/local/php-7.1.16/bin/php 中 PHP 二进制文件的时间戳。

答案2

这个问题可能能回答,也可能不能回答。

首先,用于yum检查 PHP 二进制文件是否属于已安装的包:yum whatprovides '*bin/php'

如果yum找不到该软件包,则很可能它不是通过安装的yum。我说最有可能的是 yum 的数据库损坏了。

如果它不是通过viayum 安装的,那么就不可能确定它是否是通过安装的,make因为make通常不会留下任何使用痕迹;它将文件复制到需要的位置,但不会留下这样做的记录。

答案3

我认为你php是通过安装的make

首先,在 CentOS 中,官方存储库中没有 php7 二进制文件(其他存储库中有 php7 二进制文件,如“Remi”或“Webtatic”),其次/usr/local/是,根据FHS

/usr/local层次结构供系统管理员在本地安装软件时使用。当系统软件更新时,它需要确保不被覆盖。它可用于可在一组主机之间共享的程序和数据,但在/usr.

恕我直言,我认为你的 php 是用 make 在本地构建的。

相关内容