ArchLinuxにRPMパッケージをインストールする方法
How Install Rpm Package Archlinux
パッケージをインストールしたい場合がありますが、このパッケージは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
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-any 0.0 B 0.00B/s 00:00 [----------------------] 0%
rpmextract-1.0-8-any 2.5 KiB 0.00B/s 00: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...
cd /
sudo rpmextract.sh ~lujun9972/android-x86-7.1-r2.x86_64.rpm
2、rpmextractを使用してRPMファイルを抽出します
RPMパッケージファイルのディレクトリ構造は参照用のルートディレクトリであるため、ルートディレクトリの直下で解凍することをお勧めします。
rpm -qp --script file.rpm
rpm
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
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' { 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
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
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をインストールすることができます。