通常情况下,ping 命令会预安装在大多数 Linux 系统中。但是也有一些例外情况,比如安装的是最小版本的 Ubuntu,或者是在 Docker 容器中运行 Ubuntu,这种情况下,ping 命令有可能会找不到...
通常情况下,ping 命令会预安装在大多数 Linux 系统中。但是也有一些例外情况,比如安装的是最小版本的 Ubuntu,或者是在 Docker 容器中运行 Ubuntu,这种情况下,ping 命令有可能会找不到,即如果尝试运行它,会看到 ping not found 的报错:
root@182b38f8w4c9:/# ping www.baidu.com
bash: ping: command not found
这就相当于在 arm 或者单片机中安装 jre,某些 jdk 模块会找不到一样。
不过这还不是最糟糕的事情。找不到 ping 命令的话,那就安装好了,但是当你尝试安装 ping,又报出另外一个错误:Unable to locate package ping:
root@182b38f8w4c9:/# apt install ping
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package ping
这是怎么回事?Ubuntu 中不能使用 ping 吗?很显然这是不可能的。接下来我们来详细看一下。
在 Ubuntu 中安装 ping
之所以会出现上面的问题,是因为 ping 命令本身不是一个包(package),它只是 iputils 包的一部分。所以当你尝试安装名为 ping 的包时,会报错找不到。
作为 iputils 的一部分,ping 命令的包名称为 iputils-ping,这才是我们需要安装的包。
首先,通过以 root 身份运行此命令来更新本地包缓存(如果不是root,请使用sudo):
然后再安装 iputils-ping 工具包:
现在,再次运行 ping 命令:
root@182b38f8w4c9:/# ping itsfoss.com
PING itsfoss.com (104.26.10.68) 56(84) bytes of data.
64 bytes from 104.26.10.68 (104.26.10.68): icmp_seq=1 ttl=56 time=25.1 ms
64 bytes from 104.26.10.68 (104.26.10.68): icmp_seq=2 ttl=56 time=49.6 ms
64 bytes from 104.26.10.68 (104.26.10.68): icmp_seq=3 ttl=56 time=34.8 ms
64 bytes from 104.26.10.68 (104.26.10.68): icmp_seq=4 ttl=56 time=38.9 ms
^C
--- itsfoss.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 25.125/37.095/49.590/8.773 ms
另外,如果你是在 Docker 容器中运行的,那么如上安装只是临时的,还应该在 Dockerfile 做相应修改以使配置永久生效。