新手朋友们在服务器上折腾的时候,是不是常遇到这种情况:装了 CentOS minimal 版本,系统干净得连 curl 都没有,偏偏这服务器还没网,想在线装都不行,急着用 curl 下载文件、测试接口,该怎么办呢?别慌,离线安装 curl 虽然比在线麻烦点,但只要找对方法,一步步来也能搞定。今天小编就把 CentOS minimal 离线装 curl 的方法掰开了说,从准备依赖到实际安装,新手也能跟着做,一起往下看吧!
先明白:为啥 CentOS minimal 要离线装 curl?
可能有朋友会问,minimal 版本咋连 curl 都没有啊?因为 minimal 是最小化安装,只带了最基础的系统组件,像 curl 这种工具默认是不装的。而离线安装,就是因为服务器没网,没法用 yum 或 dnf 在线拉取安装包,只能靠自己手动下载,再传到服务器上装,对吧?
小编之前帮客户部署服务器,那台机器就没连外网,CentOS 7 minimal 版,想装 curl 查了好多资料,才弄明白要先下依赖包,不然直接装会提示 “缺少 xxx”,特折腾人。
准备工作:这两样东西必须有,缺一不可
离线安装前,得准备好这些,不然走一半卡壳。
- 一台有网的电脑:用来下载 curl 和它的依赖包,最好也是 CentOS 系统,版本跟服务器一致(比如服务器是 CentOS 7,这台也用 7),这样下的包才匹配。
- U 盘或移动硬盘:把下载好的包传到没网的服务器上,当然,要是服务器能接网线临时联网也行,但很多时候没这条件,所以 U 盘最靠谱。
有个朋友图省事,用 Windows 电脑下载包,结果版本不对,传到服务器上装不了,白忙活半天。所以尽量用同版本 CentOS 下载,准没错。
步骤一:确定服务器版本,找对依赖包
CentOS 7 和 8 的 minimal 版本,需要的依赖包不一样,先确认服务器版本:在服务器终端输
cat /etc/centos-release
,比如显示 “CentOS Linux release 7.9.2009 (Core)” 就是 7,显示 “CentOS Linux release 8.5.2111” 就是 8。
下面是两个版本需要的包(小编整理的,亲测能用):
系统版本 | 必需的安装包(.rpm) |
---|---|
CentOS 7 | curl-7.29.0-59.el7.x86_64.rpm、libcurl-7.29.0-59.el7.x86_64.rpm、libnghttp2-1.33.0-1.el7.x86_64.rpm |
CentOS 8 | curl-7.61.1-25.el8.x86_64.rpm、libcurl-7.61.1-25.el8.x86_64.rpm、libnghttp2-1.33.0-5.el8.x86_64.rpm |
别嫌麻烦,这些依赖包一个都不能少,少了就会提示 “依赖检测失败”。小编在 CentOS 7 上试过,漏了 libnghttp2,结果 curl 装不上,补装后才成功。
步骤二:下载安装包,用有网的电脑操作
在有网的 CentOS 上,用 yumdownloader 命令下载(这命令默认有,没有就先在线装 yum-utils:sudo yum install yum-utils -y
)。
- CentOS 7:
打开终端,输sudo yumdownloader --resolve curl
,–resolve 参数会自动下载所有依赖包,等跑完,当前目录会出现上面表格里的那几个.rpm 文件。 - CentOS 8:
输sudo dnf download --resolve curl
,dnf 和 yum 用法差不多,也会把依赖包都下下来。
下载完,把这些.rpm 文件复制到 U 盘里,注意别漏了,最好数一下个数,跟表格对一对。
步骤三:传到服务器,开始离线安装
把 U 盘插到没网的服务器上,挂载 U 盘(不会挂载的话,输fdisk -l
找 U 盘设备名,比如 /dev/sdb1,再输mount /dev/sdb1 /mnt
,然后去 /mnt 目录找文件)。
复制文件到服务器的临时目录,比如cp /mnt/*.rpm /tmp
,然后进入 /tmp 目录:cd /tmp
。
安装命令(用 rpm,离线安装就靠它):
- CentOS 7:
sudo rpm -ivh *.rpm
(* 表示所有 rpm 包,会按依赖顺序装) - CentOS 8:一样,
sudo rpm -ivh *.rpm
等命令跑完,输curl --version
,能看到版本号就说明装好了。小编第一次装的时候,手忙脚乱忘了挂载 U 盘,找了半天文件,大家别犯这错。
常见问题:装的时候出错,这么解决
- 提示 “某个包已安装但版本不对”:这时候加 –force 参数,
sudo rpm -ivh --force *.rpm
,强制覆盖旧版本,一般能解决。 - 提示 “缺少其他依赖”:说明之前的依赖包没下全,可能是小编列的表没覆盖到你的情况。这时候把错误提示里的包名记下来,回到有网的电脑上,用 yumdownloader 单独下载那个包,传到服务器上再装。
有个网友在 CentOS 8 上装的时候,提示缺 “libidn2”,他就是单独下了这个包补上,才装成功的,所以别怕,缺啥补啥就行。
自问自答:这些疑问你可能也有
- 问:一定要用同版本 CentOS 下载包吗?
答:最好是,不同版本的包可能不兼容,比如 CentOS 8 的包拿到 7 上装,大概率失败,别省这一步。 - 问:安装包能重复用吗?
答:可以啊,把下载好的 rpm 包存起来,下次另一台同版本服务器装,直接用,省得再下载。
小编的一点心得
CentOS minimal 离线装 curl,关键就在找对依赖包,步骤看着多,其实就是 “下载 – 传输 – 安装” 三步,多练一次就熟了。新手别怕命令行,输的时候慢一点,仔细看提示,报错了别慌,按提示找原因,一般都能解决。
小编建议大家把常用的依赖包存一份在 U 盘里,服务器没网的时候特管用,就像随身带了个 “急救包”。希望这些方法能帮到你,不用再为没网装不了 curl 发愁啦!