FreeBSD 软件包

FreeBSD 软件包

我是 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/m4make(编译)应用程序。

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,那么您已经拥有了makeBSDm4变体。

因此,当 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

相关内容