使用 bash 脚本重新安装已卸载的软件包以使一切​​恢复正常

使用 bash 脚本重新安装已卸载的软件包以使一切​​恢复正常

好吧,我创建了一个 bash 脚本,它似乎适用于我的情况。在这里,我安装了一个随机小程序来捕获其他错误消息并将其保存为“ls命令文件名

for package in $(apt remove hello --purge 2>&1 |
 grep "warning: files list file for package '" |
 grep -Po "[^'\n ]+'" | grep -Po "[^']+");
 do apt-get install --reinstall "$package";
 done 

为了解决这类耗时大的问题:

dpkg: warning: files list file for package 'package-name 1' missing; assuming package has no files currently installed
....
....
dpkg: warning: files list file for package 'package-name 2000' missing; assuming package has no files currently installed

每天,需要安装的“软件包”数量都会减少,这取决于我的网速以及是使用 SSD 还是 HDD。我们都知道,快速的互联网 + SDD = 更少的时间。但这只是我的情况。我有 HDD 和 500kbps 的下载速度。

因此,我每天都会跟踪剩余要安装的软件包的数量方式,我读到了最后一行的行号。

现在我的主要问题是:

pranav@inspiron-5548L:~/Documents/command$ sudo /bin/bash ls.sh

<no output like it used to show before, but it is running though>

我显然不知道发生了什么。没有任何输出。这里无法跟踪要重新安装的剩余软件包,因为我什么也没看到。帮我看看它似乎正在运行,但正在等待所有软件包重新安装,然后才说些什么。

答案1

我显然不知道发生了什么。没有任何输出。这里无法跟踪要重新安装的剩余软件包,因为我什么都没看到。帮我看看。

这可以从很多方面来理解。据我理解,你的问题是,你想调试你的脚本,你的目标是看看脚本执行过程中发生了什么。

这可以通过使用开关调用 bash 来实现-x

sudo /bin/bash -x ls.sh

man bash

-x 在执行命令时打印它们及其参数。

答案2

由于错误,我删除了与 dpkg 相关的文件,导致一切都损坏。所以最后,我备份了所有重要文件并重新安装了整个发行版。重新安装所有软件包将花费大量时间。更不用说,即使设法重新安装所有软件包,也存在保证事情会按照原有的方式进行。

相关内容