Shell

Freebsd 11.1 問題與 gnu m4 eval 測試失敗

  • April 10, 2021

我是一個相當新的 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

只是為了讓您知道它的新作業系統(安裝)和它是我安裝的第一個軟體。

您在安裝軟體時遇到問題,但您沒有向我們展示您在做什麼。您只是在顯示某些命令的輸出,我們只能猜測。

如果您是 FreeBSD 的新手,但以前習慣於在 GNU 系統 (Linux) 上工作,那麼會有一些細微但重要的區別。

編譯自己的程序時,一個典型的絆腳石是 make。BSD 有一個不錯make但它與 GNU 不同make。如果您想使用 GNU make,那麼您將安裝它。但是當使用它時它make仍然是 BSD make 但現在你也有一個gmake。這可能會令人困惑。

它與m4FreeBSD 在基本系統中的相同。

$ which m4
/usr/bin/m4

但是寫下你正在安裝gnu m4-1.4.18的資訊並沒有幫助,因為許多道路都通向羅馬。您是安裝包/埠還是從安裝?

FreeBSD 軟體包

在 FreeBSD 上安裝軟體最簡單的方法是安裝軟體包。包是埠的預編譯二進制分發。

pkg install m4

你可能沒有這樣做。但這是簡單的路線。

FreeBSD 埠

FreeBSD 移植是更新檔的集合,以及在 FreeBSD 上執行應用程序所不需要的東西。如果您安裝了樹,您將更改目錄devel/m4make(編譯)應用程序。

埠樹的目標是 BSD make。因此使用 BSD make 而不是 GNU make 很重要。有趣的部分是m4取決於autoconf哪個又取決於 GNU make

但出於我們的目的,我們將使用 BSD make:

$ make
$ sudo make install

使用埠的一個優點是您可以使用make config. 但在大多數情況下,使用 GNU autotools 和朋友,預設值通常就足夠了,二進制包就是你所需要的。

源安裝

我的猜測是您正在嘗試從原始碼安裝。在這種情況下,了解 GNU 和 BSD 工具之間的區別很重要,因為它們通常名稱相同。但是 GNU 工具往往希望您使用 GNU 工具。如果你有一個普通的 FreeBSD 安裝,那麼你已經有了makem4但是 BSD 變種。

所以當 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

引用自:https://unix.stackexchange.com/questions/411652