我遇到以下问题:我正在从带有附加软件包的自定义创建的 iso 运行 debian 9 安装。其中一个包在 postinst 脚本中运行此包中定义的 python 命令,但 postinst 脚本失败并出现错误:
my-command command not found
因此所有软件安装步骤都会失败。 my-package.postinst:
#!/bin/bash
my-command
当 postinst 被注释掉时,所有过程都会成功完成。即使进程在重新启动后失败( dpkg -l 在状态 iF 中返回 my_package),也可以从命令行运行 my-command。
我猜问题出在运行 my-package.postinst 期间未正确安装的 python 软件包中,但即使将它们移动到 pre-depend 也没有帮助。
有什么想法或方向吗?任何帮助将不胜感激。
提前谢谢你,维罗妮卡
自定义 Debian 9 iso 光盘是使用 simple-cdd 创建的。
pkg-root/DEBIAN/my-package 的控制:
Package: my-package
Version: 1.0
Priority: optional
Architecture: all
Depends: geoip-bin, openssh-server, ntp, sshguard, lsb-release, vim, less, nload, iotop, logrotate, passwd, python-requests
Pre-depends: python, apt-transport-https, iproute2, python-setuptools
我的包/setup.py
from setuptools import setup
setup(
name='my-package',
version='1.0',
namespace_packages=['MyModules', 'MyModules.System'],
packages=['MyModules.System.Tools'],
entry_points={
"console_scripts": [
"my-command = MyModules.System.Tools:cli_my_command"
]
},
license='MyLicense'
)
在打包过程中,运行以下命令来创建相关的entry_points、dependency_links、namespace_packages:
python setup.py install -f --install-layout=deb --prefix=/usr/local --root=pkg-root
答案1
由于所有 python 软件包均已正确安装,导致找不到 cli 命令的唯一问题是在 PATH 变量中 - 它在此步骤中不包含 my-command 的位置(/usr/local/bin - 似乎是稍后添加的) 。解决方案是export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
在运行之前在 my-package.postinst 脚本中添加以下内容my-command
: