![查找已安装的软件包和版本](https://linux22.com/image/1138764/%E6%9F%A5%E6%89%BE%E5%B7%B2%E5%AE%89%E8%A3%85%E7%9A%84%E8%BD%AF%E4%BB%B6%E5%8C%85%E5%92%8C%E7%89%88%E6%9C%AC.png)
我对 ubuntu 很陌生,我正在尝试找到一个命令来告诉我在我的“沙箱”上安装了哪些软件包和版本,我希望将其捆绑为输出文件
答案1
您的问题可能会被标记为重复,因为您需要在 StackExchange 网站上发布之前进行一些自己的研究。但是,由于可能的重复(如何列出所有已安装的软件包)没有涉及版本信息,这是您的答案:
dpkg -l | grep "^ii" | awk '{print $2,$3}'
或者
dpkg -l | awk '/^ii/ {print $2,$3}'
解码:
dpkg -l
列出所有软件包,包括已被删除的软件包。
grep "^ii"
仅打印以“ii”开头的行(以排除已删除的软件包,通常标记为“rc”)。请注意,已安装的软件包可能并不总是处于“ii”状态。此命令将检查:dpkg -l | grep -v "^ii" | grep -v "^rc" | tail -n +6
awk '{print $2,$3}'
打印第二列和第三列(分别是包名称和版本)。
附言:我之前写过一些关于这个的评论,但是我的代码是错误的。
答案2
我知道您可以使用它dpkg --get-selections | awk '{print $1}'
来查看所有已安装的软件包。但不确定版本,如果我发现其他内容,我会告诉您
答案3
虽然从输出中选择字段dpkg -l
当然可行,但更基本的dpkg-query
命令允许自定义输出字段和格式,而无需借助其他文本处理工具。实际上,纯文本
dpkg-query -W
没有明确的格式字符串会给出一个制表符分隔的包名称和版本列表(相当于dpkg -l | awk '{print $2,$3}'
),如下所述man dpkg-query
:
-W, --show [package-name-pattern...]
Just like the --list option this will list all packages matching
the given pattern. However the output can be customized using
the --showformat option. The default output format gives one
line per matching package, each line having the name (extended
with the architecture qualifier for Multi-Arch same packages)
and installed version of the package, separated by a tab.
如果你想要更漂亮的输出,更类似于dpkg -l
你可以使用类似的东西
dpkg-query -W -f='${binary:Package;-25}\t${Version}\n'
在宽度为 25 列的字段中将包名称左对齐,或者
dpkg-query -W -f='${db:status-abbrev}\t${binary:Package;-25}\t${Version}\n'
ii
在每行的开头包含等状态标志。