O script de instalação precisa ser executado como um determinado usuário (regular), mas precisa criar um diretório do sistema

1

Sou novo no Linux, deixe-me explicar o problema. Estou tentando instalar o comsol com algum tipo de licença de rede.

Se eu usar sudo ./setup , o diretório do servidor não reconhecerá o nome de usuário "root". O servidor reconhece meu nome de usuário, que é zahir. Se eu apenas escrever ./setup , a instalação passa no estágio de verificação de licença, mas não pode continuar, pois não é possível criar o diretório em /usr/local .

Qual comando devo usar para que a instalação seja executada como zahir , mas com privilégios de root?

    
por user1188038 22.08.2013 / 14:48

3 respostas

1

Tente procurar ajuda para o script setup . Talvez ele tenha vindo com um arquivo README ou aceite uma opção -h (verifique executando ./setup -h ). Um script razoavelmente bem escrito deve permitir que você altere o diretório de instalação. Você pode fazer algo parecido com

./setup --prefix=/home/zahir/

ou similar (dependendo do que você descobrir da ajuda do script).

Isso instalará comsol em seu diretório inicial, que você pode mover para /usr/local usando sudo .

Atualizar

Você relatou que o método acima funcionou, mas o comando comsol não é reconhecido. Isso significa simplesmente que você precisa adicionar a localização do comsol binário à sua variável PATH .

Vamos supor que comsol foi instalado em /usr/local/comsol35 , basta adicionar /usr/local/comsol35/bin à sua variável PATH . (O caminho real no seu sistema pode variar).

Para adicionar um caminho à sua variável PATH :

Basta executar o seguinte:

export PATH=$PATH:/usr/local/comsol35/bin

Isso alterará o PATH apenas na sua sessão atual. Para tornar a alteração permanente, você pode fazer:

echo 'export PATH=$PATH:/usr/local/comsol35/bin' >> ~/.bashrc

É muito importante usar aspas simples em vez de aspas duplas para o comando acima, para que $PATH seja adicionado literalmente ao seu .bashrc e não seja interpolado. Você também deve usar >> em vez de > para não destruir o conteúdo de seu .bashrc .

Depois de executar o comando echo , o comando comsol deve estar disponível em qualquer novo terminal aberto. Se você quiser que a alteração entre em vigor no terminal que você usou para emitir o comando echo , você precisa executar

. ~/.bashrc

(sim, o comando é apenas um período)

    
por 22.08.2013 / 15:33
0

Existem alguns comandos que não podem ser executados via sudo , como aparentemente o seu sudo ./setup . Eu costumo tornar-se root no shell da seguinte forma:

opção 1 - pode não ser suportado em seu sistema

$ sudo -i

opção 2 - deve ser amplamente apoiada

$ sudo su -

Uma vez que você tenha executado um desses dois comandos, você está efetivamente root nesse shell e pode executar o comando ./setup . Certifique-se de alterar os diretórios ( cd ) de volta para onde seu programa ./setup estava sendo executado.

Executar como root & zahir?

Se você precisar executar a instalação como você mesmo, zahir , poderá criar os diretórios necessários para a instalação, para que zahir possa instalá-los antecipadamente e, em seguida, executar o ./setup como zahir .

$ sudo mkdir -p /usr/local
$ sudo chown -R zahir /usr/local
    
por 22.08.2013 / 15:28
0

Mu acho que o script setup está lendo o nome de usuário do seu ambiente. Provavelmente, ele verifica uma das variáveis de ambiente $USER ou $USERNAME (estas são vars padrão, você pode verificar seu valor executando echo $USER em seu terminal). Provavelmente contém uma linha como

current_user=$USERNAME

Tente pesquisar no arquivo por $USER :

grep USER setup

Você deve poder alterá-lo para zahir , algo como:

current_user=zahir

Se você pudesse publicar o script em algum lugar, ficaria feliz em dar uma olhada e dar uma resposta mais específica.

    
por 22.08.2013 / 15:43