создать пакет .deb из сценариев или двоичных файлов

69

Я искал простой способ создания пакетов .deb для вещей, у которых нет исходного кода для компиляции (configs, shellscripts, проприетарное программное обеспечение). Это была довольно сложная проблема, потому что большинство обучающих программ пакета предполагает, что у вас есть исходный tarball, который вы хотите скомпилировать. Затем я нашел этот короткий учебник (немецкий ).

Затем я создал небольшой скрипт для создания простого репозитория. Вот так:

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

Я добавил ключ к метке клавиш и включил источник следующим образом:

deb http://my.default.com/my-repository/ ./

Похоже, что само репо работает хорошо (я столкнулся с некоторыми проблемами, чтобы исправить их, мне нужно было дважды добавить пакеты и создать временный файл временного файла для файла Release). Я также добавил некоторые загруженные .deb в репо, похоже, они также работают без проблем. Но мои собственные созданные пакеты не ... Wenn i do 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.

Кто-нибудь знает, что я сделал не так?

UPDATE 2012-03-06: Просто подскажите для другого человека, который ищет простой способ создания DEB: взгляните на FPM .

    
задан Thomas Deutsch 23.02.2011 в 12:11
источник

1 ответ

67

В учебном пособии, который вы связали, используется подход низкого уровня для создания пакета. Такой подход обычно не рекомендуется и может привести к возникновению всех проблем, когда это не будет сделано тщательно.

Создание .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

    
ответ дан João Pinto 23.02.2011 в 14:27
источник