如果我运行命令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
修改软件包)。