Как упаковать и отправить приложение командной строки в ubuntu? [Дубликат]

Я искал простой способ создания пакетов .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, я делаю 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 .

70
задан 6 March 2012 в 19:31

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

68
ответ дан 25 July 2018 в 02:53

Другие вопросы по тегам:

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