本文件專為想要更深入了解這些腳本的 arrow開發人員而設計。如果您是 arrow使用者,正在尋找安裝 arrow 的協助,請參閱安裝指南
arrow R 套件需要安裝 Arrow C++ 程式庫 (也稱為 libarrow) 才能正常運作。libarrow 可以透過許多不同的方式安裝
- 作為 R 套件安裝過程的一部分
- 系統套件
- 您在安裝 R 套件的環境之外自行建置的程式庫
下面,我們將依序討論這些設定。
在 R 套件安裝期間安裝 libarrow
當執行 R CMD INSTALL .
時,會觸發許多腳本,對於 Arrow 使用者而言,這些腳本應該都能正常運作,無需設定,並提取最完整的組件 (例如,我們託管的官方二進位檔案)。這些腳本的工作之一是判斷是否已安裝 libarrow,如果沒有,則安裝它。
這些腳本的概述如下所示
configure
和configure.win
- 這些腳本分別在非 Windows 和 Windows 平台上執行R CMD INSTALL .
時觸發。它們處理尋找 libarrow、設定必要的建置變數,以及寫入用於編譯 R 套件中 C++ 程式碼的套件 Makevars 檔案。tools/nixlibs.R
- 此腳本由 Linux 和 macOS 上的configure
(或任何具有環境變數FORCE_BUNDLED_BUILD=true
的非 Windows 作業系統) 呼叫。在 Windows 上,當未設定環境變數ARROW_HOME
時,此腳本由configure.win
呼叫。它會尋找現有的 libarrow 安裝,如果找不到,則下載適當的 libarrow 二進位檔案。在非 Windows 系統上,如果找不到任何二進位檔案,腳本會設定我們的捆綁建置 (這是 Linux 上的預設設定) 的建置程序,並檢查相依性。inst/build_arrow_static.sh
- 當需要建置 libarrow 時,由tools/nixlibs.R
呼叫。它為捆綁的靜態建置建置 libarrow,並鏡像 Arrow R 開發人員指南 中描述的步驟。此建置腳本也用於產生我們的預先建置二進位檔案。
下面描述了這些腳本為了解決相依性並安裝正確組件而採取的動作。
R 套件如何找到 libarrow
Windows
下圖顯示 R 套件如何在 Windows 上找到 libarrow 安裝。
非 Windows
在 Linux 和 macOS 上,核心邏輯是
- 如果
FORCE_BUNDLED_BUILD=true
,則跳到步驟 3。 - 在系統上尋找 libarrow。如果存在,請確保其版本與 R 套件相容。
- 如果找不到合適的 libarrow,則下載它 (如果允許) 或從原始碼建置它。
- 判斷此 libarrow 具有哪些功能以及需要哪些其他標誌,並將它們設定在
src/Makevars
中,以便在編譯繫結時使用。
在系統上尋找 libarrow
configure
腳本將在三個位置尋找 libarrow
- 環境變數
ARROW_HOME
中的路徑 (如果已設定) pkg-config
找到的任何內容,除非ARROW_USE_PKG_CONFIG=false
- Homebrew,如果您已執行
brew install apache-arrow
如果找到 libarrow 建置,它將檢查該 C++ 程式庫的版本是否與 R 套件的版本相符。如果版本不符,例如當您已安裝發行版本的系統套件,但您擁有 R 套件的開發版本時,將不會使用該 libarrow。如果 C++ 程式庫和 R 套件都處於開發版本,您將看到一則警告訊息,建議您如果遇到問題,應確保 C++ 程式庫是從與 R 套件相同的提交版本建置的,因為開發版本號碼不會隨每次提交而變更。
預先建置的二進位檔案
如果在系統上找不到 libarrow,R 套件安裝腳本接下來將嘗試下載與您的本機作業系統、所需相依性 (例如,openssl 版本) 和 arrow R 套件版本相符的預先建置 libarrow 二進位檔案。
根據允許清單,這些會自動在許多 Linux 發行版 (僅限 x86_64 架構) 上使用。如果您的發行版不在清單中,您可以在呼叫 install.packages()
之前設定 NOT_CRAN
環境變數來選擇加入。如果找到,它們將在編譯 R 套件時下載並捆綁。
將 R 套件與作為系統套件安裝的 libarrow 一起使用
如果您有權限安裝系統套件,並且您正在安裝 CRAN 發行版,您可能想要透過軟體發行工具 (例如 apt
或 yum
) 使用與 R 套件版本對應的官方 Apache Arrow 發行套件 (儘管有一些缺點:請參閱主要安裝文件中「疑難排解」章節)。請參閱 Arrow 專案安裝頁面,以尋找一些常見 Linux 發行版 (包括 Debian、Ubuntu 和 CentOS) 的預先編譯二進位套件。
如果您是貢獻 R 套件的開發人員,系統 libarrow 套件將沒有用,因為版本將不符。
將 R 套件與現有的 libarrow 建置一起使用
對於 arrow 開發人員來說,這種設定更為常見,他們可能需要同時變更 R 套件和 libarrow 原始碼。請參閱 開發人員設定文件 以取得更多資訊。