在Linux系统中,查看“有什么软件没安装”并非一个直接的命令,因为系统无法直接列出所有“未安装”的软件包。更专业的提法是:如何查询软件包的状态,以及如何发现系统中可能缺失但可用的软件。核心操作围绕包管理器和软件仓库展开。

不同的Linux发行版使用不同的包管理器。主要分为两大阵营:基于Debian(如Ubuntu)的APT(Advanced Package Tool)和基于RHEL(如CentOS, Fedora)的RPM(RPM Package Manager)及其前端工具YUM或DNF。
以下是几种专业且准确的查询方法:
1. 检查特定软件包是否已安装
这是最直接的需求。您需要知道软件包的具体名称或部分名称。
在Debian/Ubuntu系统中,使用dpkg或apt:
dpkg -l | grep 软件包名 或 apt list --installed | grep 软件包名
在RHEL/CentOS/Fedora系统中,使用rpm或dnf:
rpm -qa | grep 软件包名 或 dnf list installed | grep 软件包名
2. 列出所有已安装的软件包
通过对比“所有可用软件包”和“已安装软件包”的列表,可以间接了解“未安装”的软件。但“所有可用软件包”列表通常极其庞大。
列出已安装包:
| 发行版 | 命令 | 说明 |
|---|---|---|
| Debian/Ubuntu | dpkg --get-selections | 列出所有已选中(安装)的包 |
| Debian/Ubuntu | apt list --installed | 以更详细的格式列出 |
| RHEL/CentOS 7- | yum list installed | 列出已安装包 |
| RHEL/CentOS 8+ / Fedora | dnf list installed | 列出已安装包 |
| Arch Linux | pacman -Q | 列出所有显式安装的包 |
3. 搜索仓库中可用但未安装的软件
这是发现新软件或检查特定工具是否可安装的关键方法。
使用包管理器的搜索功能:
| 发行版 | 命令 | 说明 |
|---|---|---|
| Debian/Ubuntu | apt search 关键词 | 在仓库中搜索包含“关键词”的软件包 |
| RHEL/CentOS/Fedora | dnf search 关键词 | 在仓库中搜索软件包 |
| Arch Linux | pacman -Ss 关键词 | 在仓库中搜索软件包 |
执行搜索后,命令会列出所有匹配的软件包。其中,已安装的包通常会明确标记(如`[已安装]`或包名后面有`@`标记),而未列出的或未标记的即为“未安装”的可用软件。
4. 查看软件包详细信息(判断是否安装)
如果想了解某个已知名称的软件包的状态,可以查询其详细信息。
在Debian/Ubuntu上:apt show 软件包名。输出中若包含`State: not installed`,则表示未安装。
在RHEL/CentOS/Fedora上:dnf info 软件包名。如果包未安装,其“已安装”字段会显示为“否”。
5. 高级技巧:检查命令对应的软件包是否安装
如果您知道一个命令(如`htop`),但不确定它来自哪个包或是否安装,可以使用which、type命令结合包管理器反向查找。
例如,在基于RPM的系统上:dnf provides /usr/bin/htop 或 rpm -qf $(which htop 2>/dev/null) 2>/dev/null || echo “未安装”。
在Debian/Ubuntu上:dpkg -S $(which htop 2>/dev/null) 2>/dev/null || echo “未安装”。
扩展:软件包管理的相关概念
软件仓库(Repository):是Linux发行版官方及第三方维护的软件包集合。您系统中“未安装”的可用软件都存储在这里。通过`apt update`或`dnf check-update`可以更新本地仓库的索引。
依赖关系(Dependencies):Linux软件包之间存在复杂的依赖关系。包管理器会自动处理这些依赖,在安装时一并安装所需的其他包。因此,查看“未安装”的软件时,也需考虑其依赖树。
元包(Meta-package)和组(Group):一些发行版提供软件包组,例如`dnf group list`可以列出可安装的软件组(如“开发工具”),这有助于批量安装某一类未安装的软件。
总结来说,在Linux中,没有直接列出所有“未安装软件”的命令。专业做法是:1. 通过搜索软件仓库来发现可用软件;2. 使用包管理器命令检查特定软件包的安装状态;3. 对比已安装列表与仓库内容来获得未安装软件的信息。理解您所使用的发行版的包管理器是完成这些操作的关键。

查看详情

查看详情