alien能将RPM与DEB互转,但仅转换包装格式,不解决底层库依赖问题;适合轻量工具、脚本等简单软件,不适用于系统组件、图形应用或已签名包,且二次转换会丢失签名与元数据。

alien能帮你把RPM转成DEB,或者反过来,但它不是万能解药。它只改包装方式,不改程序本身——如果软件依赖特定发行版的底层库(比如某个glibc版本),转换后大概率跑不起来。适合转那些轻量、静态、脚本类工具,比如命令行小工具、字体、配置文件或自研中间件。
安装alien前先确认系统环境
不同系统安装方式不一样,别直接抄命令:
- Debian/Ubuntu:运行 sudo apt update && sudo apt install alien dpkg-dev debhelper,缺了dpkg-dev和debhelper,生成.deb会失败
- CentOS/RHEL/openEuler:需先启用EPEL仓库,再装alien。openEuler 20.03 LTS SP1可直接用 sudo dnf install alien(已集成EPEL源)
- 装完验证:执行 alien --version,看到版本号说明就绪
转换时用对参数,避免默认陷阱
alien默认行为容易误导人。不加参数直接运行 sudo alien package.rpm,在openEuler上会尝试生成.rpm(原格式),根本不会转——必须显式指定目标格式:
- RPM → DEB:sudo alien -d package.rpm 或 sudo alien --to-deb package.rpm
- DEB → RPM:sudo alien -r package.deb 或 sudo alien --to-rpm package.deb
- 想保留原版本号(比如1.0-1而非1.0-1.1):-k 参数,如 sudo alien -k -r package.deb
- 希望尽量保留安装前/后脚本:--scripts,但注意部分语法不兼容仍会被丢弃
安装转换后的包,别跳过依赖检查
生成新包只是第一步,安装环节常出问题:
- DEB包安装:sudo dpkg -i package_name.deb,若提示“dependency problems”,立刻补一句 sudo apt -f install 自动修复
- RPM包安装:sudo rpm -ivh package_name.rpm;若提示冲突或文件已存在,可加 --force 强制覆盖(慎用)
- 转换后首次运行建议加 strace -e trace=openat,openat64 ./your-binary 看是否因路径或库缺失而失败
哪些情况坚决别用alien
它不该出现在核心系统维护流程里:
- 系统级组件:glibc、systemd、内核模块、udev规则等,跨发行版结构差异太大
- 带图形界面且强依赖桌面环境的软件(如某些Qt/GTK应用),UI库版本或主题引擎不匹配会导致崩溃
- 已签名的生产软件包:alien会清除所有GPG签名,无法验证来源可信性
- 二次转换:把A→B再B→A,元数据损坏风险高,生成包基本不可靠

















