构建Debian包时如何排除Python包中的scripts脚本?
解决setuptools构建Debian包时排除指定脚本的问题
以下几种方法可以帮你跳过原Python包中scripts配置指定的文件,无需修改setup.py(或仅作为备选方案):
方法1:指定临时安装目录并避免打包
Debian构建系统只会打包debian/<package-name>下的内容,你可以将脚本安装到一个不在打包范围内的临时目录,比如/tmp:
python3 setup.py install --root=$(CURDIR)/debian/<你的包名> --install-scripts=/tmp
因为/tmp不在Debian包的默认安装路径集合里,这些脚本不会被打包进最终的.deb文件,也不会出现在包的文件列表中。
方法2:使用setuptools的--no-scripts参数(要求setuptools≥61.0.0)
如果你的构建环境中setuptools版本足够新(61.0.0及以上),可以直接用--no-scripts参数跳过所有scripts的安装:
python3 setup.py install --root=$(CURDIR)/debian/<你的包名> --no-scripts
这个参数会直接忽略setup.py中scripts配置的所有文件,完全不执行它们的安装步骤。
方法3:修改setup.py(备选方案)
如果上述方法都无法生效,再考虑用sed直接修改setup.py中的scripts配置,比如删除整个scripts行:
sed -i '/scripts=/d' setup.py
或者更精准地将scripts列表置空:
sed -i 's/scripts=\[.*\]/scripts=\[\]/' setup.py
修改后再执行常规的Debian构建流程即可。
内容的提问来源于stack exchange,提问作者Sir l33tname
相关产品推荐
相关产品推荐

