Traduzindo do Red Hat para o Ubuntu

2

Estou começando no linux porque preciso dele para minha pesquisa. Desde que eu tenho pouco tempo e sem suporte especializado local, esta é uma experiência de auto-aprendizagem baseada em necessidade. Eu tenho que instalar uma ferramenta e eu tenho esse script para instalar, baixar algumas bibliotecas e criar dependências. No entanto, descobri que contém alguns comandos que funcionam no RED-HAT e não no Ubuntu (como o yum). Como não tenho conhecimento, gostaria de saber se há outras partes no código que devo modificar para que isso possa funcionar. Você poderia me ajudar por favor?

Obrigado antecipadamente.

SCRIPT:

#!/bin/sh
set -e -x

#######################################################################
# cpanm
# version 1.6908

# DEPENDENCIES
yum install -y make gcc tar curl perl perl-Module-Build

# go to bin
cd /usr/bin
# download script, make it exec
curl -LO https://raw.github.com/miyagawa/cpanminus/1.6908/cpanm
chmod +x cpanm

#######################################################################
# prinseq
# version 20.4

# create your base folder
mkdir -p /opt/prinseq
cd /opt/prinseq
BASE_FOLDER=/opt/prinseq

# prinseq native deps: cairo libs
yum install -y cairo cairo-devel

# random prereqs
cpanm Test::[email protected]
cpanm Pod::[email protected]

# for some reason, this is [email protected]
cpanm [email protected]

cpanm common::[email protected]
cpanm JSON::[email protected]
cpanm [email protected]
cpanm Getopt::[email protected]
cpanm Pod::[email protected]
cpanm Digest::[email protected]
cpanm [email protected]
cpanm MIME::[email protected]

# update module::build
cpanm Module::[email protected]
cpanm JSON::[email protected]
cpanm CPAN::Meta::[email protected]
cpanm Parse::CPAN::[email protected]
cpanm CPAN::Meta::[email protected]
cpanm CPAN::[email protected]
cpanm Perl::[email protected]
cpanm Module::[email protected]

# cairo bindings
cpanm ExtUtils::[email protected]
cpanm ExtUtils::[email protected]
cpanm [email protected]

# stats related
cpanm Math::[email protected]
cpanm Math::Cephes::[email protected]
cpanm Text::[email protected]
cpanm [email protected]
# need old version of contextual::return
cpanm http://search.cpan.org/CPAN/authors/id/D/DC/DCONWAY/Contextual-Return-v0.2.1.tar.gz
cpanm Statistics::[email protected]

# download prinseq, install
wget http://resources.ohnosequences.com/prinseq/prinseq-lite-0.20.3.tar.gz
tar -xzf prinseq-lite-0.20.4.tar.gz
rm prinseq-lite-0.20.4.tar.gz
chmod +x prinseq-lite-0.20.4/*.pl
# links
ln -sf $BASE_FOLDER/prinseq-lite-0.20.3/*.pl /usr/bin/
    
por Elka_GN 05.08.2014 / 23:07

2 respostas

2

Você está perguntando se há partes do código diferentes de yum calls que devem ser modificadas.

Às vezes é difícil saber disso com certeza, já que o software que seu script automaticamente faz download e usa ( cpanm ) poderia ter erros ou outros problemas que o fazem funcionar de maneira diferente em distribuições diferentes. Eu suspeito que não seja o caso, mas não tenho certeza.

Pode haver outros problemas também. Por exemplo, seu script faz o download de cpanm para /usr/bin , o que é bom, mas:

  • Se o script tiver sido baixado para um diretório que normalmente é listado em PATH nos sistemas RHEL / Fedora, mas não no Ubuntu, isso pode causar falha no script. Esse não é o caso aqui.
  • cpanm é fornecido nas fontes oficiais de software do Ubuntu. Você pode instalá-lo com sudo apt-get update seguido por sudo apt-get install cpanminus . Se estiver instalado , você não deve executar esse script (como está escrito) porque provavelmente substituiria o cpanm existente, fazendo com que um arquivo diferente fosse instalado do que o banco de dados de pacotes local acredita estar instalado. Portanto, eu recomendo verificar se o pacote cpanminus não está instalado antes de usar este script.
  • Se o pacote cpanminus estiver instalado, você poderá removê-lo ou modificar o script para não baixar o cpanm em si. (Se isso vai ou não funcionar depende de quão específicas são suas necessidades para a versão específica de cpanm que ele baixa, mas provavelmente ele funcionará.) Ou você pode modificar o script para baixar o pacote cpanm para outro diretório, como /usr/local/bin ou /opt/bin . Para garantir que o cpanm baixado por script seja o que é executado, verifique se o diretório para o qual ele é baixado aparece em PATH before /usr/bin .
  • Pode haver outras diferenças sutis.

Com isso dito, podemos ver se há outras mudanças óbvias (além de alterar yum install -y ... para apt-get update seguido por apt-get install -y ... e alterando os nomes dos pacotes como kraxor explica ) que são necessários, enumerando todos os comandos que você está usando - exceto yum - e vendo se algum deles está faltando ou funciona em um substancialmente diferente caminho no Ubuntu a partir do modo como eles trabalham no RHEL / Fedora.

Você tem (em ordem de primeira aparição):

  • set : Este é um shell embutido e funciona da mesma forma na maioria dos shells estilo Bourne; não precisa ser alterado.
  • cd : Este é um shell embutido e funciona basicamente em todos os shell Unix de todos os tempos.
  • curl : Enquanto wget é mais comumente usado em sistemas Ubuntu e curl não é instalado por padrão, se não estiver instalado, você pode simplesmente instalá-lo com sudo apt-get update && sudo apt-get install curl . Eu não recomendo adicionar isso ao seu script; basta executá-lo antes de usar o script pela primeira vez. É um pouco estranho que seu script use wget e curl - a maioria dos scripts escolhe um - mas não há nada de errado em usar os dois, desde que ambos estejam instalados.
  • chmod : Este é um comando padrão que funciona quase exatamente da mesma maneira todos os sistemas semelhantes ao Unix.
  • cpanm : Este é o comando que o script baixa e instala antes de usar. A menos que tenha idiossincrasias que façam funcionar de forma diferente no Ubuntu, ele deve funcionar da mesma forma. Veja acima sobre a possibilidade de usar a versão de cpanm oficialmente fornecida no Ubuntu.
  • tar : Este é um comando padrão e, enquanto alguns sinalizadores são GNU / Específico para Linux, ele funciona basicamente da mesma forma em todos os sistemas GNU / Linux recentes, incluindo qualquer versão do Ubuntu, RHEL ou Fedora na última década. Além disso, os sinalizadores usados ( x , z e f ) são suportados por praticamente todos os tar de implementação.
  • rm : Como chmod , este é um comando padrão que funciona quase exatamente o mesmo em todos os sistemas do tipo Unix.
  • ln : como chmod e rm , este é um comando padrão que funciona quase exatamente da mesma forma em todos os sistemas semelhantes ao Unix.
por Eliah Kagan 06.08.2014 / 00:21
2

A principal diferença deve ser que o Ubuntu usa apt ao invés de yum , e alguns dos pacotes têm nomes diferentes.

O equivalente a yum install -y seria apt-get install -y .

cairo e cairo-devel devem ser alterados para libcairo2 e libcairo2-dev .

Normalmente, não instalamos make , gcc , etc. individualmente, mas usamos o build-essential metapacote.

Além disso, os outros comandos parecem independentes de distro. Tente "traduzir" os comandos yum usando estas diretrizes e teste-as em um sistema Ubuntu. Se eles correm com sucesso, então você deve estar bem.

    
por kraxor 05.08.2014 / 23:31