Gia*_*nis 21 upgrade package-management apt dpkg shutdown
我在朋友的 PC 上安装了 (x)Ubuntu 14.04。自动更新设置为“下载并自动安装更新”。
问题是,在使用几个月后,他在软件包升级完成之前不知不觉地关闭了他的 PC。这会导致依赖项/包损坏,从而导致更新受到影响并且需要运行sudo dpkg --configure -a
是否可以像 Windows 那样让 Ubuntu 在 PC 关闭或重新启动之前等待更新完成,以确保永远不会有损坏的软件包并且他的 PC 将保持自动更新?
Molly-Guard正是为此目的而设计的程序;它需要您进行少量设置,并且/usr/sbin
之前 /sbin
在您的$PATH
.
否则,根据这一点,确切的细节高度依赖于 GUI/DE 的实现。由于我们知道您的朋友正在使用 Xubuntu,因此它缩小了范围,但是如果不使用内置支持(这会产生更多问题)重新编译 Xfce,这似乎非常困难。
根据我的大量研究,理论上您可以只替换/sbin/shutdown
为检查 apt 作业是否已启动并执行sudo shutdown -c
或sudo init 2
取消正在运行的关闭并wait
使其退出的脚本,但我不确定这有多健壮。
根据这个,你可能只是使其难以被用户,而不是挂钩的脚本关机。
最后,概述了在这里,你可以安装unattended-upgrades
在您使用的是自动更新的,现在什么系统,并关闭之前确保其退出作为在这个答案详细说明。
有很多选择,所有这些都不同程度的不可靠,但我认为最好的一个,它解决了我认为在某种程度上,一个潜在的X / Y 问题,是这样的:
crontab
使他的计算机运行dpkg --configure -a
每次启动。@LovesTha:为了您的目的,我推荐unattended-upgrades
,或者可能是 Molly-Guard。
下面的脚本对来自 dbus 的特定消息使用中断驱动轮询,并且每当它看到 shutdown/reboot 请求时,它将测试包管理器是否正在运行,例如dpkg
或apt
。如果它们正在运行,则关闭请求将被取消。
既然你提到你的朋友不想接触命令行,你要么需要 ssh 进入他的机器,要么过来手动安装。
mkdir $HOME/bin
preventShutdown.sh
chmod +x $HOME/bin/preventShutdown.sh
要做到这一点.desktop
文件放入登录到 Unity/Gnome 时将脚本添加到例程列表中$HOME/.config/autostart
sudo apt-get install git
cd /opt
sudo git clone https://github.com/SergKolo/sergrep.git
sudo chmod +x /opt/sergrep/*
Run Code Online (Sandbox Code Playgroud)
将脚本添加为启动应用程序。
sudo apt-get install git
cd /opt
sudo git clone https://github.com/SergKolo/sergrep.git
sudo chmod +x /opt/sergrep/*
Run Code Online (Sandbox Code Playgroud)
引用爱因斯坦的话:
Only two things are infinite, the universe and human stupidity,
and I'm not sure about the former.
Run Code Online (Sandbox Code Playgroud)
所以没有 100% 保证人类的愚蠢,但你可以通过以下方式让非爱因斯坦更难破坏事物:
说明计算机不是锤子,也不是钉子,而是脆弱的智能设备,需要两种食物:电力和更新。
或者:
• 使用 Remmina 保持工作顺利进行
归档时间: |
|
查看次数: |
1537 次 |
最近记录: |