zoukankan      html  css  js  c++  java
  • 关于升级一般软件的一些想法

    常见步骤:

    1. 官网下载tar.gz安装包

    2. 解压,进入目录

    3. 编译,强烈建议带上 --prefix参数和 --enable-shared 参数

    4. make && make install (make -j 4 参数加快make速度)

    5. 修改二进制执行文件的软链接,为了之后就使用新版的软件

    6. 有时会有动态库文件报错,打不开共享文件so等类似的错误信息

      这时一般将所需的so文件拷贝到linux的动态文件库中,一般是/usr/lib64。

      lrwxrwxrwx   1 root         root       19 Jan 19 13:20 libpython2.6.so.1.0 -> libpython3.8.so.1.0
      lrwxrwxrwx   1 root         root       19 Jan 19 10:38 libpython2.7.so -> libpython2.7.so.1.0
      -rwxr-xr-x   1 root         root 1847776 Oct 14 14:46 libpython2.7.so.1.0
      -rwxr-xr-x   1 root         root 12350089 Jan 18 17:29 libpython3.8.so.1.0

      如上:libpython2.6.so.1.0 指向的就是 libpython3.8.so.1.0。可解决报错。

    7. 因此,如果出现 cannot open shared object file: No such file or directory,一般都是软链接失效的原因。需要重新建立有效的软链接。

     

    python升级

    一、首先,官网下载python3的所需版本。
    wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz
    想下载到那个文件夹下就先进入到那个文件夹下——cd /home/download
    二、然后,解压缩文件》
    tar -xvf Python-3.6.0.tgz
    三、创建安装文件的路径。
    mkdir /usr/local/python3
    四、编译。
    ./configure --prefix=/usr/local/python3 --enable-shared --with-openssl=/usr/local/openssl
    #需要启用动态库
    #还得带上ssl模块,这里写openssl的安装路径,原来的openssl太老了,需要重新安装openssl。不然pip无法访问https的链接
    五、安装。
    make && make install
    六、创建新版本的软连接。
    1、修改旧版本
    mv /usr/bin/python /usr/bin/python_bak
    mv /usr/bin/pip /usr/bin/pip_bak
    2、创建新的软连接
    ln -s /usr/local/python3/bin/python3 /usr/bin/python
    ln -s /usr/local/python3/bin/pip3 /usr/bin/pip   #这时pip3就可以使用了。
    3、检查python的版本
    python -V
    python-3.6.0
    软连接创建成功

    上述python3安装好了之后,其实可以直接将python安装路径加入到PATH变量中,再使这个配置生效,就可以用安装目录下的二进制命令了。注意命令是python3和pip3。

    需要带上 --prefix=、--enable-shared、--with-openssl= 参数,一般才能大致升级成功。

    可能还需要升级openssl,因为pip使用ssl模块必选要有openssl支持。

     

    openssl升级

    下载安装
    wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz
    tar -zxvf openssl-1.1.1g.tar.gz
    cd openssl-1.1.1g/
    ./config --prefix=/usr/local/openssl
    make
    make install

    备份和替换
    mv /usr/bin/openssl /usr/bin/openssl.old
    mv /usr/include/openssl /usr/include/openssl.old
    ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
    ln -s /usr/local/openssl/include/openssl /usr/include/openssl
    cp /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/
    cp /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/

    测试openssl是否可用
    [root@tao-ffy-v5-dns Python-3.8.7]# openssl version
    OpenSSL 1.1.1g 21 Apr 2020

    glibc升级

    和其它软件升级的不同之处在于libc.so.6文件比较特殊,他的库目录也直接在/lib64 里面。

    所以这种需要LD_PRELOAD解决。

    wget http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz  
    tar -zxvf glibc-2.14.tar.xz  
    cd glibc-2.14  
    mkdir build  
    cd build/  
    ../configure --prefix=/usr/local/glibc-2.14  
    make -j4  
    make install  
    export LD_LIBRARY_PATH=/usr/local/glibc-2.14/lib:$LD_LIBRARY_PATH  

    之后拷贝so文件
    [root@jrgc130 build]``# cd /usr/local/glibc-2.14/lib
    [root@jrgc130 lib]``# cp libc-2.14.so /lib64/
    在/lib64中备份libc.so.6 这个软链接,创建新链接后。使用一般命令会报错:
    libc.so.6: cannot open shared object file: No such file or directory
    不要慌,可以用LD_PRELOAD解决,方法如下:

    先删除连接 :
    # cd /lib64
    # LD_PRELOAD=/lib64/libc-2.14.so rm libc.so.6.old  
    然后建立新连接 :
    # LD_PRELOAD=/lib64/libc-2.14.so ln -s /lib64/libc-2.14.so libc.so.6

    LD_PRELOAD解决的原理是:linux调用so的库文件时,搜素路径为当前路径,再是系统lib目录。但是提供了一个LD_PRELOAD系统变量来改变这个顺序。设置LD_PRELOAD了后,库加载的顺序就改为 搜素路径为: LD_PRELOAD ,当前路径,再是系统lib目录

     

  • 相关阅读:
    Redis在Windows上使用和集群配置
    Lzma(7-zip)和zlib
    Windump教程-参数介绍
    Windows 使用windump进行循环抓包
    wireshark长时间抓包分多个文件
    发现TCP的一种错误----客户端连接失败(10055错误号)
    MySQL [Err] 1055
    解决socket交互的10048和10055错误的总结
    Socket调用Close后如何终止套接口的问题
    linux下recv 、send阻塞、非阻塞区别和用法
  • 原文地址:https://www.cnblogs.com/fengfengyang/p/14300753.html
Copyright © 2011-2022 走看看