【问题标题】:What are the steps to recompile syslogd on FreeBSD?在 FreeBSD 上重新编译 syslogd 的步骤是什么?
【发布时间】:2014-11-24 23:27:48
【问题描述】:

我正在尝试对 FreeBSD 系统上的 syslogd 进行一些小改动。我想将 syslogd.c 中的 MAXLINE 的值更改为 4096,然后重新编译。我已经参考了这篇文章中的步骤:

http://bsdpants.blogspot.com/2010/08/truncated-syslog-messages.html

但是,由于我对下拉、编辑和重新编译源代码不太熟悉,所以我一直在尝试重新编译。

到目前为止我已采取的步骤:

  • #svn checkout svn://svn0.us-east.FreeBSD.org/base/head /usr/src
  • 编辑了 /usr/src/usr.sbin/syslogd/syslogd.c 中 MAXLINE 的值
  • #make obj && make depend && make && make install

当我尝试第三步(make obj && make depend && make && make install)时,出现以下错误:

make: "/usr/src/usr.sbin/syslogd/Makefile" line 4: Could not find src.opts.mk
make: "/usr/src/usr.sbin/syslogd/Makefile" line 17: Malformed conditional (${MK_INET6_SUPPORT} != "no")
make: Fatal errors encountered -- cannot continue
make: stopped in /usr/src/usr.sbin/syslogd

我是否错过了这个过程中的一个步骤?任何帮助将不胜感激。如果我可以提供更多信息,请告诉我。

谢谢!

【问题讨论】:

    标签: makefile freebsd syslog


    【解决方案1】:

    这很奇怪。您可以尝试“svn up”,然后重试构建(“cd /usr/src/usr.sbin/syslogd && make clean all install”)吗?也许您只是在不幸的时刻退房,当时树被折断了。

    【讨论】:

    • trasz,我尝试了“svn up”,然后尝试了“cd /usr/src/usr.sbin/syslogd && make clean all install”并收到上面相同的 4 条错误消息。还有什么我可能遗漏的吗?
    • Grrr 提出了一个非常好的问题:您要在什么系统上构建它?
    • 我正在尝试将 FreeBSD 10.1 系统构建为 VMWare Workstation 10 环境中的 VM。这些信息对系统的行为有影响吗???
    • 我不确定这是否不是 FreeBSD 构建基础架构中的错误,但现在,您可以尝试使用 10 个源而不是 head 吗?基本上,执行“svn co svn.freebsd.org/base/stable/10”来签出 10-STABLE 并执行上述步骤,而不是之前签出的 11-CURRENT 树。它尝试使用的文件 - src.opts.mk - 在 10-STABLE 中似乎不存在。它在 11-CURRENT 中,在 share/mk/src.opts.mk 中。为什么构建 syslogd 无法从那里提取它 - 我不知道。
    【解决方案2】:

    您是否有机会尝试在旧的 FreeBSD 系统(8.X 或 7.X)上执行此操作?此类系统上的系统 make(1) 可能太旧而无法处理来自 CURRENT 的 Makefile(您在签出“head”时得到)。如果是这种情况,您要么必须升级,要么使用与您的系统版本匹配的源 (/base/stable/8/base/release/X.Y.Z 或其他的 svn 结帐)。

    另一个可能相关的点可以在条目中找到 来自http://svn.freebsd.org/base/head/UPDATING的20140505:

    /etc/src.conf now affects only builds of the FreeBSD src tree. In the
    past, it affected all builds that used the bsd.*.mk files. The old
    behavior was a bug, but people may have relied upon it. To get this
    behavior back, you can .include /etc/src.conf from /etc/make.conf
    (which is still global and isn't changed). This also changes the
    behavior of incremental builds inside the tree of individual
    directories. Set MAKESYSPATH to ".../share/mk" to do that.
    Although this has survived make universe and some upgrade scenarios,
    other upgrade scenarios may have broken. At least one form of
    temporary breakage was fixed with MAKESYSPATH settings for buildworld
    as well... In cases where MAKESYSPATH isn't working with this
    setting, you'll need to set it to the full path to your tree.
    

    【讨论】:

      猜你喜欢
      • 2023-03-26
      • 1970-01-01
      • 2020-04-06
      • 2018-02-20
      • 2011-05-30
      • 1970-01-01
      • 1970-01-01
      • 2010-09-22
      • 1970-01-01
      相关资源
      最近更新 更多