Tar 已卸载,如何重新安装?

Tar 已卸载,如何重新安装?

当时我正在用 Ubuntu PC 做一些事情,

sudo apt-get autoremove tar

弄乱了我的电脑。我本来想重新安装 tar,但后来删除了它,以为删除后再安装。这是一个错误,我很后悔。

现在,如果我的电脑中没有安装 tar,我几乎什么也做不了。我无法使用 安装任何软件包apt-get,也无法使用 安装软件包dpkg。我尝试下载.debtar 文件并使用 将其安装在我的电脑中dpkg,但正如我所说的,我也无法做到这一点。

我无法使用apt-get任何一种方式安装 tar,所以我不知道如何在我的计算机上再次安装 tar。

我尝试在包括 AU 在内的网站上进行搜索,但找不到解决方案。

如果您的计算机中没有安装 tar,如何安装 tar?(使用 apt-get、dpkg 等解决方案不起作用)我在 Ubuntu 14.04 LTS 上。

答案1

我用一些 hack 变通方法解决了这个问题,但它确实有效。不过这可能不是解决问题的最佳方法。我通过以下部分内容找到了答案@steeldriver 的评论并添加一些我自己的。


首先你需要下载tar 的 .deb 文件

使用命令进入下载文件夹

cd ~/Downloads/

然后做

ls | grep tar

确保下载成功。您应该得到类似以下内容的输出

tar_1.27.1-1ubuntu0.1_i386.deb

如果没有,您应该尝试再次下载。


我将使用该名称mytar.deb作为答案,但请将其替换为.deb文件的真实名称

.deb现在,您需要提取文件的内容没有使用 tar。

首先做

ar x mytar.deb

哪个将从档案中提取文件进入当前目录。要列出现有文件,请执行

ar t mytar.deb

输出类似

debian-binary
control.tar.gz
data.tar.xz

data.tar.xz包含我们需要复制的实际文件。我们无法使用tar它们来提取它们,因为我们当前的计算机没有 tar 命令。

首先让我们转换data.tar.xzdata.tar。为此,请执行

xz -dc < data.tar.xz > data.tar

这将创建一个新文件data.tar

现在,我们需要创建一个到 busybox 的链接,正如 @steeldriver 在评论中提到的那样。所以这样做

sudo ln -s /bin/busybox /usr/local/bin/tar

创建符号链接。

然后,您基本上是在使用 busybox 而不是 tar。因此,如果您使用命令 tar,它会调用 busybox。现在执行

mkdir temp

创建一个虚拟目录。然后

tar -xf data.tar -C temp/

提取.tar文件并将其内容转储到目录中。使用以下命令temp将工作目录更改为temp

cd temp

然后做,

ls -pal

得到类似的输出

total 28
drwxrwxr-x  5 ashish ashish  4096 Jan 11 08:41 ./
drwxr-xr-x 23 ashish ashish 12288 Jan 11 08:41 ../
drwxr-xr-x  2 ashish ashish  4096 Jan 11 08:41 bin/
drwxr-xr-x  2 ashish ashish  4096 Jan 11 08:41 etc/
drwxr-xr-x  5 ashish ashish  4096 Jan 11 08:41 usr/

如果您没有获得像bin、、etc和这样的文件夹usr,那么您犯了一些错误。

现在,你可以将这些文件夹中的所有文件复制到实际目的地(/bin/tar/usr/local/bin/tar等等),然后执行

tar --help

如果您获得显示 tar 命令的输出,则表明它有效!

现在做

sudo apt-get install --reinstall tar

这应该会重新安装 tar。如果它给你一个错误提示让你运行apt-get -f install,请运行它然后重新安装 tar,它在 Ubuntu 14.04 LTS 上对我有效。

答案2

您可以运行您的 ubuntu 发行版的 live-cd,将 tar 从 live 发行版复制到您的硬盘驱动器。

  1. 从 CD(或 USB)启动
  2. 将硬盘挂载到 /mnt:(如果您的硬盘是 /dev/sdb1)

    mount /dev/sda1 /mnt
    
  3. 将 /bin/tar 复制到 /mnt/bin/tar

    cp /bin/tar /mnt/bin/tar
    
  4. 如果还不够,你可以尝试复制其他 tar 相关文件。你可以使用 dpkg 列出它们:

    $ dpkg -L tar 
    /bin
    /bin/tar
    /usr
    /usr/sbin
    /usr/sbin/tarcat
    /usr/sbin/rmt-tar
    /usr/share
    /usr/share/doc
    /usr/share/doc/tar
    /usr/share/doc/tar/changelog.Debian.gz
    /usr/share/doc/tar/copyright
    /usr/share/doc/tar/NEWS.Debian.gz
    /usr/share/doc/tar/NEWS.gz
    /usr/share/doc/tar/README.Debian
    /usr/share/doc/tar/THANKS.gz
    /usr/share/doc/tar/AUTHORS
    /usr/share/man
    /usr/share/man/man8
    /usr/share/man/man8/rmt-tar.8.gz
    /usr/share/man/man1
    /usr/share/man/man1/tarcat.1.gz
    /usr/share/man/man1/tar.1.gz
    /usr/lib
    /usr/lib/tar
    /usr/lib/mime
    /usr/lib/mime/packages
    /usr/lib/mime/packages/tar
    /etc
    /etc/rmt
    

相关内容