删除了 /usr/bin/touch 和 /bin/touch。现在似乎无法安装任何东西,也无法创建任何文件?

删除了 /usr/bin/touch 和 /bin/touch。现在似乎无法安装任何东西,也无法创建任何文件?

将 GNOME 更新到 3.20.2 后,我的触摸板出现了一些问题,因此在混乱中我错误地删除/usr/bin/touch然后我就变得更傻了删除/bin/touch。

现在,在此之后我似乎无法安装任何程序。这是安装程序时生成的错误..

user1@pqrx:~$ sudo apt-get install gir1.2-gtop-2.0
[sudo] password for user1: 

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
gir1.2-gtop-2.0
0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
Need to get 0 B/54.6 kB of archives.
After this operation, 104 kB of additional disk space will be used.
Selecting previously unselected package gir1.2-gtop-2.0:amd64.
(Reading database ... 351267 files and directories currently installed.)
Preparing to unpack .../gir1.2-gtop-2.0_2.34.0-1_amd64.deb ...
Unpacking gir1.2-gtop-2.0:amd64 (2.34.0-1) ...
Setting up gir1.2-gtop-2.0:amd64 (2.34.0-1) ...
sh: 1: touch: not found
update-kali-menu: error: Can't open /var/lock/kali-menu: No such file or directory
E: Problem executing scripts DPkg::Post-Invoke '[ ! -x /usr/share/kali-menu/update-kali-menu ] || /usr/share/kali-menu/update-kali-menu wait_dpkg'
E: Sub-process returned an error code

任何帮助都感激不尽。

答案1

touch包含在GNU 核心实用程序。由于您删除了该程序,您可以使用以下命令尝试重新安装它:

sudo apt-get install --reinstall coreutils 

仅使用此命令在全新安装的 Kali Linux 2016.1 上重新安装已删除的程序/usr/bin/touch/bin/touch

对于其他发行版,特别是 Mint(在 17.3 Cinnamon 上测试),sudo apt-get update可能需要首先运行。

dpkg一般来说,在您的情况下,可以通过搜索有问题的文件名来确定涉及哪个包:

dpkg -S bin/touch

答案2

您可以通过制作 shell 脚本来解决(大多数)用途/bin/touch,并使用它来修复您的系统,足以重新安装包含实际可执行文件的包。

一些应用程序将用来touch设置时间戳。这在 shell 脚本中更难。

例如:

#!/bin/sh
for name in "$@"
do
    chmod +w "$name"
    printf '' >> "$name"
done

答案3

我非常感谢你们花费宝贵的时间来回答我的问题并将这两个答案结合起来,我找到了最好的解决方案。

如果你搞砸了核心工具那么最好的办法就是下载核心工具来自存储库的文件。众所周知.deb 文件基本上是存档文件,用文件滚筒并解压包并替换必要的文件,设置所需的权限并重新启动。

完成。

相关内容