- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我无法理解 autoconf
工具链如何处理初始化脚本 - 通常放置在 /etc/init.d/
中用于启动/停止守护进程的脚本或服务。
autoconf
工具链指定了一堆预先命名的安装目录变量,例如 $bindir
(可执行文件所在的位置,通常为 /usr/local/bin
) >) 或 $includedir
(对于头文件,可能是 /usr/include
),等等。
但是 /etc/init.d
中的 init 文件又如何呢?阅读 list of directory variables ,我没有看到任何与 /etc/init.d/
那么这里的通常做法是什么?我是否只需要选择一个安装目录变量并用 AC_SUBST
覆盖它,以便我可以将脚本安装到 /etc/init.d
?
最佳答案
最简单的答案;在顶级源目录 Makefile.am 中:
# Install my_script in $(bindir) and distribute it.
dist_bin_SCRIPTS = my_script
因此,$(bindir)
是脚本的默认值。
--
为了获得更强大的实现,实际上涵盖了守护进程/服务的初始化脚本(首先引用权威来源):
There is no need for EXTRA_DIST or any build rule: Automake infers them from AC_CONFIG_FILES (see Requirements). CLEANFILES is still useful, because by default Automake will clean targets of AC_CONFIG_FILES in distclean, not clean.
源链接(http://www.gnu.org/software/automake/manual/html_node/Scripts.html):
示例:
安装到自定义位置:
# Yes, even though its `init_d_SCRIPTS`, we use `init_ddir`,
# with-out a second underscore.
init_ddir = $(sysconfdir)/rc.d/init.d
init_d_SCRIPTS = <yourscript>
# CLEANFILES = $(init_d_SCRIPTS)
请注意 $(sysconfdir)
代表 $(prefix)/etc
; init.d
或 rc.d/init.d
的基本路径,如果您的初始化脚本是由 Autotools 生成的,您可以/应该(?) un 在任一示例中注释 CLEANFILES
行。
或者安装到默认位置:
bin_SCRIPTS = <yourscript>
# CLEANFILES = $(bin_SCRIPTS)
这将是 $(bindir)
编辑:
上面的两个示例都假设您让 Autotools 生成 init_d_SCRIPTS
文件,但如果我们想要分发已创建的脚本并将其安装到我们的 $(init_ddir)
位置该怎么办?
init_ddir = $(sysconfdir)/init.d
dist_init_d_SCRIPTS = <yourscript>
诀窍是 dist
后面不需要跟 _bin_SCRIPTS
,它可以是 dist_<your_var>_SCRIPTS
。主要的 SCRIPTS
让 Autotools 知道该值是一个脚本以及如何处理它,而前面的关键字 dist
则提醒 Automake 它不会为我们创建文件 - 并指示 Automake 不要寻找脚本源目录中的makefile模板。
我想添加这个小编辑,因为我只需要自己对与我的源代码一起分发的脚本进行更正。
--
额外
对于那些接下来会担心与打包有关的初始化脚本(特别是 Debian 打包)的人 - 这或多或少地提醒了我自己 -> 看这里:
https://www.debian.org/doc/manuals/maint-guide/dother.en.html#initd
我在 debuild 尝试将 init.d 文件和 conf 文件直接安装在文件系统根目录的 /etc
和 /etc/init.d
中时遇到的错误,而不是像在包构建期间那样安装在 debian/<package>/<location>
中。
我发现最终我必须删除 Debian 打包教程中提供的一条附加规则,其中您可以覆盖 dh_auto_install
。具体来说,debian/rules
中的这个位:
#!/usr/bin/make -f
%:
dh $@
# If installing an upstream init.d script:
override_dh_installinit:
dh_installinit --name=<scriptname> --onlyscripts
# Remove the following:
# override_dh_auto_install:
# $(MAKE) DESTDIR=$$(pwd)/debian/<package> prefix=/usr install
删除该规则后(在添加我的 init.d 脚本和conf文件之前不需要删除)所有内容都生成并编译得非常完美....实际上包括 - 使用 /usr
将垃圾箱放入目的地前缀作为首先覆盖所需的效果。
对 dh_installinit
调用的覆盖告诉 debuild 不要像 makefile 那样安装 init 脚本,并指定仅进行 update-rc.d 调用以向系统注册脚本。我选择将脚本命名为与包不同的名称;所以我需要传递 --name= 选项。
希望对某人有帮助,我知道如果允许这个答案继续存在,它将来会对我有所帮助。
关于makefile - Autoconf 和初始化脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26837148/
我是 Spring 新手,这就是我想要做的事情: 我正在使用一个基于 Maven 的库,它有自己的 Spring 上下文和 Autowiring 字段。 它的bean配置文件是src/test/res
我在我的测试脚本中有以下列表初始化: newSequenceCore=["ls", "ns", "*", "cm", "*", "ov", "ov", "ov", "ov", "kd"] (代表要在控
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: Class construction with initial values 当我查看 http://en.
我得到了成员变量“objectCount”的限定错误。编译器还返回“ISO C++ 禁止非常量静态成员的类内初始化”。这是主类: #include #include "Tree.h" using n
我有如下所示的a.h class A { public: void doSomething()=0; }; 然后我有如下所示的b.h #include "a.h" class b: publi
我需要解析 Firebase DataSnapshot (一个 JSON 对象)转换成一个数据类,其属性包括 enum 和 list。所以我更喜欢通过传递 DataSnapshot 来手动解析它进入二
我使用 JQuery 一段时间了,我总是使用以下代码来初始化我的 javascript: $(document).ready( function() { // Initalisation logic
这里是 Objective-C 菜鸟。 为什么会这样: NSString *myString = [NSString alloc]; [myString initWithFormat:@"%f", s
我无法让核心数据支持的 NSArrayController 在我的代码中正常工作。下面是我的代码: pageArrayController = [[NSArrayController alloc] i
我对这一切都很陌生,并且无法将其安装到我的后端代码中。它去哪里?在我的页脚下面有我所有的 JS? 比如,这是什么意思: Popup initialization code should be exec
这可能是一个简单的问题,但是嘿,我是初学者。 所以我创建了一个程序来计算一些东西,它目前正在控制台中运行。我决定向其中添加一个用户界面,因此我使用 NetBeans IDE 中的内置功能创建了一个 J
我有 2 个 Controller ,TEST1Controller 和 TEST2Controller 在TEST2Controller中,我有一个initialize()函数设置属性值。 如果我尝
据我所知, dependentObservable 在声明时会进行计算。但如果某些值尚不存在怎么办? 例如: var viewModel ={}; var dependentObservable1 =
我正在阅读 POODR 这本书,它使用旧语法进行默认值初始化。我想用新语法实现相同的功能。 class Gear attr_reader :chainring, :cog, :wheel de
我按照 polymer 教程的说明进行操作: https://www.polymer-project.org/3.0/start/install-3-0 (我跳过了可选部分) 但是,在我执行命令“po
很抱歉问到一个非常新手的Kotlin问题,但是我正在努力理解与构造函数和初始化有关的一些东西。 我有这个类和构造函数: class TestCaseBuilder constructor(
假设我们有一个包含 30 列和 30 行的网格。 生命游戏规则简而言之: 一个小区有八个相邻小区 当一个细胞拥有三个存活的相邻细胞时,该细胞就会存活 如果一个细胞恰好有两个或三个活的相邻细胞,那么它就
我是 MQTT 和 Android 开放附件“AOA” 的新手。在阅读教程时,我意识到,在尝试写入 ByteArrayOutputStream 类型的变量之前,应该写入 0 或 0x00首先到该变量。
我有 2 个 Controller ,TEST1Controller 和 TEST2Controller 在TEST2Controller中,我有一个initialize()函数设置属性值。 如果我尝
我有一个inotify /内核问题。我正在使用“inotify” Python项目进行观察,但是,我的问题仍然是固有的关于inotify内核实现的核心。 Python inotify项目处理递归ino
我是一名优秀的程序员,十分优秀!