我是 Freebsd 的新用户。当我尝试安装时gnu m4-1.4.18
,我在 eval 测试部分得到 eval 失败:
Checking ./189.eval
@ ../doc/m4.texi:6405: Origin of test
./189.eval: stdout mismatch
--- m4-tmp.2536/m4-xout 2017-12-18 22:11:42.931036000 +0000
+++ m4-tmp.2536/m4-out 2017-12-18 22:11:42.928582000 +0000
@@ -2,8 +2,8 @@
1
1
-overflow occurred
--2147483648
+
+2147483648
0
-2
-2
这是 189.eval 里面的内容:
dnl @ ../doc/m4.texi:6405: Origin of test
dnl @ expected status: 0
dnl @ extra options:
dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
dnl @ Foundation, Inc.
dnl @ This file is free software; the Free Software Foundation
dnl @ gives unlimited permission to copy and/or distribute it
dnl @ with or without modifications, as long as this notice
dnl @ is preserved.
define(`max_int', eval(`0x7fffffff'))
dnl @result{}
define(`min_int', incr(max_int))
dnl @result{}
eval(min_int` < 0')
dnl @result{}1
eval(max_int` > 0')
dnl @result{}1
ifelse(eval(min_int` / -1'), min_int, `overflow occurred')
dnl @result{}overflow occurred
min_int
dnl @result{}-2147483648
eval(`0x80000000 % -1')
dnl @result{}0
eval(`-4 >> 1')
dnl @result{}-2
eval(`-4 >> 33')
dnl @result{}-2
只是为了让您了解它的新操作系统(安装)以及它是我安装的第一个软件。
答案1
您在安装软件时遇到问题,但您没有向我们展示您在做什么。您只是显示了输出一些命令,我们只能猜测。
如果您是 FreeBSD 新手,但之前已经习惯在 GNU 系统 (Linux) 上工作,那么存在一些微妙但重要的差异。
编译自己的程序时典型的绊脚石是 make。 BSD 有一个很好的功能make
,但它与 GNU 不同make
。如果您想使用 GNU,make
那么您将安装它。但使用时它make
仍然是 BSD make,但现在你gmake
也有了一个。这可能会令人困惑。
m4
这与FreeBSD 的基本系统中的情况是一样的。
$ which m4
/usr/bin/m4
但是写下您正在安装gnu m4-1.4.18
并没有什么帮助,因为条条大路通罗马。您是否正在安装封装/端口或来自来源?
FreeBSD 软件包
在 FreeBSD 上安装软件最简单的方法是安装软件包。软件包是端口的预编译二进制发行版。
pkg install m4
你可能没有这样做。但这是最简单的方法。
FreeBSD 端口
FreeBSD 移植是补丁以及在 FreeBSD 上运行应用程序所需的内容的集合。如果您有端口树安装后,您将更改目录devel/m4
并make
(编译)应用程序。
ports 树的目标是 BSD make。因此,使用 BSD make 而不是 GNU make 很重要。有趣的部分是m4
取决于autoconf
哪一个又取决于 GNU make
。
但出于我们的目的,我们将使用 BSD make:
$ make
$ sudo make install
使用 ports 的一个优点是您可以使用 更改编译时设置make config
。但在大多数情况下,使用 GNU 自动工具和朋友,默认值通常就足够了,二进制包就是您所需要的。
源码安装
我的猜测是您正在尝试从源代码安装。在这种情况下,了解 GNU 和 BSD 工具之间的差异非常重要,因为它们的名称通常相同。但 GNU 工具往往希望您使用 GNU 工具。如果您安装了普通的 FreeBSD,那么您已经拥有了make
BSDm4
变体。
因此,当 GNU 说明说make
您应该确保已安装 GNU make 并gmake
在命令行中输入时。
除非您想了解这些复杂的知识,否则我建议您坚持使用软件包。如果您想继续沿着这条路线走下去,您需要更详细地提出问题并向我们展示您在做什么。如果没有这些信息,我们只能猜测。
更新
从阅读评论来看,根本原因似乎是试图安装 Apache APR。这可以在FreeBSD 端口以及。在撰写本文时,APR 的最新移植版本是 1.6.3,它与 Apache 认为的最新稳定版本保持同步。
在新的普通 FreeBSD 系统上,它就像输入一样简单:
pkg install apr1
如果二进制包服务器还没有跟上,您可以选择自己构建它。在这种情况下,您也可以更改默认值。您可以使用端口树。使用该portsnap
工具确保树是最新的。
如果您没有端口树,则:
# portsnap fetch
# portsnap extract
如果您只需要更新:
# portsnap fetch update
然后:
# cd /usr/ports/devel/apr1
# make config
# make
# make install