有时候你可能会发现,想安装一个包,但是这个包只提供 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 安装好了。

arch linux rpm格式,如何在ArchLinux上安装RPM包相关推荐

  1. r语言使用linux命令,技术|如何在 Ubuntu 上安装和使用 R 语言

    这个教程指导你如何在 Ubuntu 上安装 R 语言.你也将同时学习到如何在 Ubuntu 上用不同方法运行简单的 R 语言程序. R,和 Python 一样,它是在统计计算和图形处理上最常用的编程语 ...

  2. deepin linux桌面环境,如何在Ubuntu上安装Deepin桌面环境

    到目前为止,Deepin拥有最时尚的桌面环境.它可能是最漂亮,最好的user-friendly桌面Linux发行版之一.当我们谈论视觉吸引力时,我说它吹走了Windows 10和MacOS并没有错. ...

  3. linux卸载kodi,如何在Ubuntu上安装Kodi 18 Beta

    Kodi的Beta版周期很长.很棒,因为它有助于将错误排除在生产版本之外,而且还可以保留数月的新功能.值得庆幸的是,Kodi开发人员提供了可供测试和使用的"unstable"软件包 ...

  4. mac在linux虚拟机gromacs,如何在MacBook上安装gromacs

    满意答案 rqeljnpl3 2017.02.18 采纳率:56%    等级:12 已帮助:5001人 MacBook上gromacs安装流程: (1) 解压缩fftw,lam-mpi,gromac ...

  5. Linux 如何安装 SRPM 包(源代码 rpm 软件包,以 .src.rpm 为后缀名)/rpm 格式的源码软件包/源码包

    文章目录 一.SRPM 介绍 二.SRPM 命名格式 三.SRPM 的安装 (一)直接使用命令 rpmbuild (二)利用 *.spec 文件编译 (三)使用命令 make 编译和安装 四.写在最后 ...

  6. linux+usb刻录,如何在Ubuntu上安装Etcher-开源USB刻录机工具

    如何在Ubuntu上安装Etcher-开源USB刻录机工具 Mark Do 2017年5月20日 暂无评论 阅读 4,988 次 Etcher是一款跨平台的USB镜像文件写入工具,在Windows.m ...

  7. java安装_如何在 Mac 上安装 Java | Linux 中国

    macOS 用户可以运行 Java 的开源版本,以及用于云原生开发的新框架. 来源:https://linux.cn/article-12393-1.html 作者:Daniel Oh 译者:MCGA ...

  8. 如何在vmware15上安装linux镜像

    如何在vmware15上安装linux镜像 环境介绍 VMware前置条件 VMware安装centos7镜像 环境介绍 VMware® Workstation 15 Pro CentOS-7-x86 ...

  9. 如何在Linux(CentOS, Debian, Fedora和Ubuntu)上安装MyCLI

    介绍 MyCLI是MySQL和MariaDB的命令行客户端,允许您自动完成,并帮助您的SQL命令语法. MyCLI特性 在数据库中键入SQL关键字以及表.视图和列时自动完成. 输入时的语法高亮显示. ...

最新文章

  1. 0909 编译原理1
  2. 加权边界框融合(WBF)
  3. lucene搜索之facet查询原理和facet查询实例——TODO
  4. python安装勾选-Python的安装
  5. 函数 —— strncpy() (内存重叠) memcpy() memmove() 一个字符串拷贝给另一个字符串
  6. memcached的基本命令(安装、卸载、启动、配置相关)
  7. 迭代加深搜索与埃及分数求解
  8. 给 asp.net core 写个中间件来记录接口耗时
  9. java font属性,css font-family属性怎么用
  10. h5 rem vue_vue移动端h5适配解决方案(rem or vw)
  11. 安装esxi时候的No Network Adapters报错 解决办法
  12. 微信获取access_token 返回-1000
  13. 51单片机——蜂鸣器按照次数响起1.0
  14. character在mysql什么类型_character是什么字段类型
  15. dac芯片(国产dac芯片)
  16. Latex使用总结(待完善)
  17. 电口模块和光模块有什么区别?
  18. 营销-营销方式:营销方式
  19. 最简单的数据备份的方法
  20. 接口 抽象类 C++

热门文章

  1. windows下安装cygwin以及SeismicUnix在cygwin下的安装(windows下安装linux环境,非虚拟机、非双系统)
  2. 大数据时代时代舍恩伯格书资源_大数据时代的特征和思维
  3. web root下放置图片_Apache HTTP存在提权漏洞,威胁共享Web主机安全性
  4. uwsgi+django在ubuntu下命令部署亲测ok
  5. IDEA下java的SSM框架搭建
  6. servlet请求的执行过程_Springmvc执行流程
  7. c语言学习-使用指针求一个字符串的长度
  8. OpenShift 4 - DevSecOps (3) - 用 RHACS 精细化管理云原生应用安全
  9. OpenShift 4 - 安装3Scale API Management环境
  10. .NET Standard,有哪些替代方案?