
我有一個關於從原始碼構建的最煩人的問題。我已經尋找答案很長一段時間了,但無處可尋……我以前從原始程式碼編譯過軟體,這讓我感到困惑。
所以我嘗試從來源安裝 python 2.7.2。我能做的很成功./configure
,make
看起來也運作得很好。但是當我這樣做時sudo make install
,我會遇到各種各樣的錯誤...
首先,sudo make install
給我這個:
make: stat: GNUmakefile: Permission denied
make: stat: makefile: Permission denied
make: stat: Makefile: Permission denied
make: stat: install: Permission denied
make: *** No rule to make target `install'. Stop.
所以我做了chmod +rx Makefile*
。無濟於事。
然後,sudo ls .
說
ls: cannot access .: Permission denied
然後ls -d .
說權限是drwxr-x---
然後,作為孤注一擲的措施,chmod +rx .
。這給了我:
make: stat: Modules/config.c.in: Permission denied
make: *** No rule to make target `Modules/config.c.in', needed by `Makefile'. Stop.
取得了一些進展...這裡發生了什麼事?看起來像是某種權限問題。我認為 sudo 將是解決方案,但顯然這裡還發生了其他事情...我嘗試過,sudo -s
但我再次遇到了這些權限問題...
我使用的是 Ubuntu 10.04LTS。
答案1
我相信你所遇到的其實是一個名為「root squash」的 NFS 策略。使用者需要特定主機上的 root 權限的情況並不少見,但您不希望他們在共用 NFS 磁碟區上擁有相同類型的權限。因此,提供本機 root 存取權不允許使用者對任何已安裝的 NFS 磁碟區進行粗暴操作並存取/修改其他使用者的檔案 - NFS 伺服器會將 root 的 uid 從 0 對應到 65534 ( nobody
),這就是為什麼您可以甚至沒有列出您的範例中的目錄。
所以,這給你留下了幾個選擇:
- 您可以嘗試透過在頂級目錄中
nobody
執行操作來使建置中的所有檔案都可訪問,並授予「其他」對您的檔案的讀取/寫入權限(可能足夠,也可能不夠—例如,您可能需要目錄,如果它需要搜尋它們)。chmod -R o+rw .
o+x
- 如果您有權存取 NFS 伺服器的
/etc/exports
文件,那麼您可以停用根南瓜(也許不是一個好主意)。 - 只需建立一個本機目錄,如
/usr/local/src
、等,或只是建立您自己的本機目錄(您甚至可以使其歸您的使用者所有),/usr/src
如.這可能是引起最少頭痛的選項。/tmp
/scratch/myuser
答案2
如果您使用 sshfs,請使用-o allow_other
選項掛載
$ sudo sshfs -o allow_other hostfolder localfolder
在此之前你必須user_allow_other
設定/etc/fuse.conf
答案3
嘗試將其 chown-ing 給您的用戶。也就是說,在目錄中使用“sudo chown user ./*”(將使用者替換為您的使用者名稱),它將將該目錄中所有檔案的擁有者變更為您。