我目前正在构建一个使用 automake 处理的大型软件包。包由C、C++和Python组成。到目前为止,我在 C/C++ 方面取得了良好的成果,但在涉及 python 依赖项时我遇到了阻碍。
我个人在安装时运行一个脚本,并且我想在make install
调用时运行它。目前它由configure.ac 调用,但它在不必要的时间运行。
该脚本做了三件事:
- 将一些 python 文件放在 /usr/local/lib/python2.7/(dist|site)-packages 中
- 安装自制的 python 模块
- 检查 python 和程序依赖项(例如 geckodriver)并在必要时安装它们
我知道 automake 生成的 makefile 是“创建命令”,这些命令是在示例时install
或uninstall
通过示例触发的,我想知道如何告诉 makefile.am 在调用安装时调用 somescript.sh 并在卸载时调用 someOtherscript.sh被调用来删除我的程序安装的内容。
有点像 debian 软件包中的 preinst 脚本。
答案1
我最终找到了一种使用自动工具处理 python 的方法。 Makefile.am 允许您像这样覆盖安装和卸载:
install-exec-local:
cd src/ && python setup.py install --record $(pythondir)/installed_files.txt
uninstall-local:
cat $(pythondir)/installed_files.txt | xargs rm -rf \
rm -r $(sysconfdir)/nina
特别感谢 Kevin Brown 的精彩教程。
https://blog.kevin-brown.com/programming/2014/09/24/combining-autotools-and-setuptools.html