2024年3月23日 星期六

deb 轉檔: 新版 zst 壓縮改成舊版 xz 壓縮

按照 refind 作者的安裝教學文 下載了 refind 0.14.0.2 並且試著安裝: dpkg -i refind_0.14.0.2-1_amd64.deb, 結果出現錯誤訊息: "archive 'refind_0.14.0.2-1_amd64.deb' uses unknown compression for member 'control.tar.zst', giving up"。 原來是因為我的系統太舊 (linux mint debian edition 5, "Elsie"), 不認得新的 .deb 檔裡面的壓縮格式。 找到 這個問答, 已有網友寫了一個小的 script:

#!/bin/bash

DEBPACKAGE="${1%.deb}"

[[ -z "$1" ]] && echo "Usage: $0 some_package.deb" && exit 1

set -e
ar x $DEBPACKAGE.deb
zstd -d < control.tar.zst | xz > control.tar.xz
zstd -d < data.tar.zst | xz > data.tar.xz
ar -m -c -a sdsd "$DEBPACKAGE"_repacked.deb debian-binary control.tar.xz data.tar.xz
rm debian-binary control.tar.xz data.tar.xz control.tar.zst data.tar.zst

把它存檔, 隨便取個名字, 例如 zst2xz-deb、 改成可執行、 並且安裝 zstd 套件, 然後: ./zst2xz-deb refind_0.14.0.2-1_amd64.deb 就會產生 (採用較舊、相容性較好的 xz 演算法所壓縮的) refind_0.14.0.2-1_amd64_repacked.deb 之後就可以用 dpkg -i 安裝了。

沒有留言:

張貼留言

因為垃圾留言太多,現在改為審核後才發佈,請耐心等候一兩天。