`

Redhat安装gem包报错“no such file to load — zlib”以及ruby的openssl扩展等错误的修正

 
阅读更多
情况大体是这样的,接手了别人在配的一台服务器,Red Hat Enterprise Linux Server release 5.5。
至于他的ruby gem之类的安装包是怎么安装的我一概不知,问他他就说按照步骤来的,但是各种问题层出不穷。
首先是环境变量的问题,这个好解决,一步搞定了。
之后是gem包的安装问题,只要运行 gem install * 命令,都会出现下面这个错误:

ERROR:  Loading command: install (LoadError)
no such file to load — zlib
ERROR:  While executing gem … (NameError)
uninitialized constant Gem::Commands::InstallCommand


这个错误,在google上搜索,答案真的是一片一片的,但是所有的答案无非都是下面这几句话,千篇一律整齐划一,好不无奈
引用

install the zlib dev libraries
sudo apt-get install zlib1g-dev

Then go to the source directory from where you compiled the Ruby and there you will find source for zlib.
e.g. /usr/local/src/ruby-1.8.7/ext/zlib
In case, if you used RVM, then it will be here
cd /home/user/.rvm/src/ruby-1.8.7-p352/ext/zlib
And do the following commands
ruby extconf.rb
make
make install


上面这个答案明显是针对ubuntu的,我这台服务器既不能联外网,又不是ubuntu,所以完全不能效颦

我去搜索zlib包,几乎完全被ubuntu的deb文件刷屏,最后还好找到了(见附件)
configure & make & make install
很顺利,很成功
但是仍然有错误,我把gem重新安装还是没用的,于是怀疑是ruby在编译安装的时候没有编译这个zlib。
干脆把ruby重新编译安装,问题搞定,看来就是上面我猜测的这个原因。

之后我觉得,上面引文中的
/home/user/.rvm/src/ruby-1.8.7-p352/ext/zlib 目录下 去扩展一下也应该是可以的
ruby extconf.rb
make
make install

只是我这边ruby重新编译之后问题成功了,也没有必要去复现这个问题了

====================================================================

http://netfork.iteye.com/blog/432928

passenger编译安装nginx的时候出错:
checking for openssl/ssl.h... no

一、安装openssl扩展

编译安装
tar -zxvf openssl-0.9.8k.tar.gz
cd openssl-0.9.8k
./configure
make && make install

二、然后到源码
文件夹的/ext/openssl文件夹
cd ruby-1.8.7-p330/ext/openssl

ruby extconf.rb --with-openssl-include=/usr/local/ssl/include/ --with-openssl-lib=/usr/local/ssl/lib

make && make install


如果遇到
/usr/bin/ld: /usr/local/ssl/lib/libssl.a(s2_meth.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
/usr/local/ssl/lib/libssl.a: could not read symbols: Bad value
collect2: ld returned 1 exit status


服务器是64位的,
./config shared -fPIC

按照上面命令重新编译openssl
再重新安装ruby的ext扩展
make distclean
ruby extconf.rb --with-openssl-include=/usr/local/ssl/include/ --with-openssl-lib=/usr/local/ssl/lib
make && make install



================================
passenger-install-nginx-moudle 出现如下错误
StaticContentHandler.c:69: error: ‘ngx_http_request_t’ has no member named ‘zero_in_uri’

注释掉gem包中的

Delete these line from ${GEM_HOME}/passenger-2.2.15/ext/nginx/StaticContentHandler.c

if (r->zero_in_uri) {
  return NGX_DECLINED;
}


参见 https://github.com/hmsk/nginx-passenger-centos

===============================
nginx启动出现错误
nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory


进入/lib64目录中手动链接下(服务器是64位的)
 ln -s libpcre.so.0.0.1 libpcre.so.1
分享到:
评论
1 楼 lucky_god 2017-09-15  
感谢楼主,写的很详细!

相关推荐

    RedHat 6.5离线安装openssl-devel顺序

    在Red Hat Enterprise Linux (RHEL) 6.5这样的老版本系统中,有时需要手动安装特定的软件包,比如`openssl-devel`,因为默认的软件仓库可能不包含最新或者特定版本的软件。`openssl-devel`是开发人员在构建需要使用...

    redhat安装db_load

    - **安装rpm**:如果找到包含`db_load`的`db4`包,可以使用`rpm -ivh /mnt/cdrom/path/to/db4-package.rpm`来安装它。确保替换`path/to/db4-package.rpm`为实际的包路径和名称。 - **验证安装**:安装完成后,再次...

    解决redhat 8.2 yum报错 This system is

    在Red Hat 8.2操作系统中,用户可能会遇到一个常见的问题,即在尝试使用`yum`命令安装软件时,系统返回错误提示"This system is not registered to Red Hat Subscription Management"。这个错误表明你的系统未注册到...

    Redhat7 DB2报The 32 bit library file libstdc++.so.5 is not found on the system解决

    ### Redhat7 DB2安装时遇到“The 32 bit library file libstdc++.so.5 is not found on the system”问题的解决方案 在部署数据库管理系统(DBMS)时,经常会出现各种兼容性或缺失库的问题。例如,在Redhat 7上安装...

    oracle图形化安装及报错解决

    Oracle 在 Linux 环境中的图形化安装及报错解决 Oracle 是一个广泛应用于企业级数据库管理系统的商业数据库管理系统。它具有高性能、安全、可靠等特点,广泛应用于各个行业。但是,在 Linux 环境中安装 Oracle 可能...

    Redhat6.6/Redhat6.7 docker 离线安装依赖包

    Redhat6.6/Redhat6.7 docker 离线安装依赖包

    Red_Hat_Enterprise_Linux_安装vmware-tools

    VMware Tools是一个包含优化驱动程序和实用工具的软件包,为VMware虚拟化平台提供更好的集成,例如增强的图形支持、鼠标无缝切换、文件共享以及时间同步等。 首先,确保你的RHEL 5.5虚拟机的安装镜像已经从虚拟机...

    linux安装oracle图形化界面问题处理

    二、错误描述:Exception in thread "main" java.lang.UnsatisfiedLinkError: /tmp/OraInstall2007-09-25_10-54-49PM/jre/1.4.2/lib/i386/libawt.so: libXp.so.6: cannot open shared object file: No such file or ...

    openssl-1.0.2j-el6.1.x86_64.rpm安装包

    sshd: error while loading shared libraries: libcrypto.so.10: cannot open shared object file: No such file or directory 解决方法,做软链接: #cd /usr/lib64/ #ln -s libcrypto.so.1.0.0 libcrypto.so.10 #...

    redhat5rpm包(史上最全)

    在"redhat5rpm包(史上最全)"这个压缩包中,你将找到所有安装Oracle 9i所需的RPM包,这意味着你不必再花费时间去寻找各个分散的依赖包。以下是一些关键的知识点,涉及Oracle 9i在RHEL5上的安装过程: 1. **环境...

    hadoop2.4.1的64位redhat的native包,解决hadoop 安装报错

    在Hadoop生态系统中,"hadoop2.4.1的64位redhat的native包"扮演着至关重要的角色,特别是在解决与安装和运行Hadoop相关的特定错误时。Hadoop是一个分布式计算框架,用于处理和存储大量数据。当Hadoop在Red Hat操作...

    CentOS7离线升级openssl1.1.1w,openssh9.6p1,所需资源包

    1. **准备工作**:首先,确保你有一个包含所需资源包的本地存储介质,如光盘或USB驱动器,其中包含gcc、zlib、pam、openssl、openssh、xinetd、telnet、make等依赖包的最新版本。 2. **安装依赖**:在离线环境中,先...

    redhat7u4 裸机离线安装 gcc(含全部依赖包和安装说明)

    在这个场景下,我们要讨论的是如何在没有网络连接的情况下,在Red Hat 7.4(简称redhat7u4)上离线安装GCC编译器,包括所有必要的依赖包。 GCC(GNU Compiler Collection)是一套开源的编译器集合,用于将源代码...

    openssl安装文件及使用方法

    选择合适的安装路径,并确保勾选“Add OpenSSL to system PATH”选项,以便在命令行中直接使用openssl命令。 - **Linux/macOS**:在Linux和macOS中,可以通过包管理器(如apt、yum、brew)来安装OpenSSL。 **四、...

    RedHat安装oracle时的各种包

    "RedHat安装oracle时的各种包"这个标题提到了在安装过程中可能需要的关键组件。虽然提供的描述表明这并不包含所有必要的包,但它确实包括了大部分。以下是一些重要的包和它们在Oracle安装过程中的作用: 1. **...

    redhat9 支持下的samba-2.2.7a-7.9.0.i386 从安装包内提取制作的镜像文件

    redhat9 支持下的samba-common-2.2.7a-7.9.0.i386 从安装包内提取制作的镜像文件 samba-2.2.7a-7.9.0.i386、 samba-client-2.2.7a-7.9.0.i386、 samba-common-2.2.7a-7.9.0.i386三部分

    Redhat 6.2 zlib库文件

    Redhat 6 2 zlib库文件 共有需求的人使用

    redhat-server-6.8 - 离线安装gcc依赖包

    redhat-server-6.8 ---- 离线安装gcc依赖包 因为安装时包之间会有依赖关系,所以需要指定安装包的顺序: rpm -ivh kernel-headers-2.6.32-7el6.x86_64.rpm rpm -ivh glibc-headers-12-1.7.el6.x86_64.rpm rpm -ivh...

    redhat7.2 离线安装docker-ce依赖包

    1. **准备依赖包**:Docker CE的安装需要一些特定的依赖包,这些包通常通过`yum`包管理器获取。在RHEL 7.2中,这些依赖可能包括SELinux政策、设备Mapper库、容器运行时、以及相关的工具和库。压缩包"docker-packages...

    Nginx离线安装资源整合包

    在没有网络连接的环境下,在Linux系统上离线安装Nginx,需要准备的关键组件包括:PCRE(Perl Compatible Regular Expressions)、ZLIB、OpenSSL以及Nginx的源代码包。下面将详细介绍这些组件的作用及其安装过程。 1...

Global site tag (gtag.js) - Google Analytics