内容简介:有时候你可能会发现,想安装一个包,但是这个包只提供 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 安装好了。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Golang入门:从安装、部署以及GoLand的安装开始
- Win2016上安装SFB2015先决条件安装失败:RewriteModule
- mac:Go安装和配置+GoLand安装和使用之完整教程
- Pulsar本地单机(伪)集群 (裸机安装与docker方式安装) 2.2.0
- 如何将Rancher 2.1.x 从单节点安装迁移到高可用安装
- (教科书式教程!)在VMware Workstation 14 上安装CentOS 7 【送安装包】
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Introduction to Programming in Java
Robert Sedgewick、Kevin Wayne / Addison-Wesley / 2007-7-27 / USD 89.00
By emphasizing the application of computer programming not only in success stories in the software industry but also in familiar scenarios in physical and biological science, engineering, and appli......一起来看看 《Introduction to Programming in Java》 这本书的介绍吧!
JSON 在线解析
在线 JSON 格式化工具
RGB CMYK 转换工具
RGB CMYK 互转工具