Direitos insuficientes para a instalação do NPM no Termux no Android -- 6.0-marshmallow campo com permissions campo com termux camp android Relacionado O problema

Insufficent rights for npm install in Termux on Android


3
vote

problema

português

Eu estou tentando instalar um módulo abcdefghijklmnNode.js em uma pasta, por exemplo, /data/data/com.termux/files/home/storage/shared/documents/projects/code/js/test-npm , do termux no Android do Android 6 em execução abcdefghijklmnAbcdefghijklmn2 . Instalação começa, mas nunca é bem-sucedida, lançando erros e avisos como npm ERR! cb() never called! e WARN tar EPERM: operation not permitted, futime .

Quais permissões devo conceder para npm e como?

update 1: tentou executar o npm install em /storage/emulated/0/Documents/projects/code/js/test-npm , obtive os mesmos erros. Termux tem permissão de acesso ao armazenamento no Android instalou o Gerenciador de aplicativos.

english

I'm trying to install a Node.js module in a folder, for example, /data/data/com.termux/files/home/storage/shared/documents/projects/code/js/test-npm, from Termux on rooted Android 6 running npm install. Installation starts, but never succeeds, throwing errors and warnings like npm ERR! cb() never called! and WARN tar EPERM: operation not permitted, futime.

Which permissions should I grant to npm and how?

Update 1: tried running npm install in /storage/emulated/0/Documents/projects/code/js/test-npm, got the same errors. Termux has Storage access permission in Android installed apps manager.

        
 
 

Lista de respostas

4
 
vote
vote
Melhor resposta
 

WARN tar EPERM: operation not permitted, futime indica que futime syscall (usado para alterar o último acesso e os tempos de modificação) falha com erro: ABCDEFGHIJKLMNABCDEFGHIJKLMN2 . De ABCDEFGHIJKLMNABCDEFGHIJKLMN3 Manpage 1 :

.

eperm ... O UID eficaz do chamador não corresponde ao proprietário do arquivo ...

Isso parece ser o motivo do fracasso. Você está usando o caminho: /data/data/com.termux/files/home/storage/shared/ que é realmente /sdcard/ 2 (symlink para /storage/emulated/0/ ). Não é um sistema de arquivos real, mas uma emulada 3 Visualização do sistema de arquivos subjacente ( ext4 ou f2fs ). Ele possui permissões fixas e não suporta muitos recursos dos sistemas de arquivos do Linux, incluindo symlinks e ioctls como futime0 4 .

Devido a permissões fixas Todos os diretórios e arquivos em futime1 são sempre de propriedade pelo usuário futime2 (uid futime3 ). Então, ao tentar alterar o timestamp do arquivo, futime4 é retornado. ABCDEFGHIJKLMNABCDEFGHIJKLMN15 No entanto Usos ABCDEFGHIJKLMNABCDEFGHIJKLMN16 5 < / sup> que tem diferentes requisitos de permissões.

Então, para evitar esse problema, você não deve usar o sistema de arquivos emulado. Termux ABCDEFGHIJKLMNABCDEFGHIJKLMN17 Diretório está em ABCDEFGHIJKLMNABCDefGHIJKLMN18 ou ABCDEFGHIJKLMNABCDEFGHIJKLMN19 , Portanto, é um bom lugar para salvar arquivos. Use e. ABCDEFGHIJKLMNABCDEFGHIJKLMN20 Diretório.

De comentários:

.

Mas é possível criar um link dentro EPERM1 para outro local, que concederá todos os direitos que o Termux tem para EPERM2 para todas as subpastas desse distante Localização?

Não, não é possível no telefone não enraizado. Os aplicativos podem gravar apenas para seus diretórios privados em armazenamento interno (que é EPERM3 para o termox) e em armazenamento compartilhado ( abcdefghijklmn24 ). Apps com ABCDEFGHIJKLMNABCDEFGHIJKLMN25 Permissão Concedida pode ler e escrever para todo EPERM6 . Não há outro lugar no dispositivo onde os aplicativos podem salvar arquivos 6 . Com o Selinux ABCDEFGHIJKLMNABCDEFGHIJKLMN27 ou ABCDEFGHIJKLMNABCDEFGHIJKLMN28 , É possível gravar em um subdiretório criado (com EPERM9 ) em utime0 , mas não é pretendido usar este diretório.


links:

1 < Código> ABCDEFGHIJKLMNABCDEFGHIJKLMN31 Manpage
2 Como faço para acessar utime2 fora do termux ( com um explorador de arquivos)?
3 o que é utime3
4 Como posso fazer um symlink dentro abcdefghijklmn44 ?
5 Como alterar a data modificada de um arquivo sem root?
6 onde os aplicativos Android armazenam dados?

 

WARN tar EPERM: operation not permitted, futime indicates that futime syscall (used to change file last access and modification times) fails with error: EPERM. From utime manpage 1:

EPERM ... the caller's effective UID does not match the owner of the file ...

That seems to be the reason of failure. You are using path: /data/data/com.termux/files/home/storage/shared/ which is actually /sdcard/ 2 (symlink to /storage/emulated/0/). It's not an actual filesystem but an emulated 3 view of underlying filesystem (ext4 or f2fs). It has fixed permissions and doesn't support many features of Linux filesystems including symlinks and ioctls like FS_IOC_FIEMAP 4.

Due to fixed permissions all directories and files in /sdcard/ are always owned by user root (UID 0). So while trying to change file's timestamp, Operation not permitted is returned. touch command however uses utimensat 5 which has different permissions requirements.

So to avoid this problem, you should not use emulated filesystem. Termux $HOME directory is on ext4 or f2fs, so it's a good place to save files. Use e.g. /data/data/com.termux/files/home/npm-test directory.

From comments:

But is it possible to somehow create a link inside $HOME to another location, which will grant all the rights that Termux has for $HOME for all the subfolders of this distant location?

No it's not possible on non-rooted phone. Apps can write only to their private directories in internal storage (which is /data/data/com.termux for Termux) and in shared storage (/sdcard/Android/data/com.termux). Apps with Storage permission granted can read and write to whole /sdcard/. There is no other place on device where apps can save files 6. With SELinux disabled or permissive, it's possible to write to a sub-directory created (with adb shell) in /data/local/tmp, but it's not intended use of this directory.


LINKS:

1 utime manpage
2 How do I access $HOME/storage outside of Termux (with a file explorer)?
3 What is /storage/emulated/0/?
4 How can I make a symlink inside /storage/emulated/0?
5 How to change the modified date of a file without root?
6 Where Android apps store data?

 
 

Perguntas relacionadas

1  Impedir que os aplicativos sejam suspensos  ( Prevent apps from being suspended ) 
Eu executo sshd em um Termux janela como meu principal meio de acessar arquivos no meu galaxy S7. Isso funciona razoavelmente bem, exceto que pareço ter q...

0  Tantas interfaces Wi-Fi na PixElexperience  ( So many wifi interfaces on pixelexperience ) 
Quando tento conectar o WiFi a falha do sistema e não conecte. Então eu digito . ip link Para mostrar iterfaces no termux e tantas interfaces é mostrad...

20  Termux - Como faço para criar um diretório de arquivos acessíveis fora do Termux?  ( Termux how do i create a directory of files accessible outside of termux ) 
Descobri que os arquivos e o diretório que são criados no Termux (padrão), não estão acessíveis a outros aplicativos em telefones não enraizados. onde é a ...

2  Não é possível instalar o Express (de Node.js) no Termux do Android usando o diretório SDCARD0  ( Unable to install express of node js in android termux using sdcard0 as direc ) 
Não consigo instalar o Express no Termux do Android. Eu tenho mais recentes nodejs instalados. Ele está funcionando perfeitamente quando eu uso armazenamento ...

1  Como digitar "Controle" no Termux?  ( How to type control on termux ) 
Há um bom aplicativo "Termux" que pode fornecer um poderoso ambiente de shell sem ganhar permissão de raiz. No entanto, o teclado da tela sensível ao toque nã...

10  Use o compilador GCC no Termux?  ( Use gcc compiler in termux ) 
Eu não gosto do compilador padrão clang fornecido pelo termouro. Existe uma maneira que posso obter GNU GCC no ambiente do meu termox? ...

3  Direitos insuficientes para a instalação do NPM no Termux no Android  ( Insufficent rights for npm install in termux on android ) 
Eu estou tentando instalar um módulo abcdefghijklmnNode.js em uma pasta, por exemplo, /data/data/com.termux/files/home/storage/shared/documents/projects/co...

0  Termux tentando youtube-dl com aria2  ( Termux trying youtube dl with aria2 ) 
Eu sou novato e experimentação, como o título disse que eu queria usar o YouTube-DL com ARIA2 Então esta é a minha configuração youtube-dl --cache-dir /s...

1  É possível instalar "iproute2" no Android?  ( Is it possible to install iproute2 on android ) 
Eu tentei usar git clone na página do GoogleSource, mas não fez muito. Eu quero usar o comando abcdefghgjklmnabcdefghijklmn3 no pacote, mas não sei como i...

1  Impressão do Termux para TXT  ( Termux print to txt ) 
Então eu uso o Termux e Newbie, eu quero salvar comando -Help do pacote como txt no armazenamento interno com nome de arquivo específico Ex: Youtube-dl --help...




© 2022 pergunte.org All Rights Reserved. Casa de perguntas e respostas todos os direitos reservados


Licensed under cc by-sa 3.0 with attribution required.