如何列出所有通过 Guix 安装的软件包?在 Ubuntu 上,这将通过dpkg -l
.
答案1
guix package --list-installed
( guix package -I
) 是列出任何 Linux 发行版上已安装软件包的有效答案经过包管理器guix
。
但它并不等同于dpkg -l
.为什么?
dpkg -l
将列出系统上所有已安装的软件包...guix
无法获取有关通过apt
, ...安装的软件包的信息,只能访问dpkg
其本身安装的软件包。guix
在 GuixSD 上
GuixSD 带有预安装的软件包;除了 之外guix package --list-installed
,要列出系统范围的软件包,您还需要设置选项--profile
:
guix package --list-installed --profile=/run/current-system/profile |awk '{print $1}'
例如:
$ guix package --list-installed=zile
$
不返回任何东西。
但:
$ guix package --list-installed --profile=/run/current-system/profile |awk '/zile/ {print $1,$2}'
zile 2.4.14
包管理(emacs方式):
答案2
您可以使用
guix package --list-installed
列出所有已安装的软件包。| grep name
在末尾加上 a以在该列表中搜索“名称”。
答案3
guix
关于如何列出用户或系统配置文件中安装的软件包的其他答案是正确的,但是还安装了其他软件包来满足依赖关系。此类软件包未列出guix package
,但已安装在商店中。
为了进行比较,dpkg -l
列出了所有已安装的软件包,无论它们是专门安装的还是为了满足依赖关系而自动安装的。我发现自己在寻找类似的列表,首先只是为了我的一般理解,后来当我想检查驱动程序包是否存在时,尽管我无法判断是否使用了此类驱动程序包。
由于所有软件包都安装到存储中,因此可以查看存在哪些目录来/gnu/store
确定安装了哪些软件包。对于我自己,我想出了以下命令,该命令查找/gnu/store
名称中立即带有破折号的目录,然后切除第一个破折号之前的部分,按字母顺序对它们进行排序,并删除重复的条目。这是迄今为止我能得到的最接近的已安装软件包列表。
$ find /gnu/store/ -maxdepth 1 -type d -iname '*-*' | cut -d '-' -f 2- | sort | uniq
当然,这是 Guix 的一个很棒的功能,它可以隐藏所有这些内容,并允许用户只关心 所显示的包guix package --list-installed
。