我正在尝试查找某人安装软件包的位置,但找不到。除了在整个文件系统上运行 grep 之外,还有其他好方法可以找到它吗?
我正在运行 Ubuntu 并正在寻找名为 Virtuoso 的三重存储数据库的安装。
谢谢,亚历克斯
答案1
给出的所有其他答案都处理软件包安装。如果没有 root 级别访问权限,用户可以安装软件的地方很少:
- ~(他们的主目录)
- /tmp(临时目录,软件包可能会在下次重启时消失。)
- /var/tmp(备用临时目录。更有可能在重启后继续存在。)
- /var/lock(公开可写。)
- 他们可以写入的任何其他目录(标准配置中没有)。
不使用包管理器安装包的正常位置包括:
- /usr/本地
- /var/local(变量组件)
- /选择
查找可写目录的命令(对于用户组内的某人而言)。
sudo find / -type d -perm -02 sudo find / -type d -perm -020 -group users sudo find / -type d -perm -0200 -user someone
用户可能属于多个组。每个组都需要检查。
答案2
whereis Virtuoso
或者,如果二进制文件有其他名称:
whereis name-of-binary
或者,如果软件不在通常的位置(/bin、/sbin、/usr/bin 等)
which name-of-binary
答案3
它是使用apt
或安装的吗dpkg
?如果是,您可以使用dpkg -l |grep <name>
来查找软件包并dpkg -L <package name>
查找文件的安装位置。
如果它不是使用包管理系统安装的,请/opt
首先查看/usr/local
,如果失败,则使用它find / -iname <what you are searching>
搜索整个文件系统。
答案4
不要忘记locate(1)
命令。如果设置了该命令,则updatedb
每晚都会在您的机器上运行并创建所有文件的索引。然后例如
$ locate myprogram
将为您提供包含myprogram
(文件名中或者路径)在系统上。
如果您知道二进制文件的确切名称,则可以使用正则表达式匹配来找到它,例如:
$ locate --regexp="myprogram$"
myprogram
将列出系统中所有以 结尾的文件。
两个注意事项:
- 许多系统默认将 updatedb 关闭。
- 该索引通常每天重建一次,因此它总是会有些过时。
locate
在深入寻找包之前,可以很好地了解系统中特定文件的位置。