ArchLinuxにRPMパッケージをインストールする方法



How Install Rpm Package Archlinux



640?wx_fmt = jpegパッケージをインストールしたい場合がありますが、このパッケージはRPMインストールファイルのみを提供し、ArchLinuxインストールRPMファイルをサポートしていません。どうすればよいですか? -Lujun9972


最後に元のテキストにアクセスするための便利なリンク。 '説明リンク'テキスト、フルサイズのオリジナルおよび関連記事内のクリック可能なリンクを取得します。




謝辞から転載|
https://github.com/lujun9972/lujun9972.github.com/blob/source/linux%E5%92%8C%E5%AE%83%E7%9A%84%E5%B0%8F%E4%BC% 99%E4%BC%B4 /%E5%A6%82%E4%BD%95%E5%9C%A8archlinux%E4%B8%8A%E5%AE%89%E8%A3%85RPM%E5%8C%85 .org

著者| Lujun9972

パッケージをインストールしたい場合がありますが、このパッケージはRPMインストールファイルのみを提供し、ArchLinuxインストールRPMファイルをサポートしていません。どうすればよいですか?

次の方法が役立つ場合があります。



1、インストールrpmextract

rpmextractは、現在のディレクトリに抽出するRPM、RPMコンテンツパッケージを抽出するためのツールです。

sudo pacman -S rpmextract --noconfirm
  1. resolving dependencies...



looking for conflicting packages...
  1. Packages (1) rpmextract-1.0-8

  2. Total Download Size: 0.00 MiB

  3. Total Installed Size: 0.00 MiB

  4. :: Proceed with installation? [Y/n]

  5. :: Retrieving packages...

  6. rpmextract-1.0-8-any 0.0 B 0.00B/s 00:00 [----------------------] 0%

  7. rpmextract-1.0-8-any 2.5 KiB 0.00B/s 00:00 [######################] 100%

  8. (0/1) checking keys in keyring [----------------------] 0%

  9. (1/1) checking keys in keyring [######################] 100%

  10. (0/1) checking package integrity [----------------------] 0%

  11. (1/1) checking package integrity [######################] 100%

  12. (0/1) loading package files [----------------------] 0%

  13. (1/1) loading package files [######################] 100%

  14. (0/1) checking for file conflicts [----------------------] 0%

  15. (1/1) checking for file conflicts [######################] 100%

  16. (0/1) checking available disk space [----------------------] 0%

  17. (1/1) checking available disk space [######################] 100%

  18. :: Processing package changes...

  19. (1/1) installing rpmextract [----------------------] 0%

  20. (1/1) installing rpmextract [######################] 100%

  21. :: Running post-transaction hooks...

  22. (1/1) Arming ConditionNeedsUpdate...

  23. cd /

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

2、rpmextractを使用してRPMファイルを抽出します

RPMパッケージファイルのディレクトリ構造は参照用のルートディレクトリであるため、ルートディレクトリの直下で解凍することをお勧めします。

rpm -qp --script file.rpm
  1. rpm

  2. docker run --rm -v ~lujun9972/android-x86-7.1-r2.x86_64.rpm:/tmp/android.rpm centos rpm -qp --scripts /tmp/android.rpm

3、RPMのインストール時に抽出されたスクリプト

RPMパッケージファイルから抽出するための光だけでは不十分です。インストール(またはアンインストール)するRPMファイルはスクリプトを実行する前/後に実行します。

このスクリプトは注文できますpostinstall scriptlet (using /bin/sh):表示するには。

しかし、ArchLinuxは. /etc/os-releaseそれを行う方法をコマンドしませんか? CentOSを仮想マシンで実行することも、Dockerを直接使用してCentOS環境をシミュレートすることもできます。

mkdir -p /android-7.1-r2/data
  1. if [ '$ID' = 'debian' -o '$ID_LIKE' = 'debian' ] then

grubcfg=/boot/grub/custom.cfg
  1. elif mountpoint -q /boot/efi then

  2. grubcfg=/boot/efi/EFI/$ID/custom.cfg && efi=efi

  3. else

  4. grubcfg=/boot/grub2/custom.cfg

  5. fi

  6. echo -e 'menuentry 'Android-x86 7.1-r2' { search --set=root --file /android-7.1-r2/kernel linux$efi /android-7.1-r2/kernel quiet root=/dev/ram0 androidboot.selinux=permissive buildvariant=userdebug initrd$efi /android-7.1-r2/initrd.img }' > $grubcfg

  7. echo -e 'menuentry 'Android-x86 7.1-r2 (DEBUG mode)' { search --set=root --file /android-7.1-r2/kernel linux$efi /android-7.1-r2/kernel root=/dev/ram0 androidboot.selinux=permissive buildvariant=userdebug DEBUG=2 initrd$efi /android-7.1-r2/initrd.img }' >> $grubcfg

  8. if [ '$ID' = 'debian' -o '$ID_LIKE' = 'debian' ] then

  9. sed -i 's/^GRUB_HIDDEN_/#GRUB_HIDDEN_/' /etc/default/grub

  10. update-grub

  11. fi

  12. postuninstall scriptlet (using /bin/sh):

  13. . /etc/os-release

  14. if [ '$ID' = 'debian' -o '$ID_LIKE' = 'debian' ] then

  15. grubcfg=/boot/grub/custom.cfg

  16. elif mountpoint -q /boot/efi then

  17. grubcfg=/boot/efi/EFI/$ID/custom.cfg

  18. else

  19. grubcfg=/boot/grub2/custom.cfg

  20. fi

  21. if [ '$1' = '1' ] then

  22. new_prefix=`dirname $(grep initrd $grubcfg | head -1 | awk '{print $2}')`

  23. if [ '$new_prefix' != '/android-7.1-r2' ] then

  24. rmdir $new_prefix/data

  25. mv /android-7.1-r2/data $new_prefix

  26. rmdir /android-7.1-r2

  27. fi

  28. else

  29. rmdir /android-7.1-r2/data /android-7.1-r2

  30. rm -f $grubcfg

  31. fi

4、インストールスクリプトを呼び出します

運が良ければ、RPMをインストールすることができます。