Создать пакет.deb из скриптов или двоичных файлов
Я искал простой способ создания пакетов.deb для вещей, у которых нет исходного кода для компиляции (конфиги, скрипты, проприетарное программное обеспечение). Это было довольно проблематично, потому что в большинстве обучающих пакетов предполагается, что у вас есть архив с исходным кодом, который вы хотите скомпилировать. Затем я нашел этот короткий учебник (немецкий).
После этого я создал небольшой скрипт для создания простого репозитория. Как это:
rm /export/my-repository/repository/*
cd /home/tdeutsch/deb-pkg
for i in $(ls | grep my); do dpkg -b ./$i /export/my-repository/repository/$i.deb; done
cd /export/avanon-repository/repository
gpg --armor --export "My Package Signing Key" > PublicKey
apt-ftparchive packages ./ | gzip > Packages.gz
apt-ftparchive packages ./ > Packages
apt-ftparchive release ./ > /tmp/Release.tmp; mv /tmp/Release.tmp Release
gpg --output Release.gpg -ba Release
Я добавил ключ к связке ключей apt и включил источник, подобный этому:
deb http://my.default.com/my-repository/ ./
Похоже, что само хранилище работает хорошо (я столкнулся с некоторыми проблемами, чтобы исправить их, мне нужно было добавить пакеты дважды и сделать временный файл временным решением для файла Release). Я также положил в репозиторий несколько загруженных.deb, похоже, они тоже работают без проблем. Но мои самодельные пакеты не... Wenn я делаю sudo apt-get update
они вызывают такие ошибки:
E: Problem parsing dependency Depends
E: Error occurred while processing my-printerconf (NewVersion2)
E: Problem with MergeList /var/lib/apt/lists/my.default.com_my-repository_._Packages
E: The package lists or status file could not be parsed or opened.
Кто-нибудь знает, что я сделал не так?
ОБНОВЛЕНИЕ 2012-03-06: Просто подсказка для другого человека, который ищет простой способ создания DEB: взгляните на FPM.
1 ответ
Учебник, который вы связали, использует низкоуровневый подход для создания пакета. Такой подход обычно не рекомендуется и может привести к всевозможным проблемам, если не сделать это тщательно.
Создать.deb для скрипта очень просто, если вы поймете основы упаковки. В двух словах:
# Configure your paths and filenames
SOURCEBINPATH=~
SOURCEBIN=myscript.sh
DEBFOLDER=~/somescripts
DEBVERSION=0.1
DEBFOLDERNAME=$DEBFOLDER-$DEBVERSION
# Create your scripts source dir
mkdir $DEBFOLDERNAME
# Copy your script to the source dir
cp $SOURCEBINPATH/$SOURCEBIN $DEBFOLDERNAME
cd $DEBFOLDERNAME
# Create the packaging skeleton (debian/*)
dh_make -s --indep --createorig
# Remove make calls
grep -v makefile debian/rules > debian/rules.new
mv debian/rules.new debian/rules
# debian/install must contain the list of scripts to install
# as well as the target directory
echo $SOURCEBIN usr/bin > debian/install
# Remove the example files
rm debian/*.ex
# Build the package.
# You will get a lot of warnings and ../somescripts_0.1-1_i386.deb
debuild
Чтобы добавить больше сценариев, их необходимо скопировать в каталог и добавить в файл debian/install - затем просто перезапустите debuild. Вы также должны проверить и обновить файлы debian/* по мере необходимости.
Вы должны прочитать справочные страницы для: dh_make
, dh_install
, а также debuild