[英]how to make cabal sandbox aware of (installed) packages in other locations?
當我有一個沙箱時, cabal install
似乎忽略了$HOME/.ghc/x86_64-linux-7.8.4/package.conf.d
軟件包。
如何配置沙箱,使這些軟件包可見? 我在https://www.haskell.org/cabal/users-guide/installing-packages.html#sandboxes-advanced-usage中看到對--package-db=db
的模糊引用,但我既不知道如何也不應該這樣做用它。 (使用沙箱init?configure?install?似乎沒有任何作用-也沒有給出任何錯誤消息。)
我知道add-source
但是我的問題是關於已安裝的軟件包的。
沙盒的全部要點是它會忽略本地軟件包數據庫。
如果要跨多個沙箱共享安裝,則可以將其安裝到全局數據庫。 但是您應該非常小心,因為修復損壞的包裝的不良性要困難得多。 將其保存在真正的核心程序包中,您希望這些程序包可以在許多項目中得到廣泛共享-不僅僅是您現在正為工作而緊張的一半。
或者,您可以在多個軟件包的內部版本之間共享一個沙箱。 只需將CABAL_SANDBOX_CONFIG
變量設置為指向相應cabal.sandbox.config
文件的絕對路徑。 這樣可以更安全,更靈活,因為您可以選擇共享已安裝軟件包的范圍(在壞情況下,只需輕按沙箱並重新開始)。
您可以嘗試以下操作-將文件從〜/ .ghc / {arch-os-ghc-version} /package.conf.d復制(或符號鏈接)到沙盒的{arch-os-ghc-version} -packages中。 conf.d目錄。
關於package.cache
文件存在問題。 以下過程似乎是一種安全的方法:
cabal install --only-dependencies
將軟件包添加到沙箱 我不知道是否需要package.cache文件,或者是否有重建它的方法。
一個缺點是, cabal install --only-deps
似乎會在沙箱中重新安裝損壞的軟件包,即使您的應用程序不需要它們也是如此。 也許有解決方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.