Por que preciso definir algum arquivo como executável?

1

Eu nunca saí das janelas antes da semana passada, me pediram para fazer uma VM com elasticsearch / logstash / kibana / jdk8.

Estou usando um usuário comum que não seja sudo.

Eu extraí cada arquivo tar.gz e consegui 4 pastas.

Primeiro, para iniciar a pesquisa elástica, tive que tornar o arquivo 'elastisearch' executável usando chmod + x. Então falhou porque outros arquivos precisavam ser executáveis. Então falhou porque alguns arquivos na pasta bin do java JDK precisavam ser executáveis.

Existe outra maneira de instalar coisas no linux? ou cada vez que é um jogo sobre "vamos ver qual arquivo eu preciso chmod"?

Obrigado.

Ps: estou usando o CentOs 7

    
por sliders_alpha 09.03.2016 / 17:37

4 respostas

3

Is there an other way to install stuff on linux? or each time it's a game about "let's see which file I need to chmod"?

Sim, ele é chamado de vendedores usando os gerenciadores de pacotes nativos, o que resolve toda uma série de problemas relacionados ao lançamento de software, incluindo permissões. Alguns ISVs só têm o hábito de "o administrador descobrir" tornar-se a expectativa padrão. Existem alguns casos em que você tem que fazer isso, mas muitos problemas já foram resolvidos se eles simplesmente aderissem a um fluxo de trabalho.

No seu caso específico, você provavelmente não especificou a opção p para o comando tar , que teria instruído para preservar as permissões de arquivo nos arquivos resultantes, caso fossem incluídos no arquivo tar para começar com (você só tem que tentar e ver).

Para sua pergunta original:

Why do I need to set some file as executable?

É apenas uma medida de controle de acesso. Dá-lhe uma maneira de não ter um arquivo ser executado por si só. Por exemplo, se uma árvore de diretórios para um instalador incluir os executáveis finais, mas você quiser fazer com que eles não possam executar nada além do programa instalador. Ou se você estiver trabalhando em um script, mas não quer que ninguém o execute até terminar.

    
por 09.03.2016 / 18:07
3

Sim, há outra maneira de instalar o software no Linux que normalmente não exige que você torne scripts executáveis à mão: gerenciadores de pacotes.

Se você está usando o CentOS no seu caso, isso seria 'yum'. Este programa pode instalar o software que é encontrado nos repositórios chamados que vêm com o sistema operacional de sua escolha.

No link a seguir, a instalação do logstash, elasticsearch e kibana no CentOS é explicada.

link

Para voltar à sua pergunta: se o repositório de seu sistema operacional não incluir o software que você deseja instalar, você poderá procurar repositórios adicionais que o forneçam. Somente se essas duas opções não estiverem disponíveis, você deve considerar instalar o software manualmente, especialmente se você for um usuário inexperiente, deve sempre preferir instalar o software dos repositórios.

Por favor, note que você precisa de acesso root ao computador no qual deseja usar o 'yum'.

Aqui está um pequeno tutorial sobre o yum: link

    
por 09.03.2016 / 17:46
0

Os arquivos precisam ser executáveis para serem executados. Sistemas Unix usam permissões para determinar quais arquivos são executáveis, não extensões de nome de arquivo como o Windows .

É raro precisar fazer alguns arquivos executáveis manualmente. Quando você compila um programa, o compilador fará isso. Quando você descompacta arquivos de um arquivo, o arquivo especifica suas permissões. Se o arquivo do qual você descompactou o programa tinha permissões inválidas, isso significa que quem fez esse arquivo fez algo estranho para fazer com que as permissões fiquem ruins.

A maneira normal de instalar software no Linux é através do gerenciador de pacotes. Você deve usar outros métodos somente quando não houver nenhum pacote disponível para sua distribuição ou se precisar instalar o software como um usuário não raiz. O CentOS não carrega o Elasticsearch, mas o Elasticsearch distribui pacotes para algumas distribuições, incluindo o CentOS ≥6 . Usar os pacotes RPM fornecidos pelo Elasticsearch seria a maneira mais fácil de instalá-lo.

Eu verifiquei o arquivo oficial tar distribuído pelo Elasticsearch , ele tem permissões de execução quando necessário. Então pegue este arquivo e descompacte-o em vez de usar o arquivo que você usou.

Mas se você está fazendo uma VM, não entendo sua afirmação sobre não ser root. É irrelevante que você não seja root no host; Se você estiver configurando uma VM e, em particular, instalando o sistema operacional nela, então você está root na VM e pode instalar os pacotes RPM no sistema operacional em execução na VM.

    
por 10.03.2016 / 01:56
0

Existem alternativas. Para desenvolvimento, por exemplo, recomendo usar o Vagrant. Há um número de caixas vagabundos ELK por aí que permitirão que você instale a pilha ELK (com Elasticsearch, Logstash e Kibana) tudo em um e usando um simples comando vagrant (estará escrevendo um tutorial sobre isso em breve). As caixas do vagrant instalarão todos os componentes necessários para você, incluindo o Java. E há soluções ELK hospedadas, é claro, para experimentar (divulgação - eu trabalho para uma empresa da ELK como serviço).

    
por 10.03.2016 / 08:22