我有两个Python脚本,我需要将它们打包到Debian包中。我已经尝试了很多事情并取得了一些成功。例如,我制作了一个 setup.py,然后用于python-stdeb
创建一个包(如果我没记错的话,效果不是很好),而且我还从头开始制作了自己的包,其结构如下:
project
DEBIAN/
changelog
copyright
compat
rules
control
install
usr/
bin/
script1
script2
无论如何,事情就是这样。我得到了一个像 Debian 软件包一样的软件包,我可以使用dpkg -b project
它首先构建它,然后dpkg -i package.deb
安装 Debian 软件包,但是它没有安装任何东西(它确实安装了一些东西,但没有安装脚本我写的,这就是我真正想安装的)。那么,我怎样才能制作一个安装我的 Python 脚本的包呢?我不在乎他们是否转到 X11 或者我必须说“安装到~/package
”。我想要的只是将我的脚本放入一个包中,以便其他人可以安装该包并拥有我的脚本。
我的猜测是我必须将元数据或其他内容放入安装文件中,但我不知道该放什么。
答案1
一种快速而简单的方法可能是使用alien
,它将转换.tar
为.deb
:
tar czf pkg-name.tgz usr/
fakeroot alien -d pkg-name.tgz
否则使用旧方法,我使用这样的 Makefile:
all: deb
deb:
mkdir -p tmp/usr/bin tmp/DEBIAN tmp/etc tmp/usr/share/man/man5
find tmp -type d | xargs chmod 755
cp some.conf tmp/etc/
cp man/some.5 tmp/usr/share/man/man5/
cp somecmd tmp/usr/bin/
tar c --owner root --group root -v -z -f tmp/data.tar.gz -C tmp ./etc ./usr
cd tmp && find usr/ etc/ -type f | xargs md5sum >DEBIAN/md5sums
awk '/^#Package:/{i++}i {print substr($$0,2); }' Makefile >tmp/DEBIAN/control
tar c --owner root --group root -v -z -f tmp/control.tar.gz -C tmp/DEBIAN ./control ./md5sums
echo 2.0 >tmp/debian-binary
ar rcv pkg-name_1.0-1.deb tmp/debian-binary tmp/control.tar.gz tmp/data.tar.gz
.phony: clean
clean:
-rm -fr tmp
#Package: pkg-name
#Version: 1.0
#Section: net
#Priority: optional
#Architecture: all
#Essential: no
#Installed-size: 100
#Maintainer: Name <mail@here>
#Depends: optional dependencies
#Description: short descr
# long descr