![当通过 apt-get 下载和安装包时按 CTRL-C 会停止该过程吗?](https://linux22.com/image/1314564/%E5%BD%93%E9%80%9A%E8%BF%87%20apt-get%20%E4%B8%8B%E8%BD%BD%E5%92%8C%E5%AE%89%E8%A3%85%E5%8C%85%E6%97%B6%E6%8C%89%20CTRL-C%20%E4%BC%9A%E5%81%9C%E6%AD%A2%E8%AF%A5%E8%BF%87%E7%A8%8B%E5%90%97%EF%BC%9F.png)
如果我运行命令apt-get install [package_name]
并到达CTRL-C中间过程,它会停止安装并恢复到原始状态吗?
答案1
当我将一台 Ubuntu 机器升级到 12.04 时,我无意中关闭了与更新过程相关的终端。奇怪的是,这个过程实际上继续在后台(直到它弹出“是否要安装此配置文件的新版本”的提示,然后我将其关闭)。这表明更新过程写得非常可靠。
昨天,我在 Debian Sid 机器上执行了Ctrl+ C:ed 的安装。提示符返回给我,但 Aptitude 短暂地向终端发出有关进度的消息,直到当前正在进行的操作完成。
我相信Aptitude(我使用的,我会猜测行为apt-get
类似的)尝试智能地处理信号,并且一旦行动已经开始(例如安装/替换/删除),它将尽力在退出该过程之前真正完成该过程,以免使系统(特别是全局包配置状态)处于不确定状态。
我刚才尝试在下载软件包时发送Ctrl+ C,当前正在下载的软件包被中断,并且未保存为半下载状态。只需执行一次新的操作即可sudo aptitude dist-upgrade
在未正确下载的文件处重新启动该过程。
值得称赞的是:如果已经配置了几个包,则在进程中断时它们将不会回滚到以前的版本。它能做的最好的事情就是快速清理,智能地让您重新启动更新过程,并希望从您离开的地方开始。完成此操作并执行所有待处理操作后,包状态再次“清除”,您可以开始尝试回滚版本等(如果需要)。
最后注意:不要开始依赖这种行为,因为它对包系统非常粗暴,而且总是可能导致软件包问题(可以修复,但通常需要手动下载和dpkg
修改软件包)。