Answers:
您是否想了解所有带有选项的dpkg命令?阅读以下链接。
列出所有已安装的软件包
这里的“少”是一个简单的文本阅读器,用于在现有终端窗口中打开的新缓冲区中滚动软件包列表。该列表不会与其他终端命令混合并输出。点击“ q”返回终端提示。有关更多信息,请参见“少用人”。
dpkg -l | less
要检查是否已安装软件包:
dpkg -l {package_name}
dpkg -l vlc
检查软件包是否已安装(例如vlc
)。如果已安装,请启动该软件包:
dpkg -l | grep vlc
显示软件包的安装位置。“ -S”(大写S)代表“搜索”
sudo dpkg -S {package_name}
sudo dpkg -S skype
要使用Grep搜索:
dpkg -l | grep {keywords}
dpkg -l | grep pdf
dpkg -l packagename
,因为即使未完全安装该软件包,它也可能返回0退出代码-参见:github.com/bitrise-io/bitrise/issues/433
dpkg -l | cut -d " " -f 3 | grep "^vlc"
显示所有以vlc
采用 dpkg
该命令是debian软件包管理器。
您可以列出所有已安装的软件包
dpkg -l
您可以通过以下方式查看特定软件包的详细信息:
dpkg -p packagename
并了解是否已安装,请使用
dpkg -s packagename | grep Status
您可以了解哪个软件包包含所需的软件
apt-cache search name*
在您的情况下,应使用此命令搜索所需的软件包名称
apt-cache search virtual machine host
apt -qq list PACKAGE
也可用于检查是否安装了PACKAGE。
如果已安装,它将打印出类似的内容([installed]
在行的末尾带有):
$ apt -qq list awscli
awscli/stable,now 1.4.2-1 all [installed]
如果未安装,输出将是:
$ apt -qq list awscli
awscli/stable 1.4.2-1 all
-qq
用 没有它,它似乎可以正常工作,并且该选项不在手册中man apt
apt list
命令尚未完全记录。在16.04上进行的一些快速测试似乎表明这-q
是--quiet
option 的同义词。第一个-q
阻止打印“完成”一词。第二个也防止打印“ Listing ...”。
我写一个新的答案中的tasksel “任务名称”中不显示dpkg
或apt
查询。表示其他答案不完整(或错误)。
“我不记得我是否选中了“虚拟机主机”复选框。
重新运行后,检查名称是否有星号sudo tasksel
。
(如果正在运行,则为“ i ” tasksel --list-tasks
)。
如果没有看到此消息,则可能未安装“ tasksel meta-package ”。
“ ..如何检查我的服务器是否具有相应的软件包?”
如果要了解在“虚拟机主机” tasksel元软件包下安装了什么,请执行以下操作:
tasksel --list-tasks
(您的情况tasksel --list-tasks | grep virt
就足够了)
这会给出正确的任务名称并指示是否已安装。
在您的情况下,此taskel名称为virt-host
。
“虚拟机主机附带哪些软件包?”
在最后一个命令中,找到taskel任务名称。
下一条命令需要此命令:
tasksel --task-packages virt-host
这列出了组成该名称的单个Tasksel元软件包(由附加的'^'表示)。
您的情况是virt-host^
。
找到正确的元名称后,您可以使用apt:
apt show virt-host^ | grep "Package:"
(或者apt-cache show
...
如果apt show
不起作用。)
这将显示构成给定meta包的所有包。
然后:
dpkg -l {each individual pkg name listed above}
这将告诉您单个软件包是否已安装/卸载(第二个字母表示:“ i”状态表示已安装)。对task / meta包下面列出的所有包执行此操作。
这应该回答原始问题。
旁注:/usr/share/tasksel/descs/ubuntu-tasks.desc还包含Tasksel元软件包的描述。如果您:grep "virt" /usr/share/tasksel/descs/ubuntu-tasks.desc
它将显示正确的APT元软件包名称。(您的情况是ubuntu-virt-server
)。您也可以使用apt
带有该元名称的命令。
如果您想删除taskel软件包,这会有点杂草。请查阅https://askubuntu.com/a/88897/169878或那里的许多其他答案。
请注意,“元” apt软件包与Tasksel软件包名称不匹配。请查阅Tasksel社区页面以获取更多信息。
使用taskel(sudo apt-get install tasksel
如果尚未安装)并运行tasksel --list-tasks
。
taskel将打印出任务列表i
,已安装的u
每个任务旁边都有一个,未安装的每个任务旁边都有一个。
如果要安装任务,请使用tasksel install <task>
。您要查找的任务的名称是virt-host
。
软件选择项称为“任务”。
如果有人感兴趣,我创建了一个小脚本,您可以使用该脚本从软件包或应用程序列表中自动进行安装,或者仅检查它们是否已安装:
#!/bin/bash
apt -qq list YOUR_LIST_GOES_HERE | grep -v "installed" | awk -F/ '{print $1}' > /root/list.txt
packages=$(cat /root/list.txt)
grep -q '[^[:space:]]' < /root/list.txt
CHECK_LIST=$?
if [[ $CHECK_LIST -eq 1 ]]; then
echo "Your packages are already installed"
else
echo "Installing packages"
apt-get install -y $packages
fi
希望它可以帮助某人。
更简单的解决方案:
现在有一个apt list
列出已安装软件包的命令。您也可以使用
apt list <package>
请参阅man apt
以获取更多信息。如果您不知道确切的软件包名称,则可以使用它的apt search
后跟部分名称来查看相关软件包的列表。
$ apt-cache policy <package-name>
,例如$ apt-cache policy dillo