从 Red-Hat 转换到 Ubuntu

从 Red-Hat 转换到 Ubuntu

我从 Linux 开始,因为我的研究需要它。由于我时间不多,也没有本地专家支持,所以这是一次基于需求的自学体验。我必须安装一个工具,我得到了这个安装脚本,下载了一些库并创建了依赖项。但我发现它包含一些在 RED-HAT 上运行但在 Ubuntu 中不起作用的命令(如 yum)。由于我缺乏知识,我想知道代码中是否还有其他部分需要修改才能使其工作。你能帮帮我吗?

提前致谢。

脚本:

#!/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/

答案1

你问的是代码是否有部分除了yum通话之外应当修改。

有时很难确切地知道这一点,因为脚本自动下载和使用的软件(cpanm)可能存在错误或其他问题,导致其在不同发行版上的运行方式不同。我怀疑这是不是确实如此,但我不能确定。

还可能存在其他问题。例如,您的脚本下载cpanm/usr/bin,这没有问题,但是:

  • 如果脚本将其下载到PATHRHEL/Fedora 系统中通常会列出的目录(而不是 Ubuntu 中列出的目录),则可能会导致脚本失败。但这里的情况并非如此。
  • cpanm在 Ubuntu 官方软件源中提供。您可以使用 来安装它,然后sudo apt-get updatesudo apt-get install cpanminus如果已安装,则您不应运行此脚本(按编写方式),因为它可能会覆盖现有的cpanm,从而导致安装的文件与本地软件包数据库认为已安装的文件不同。因此,我建议在使用此脚本之前检查以确保软件包cpanminus未安装。
  • 如果cpanminus软件包已安装,您可以将其删除,或者您可以修改脚本以不下载cpanm其本身。(这种方法是否可行取决于您对所cpanm下载特定版本的需求有多具体,但很有可能会起作用。)或者您可以修改脚本以将软件包下载cpanm到另一个目录,例如/usr/local/bin/opt/bin。要确保下载的脚本cpanm是正在运行的脚本,请确保下载到的目录出现在您的PATH之前中/usr/bin
  • 可能还存在其他类似的细微差别。

话虽如此,我们可以看看是否还有其他明显的变化(除了改为后面跟着yum install -y ...,和apt-get updateapt-get install -y ...按照 kraxor 的解释更改包名称) 是必需的,通过列举您正在使用的所有命令 - 除了yum- 并查看其中是否有任何命令缺失或在 Ubuntu 上的工作方式与在 RHEL/Fedora 上的工作方式有很大不同。

您有(按首次出现的顺序):

  • set:这是 shell 的内置命令,在大多数 Bourne 风格的 shell 中其工作方式相同;无需进行更改。
  • cd:这是一个 shell 内置函数,在基本上每个 Unix shell 中其工作方式都相同。
  • curl:虽然wget在 Ubuntu 系统上更常用并且curl默认情况下未安装,但如果未安装,您可以简单地使用 进行安装sudo apt-get update && sudo apt-get install curl。我不建议将其添加到您的脚本中;只需在第一次使用脚本之前自己运行它即可。您的脚本同时使用和有点奇怪——wget大多数curl脚本编写者选择其中一个——但只要安装了两者,同时使用两者也没有问题。
  • chmod:这是一个标准命令,在所有类 Unix 系统上的工作原理几乎完全相同。
  • cpanmcpanm:这是脚本在使用前下载并安装的命令。除非它具有使其在 Ubuntu 上工作方式不同的特性,否则它应该工作方式相同。请参阅上文关于使用 Ubuntu 官方提供的版本的可能性。
  • tar:这是一个标准命令,虽然有些标志是 GNU/Linux 特有的,但它在所有最近的 GNU/Linux 系统(包括过去十年左右的任何版本的 Ubuntu、RHEL 或 Fedora)上的工作方式基本相同。此外,所使用的标志(xzf)基本上得到了所有实现的支持tar
  • rm:就像chmod,这是一个标准命令,在所有类 Unix 系统上其工作方式几乎完全相同。
  • ln:与chmod和一样rm,这是一个标准命令,在所有类 Unix 系统上其工作方式几乎完全相同。

答案2

主要的区别应该是Ubuntu使用apt而不是yum,并且一些软件包有不同的名称。

相当于。yum install -yapt-get install -y

cairocairo-devel应改为libcairo2libcairo2-dev

通常我们不会单独安装makegcc等,而是使用build-essential元包。

除此之外,其他命令看起来与发行版无关。尝试yum使用这些指南“翻译”命令并在 Ubuntu 系统上测试运行它们。如果它们成功运行,那么你应该没问题。

相关内容