“apt-get remove openssl -y” 非常危险吗?

“apt-get remove openssl -y” 非常危险吗?

刚刚运行了这个,它看起来无法取消。

很多东西正在被清除。

我只是想删除并重新安装所有 ssl ssh 设备。

存在严重的版本不匹配问题。

答案1

您可以轻松地重新安装已删除的软件包。

Apt 有一个历史文件,这个文件是/var/log/apt/history.log。在终端中运行以下命令查看:

cat /var/log/apt/history.log

您将看到开始日期命令行用过的,被要求用户名等

因此运行:

grep -hA5 "remove openssl" /var/log/apt/history.log | grep "Remove"

这应该会打印出被删除的软件包。单词“Remove”应该只出现一次,在列表的开头。

如果此列表看起来就是被删除的内容,则继续。

首先,进入用户的主目录,然后将列表发送到名为“removedpackages”的文件。

cd
grep -hA5 "remove openssl" /var/log/apt/history.log | grep "Remove" > removedpackages   

现在我们需要在将列表发送给之前对其进行清理apt

此命令将在新行上打印所有内容:

sed -e "s/ [a-z0-9(]/\n&/g" removedpackages

这应该只 grep 包名称(以空格开头,后跟小写字母或数字的行)。

sed -e "s/ [a-z0-9(]/\n&/g" removedpackages | grep '^ [a-z0-9]'

现在软件包应该以 packagename:amd64 或 packagename:all 或 packagename:i386 等形式列出。

如果是,则将列表发送到名为 removedlist 的新文件。

sed -e "s/ [a-z0-9(]/\n&/g" removedpackages | grep '^ [a-z0-9]' > removedlist

最后重新安装软件包,将文件内容发送至apt

sudo apt update
sudo apt install $(cat removedlist)

并删除您的工作文件:

rm removedlist removedpackages

对所用选项的解释:

sed -e "s/ [a-z0-9(]/\n&/g"
  • -e打印或回显输出而不是编辑文件
  • s///g是替代字符串的标准形式
  • [a-z0-9(]匹配任何空格后跟一个小写字母或数字或左括号。
  • \n&\n在匹配项前用新行替换&

还:

为了grep -hA5

  • -h说不要在输出中列出文件名,并且
  • A5说还要列出比赛后的 5 行

答案2

它是操作系统的命令行界面。

在这种环境下,许多命令可能变得非常危险,尤其是在复制粘贴时,尤其是当-y其中留下了无意的或未意识到的选项时。

我似乎发现很多人(新手,但有时也包括系统管理员)似乎只能以自己的代价来学习尊重这种环境,有时甚至要付出巨大的代价。

与此同时,我建议依靠apt-get命令--simulate或等效--dry-run选项进行检查,以查看此类命令的影响,而不必承担后果。

相关内容