[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 也可以成功囉~
(本頁面已被瀏覽過 290 次)