在没网的 CentOS7 服务器上,想解压文件却跳出 “tar:commandnotfound”,是不是特着急?手里的数据包解不开,工作根本没法推进,重启服务器也没用,又不能随便插网线联网,这时候该咋办?小编前阵子帮一个做机房维护的朋友处理过,他那服务器是内网环境,没网还缺 tar 工具,最后靠离线安装搞定了。今天就把这种情况的解决步骤、安装包在哪找、可能遇到的问题,全说明白,没网的时候遇到这问题,照着做就行。
一、先明白:为啥没网的服务器会缺 tar 工具?
可能有新手不懂,tar 是 Linux 里常用的压缩解压工具,就像 Windows 的 WinRAR。但有些 CentOS7 服务器是 “最小化安装” 的,为了节省空间,默认不装这些 “非必需” 工具。加上没网,没法在线用 yum 安装,就只能靠离线包手动装了。
朋友老周就说过,他负责的服务器都是内网,之前从没在意过 tar 工具,直到有次需要解压一个系统补丁包,才发现没这命令,急得满头汗。所以啊,没网的服务器,提前备着常用工具的离线包,能省不少事。
二、离线安装第一步:找台有网的 CentOS7 机器,下 tar 安装包
没网的服务器没法自己下安装包,得找台能上网的、同样是 CentOS7 的机器(系统版本得一样,不然包可能不兼容),按这步骤下:
- 打开有网机器的终端,先装 “yum-utils” 工具(这工具里有下载离线包的命令),输入 “sudo yum install yum-utils -y”,等它装好。
- 然后用 “yumdownloader” 命令下载 tar 的离线包,输入 “yumdownloader –resolve tar”。“–resolve” 的意思是连依赖包一起下,省得后面安装时缺这缺那。
- 等命令跑完,当前目录会多出几个 “.rpm” 文件,其中有一个是 “tar-xxx.rpm”(xxx 是版本号),这就是我们要的 tar 安装包,把这些文件复制到 U 盘或移动硬盘里。
小编提醒,下载的时候别换目录,就在用户目录下操作,好找文件。要是不知道文件下到哪了,输 “pwd” 命令,就能看到当前路径。
三、把安装包传到没网的服务器,这步别弄错
拿到 U 盘里的 rpm 包,传到没网的 CentOS7 服务器上,方法有两种:
- 直接插 U 盘:服务器要是有 USB 接口,把 U 盘插上,输入 “fdisk -l” 找到 U 盘的设备名(一般是 /dev/sdb1),然后创建一个挂载目录 “mkdir /mnt/usb”,再输入 “mount /dev/sdb1 /mnt/usb”,就能在 /mnt/usb 目录下看到 U 盘里的安装包了,用 “cp” 命令复制到服务器的某个目录(比如 /tmp)。
- 用移动硬盘:步骤和 U 盘一样,就是设备名可能不一样,多试几次 “fdisk -l” 总能找到。
朋友小李就犯过一个错,复制完没卸除 U 盘就直接拔了,导致文件损坏,只能重新传,所以复制完一定要输 “umount /mnt/usb” 再拔设备。
四、离线安装 tar 包,这两条命令要记牢
在没网的服务器上,进入存放 rpm 包的目录(比如 /tmp),按这两步装:
- 先安装依赖包(如果有的话):下载下来的 rpm 包里,除了 tar 主包,可能还有像 “xz-libs-xxx.rpm” 这样的依赖包,得先装这些。输入 “rpm -ivh xz-libs-xxx.rpm”(文件名按实际的改),按回车,没报错就说明依赖装好了。
- 再装 tar 主包:输入 “rpm -ivh tar-xxx.rpm”,等命令跑完,屏幕显示 “complete”,就说明装好了。这时候输 “tar –version”,能看到版本号,就可以正常用 tar 命令解压文件了。
小编帮老周安装的时候,他那服务器就缺 xz-libs 依赖,先装依赖再装 tar,一次就成功了。要是没依赖包,直接装 tar 主包也行,但最好还是连依赖一起下,免得装不上。
五、安装时可能遇到的问题,这样解决
- 提示 “file /xxx from install of xxx conflicts with file from package xxx”:这是说有文件冲突,可能之前装过旧版本,输入 “rpm -e 冲突的包名” 卸载旧的,再重新装新的。
- 提示 “error: unpacking of archive failed on file /usr/bin/tar: cpio: rename failed – Operation not permitted”:这是权限不够,输入 “chmod 755 /usr/bin” 给目录加权限,再重试。
- 找不到安装包:看看是不是路径错了,输入 “ls” 命令确认当前目录下有 tar 的 rpm 包,文件名别输错。
六、小编的实在建议
没网的 CentOS7 服务器遇到 tar 命令找不到,离线安装是最靠谱的办法。关键是提前在有网的机器上下好安装包和依赖,别等用的时候才着急。下载的时候一定要用同样是 CentOS7 的机器,版本不一样可能装不上。
平时维护服务器,最好列个常用工具清单,像 tar、wget 这些,提前把离线包存在服务器的某个目录里,或者备份到 U 盘,用的时候直接拿出来装,能省很多事。老周现在就养成了这习惯,再也没因为缺工具耽误过工作。