所以我可以在一台机器上运行:
dpkg --get-selections '*' > selection.txt
Run Code Online (Sandbox Code Playgroud)
在另一台机器上:
dpkg --set-selections < selection.txt
Run Code Online (Sandbox Code Playgroud)
... 后跟以下任一项:
aptitude install
apt-get -u dselect-upgrade
Run Code Online (Sandbox Code Playgroud)
...安装软件包。
但是,似乎在此过程中丢失了一些信息,例如一个包(例如xyz)是否作为另一个包(abc)的依赖项自动安装。每当您执行类似apt-get --purge remove abc. 在原始机器上,您会收到通知,软件包xyz已作为依赖项安装abc,您可以使用apt-get autoremove它来摆脱它。
现在我知道deborphanand debfoster,但是鉴于手头的(简单)任务,它们使用起来很麻烦。
似乎保存和恢复如上所示的选择不足以恢复已安装包的微妙依赖关系。
有没有办法备份完整的元数据集以进行包管理,然后将其完整还原?
apt-get 中是否有与 yum "whatprovides" 选项等效的选项?
例如在 CentOS 上
yum whatprovides /usr/share/gdm/themes/TreeFlower/background.png
Run Code Online (Sandbox Code Playgroud)
告诉我
redhat-logos-4.9.99-11.el5.centos.noarch : CentOS-related icons and pictures.
Repo : base
Matched from:
Filename : /usr/share/gdm/themes/TreeFlower/background.png
Run Code Online (Sandbox Code Playgroud)
我可以在 Ubuntu 的命令行上获得类似的功能吗?
apt-get和 的区别是aptitude什么?他们都使用相同的存储库吗?
哪一个更好?
作为一个前 Debian 用户,我“有点”记得我应该只使用一个包管理器... apt-get,aptitude, 或synaptic,但不能组合使用这三个,因为可能存在冲突,它们不能很好地混合。
我不知道我在哪里听过它,但它已经留下了它的记忆印记。所以我只是想和你核实一下,是否真的不建议这样做,或者它是否是一个都市传说,并且它是完全安全的。你能确认一下吗?
安装包的最干净的方法是checkinstall在调用之前仍然使用命令dpkg吗?
为什么被aptitude删除支持apt-get默认?我在某处读过它,但忘记了——有人费心把它清理干净吗?Debian 不是更喜欢aptitudeCanonicalapt-get吗?
更新
从答案中我了解到 aptitude 已被删除,因为它不再用于安装,但是为什么安装程序使用apt-get,什么时候aptitude应该更好?
我经常发现自己想要安装一些东西,但我不确定它在哪个包中。这对我来说很常见:
$ make html
sphinx-build -b djangohtml -d _build/doctrees . _build/html
make: sphinx-build: Command not found
make: *** [html] Error 127
$ sudo apt-get install sphinx
E: Unable to locate package sphinx
$ sudo apt-get install sphinx-build
E: Unable to locate package sphinx-build
Run Code Online (Sandbox Code Playgroud)
谷歌
$ sudo apt-get install python-sphinx
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
我正在尝试构建 Ansible Playbook 以在 Linode 上部署一些 Ubuntu 12.04 服务器,但我的问题似乎是 Ubuntu 问题。当我运行 apt-get 或 aptitude 的不同组合时,我总是会收到以下对话框,我必须对此做出回应。

我希望从命令行回答这个问题,这样它就不会中断自动部署。有任何想法吗?
我当前的命令如下。请注意,我正在尝试设置 DEBIAN_FRONTEND:
#!/bin/bash
echo 'DEBIAN_FRONTEND="noninteractive"' >> /etc/profile
echo 'DEBIAN_FRONTEND="noninteractive"' >> ~/.profile
source /etc/profile
source ~/.profile
# This next line is the one that pops up the dialog
sudo aptitude -y install iptables-persistent
# Need this to fix an issue with the package post-install (this works fine.)
sudo sed \
-i 's/\(modprobe -q ip6\?table_filter\)/\1 || true/g' \
/var/lib/dpkg/info/iptables-persistent.postinst; \
sudo aptitude install iptables-persistent
Run Code Online (Sandbox Code Playgroud) 我已经做过很多次了:
sudo aptitude install php5-mcrypt
sudo apache2ctl restart
Run Code Online (Sandbox Code Playgroud)
aptitude 说 mcrypt 已安装。我已经重新安装了3次了。自从安装 apache 以来,我已经重新启动了大约 20 次。当我查看 phpInfo 时,我没有看到 mcrypt 列出。当我尝试执行我的代码时,它说 mcrypt 函数(选择一个 - 任意一个)不存在。mcrypt 显然没有启用。
有谁知道可能有什么问题?我不知道哪些部分应该放在什么地方以及所有这些应该如何组合在一起。
我安装了 PHP 5.5.3
经常发生这样的情况:当我启动我的 Ubuntu 18 机器并且想要手动更新我的软件时,我陷入了涉及已经使用 apt 的错误(无休止的等待无人值守升级和/或其他服务)。
大多数情况下,机器或虚拟机不经常启动,启动和下一次启动需要很多天或 4-5 个月,同时可能某些证书、镜像或其他东西已经更改,并且无人值守升级会卡在尝试联系不再存在的服务器时出现无休止的超时..
这是错误:
user@ubuntu:~$ sudo apt-get upgrade
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarly unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一个命令行可以使用 apt 温和地终止所有实例,使 apt 环境和配置保持一致状态,并准备好使用 gui 版本的 ubuntu软件更新或 apt-get。
谢谢