Alien 是 Linux 下跨格式转换软件包的命令行工具,支持 .deb、.rpm、.tgz 等格式互转,不编译源码而适配元数据与结构;需手动处理依赖,安装方式因发行版而异,转换后应验证功能。

Alien 是一个能在 Linux 系统中转换软件包格式的命令行工具,支持在 .deb、.rpm、.tgz(Slackware)、.pkg(Solaris)和 .slp(Stampede)之间相互转换。它不重新编译源码,而是将包内文件结构、元数据(如依赖、描述、安装脚本)按目标格式规范进行适配与重建。适合快速适配非原生包,但不能替代包管理器的依赖解析能力,转换后需手动处理缺失依赖或冲突。
安装 Alien 工具
不同发行版安装方式略有差异:
- Debian/Ubuntu 系统:运行 sudo apt install alien(部分版本需先启用 universe 源)
- RHEL/CentOS/Fedora:运行 sudo dnf install alien(Fedora 22+)或 sudo yum install alien(旧版 CentOS)
- Arch Linux:通过 AUR 安装,例如用 yay -S alien 或手动构建
安装完成后执行 alien --version 验证是否就绪。
基础转换操作与常用选项
Alien 默认生成与当前系统兼容的包格式(如在 Debian 上默认转 .deb),但可通过参数指定目标类型:
- alien -r package.rpm → 转为 .deb(-r 表示 rpm → deb)
- alien -d package.deb → 转为 .rpm(-d 表示 deb → rpm)
- alien -t package.deb → 转为 .tar.gz(-t 表示 tarball)
- alien -k package.rpm → 保留原包版本号(不自动加“1”后缀)
- alien --scripts package.rpm → 尽量保留原包的 pre/post 安装脚本(部分脚本可能因语法不兼容被忽略)
转换过程会提示生成的新包名,例如 foo-1.0-2.noarch.deb,其中 “2” 是 alien 自增的构建序号。
安装转换后的包及注意事项
转换只是格式迁移,不解决依赖问题。安装前建议检查:
- 使用 dpkg -I xxx.deb 或 rpm -qpi xxx.rpm 查看元信息,确认架构(arch)、依赖(Requires / Depends)是否合理
- 对 .deb 包:用 sudo dpkg -i xxx.deb 安装,若报依赖错误,再运行 sudo apt install -f 尝试修复
- 对 .rpm 包:用 sudo rpm -ivh xxx.rpm;若提示冲突或缺失依赖,可加 --nodeps 强制(不推荐)或手动补装依赖
- 转换生成的包通常不含签名,系统可能警告“未认证来源”,属正常现象
局限性与安全提醒
Alien 不是万能方案,以下情况应避免使用或格外谨慎:
- 含内核模块、systemd 单元文件、SELinux 策略等深度系统集成的包,转换后可能无法正常加载或启动
- 依赖动态链接库路径硬编码(如 /usr/lib64)的 RPM,在 Debian 系统上可能找不到对应路径
- 原包使用特定构建宏(如 %define 在 spec 文件中)、条件编译或自定义安装逻辑时,alien 无法还原语义,仅做静态搬运
- 生产环境建议优先选用官方仓库、第三方可信源(如 OBS、COPR、PPA)提供的原生包,而非依赖 alien 转换
转换前备份原包,安装后验证核心功能是否可用,是稳妥做法。










