我想在Arch Linux上同时存在不同版本的软件包
首先
這篇文章記錄了在 Arch Linux 中讓不同版本的軟體包共存的步驟。
由於原始作業的相關性,基本上我們使用根用戶進行操作。
背景和所做的事情
-
- archlinuxを使う中で古いバージョンのパッケージを使う必要が出てきた(nodejs)
-
- それにあたって関連パッケージもバージョンを落とす必要が出た(npm, icu)
- しかし最新版がないと動かないモジュールもあった(→ icuは最新版も必要)
本文介绍了三个包,即nodejs、npm和icu。它们的操作如下所示。
icuの複数バージョンを同居させた ←タイトルの件
nodejs, npmは古いバージョンにした
安装模块以降低版本
据说在Arch Linux中有一种思想,即“基本上使用最新版本的软件包”,因此无法通过pacman等工具降级软件版本。
因此,需要通过git安装downgrade模块。
安装Git
pacman -S --noconfirm git
降级的安装
# 作業用ディレクトリの作成
mkdir /work
chmod 777 /work
# 後続のmakepkgコマンドがrootで実行できないため、一般ユーザーにスイッチ
su - arch
# git clone
cd /work
git clone https://aur.archlinux.org/downgrade.git
# downgradeパッケージのインストール
cd /work/downgrade
makepkg -si
(ユーザーのパスワードを入力したり、Yの入力をする)
# ルートユーザーに戻る
exit
降级和多个版本的共存
安装最新版本的nodejs和npm。
# nodejsのインストール
pacman -S --noconfirm nodejs npm
将Node.js和npm降级。
使用刚刚安装的downgrade来降低软件包的版本。
# nodejsをダウングレード
downgrade nodejs
16.6.1
(Proceed with installation? [Y/n] には Yとしておき、
add nodejs to IgnorePkg? [y/N] にも yとしておく)
# npmをダウングレード(nodejs16.6.1に対応するのが7.20.3だった)
downgrade npm
7.20.3
(Proceed with installation? [Y/n] には Yとしておき、
add nodejs to IgnorePkg? [y/N] にも yとしておく)
# nodeのバージョン確認を行うと、libicui18n.so.69 がないというエラーが出る
node --version
node: error while loading shared libraries: libicui18n.so.69: cannot open shared object file: No such file or directory
降级libicui。
最终我会安装最新版本,但我想先使用降级工具将其还原到需要的旧版本。
# icuをダウングレード
downgrade icu
69.1
(Proceed with installation? [Y/n] には Yとしておき、
add nodejs to IgnorePkg? [y/N] には Nとしておく)
将旧版本的文件备份。
因为这样会被版本更新覆盖,所以需要创建一个存放旧包的地方并将其移动。
# 古いパッケージが入ったことを確認し、old用のフォルダへ移動する
## 69.1のバージョンが入っていることを確認する
ls -l /usr/lib/libicu*
# 古いバージョンを退避するディレクトリ作成
mkdir -p /usr/lib_old
# libicuから始まるパッケージを退避する
ls -l /usr/lib/libicu* | grep '^-' | while read line; do
org_path=$(echo $line | awk '{print $9}')
file_name=$(echo $org_path | awk -F '/' '{print $NF}')
cp -p $org_path /usr/lib_old/$file_name
echo "copy $file_name"
done
# 退避したファイルの確認
ls -l /usr/lib_old
将libicui更新为最新版本
# ダウングレード&ignoreの設定の解除
# downgradeした際に、icuが自動更新をしない設定になっている場合は解除する
grep 'IgnorePkg =' /etc/pacman.conf
# pacman.confの変更
vim /etc/pacman.conf
>>> vim変更内容 >>>
# IgnorePkg の設定からicuを削除(ある場合)
<修正後サンプル>
IgnorePkg = nodejs npm
<<< vim変更内容 <<<
# icuを最新化
pacman -Syu --noconfirm icu
将链接放在已回退的旧版icu文件中
根据对Arch Linux库的使用,如果在/usr/lib/目录下链接存在,则可以运行,因此我将向先前备份的文件创建一个链接。
# 現在のlibicuのリンク確認
ls -l /usr/lib/libicu*
# 退避した古いicuファイル
ls -l /usr/lib_old/libicu*
# リンクを貼る
ls -l /usr/lib_old/libicu* | grep '^-' | while read line; do
old_path=$(echo $line | awk '{print $9}')
file_name=$(echo $old_path | awk -F '/' '{print $NF}')
ln -s $old_path /usr/lib/$file_name
echo "create link to $file_name"
done
# 貼ったリンクの確認
ls -l /usr/lib/libicu*
# パスの読み込み直し
ldconfig
确认能够执行node命令。
node --version
對於這篇文章的方法是否正確,我不清楚,但既然目標已經達成,就算不錯了。
以上
相关文章
- NASNEを自作してみた