如何在ArchLinux上安装RPM包

栏目: 服务器 · 发布时间: 7年前

内容简介:有时候你可能会发现,想安装一个包,但是这个包只提供 RPM 安装文件,而 ArchLinux 并不支持安装 RPM 文件,这该怎么办呢?下面这个方法也许可以帮到你。

如何在ArchLinux上安装RPM包

有时候你可能会发现,想安装一个包,但是这个包只提供 RPM 安装文件,而 ArchLinux 并不支持安装 RPM 文件,这该怎么办呢?

下面这个方法也许可以帮到你。

1、 安装 rpmextract

rpmextract 是一个用来解压 RPM 的工具,它会将 RPM 包中的内容解压到当前目录下。

sudo pacman-S rpmextract--noconfirm
resolving dependencies...
looking for conflicting packages...
 
Packages (1)rpmextract-1.0-8
 
Total Download Size: 0.00 MiB
Total Installed Size: 0.00 MiB
 
:: Proceed with installation? [Y/n] 
:: Retrieving packages...
rpmextract-1.0-8-any0.0B0.00B/s00:00 [----------------------] 0%
rpmextract-1.0-8-any2.5 KiB 0.00B/s00:00 [######################] 100%
(0/1)checking keys in keyring[----------------------] 0%
(1/1)checking keys in keyring[######################] 100%
(0/1)checking package integrity[----------------------] 0%
(1/1)checking package integrity[######################] 100%
(0/1)loading package files[----------------------] 0%
(1/1)loading package files[######################] 100%
(0/1)checking for file conflicts[----------------------] 0%
(1/1)checking for file conflicts[######################] 100%
(0/1)checking available disk space[----------------------] 0%
(1/1)checking available disk space[######################] 100%
:: Processing package changes...
(1/1)installing rpmextract[----------------------] 0%
(1/1)installing rpmextract[######################] 100%
:: Running post-transaction hooks...
(1/1) Arming ConditionNeedsUpdate...

2、 使用 rpmextract 解压 RPM 文件

由于 RPM 文件中打包的目录结构是以根目录为基准的,因此推荐直接在根目录下进行解压:

cd /
sudo rpmextract.sh~lujun9972/android-x86-7.1-r2.x86_64.rpm

3、 抽取出安装 RPM 时调用的脚本

光把RPM包中的文件解压出来还是不够的,RPM 文件在安装(或者卸载)前/后还会执行一个脚本。

这个脚本可以通过命令 rpm -qp --script file.rpm 来查看。

然而, ArchLinux 并没有 rpm 命令怎么办呢?我们可以可以在虚拟机上运行一个 CentOS 或者直接使用 docker 来模拟一个 CentOS 环境也可以:

docker run--rm -v~lujun9972/android-x86-7.1-r2.x86_64.rpm:/tmp/android.rpm centos rpm-qp--scripts/tmp/android.rpm
postinstall scriptlet(using /bin/sh):
. /etc/os-release
mkdir -p/android-7.1-r2/data
if [ "$ID" = "debian" -o"$ID_LIKE" = "debian" ]; then
grubcfg=/boot/grub/custom.cfg
elif mountpoint-q/boot/efi; then
grubcfg=/boot/efi/EFI/$ID/custom.cfg&&efi=efi
else
grubcfg=/boot/grub2/custom.cfg
fi
echo -e"menuentry \"Android-x86 7.1-r2\" {\n\tsearch --set=root --file /android-7.1-r2/kernel\n\tlinux$efi /android-7.1-r2/kernel quiet root=/dev/ram0 androidboot.selinux=permissive buildvariant=userdebug \n\tinitrd$efi /android-7.1-r2/initrd.img\n}" >$grubcfg
echo -e"menuentry \"Android-x86 7.1-r2 (DEBUG mode)\" {\n\tsearch --set=root --file /android-7.1-r2/kernel\n\tlinux$efi /android-7.1-r2/kernel root=/dev/ram0 androidboot.selinux=permissive buildvariant=userdebug DEBUG=2\n\tinitrd$efi /android-7.1-r2/initrd.img\n}" >>$grubcfg
 
if [ "$ID" = "debian" -o"$ID_LIKE" = "debian" ]; then
 sed -i's/^GRUB_HIDDEN_/#GRUB_HIDDEN_/' /etc/default/grub
update-grub
fi
postuninstall scriptlet(using /bin/sh):
. /etc/os-release
if [ "$ID" = "debian" -o"$ID_LIKE" = "debian" ]; then
grubcfg=/boot/grub/custom.cfg
elif mountpoint-q/boot/efi; then
grubcfg=/boot/efi/EFI/$ID/custom.cfg
else
grubcfg=/boot/grub2/custom.cfg
fi
if [ "$1" = "1" ]; then
new_prefix=`dirname $(grep initrd $grubcfg | head -1 | awk '{print $2}')`
 if [ "$new_prefix" != "/android-7.1-r2" ]; then
 rmdir$new_prefix/data
 mv /android-7.1-r2/data $new_prefix
 rmdir /android-7.1-r2
 fi
else
 rmdir /android-7.1-r2/data/android-7.1-r2
 rm -f $grubcfg
fi

4、 调用安装脚本

运气好的话,你就能把 RPM 安装好了。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

计算机网络(第4版)

计算机网络(第4版)

[美] James F. Kurose、[美] Keith W. Ross / 陈鸣 / 机械工业出版社 / 2009-11 / 66.00元

本书采用了独创的自顶向下方法,即从应用层开始沿协议栈向下讲解计算机网络的基本原理,强调应用层范例和应用编程接口,内容深入浅出,注重教学方法,理论与实践相结合。第3版的内容相应更新并反映了网络领域的最新进展,如增加了无线和移动网络一章,扩充了对等网络、BGP、MPLS、网络安全、广播选路和因特网编址及转发方面的材料;还增加了一套实用的实验,并修订了习题。本书适合作为计算机、电子、通信工程相关专业的本......一起来看看 《计算机网络(第4版)》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具