[Cordova] 編譯 iOS app 時遇到無法寫入 /tmp 的權限問題

[Cordova] 編譯 iOS app 時遇到無法寫入 /tmp 的權限問題

自從 macOS 更新後,忘了是從哪一版起,

就遇到了 Perforce GUI 程式沒辦法用一般帳號執行 的狀況。

那個問題後來並沒有直接解決,而是用 sudo 避開權限問題。

然而,今天又遇到了一個類似的麻煩了…

 

這次是在使用 Cordova 編譯 iOS app 程式時,

Xcode 的 strip 程式想要去寫 /tmp/strip.7a91hl 這個檔案,

就遇到了 Permission denied 權限不足問題:

Strip /Users/testuser/Library/Developer/Xcode/DerivedData/Library_Multi-Login-foasdjczmlyfsidgyzewtydnrovh/Build/Intermediates.noindex/ArchiveIntermediates/Library\ Multi-Login/IntermediateBuildFilesPath/UninstalledProducts/iphoneos/libCordova.a
    cd /Users/testuser/Dropbox/MyProjects/Cordova/MultiLibraryLogin/platforms/ios/CordovaLib
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip -S /Users/testuser/Library/Developer/Xcode/DerivedData/Library_Multi-Login-foasdjczmlyfsidgyzewtydnrovh/Build/Intermediates.noindex/ArchiveIntermediates/Library\ Multi-Login/IntermediateBuildFilesPath/UninstalledProducts/iphoneos/libCordova.a
fatal error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip: can't open temporary file: /tmp/strip.7a91hl (Permission denied)
Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip failed with exit code 1

** ARCHIVE FAILED **

 

看了一下,/tmp 是指向 /private/tmp 的一個符號連結:

lrwxr-xr-x@  1 root  admin    11 Dec  9 01:35 tmp@ -> private/tmp

 

而 /private/tmp 是屬於 root 的,沒有任何人有寫入權限

(當然 root 除外,root 是超級使用者,它還是有權限寫入的):

dr-xr-xr-x   52 root  wheel  1664 Apr 17 17:21 tmp/

 

這可以解釋為什麼之前 Perforce 的問題可以用 sudo 解決,

可是我並不想要每個地方都加 sudo…

 

簡單 (但可能不是很安全) 的改法如下,就是將 /tmp 目錄設成大家都可以寫:

sudo chmod a+w /tmp

 

簡單實驗一下 touch /tmp/a 可以成功的話,應該就沒問題了。

實測 Cordova 編譯 iOS 也可以成功囉~

(本頁面已被瀏覽過 252 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料