
Tenho uma pergunta muito irritante sobre a construção a partir de fontes. Há muito tempo procuro uma resposta e não consigo encontrar em lugar nenhum... Já compilei software de fontes antes e isso me deixou perplexo.
Então, estou tentando instalar o python 2.7.2 a partir das fontes. Eu posso fazer um sucesso ./configure
, também make
parece funcionar bem. Mas quando faço isso sudo make install
, recebo vários erros ...
Primeiro, sudo make install
me dá isso:
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.
Então eu fiz chmod +rx Makefile*
. Para nenhum proveito.
Então, sudo ls .
diz
ls: cannot access .: Permission denied
Então ls -d .
diz que as permissões sãodrwxr-x---
Então, como medida desesperada, chmod +rx .
. Isso me deu:
make: stat: Modules/config.c.in: Permission denied
make: *** No rule to make target `Modules/config.c.in', needed by `Makefile'. Stop.
Então, algum progresso... O que está acontecendo aqui? Parece algum tipo de problema de permissão. Presumi que sudo seria a solução, mas claramente há algo mais acontecendo aqui... Eu tentei, sudo -s
mas recebo esses problemas de permissão novamente...
Estou usando o Ubuntu 10.04LTS.
Responder1
Acredito que o que você está atingindo é na verdade uma política NFS chamada "root squash". Não é incomum que os usuários precisem de root em um host específico, mas você não quer que eles tenham o mesmo tipo de privilégios nos volumes NFS compartilhados. Assim, conceder acesso root local não permite que um usuário execute qualquer volume NFS montado e acesse/modifique os arquivos de outros usuários - o servidor NFS mapeará o uid do root de 0 a 65534 ( nobody
), e é por isso que você pode nem liste o diretório no seu exemplo.
Então, isso deixa você com algumas opções:
- Você pode tentar tornar todos os arquivos acessíveis
nobody
em sua compilação fazendo umchmod -R o+rw .
diretório de nível superior, dando a "outros" permissões de leitura/gravação em seus arquivos (pode ou não ser suficiente - por exemplo, você pode precisar deo+x
diretórios se é preciso procurá-los). - Se você tiver acesso ao
/etc/exports
arquivo do servidor NFS, poderá desabilitar o root squash (talvez não seja uma boa ideia). - Basta criar um diretório local como
/usr/local/src
,/usr/src
,/tmp
etc, ou apenas criar seu próprio diretório local (você pode até torná-lo propriedade do seu usuário), como/scratch/myuser
. Esta é provavelmente a opção que causa menos dores de cabeça.
Responder2
Se você estiver usando sshfs, monte usando -o allow_other
a opção
$ sudo sshfs -o allow_other hostfolder localfolder
antes disso você tem que user_allow_other
definir/etc/fuse.conf
Responder3
Tente mostrar isso ao seu usuário. Ou seja, use "sudo chown user ./*" (substituindo user pelo seu nome de usuário) quando estiver no diretório e isso mudará o proprietário de todos os arquivos no diretório para você.