
У меня есть очень раздражающий вопрос о сборке из исходников. Я долго искал ответ, но нигде не могу найти... Я уже компилировал ПО из исходников, и это меня просто озадачило.
Итак, я пытаюсь установить 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
Я полагаю, что вы на самом деле сталкиваетесь с политикой NFS, которая называется "root squash". Пользователям нередко требуется root на определенном хосте, но вы не хотите, чтобы у них были такие же привилегии на общих томах NFS. Таким образом, предоставление локального доступа root не позволяет пользователю грубо обращаться с любыми смонтированными томами NFS и получать доступ/изменять файлы других пользователей — сервер NFS сопоставит uid root с 0 до 65534 ( nobody
), поэтому вы даже не можете перечислить каталог в своем примере.
Итак, у вас остается несколько вариантов:
- Вы можете попытаться сделать все файлы доступными
nobody
в вашей сборке, создавchmod -R o+rw .
каталог верхнего уровня, предоставив «другим» права на чтение/запись ваших файлов (этого может быть достаточно, а может и недостаточно — например, вам могут понадобитьсяo+x
каталоги, если нужно будет выполнять в них поиск). - Если у вас есть доступ к файлу сервера NFS
/etc/exports
, то вы можете отключить root squash (возможно, это не самая лучшая идея). - Просто создайте локальный каталог, например
/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-ить его на своего пользователя. То есть, используйте "sudo chown user ./*" (заменив user на свое имя пользователя), находясь в каталоге, и это изменит владельца всех файлов в каталоге на вас.