如何在不破壞 Fedora 的情況下建立具有特定庫的工具?

如何在不破壞 Fedora 的情況下建立具有特定庫的工具?

到目前為止,從未需要偏離標準的 Fedora 16 核心開發組件。我需要建立雜亂MX項目,但這個函式庫需要glib-2.0.32。除此之外,glib-2 還需要 libffi-3.0.11。

我可以下載原始程式碼並建立這些庫,但是,我擔心安裝它們會破壞系統的其餘部分。

雜亂MX項目使用 autotools 並尋找 glib-2 版本。

問題是:

  1. 如果我建造並安裝新組件,並且出現問題,您可以使用 yum 或類似的東西恢復嗎?

  2. 有沒有辦法讓自動工具在另一個目錄中尋找已安裝的標頭?

答案1

請勿嘗試在系統目錄中安裝較新的 Gtk/Gnome 庫。它們的向後相容性很差,您可能會面臨破壞現有程式的風險。

在單獨的目錄層次結構中編譯並安裝新函式庫。運行./configure --help以了解如何在編譯庫時指定庫的路徑和包含文件。例如,如果您看到

PANGO_CFLAGS
            C compiler flags for PANGO, overriding pkg-config
PANGO_LIBS  linker flags for PANGO, overriding pkg-config

然後設定以下環境變數:

export PANGO_CFLAGS='-I /path/to/my/gnome/stuff/include'
export PANGO_LIBS='-L /path/to/my/gnome/stuff/libs'

傳遞--prefix=/path/to/my/gnome/stuff./configure, 將所有內容安裝到您自己的目錄中。

或者,如果您需要安裝很多程式庫,重建所有內容,包括使用,這會更容易pkg 配置。也安裝pkg-config在下面,然後設定/path/to/my/gnome/stuff

export PKG_CONFIG=/path/to/my/gnome/stuff/bin/pkg-config

答案2

透過自動工具尋找依賴項的來源有一個configure.ac 檔案(和/或Makefile.am,我不確定這個檔案),其中定義了這些依賴項。大多數時候,人們/IDE 只會將目前安裝的庫版本作為依賴項,但實際上在最新版本中並不需要它們。

您可以嘗試將所需的版本修改為您的版本並嘗試建置套件。

您無法直接讓自動工具在某個備用路徑中尋找,但 IIRC 自動工具使用 pkg-config 來決定軟體包安裝細節 (man pkg-config)。您可以透過環境變數 PKG_CONFIG_PATH 告訴 pkg-config 在其他目錄中尋找。但是,pkg-config 路徑僅在您實際安裝了更新的程式庫時才有效。但我相信您可以編輯 *.pc 檔案來強制 clutter-mx 靜態連結這些庫。

如果您安裝一個庫的兩個版本,並且有時使用一個版本,有時使用另一個版本,則可能會遇到問題。如果你真的替換了 rpm 放在那裡的文件,你就完蛋了。

我的建議是修改建置依賴項,或者如果需要確定為什麼需要更新版本的庫 XY,並修改 clutter-mx 來源以不需要該最新版本並使用當前版本。我的第二個最佳建議是獲取/建置所需庫的分發包並安裝它們。你真的不應該脫離你的發行版(即套件管理器)設定的世界。那裡有邪惡勢力。 :-)

相關內容