2011-07-07 72 views
-1

好吧。拇指向下,兩個拇指向下,中指放在這個包裹上。OSX上的macports和補丁問題10.6.8

我似乎無法安裝任何東西與此工具。當macports進入試圖應用補丁的階段時,問題不可避免地會出現。它聲名狼借,因爲顯然/ usr/bin/patch有一個安全補丁,可以防止自己在目錄樹中向上修補。一個典型的錯誤消息:

:信息:補丁的/ usr/bin中/補丁:* *拒絕文件名以 「..」 組件:../libunwind/include/libunwind.h

我見一些關於此問題的各種錯誤報告,如https://trac.macports.org/ticket/29871https://trac.macports.org/ticket/29813,但沒有真正的解決方案。

有沒有一個flippin的補丁來修補?

+0

因爲這是一個安全問題,可能會影響很少的端口,所以MacPorts項目方法似乎是在問題端口被發現時解決問題。如果您還沒有,請檢查並確定是否有問題的端口打開,如果沒有,請打開新的問題。 –

回答

1

我不使用Macports(所以我無法測試這種可能的解決方案),但也許你可以嘗試安裝patch的GNU版本。 Macports內部確實有一個portfile。它安裝爲gpatch,但您可以輕鬆創建一個符號鏈接,以便/opt/bin/patch -> /opt/bin/gpatch。此外,您需要確保/opt/bin出現在您的路徑中的/usr/bin之前。

儘管portfile需要應用修補程序,但幸運的是不使用任何..路徑組件。

看起來好像這個security patch起源於2011年2月。由於2.6.1早於此,我相信這種方法應該起作用。

+0

在OS X上改變'/ usr/bin'中的東西幾乎總是一個壞主意。但是,如果您想臨時解決該問題,只需安裝此端口,直到端口被修補,您就可以安裝MacPorts'gpatch'。但是,要特別小心,不要覆蓋'/ usr/bin'中Apple提供的'patch'。 MacPorts安裝到'/ opt/local/bin'。所以像這樣的東西應該工作(未經測試!):'sudo mv/usr/bin/patch/usr/bin/patch-SAVED; sudo ln -s/opt/local/bin/gpatch/usr/bin/patch; sudo port install xxxx; sudo mv/usr/bin/patch-SAVED/usr/bin/patch' –

+0

實際上,我必須打/ usr/bin/patch而不是/ opt/local/bin/patch,因爲顯然是/ opt/local/bin/port顯式使用/ usr/bin /補丁而不是補丁。我創建了一個新腳本,臨時保存/ usr/bin/patch,將/ usr/bin/patch符號鏈接到不安全的gpatch,運行端口,然後將/ usr/bin/patch恢復到原始狀態。 –

+0

是的,這就是我的建議。 MacPorts非常小心地確切指定它使用的構建工具。 –