Debian

如何重命名本地 APT 儲存庫?

  • November 20, 2020

我按照這篇文章中的步驟創建了一個自定義儲存庫,但我想重命名它。我找不到任何方法來做到這一點。你能幫我麼?

聽起來您想知道如何重命名包。有兩種方法可以做到這一點。在此範例中,我將更改名稱cowsaymysay

從源頭

下載 debian(或 ubuntu)源包,根據需要重命名文件,用目錄中的新名稱替換舊名稱debian/*(這就是sed行所做的,然後使用dpkg-buildpackage.

請小心一點,因為某些包可能具有依賴於包名稱的建構規則,並且可能不像 cowsay 那樣瑣碎。這可能是最艱難的選擇。

apt source cowsay
mv cowsay-3.03+dfsg2 mysay-3.03+dfsg2
mv cowsay_3.03+dfsg2-8.dsc mysay_3.03+dfsg2-8.dsc
mv cowsay_3.03+dfsg2.orig.tar.gz mysay_3.03+dfsg2.orig.tar.gz
cd mysay-3.03+dfsg2/
sed -i 's/\bcowsay\b/mysay/g' debian/changelog debian/control
sed -i 's./debian/cowsay./debian/mysay.g' debian/rules
dpkg-buildpackage -uc -us

從二進制

獲取要手動拆分存檔的 *.deb,編輯control文件,然後將其放回原處。

apt download cowsay
mkdir mysay && cd mysay

# Split everything up
ar -x ../cowsay_3.03+dfsg2-8_all.deb
mkdir control
tar -xf control.tar.xz -C control

# CHange the package name
sed -i 's/cowsay/mysay/' control/control

# Put the control file back togeather
cd control
tar -cf control.tar.xz *
mv control.tar.xz ../
cd ..
rm -r control

# Put the rest back togeather
ar r ../mysay_3.03+dfsg2-8_all.deb debian-binary control.tar.xz data.tar.xz

從二進制(方法 2)

這簡化了重新組合過程。這可能是最簡單的方法。

apt download cowsay
ar x cowsay_3.03+dfsg2-8_all.deb 
mkdir -p mysay/DEBIAN
tar -xf control.tar.xz -C mysay/DEBIAN
tar -xf data.tar.xz -C mysay/
sed -i 's/cowsay/mysay/' mysay/DEBIAN/control
dpkg-deb -b mysay

最後的幾點說明:

  • 如果您嘗試在同一台機器上安裝cowsay和安裝,其中一個包將失敗。mysay那是因為它們都提供相同的文件,因此您的系統不可能知道哪個擁有它。使這個萬無一失的一種方法是Conflicts: cowsaymysay.
  • 重命名包有點奇怪。肯定會導致上面提到的衝突。我不確定我是否可以想像一個必要的情況。

引用自:https://unix.stackexchange.com/questions/620590