【问题标题】:can compiled perl v5.28.0 from src (with gcc 4.8.5) run on RHEL 5.5?从 src 编译的 perl v5.28.0(使用 gcc 4.8.5)可以在 RHEL 5.5 上运行吗?
【发布时间】:2019-01-02 10:39:27
【问题描述】:

我的问题是,是否可以从源代码运行已编译的 perl 5.28.0(在 CentOS 7 上使用 GCC 4.8.5)以便能够在 GCC 版本较低的 RHEL 5.5 (Tikanga) 上使用libc、glibc 等其他库也是如此。

我们的生产环境运行的是非常旧的 perl 版本(5.8.8),出于安全考虑,它处于严重锁定状态,即我们的大多数服务器都缺少 make、gcc 和相关工具,并且没有可用的 root 访问权限任何人

我想知道是否可以从源代码编译 perl,即带有 GCC 4.8.5 的最新 5.28.0,并尝试在我们的生产服务器上使用这个编译版本(带有 GCC 4.8.2)。

这将为我省去大量官僚作风带来的麻烦,并且我可以使用新工具继续我的项目。

尚未找到有关此主题的任何讨论或提示。任何人都可以解释一下吗?

提前谢谢你。

2 天后更新:

似乎在 RHEL7 上编译的 Perl 5.28 不适用于 RHEL5.5。您必须在 RHEL5.5 上编译它并使其可重定位以便在任何服务器上进一步使用。

所以我下载了 RHEL 5.5 和 CentOS5.5 ISO 并遇到了与可启动 iso 相关的问题。

  1. 无法为 rhel 5.5 和 centos5.5 制作合适的可引导磁盘。

  2. rhel5.5 iso 是单个 DVD 映像,在命令提示符下执行 file rhel5.5.iso 时,它显示可启动。尝试了unebootin,rufous iso creator,dd命令并创建了ISO并一一尝试了所有这些,但无法显示启动菜单。在制作引导盘时尝试了 FAT、NTFS FS。现在卡在这里。

  3. Centos5.5 iso 有 8 个 600mb 的文件。不得不从中创建一个iso映像,并找到了一些在线程序来完成它并制作了一个iso文件。得到启动菜单,看起来它工作。但随后它挂断了某种源媒体检查测试,无法进一步进行。找到一篇与修复相关的文章,您将 md5sum 印在 iso 上,它应该可以工作,但没有。

刚刚在grokbase 上发现了一些东西,其中提到了一种新技术,可以让我从上面第 3 点提到的失败点向前推进。

【问题讨论】:

  • 可能,尽管缺少make 会造成困难。你为什么不试试呢? How to build Perl from source code
  • 嗨,我已经在我的本地机器上准备了设置,但是因为我需要安装很多包,所以需要很长时间。一台服务器上有 make 和 gcc 可用,我可以在那里进行构建。但是无法访问互联网,因此无法安装任何软件包,而且我不确定如何逐个安装软件包,因为 wget 和 curl 不起作用。它被阻止了。计划是在这里搭建,拆分成块,从工作场所下载,逐块下载,然后尝试使用。
  • @Borodin 我已经在使用该链接从源代码构建。
  • 为什么要在 Perl 工作之前安装软件包?您可以在任何您喜欢的地方下载 Perl 源代码并将它们传输到 USB 驱动器上。您还可以使用 CPAN::Mini 保留 CPAN 库的本地副本。
  • @Borodin:我在一家银行工作。不允许使用闪存驱动器/硬盘驱动器/笔记本电脑。大多数下载网站都被屏蔽了。任何大文件,例如超过 10-15 mb 的文件都会被标记,并且会被扫描仪和网络团队获取,因为他们对安全性持偏执态度。它是一家投资银行。因此,“逐块”(意味着每个可能 4-5 mbs 的小文件)。我刚刚使用 GCC 4.8.5 构建了 5.28 版本的 perl,并且还安装了所有我想要的模块。我现在将其拆分并尝试明天将它们全部下载并检查。将再次更新。我希望它有效。只是担心 abt lib 错误..

标签: gcc redhat rhel perl


【解决方案1】:

编辑:static compilation 绕过了您谨慎的问题。您需要弄清楚结果是否适合您的预期目的。


否则你会像你计划的那样对抗传统的编译。如果 libc 差异太大,它将无法正常工作。你当然可以继续尝试,然后你就知道了。

真正的解决方案是设置生产环境的副本(可以在虚拟机中)并在那里编译东西。

【讨论】:

  • 感谢您的宝贵建议:VM 和静态 Perl。我正在调查他们俩。不幸的是,我昨天创建的构建无论如何都注定要失败,因为后来我发现无法移动最终创建的构建,因为它具有硬编码的路径,正因为如此,它只在该路径中搜索包。绝对 VM 是正确的测试方法,我正在继续。很快就会更新进度。
  • 谢谢@daxim 我认为这会产生很大的不同;)现在需要研究整个页面。它有很多信息..
【解决方案2】:

您可以尝试来自 ActiveState.com 的 PerlApp + ActivePerl(可能是 PDK 的一部分,Perl 开发工具包)。我已经用了很多年了。它在 Windows 上将 perl 源代码和包含模块(也已编译模块)编译为 .exe 程序文件,在 Linux 上编译为二进制可执行文件。有付费版和免费/演示版。如果我没记错的话,付费版本允许交叉编译和更多版本的 Perl。

您可能会在开发和生产计算机上使用不同版本的 glibc/libc 时遇到问题,因此请尝试在 CentOS 5.5 Linux(免费)上使用 PerlApp 进行编译。 CentOS5.5 与 RHEL5.5 相似,足以满足大多数项目的需要。祝你好运。

【讨论】:

  • 先生,我只是在寻找免费的解决方案;)但还是谢谢你。如果需要,也许我可以告诉我的项目团队选择这个选项。除了专有的 RHEL 东西之外,CentOS 5.5 不是有相同的代码库吗?
【解决方案3】:

试试perlbrew(是一款无需管理员的perl安装管理工具)

【讨论】:

  • 嗨,我知道 perlbrew 并且基本上它在做同样的事情,从源代码构建。这里的痛点是要知道这个策略是否可行(我会发现,因为我已经完成了 perl 版本 5.28 的构建)。正如我所提到的,我无法从服务器访问互联网,也没有 root/sudo 访问权限。基本上我需要一个文件夹之类的东西(它必须包含所有预先构建的东西)才能使用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-06
  • 2017-01-28
  • 2014-03-06
  • 1970-01-01
  • 1970-01-01
  • 2011-06-06
  • 2011-04-17
相关资源
最近更新 更多