LINUX.ORG.RU

[python] сборка deb пакета


0

1

Задумал собрать универсальный deb пакет со своей маленькой python программой.

перед тем как выполнить

dpkg-deb -b
имею такую структуру в файловой системе:

$ find -type d 
.
./DEBIAN
./usr
./usr/share
./usr/share/doc
./usr/share/doc/ipdcuro
./usr/share/ipdcuro
./usr/share/ipdcuro/icons
./usr/share/ipdcuro/pyaewp
./usr/share/ipdcuro/pyaewp/template
./usr/share/applications
./usr/lib
./usr/lib/python2.6
./usr/lib/python2.6/dist-packages
./usr/lib/python2.6/dist-packages/ipdcuro
./usr/lib/python2.6/dist-packages/ipdcuro/pyaewp
./usr/lib/python2.6/dist-packages/ipdcuro/pyaewp/ui
./usr/bin

Всё замечательно до тех пор пока deb пакет будет устанавливаться с версией python-2.6

внимание вопрос - каким образом (через [post|pre]install скрипты или ещё каким волшебным способом) лучше/правильнее подменить /usr/lib/python2.6 на актуальное для установленного в системе python?

чем делать byte-compile? py_compile.compile в postinstall?

Я как-то даже не задумывался над таким вопросом... модули как-то сами оказались в pyshared - dh_pysupport спас, видимо.

tailgunner ★★★★★ ()

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

provaton ★★★★★ ()
Ответ на: комментарий от tailgunner

А ещё у distribute (aka setuptools, или не тут? но есть) есть опция типа layout=deb.

r2d2 ()
Ответ на: комментарий от bukaka

> тут написано что python_support deprecated

Ну так его фактически поменяли на dh_python2 и dh_python3, как в свое время python_central поменяли на python_support.

provaton ★★★★★ ()
Ответ на: комментарий от tailgunner

покажешь как собираешь пакет?

прочитал «Руководство начинающего разработчика Debian», относительно своего пакета не могу понять как надо делать.

до этого собирал пакет своим скриптом примерно так:

cd ..
sudo rm -rf work/deb
mkdir -p work/deb

./waf configure --prefix=/usr
./waf install --destdir=./work/deb

mkdir work/deb/DEBIAN
chmod 0755 work/deb/DEBIAN

mkdir -p work/deb/usr/share/doc/ipdcuro
cp copyright changelog work/deb/usr/share/doc/ipdcuro/
gzip -9 work/deb/usr/share/doc/ipdcuro/changelog

find work/deb/ -iname '*.pyo' | xargs rm

# size
program_size=`du -sk work/deb/usr | awk '{print $1}'`
cat deb/control | sed s/{size}/${program_size}/ > work/deb/DEBIAN/control
#
#cp deb/postinst deb/prerm work/deb/DEBIAN


find work/deb/ -iname '*.pyc' | xargs rm

mkdir -p work/deb/usr/share/applications
cp deb/IPDCuro.desktop work/deb/usr/share/applications

cd work/deb
find usr -type f | xargs md5sum >> DEBIAN/md5sums
cd ../..

sudo chown -R 0:0 work/deb/usr work/deb/DEBIAN

# make pkg
dpkg-deb -b work/deb deb/ipdcuro_0.4-1_all.deb
bukaka ()
Ответ на: комментарий от bukaka

Какой ужас. Ты собираешь пакет тупо скриптом? Боюсь, тебе нужно прочитать какую-нибудь мурзилку по сборке *.deb. Я начинал с https://wiki.ubuntu.com/PackagingGuide/HandsOn

Вот вот слегка мой подредактированный rules:

install:
        cp src/foo/*.py  $prefix/usr/lib/python${pyver}/site-packages

binary-arch: install
        dh_install -pfoo -pbar
        dh_installdebconf
        dh_compress -a
        dh_fixperms -a
        # должно быть как минимум после dh_install
        dh_pysupport
        dh_installdeb -a
        dh_gencontrol -s
        dh_md5sums -a
        dh_builddeb -a -v
tailgunner ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.