问题描述
我迫切希望将RPM安装到我的Ubuntu安装上 – 这可能吗?我可以使用Yum – 或其他RPM包管理工具吗?
最佳解决方案
Can I use Yum
我不推荐它。你可能可以编译它但你不会有任何Ubuntu-compatible包存储库来处理它。
您可以使用Alien将单个RPM文件转换为DEB:
sudo apt-get install alien
sudo alien my_package.rpm
sudo dpkg -i my_package.deb
注意:它可能会更改文件名,而不仅仅是扩展名。
这不适用于所有内容,因为包链接到其他包以实现依赖性。显然,Red Hat /Fedora /CentOS对Ubuntu使用不同的软件包名称,因此您可能会遇到一大堆痛苦。
如果DEB不存在,你可能会更好地获取源代码并进行编译。
次佳解决方案
你需要alien
才能做到这一点。
sudo apt-get install alien
这将安装所有必需的包。现在您可以开始将.rpm文件转换为.deb包。
alien
的可用选项:
将package.rpm转换为package.deb
sudo alien -d package-name.rpm
将package.rpm
转换为package.deb
,然后安装生成的包。
alien -i package-name.rpm
如果您想让外星人更改版本号,请使用以下命令
alien -k rpm-package-file.rpm
第三种解决方案
简短的回答是,不要!
如果你有一个非常重要的RPM,你需要拥有它,那么也可能有一个Ubuntu包;并且,如果没有,可能值得经历从源代码编译到Debian包格式(Ubuntu也使用它)的麻烦。现在,有些时候你不能只重新编译软件(如果不是开源那就不可能),在这种情况下你可以使用alien
程序。但是,从RPM安装有点像将柴油放入柴油车 – 它可能会起作用,但从长远来看你不会从中受益!
要从源代码构建包,Ubuntu Wiki上有a guide;还有一个名为checkinstall的程序可以使用默认的source-tree做一些技巧,而无需为程序包设置构建指令。如果您认为其他人可以从您编译的程序中受益,您可以在启动板上使用setup a repository并分享包装的优点!
第四种方案
如果你真的需要在你的系统上安装RPM,你应该尝试使用’alien’转换它们。
请记住,默认情况下,’alien’将插入包的版本号。如果您希望版本号保持不变,请在转换时传递选项’-k’。
您不应该尝试使用Yum或任何其他方式安装RPM,例如apt-rpm,它们本身就在现有的DEB包旁边。 DEB和RPM系统分别管理已安装软件的列表,因此不知道其他系统先前安装了哪些软件包。例如,如果您尝试使用RPM-based软件包管理系统安装GUI-bearing应用程序,它将尝试自行安装重要的系统组件,因为它认为它们尚未安装。这将导致安装失败,或者覆盖重要的系统文件。
第五种方案
在Repos上有一个名为SmartPM的GUI包管理器,它可以处理.deb和.RPM。 Canonical在2009年11月之前为该项目做出了贡献。
项目主页在这里是https://github.com/smartpm/smart
第六种方案
Alien是一种从一种格式(.deb或.rpm)转换为另一种格式(.deb,.rpm或tarball)的工具
不建议Alien使用从.deb转换为.rpm,它非常适合用于将.deb转换为tarball
虽然Alien试图在转换时保留meta-data,但它仍然会有Metadata&依赖性问题使得包不太可靠,因此在将来添加或删除分发包时会产生冲突。
第七种方案
实际上最短的选择是
sudo alien -i -k packagename.rpm
没有外星人吗?得到一个!
sudo apt-get install alien
Alien会将rpm包转换为deb包,-i选项意味着在转换后安装转换后的包,-k选项确保转换后版本不是+1。
第八种方案
请遵循以下说明:
alien -k avg71lms-r30-a0782.i386.rpm
现在你应该有avg71lms-r30-a0782.i386.deb
文件。
要安装.deb文件:
dpkg -i avg71lms-r30-a0782.i386.deb
如果您不使用-k
选项,您应该看到avg71lms_r30-1_i386.deb
文件,区别在于它将添加1。
在Ubuntu中安装alien:
sudo apt-get install alien
您可以查看上面的部分以获取可用选项