Freebsd 11.1 問題與 gnu m4 eval 測試失敗
我是一個相當新的 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
。如果您想使用 GNUmake
,那麼您將安裝它。但是當使用它時它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
(編譯)應用程序。埠樹的目標是 BSD make。因此使用 BSD make 而不是 GNU make 很重要。有趣的部分是
m4
取決於autoconf
哪個又取決於 GNUmake
。但出於我們的目的,我們將使用 BSD make:
$ make $ sudo make install
使用埠的一個優點是您可以使用
make config
. 但在大多數情況下,使用 GNU autotools 和朋友,預設值通常就足夠了,二進制包就是你所需要的。源安裝
我的猜測是您正在嘗試從原始碼安裝。在這種情況下,了解 GNU 和 BSD 工具之間的區別很重要,因為它們通常名稱相同。但是 GNU 工具往往希望您使用 GNU 工具。如果你有一個普通的 FreeBSD 安裝,那麼你已經有了
make
,m4
但是 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