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

mat*_*ick 6 ssh ssl

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

很多东西正在被清理掉。

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

存在可怕的版本不匹配。

mch*_*hid 17

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

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

cat /var/log/apt/history.log
Run Code Online (Sandbox Code Playgroud)

您将看到开始日期、使用的命令行请求者用户名等。

所以运行:

grep -hA5 "remove openssl" /var/log/apt/history.log | grep "Remove"
Run Code Online (Sandbox Code Playgroud)

这应该打印出被删除的包。“删除”一词只能出现一次,即在列表的开头。

如果此列表似乎是已删除的列表,则继续。

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

cd
grep -hA5 "remove openssl" /var/log/apt/history.log | grep "Remove" > removedpackages   
Run Code Online (Sandbox Code Playgroud)

现在我们需要先清理列表,然后再将其发送到apt.

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

sed -e "s/ [a-z0-9(]/\n&/g" removedpackages
Run Code Online (Sandbox Code Playgroud)

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

sed -e "s/ [a-z0-9(]/\n&/g" removedpackages | grep '^ [a-z0-9]'
Run Code Online (Sandbox Code Playgroud)

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

如果是这样,则将该列表发送到名为removedlist.txt的新文件。

sed -e "s/ [a-z0-9(]/\n&/g" removedpackages | grep '^ [a-z0-9]' > removedlist
Run Code Online (Sandbox Code Playgroud)

最后要重新安装软件包,请将文件的内容发送到apt.

sudo apt update
sudo apt install $(cat removedlist)
Run Code Online (Sandbox Code Playgroud)

并删除您的工作文件:

rm removedlist removedpackages
Run Code Online (Sandbox Code Playgroud)

用于以下选项的解释:

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

还:

为了grep -hA5

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

  • 幸运的是 apt 使用 gnutls,而不是 openssl :) (7认同)
  • 幸运的是,由于您只删除了软件包(而不是使用清除),因此您应该保留配置文件,并且一切都应该恢复正常。尽管如此,我建议打开一个有关不匹配问题的具体问题,并请记住包含确切的错误,复制并粘贴。 (3认同)
  • 喜欢这个。尝试将这个“apt 有历史”记入记忆中,以适应这些场景。 (3认同)

Lev*_*nte 11

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

\n

在这种环境中,许多命令可能变得非常危险,特别是在复制粘贴它们时,尤其是在无意或不知情的选项(例如-y留在其中)的情况下。

\n

我似乎观察到很多人 \xe2\x80\x94 新手,但有时,系统管理员类似 \xe2\x80\x94 似乎只能付出自己的代价(有时是巨大的代价)来学会尊重这种环境。

\n

同时,我建议依靠命令apt-get--simulate等效--dry-run选项来审查此类命令的影响,而不必承担后果。

\n