我想在cabal data-files
部分包含一個可執行文件,以在我的Haskell程序中將其作爲子進程執行。Cabal:可執行數據文件
該文件在那裏,getDataFileName
適用於它,但它缺少可執行位,所以試圖運行它與System.Process.createProcess
失敗permission denied
。
cabal有沒有辦法保存文件的執行權限?有沒有另一種乾淨的方式來解決這個問題
我想在cabal data-files
部分包含一個可執行文件,以在我的Haskell程序中將其作爲子進程執行。Cabal:可執行數據文件
該文件在那裏,getDataFileName
適用於它,但它缺少可執行位,所以試圖運行它與System.Process.createProcess
失敗permission denied
。
cabal有沒有辦法保存文件的執行權限?有沒有另一種乾淨的方式來解決這個問題
所總結的關於陰謀補丁一些discussion,玩的電流(未公開)的狀態是一個應同時使用拷貝和的安裝掛鉤,因爲一方或另一方就會得到執行。
編輯:經過一番挖掘,cabal中有一個old ticket on libexec support,如果它被實現,這將是一個非常好的解決方案。
你可能需要用一個自定義的'Setup.hs'文件和一個安裝後的掛鉤來解決它。儘管在這種情況下,我可能只是在調用'createProcess'之前修改你的代碼來設置可執行位,因爲自定義的'Setup.hs'文件可以是PITA –
@MichaelSnoyman:但是我認爲我的代碼不一定有權限設置可執行位,如果它安裝在系統目錄中並由用戶執行 – yairchu
你是對的。在這種情況下,您可能需要使用Setup.hs選項,或使用醜陋的技巧,例如將文件複製到臨時位置,然後設置可執行位。 –