Как переименовать локальный репозиторий APT?

Проблема с Ubuntu: отсутствует ключевой пакет, это libpam -cgfs

0
20.11.2020, 08:19
1 ответ

Похоже, вы хотите знать, как переименовать пакет. Есть два способа сделать это. В этом примере я собираюсь изменить имя cowsayна mysay

.

Из источника

Загрузите исходный пакет 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: cowsayв управляющий файл mysay.

  • Переименование пакетов немного странно. Это обязательно вызовет конфликты, упомянутые выше. Я не уверен, что могу представить случай, когда это необходимо.

1
28.04.2021, 23:03

Теги

Похожие вопросы