在我的 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 的数据库损坏了。
如果它不是通过via
yum 安装的,那么就不可能确定它是否是通过安装的,make
因为make
通常不会留下任何使用痕迹;它将文件复制到需要的位置,但不会留下这样做的记录。
答案3
我认为你php
是通过安装的make
。
首先,在 CentOS 中,官方存储库中没有 php7 二进制文件(其他存储库中有 php7 二进制文件,如“Remi”或“Webtatic”),其次/usr/local/
是,根据FHS:
该
/usr/local
层次结构供系统管理员在本地安装软件时使用。当系统软件更新时,它需要确保不被覆盖。它可用于可在一组主机之间共享的程序和数据,但在/usr
.
恕我直言,我认为你的 php 是用 make 在本地构建的。