最近在给一台CentOS 7服务器搭调试环境,需求很明确:用adb命令操作Android设备,用ffmpeg处理视频文件。本来我预估十分钟能搞定,结果硬是折腾了小半天。倒不是命令多复杂,而是CentOS 7这个系统太老了,官方停止维护后,软件源里要啥没啥,所有包都得自己想办法,各种依赖坑一个接一个。这篇文章就把我在CentOS 7上安装adb命令和ffmpeg命令的完整过程写出来,包括我实际踩过的坑和最后采用的稳定方案。如果你手头也有一台CentOS 7的机器,或者正在给智能电视、安卓盒子配调试环境,这篇文章应该能帮你省下不少时间。
1. 为什么在CentOS 7上装这两个工具会比想象中麻烦
1.1 仓库现状:默认源里什么都没有
CentOS 7的生命周期在2024年6月30日正式画上句号,这意味着官方base源基本不再更新。默认情况下,yum search adb和yum search ffmpeg都是空手而归。我一开始想装EPEL试试,因为它是CentOS生态里最常用的第三方扩展源,结果查了一圈,EPEL仓库里也没有这两个工具。
ffmpeg在CentOS 7上倒是可以通过RPM Fusion仓库安装,但问题在于版本实在太老,停留在4.1.x这个阶段。4.1发布于2018年,对现在常用的编码格式和新滤镜支持都很有限。更麻烦的是RPM Fusion仓库本身还需要额外配置,而且每一两年就要重新处理一次仓库密钥过期的问题,在服务器上非常烦人。adb就更不用说了,某些旧版EPEL源里曾经有过android-tools这个包,但版本老到对现在Android 10以上的设备几乎是半残状态,连设备列表都刷不出来。
1.2 三条路怎么选
面对这种情况,常规思路有三条:
- 配置第三方源,用yum装
- 下载官方编译好的二进制包,直接运行
- 老老实实从源码编译
我在实际项目中三条路都走过。源码编译的体验最差,尤其是ffmpeg,后面我会细说。yum装的问题是版本不可控,而且依赖各种历史包袱。本身这些东西对系统版本并不敏感,跑的是用户态命令而已,完全没有必要跟系统包管理深度绑定。对于运维场景,最稳妥、最可控的方案是下载官方或者社区维护的静态编译二进制包,放到固定目录,配好PATH,逻辑最简单,出问题也好排查。
后面所有操作都基于一个前提:服务器能联网。如果你服务器在隔离网段也没关系,先在有网的电脑上把安装包下载好,再通过U盘或者scp传到服务器上,原理完全一样,只是传输方式不同而已。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. adb安装:直接拉官方platform-tools,别在源里浪费时间
2.1 下载解压三步走
adb的正确安装姿势,是从Google官方仓库下载platform-tools。这个压缩包里面包含adb、fastboot、etc1tool这些Android调试平台工具,全部是编译好的二进制,不需要关心依赖问题。步骤就三步:
bash复制# 先装个unzip,CentOS 7最小化安装经常不带这个
yum install -y unzip
# 下载官方platform-tools
cd /usr/local/src
wget https://dl.google.com/android/repository/platform-tools-latest-linux.zip
# 解压到/opt目录,方便统一管理
unzip platform-tools-latest-linux.zip -d /opt
解压完之后,/opt/platform-tools目录下就有adb、fastboot等可执行文件了。先用绝对路径验证一下能否运行:
bash复制/opt/platform-tools/adb version
正常情况下会输出版本号,例如Android Debug Bridge version 1.0.41。能跑起来,说明这个包在系统层面没问题。
2.2 新版platform-tools与glibc的兼容性问题
这是整个安装过程中我踩的第一个坑,也是CentOS 7用户最容易卡住的地方。如果你是最小化安装的CentOS 7,直接执行新版platform-tools里的adb,大概率会看到这么一行报错:
code复制./a
