【问题标题】:rpm: /lib64/liblzma.so.5: version `XZ_5.1.2alpha' not found (required by /lib/librpmio.so.3)rpm:/lib64/liblzma.so.5:未找到版本“XZ_5.1.2alpha”(/lib/librpmio.so.3 需要)
【发布时间】:2018-05-17 22:45:45
【问题描述】:

我被这个错误困住了。无法安装任何 RPM。请帮忙

操作系统是 RHEL6.9 64 位

提前致谢。

【问题讨论】:

    标签: rpm rhel


    【解决方案1】:

    当您从 RHEL(或 CentOS)7 系统上的源下载并安装 xz 时,会发生这种情况。问题是 XZ_5.1.2alpha 标签在 xz 的已发布版本中不存在,但在 RedHat 发布和编译的版本中存在。

    xz 源的一个小补丁将解决问题:

    https://github.com/easybuilders/easybuild-easyconfigs/issues/4036

    补丁足够小,可以在这里复制和粘贴。我已经在xz-5.2.4上使用成功了。

    --- src/liblzma/liblzma.map.orig    2015-09-29 12:57:36.000000000 +0200
    +++ src/liblzma/liblzma.map 2017-02-22 11:10:33.432868185 +0100
    @@ -95,7 +95,13 @@
        lzma_vli_size;
     };
     
    -XZ_5.2 {
    +XZ_5.1.2alpha {
    +global:
    +   lzma_stream_encoder_mt;
    +   lzma_stream_encoder_mt_memusage;
    +} XZ_5.0;
    +
    +XZ_5.2.2 {
     global:
        lzma_block_uncomp_encode;
        lzma_cputhreads;
    @@ -105,4 +111,4 @@
     
     local:
        *;
    -} XZ_5.0;
    +} XZ_5.1.2alpha;
    

    (更新)

    如果你尝试在 CentOS 8 上使用这个 .so,你会得到 XZ_5.2 的未解析符号(例如 librpmio.so.8 想要 lzma_stream_encoder_mt@XZ_5.2)。

    这是一个修改后的补丁,用于创建可在 CentOS 7 和 8 上运行的 liblzma.so.5 库:

    diff -u -r xz-5.2.5/src/liblzma/common/stream_encoder_mt.c xz-5.2.5-rhel7/src/liblzma/common/stream_encoder_mt.c
    --- xz-5.2.5/src/liblzma/common/stream_encoder_mt.c 2020-03-17 07:28:50.000000000 -0700
    +++ xz-5.2.5-rhel7/src/liblzma/common/stream_encoder_mt.c   2021-12-06 16:18:14.976457229 -0800
    @@ -1141,3 +1141,9 @@
     
        return total_memusage + outq_memusage;
     }
    +
    +/* http://peeterjoot.com/2019/09/20/an-example-of-linux-glibc-symbol-versioning/ */
    +__asm__(".symver lzma_stream_encoder_mt,lzma_stream_encoder_mt@XZ_5.1.2alpha");
    +__asm__(".symver lzma_stream_encoder_mt,lzma_stream_encoder_mt@@XZ_5.2");
    +__asm__(".symver lzma_stream_encoder_mt_memusage,lzma_stream_encoder_mt_memusage@XZ_5.1.2alpha");
    +__asm__(".symver lzma_stream_encoder_mt_memusage,lzma_stream_encoder_mt_memusage@@XZ_5.2");
    diff -u -r xz-5.2.5/src/liblzma/liblzma.map xz-5.2.5-rhel7/src/liblzma/liblzma.map
    --- xz-5.2.5/src/liblzma/liblzma.map    2020-03-17 07:28:54.000000000 -0700
    +++ xz-5.2.5-rhel7/src/liblzma/liblzma.map  2021-12-06 15:48:05.650672828 -0800
    @@ -95,6 +95,12 @@
        lzma_vli_size;
     };
     
    +XZ_5.1.2alpha {
    +global:
    +   lzma_stream_encoder_mt;
    +   lzma_stream_encoder_mt_memusage;
    +} XZ_5.0;
    +
     XZ_5.2 {
     global:
        lzma_block_uncomp_encode;
    @@ -105,4 +111,4 @@
     
     local:
        *;
    -} XZ_5.0;
    +} XZ_5.1.2alpha;
    

    【讨论】:

    • RHEL 新手,我们如何应用这个补丁?
    • 用“XZ_5.1.2alpha”为我修复了 asmcmd afd_lsdsk 的 liblzma.map 补丁。
    • 应用补丁后,我得到:错误:符号“lzma_stream_encoder_mt”的多个版本 [lzma_stream_encoder_mt@@XZ_5.2'|lzma_stream_encoder_mt@XZ_5.1.2alpha']。我做错了什么?
    【解决方案2】:

    自 2017 年 11 月 27 日以来,当我从 CentOS 7.4 上的源安装 XZ Utils 5.2.3 并将 liblzma.so.5.2.3/usr/local/lib/ 复制到 /lib64/ 时,我遇到了类似的问题。

    这个问题的原因是库librpmio.so.3 需要在lzma 共享库中定义符号XZ_5.1.2alphaliblzma.so.5.2.2 定义了这个符号,但 liblzma.so.5.2.3 没有。

    如果没有 XZ 更新,最新版本的 lzma 库是 5.2.2,我有符号链接 /lib64/liblzma.so.5 -> /lib64/liblzma.so.5.2.2。在复制liblzma.so.5.2.3 和一些进一步的更新后,链接已更改为最新文件,即/lib64/liblzma.so.5 -> /lib64/liblzma.so.5.2.3。这破坏了rpmyum 命令。 所以,解决办法是:

    1. /lib64/liblzma.so.5 链接回/lib64/liblzma.so.5.2.2

      cd /lib64
      sudo ln -s -f liblzma.so.5.2.2 liblzma.so.5
      
    2. 删除文件/lib64/liblzma.so.5.2.3

    第二个可能的原因可能是环境变量LD_LIBRARY_PATH。检查它是否包含不需要的路径并将其清除。

    【讨论】:

    • 请注意,oracle asmcmd afd 命令通过 afddriverstate、osds_acfslib.pm 运行 rpm -qf /etc/redhat-release,因此可能会受到此问题的影响。
    【解决方案3】:

    就我而言: 将 /etc/bashr and ~/.bashrc 中包含导出到变量“LD_LIBRARY_PATH”的行标记为 cmets

    【讨论】:

      【解决方案4】:

      只需删除liblzma.so.5.2.3,yum 就会再次运行。它因为https://software.intel.com/en-us/cluster-checker-user-guide-getting-started 中的source psxevars.sh 而坏了。

      【讨论】:

      • 删除 liblzma.so.5.2.3 对我有用。那是在 Oracle Linux 上进行一些与 R (ORE) 相关的安装之后。
      【解决方案5】:

      光环队。

      我在启动 nautilus 时也遇到了同样的问题。我在 xz 5.2.4 附带的 centos 8 中

      nautilus: /lib64/liblzma.so.5: version `XZ_5.2.2' not found (required by /lib/libarchive.so.13)
      
      nautilus: /lib64/liblzma.so.5: version `XZ_5.1.2alpha' not found (required by /lib/libarchive.so.13)
      

      下载xz-5.2.5.tar.gz 并通过 Nemo 应用补丁。我把它编译成/usr/local/lib 并做了一个模拟链接。 ln -s /usr/local/lib/liblzma.so.5.2.5 /usr/lib64/liblzma.so.5 排序鹦鹉螺但是 破坏系统。 dnf 和其他几乎所有东西都会中断。

      # dnf list installed kernel
      Traceback (most recent call last):
        File "/usr/lib64/python3.6/site-packages/libdnf/error.py", line 14, in swig_import_helper
          return importlib.import_module(mname)
        File "/usr/lib64/python3.6/importlib/__init__.py", line 126, in import_module
          return _bootstrap._gcd_import(name[level:], package, level)
        File "<frozen importlib._bootstrap>", line 994, in _gcd_import
        File "<frozen importlib._bootstrap>", line 971, in _find_and_load
        File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
        File "<frozen importlib._bootstrap>", line 658, in _load_unlocked
        File "<frozen importlib._bootstrap>", line 571, in module_from_spec
        File "<frozen importlib._bootstrap_external>", line 922, in create_module
        File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
      ImportError: /lib64/liblzma.so.5: version `XZ_5.2' not found (required by /lib64/librpmio.so.8)
      
      During handling of the above exception, another exception occurred:
      
      Traceback (most recent call last):
        File "/usr/bin/dnf", line 57, in <module>
          from dnf.cli import main
        File "/usr/lib/python3.6/site-packages/dnf/__init__.py", line 30, in <module>
          import dnf.base
        File "/usr/lib/python3.6/site-packages/dnf/base.py", line 29, in <module>
          import libdnf.transaction
        File "/usr/lib64/python3.6/site-packages/libdnf/__init__.py", line 8, in <module>
          from . import error
        File "/usr/lib64/python3.6/site-packages/libdnf/error.py", line 17, in <module>
          _error = swig_import_helper()
        File "/usr/lib64/python3.6/site-packages/libdnf/error.py", line 16, in swig_import_helper
          return importlib.import_module('_error')
        File "/usr/lib64/python3.6/importlib/__init__.py", line 126, in import_module
          return _bootstrap._gcd_import(name[level:], package, level)
      ModuleNotFoundError: No module named '_error'
      

      当我执行ldconfig 时,它会返回 sim 链接以指向 5.2.4。

      为了生存,我必须暂时在每次登录时循环该过程。那就是创建一个模拟链接启动鹦鹉螺然后做ldconfig。但是,如果有一个永久的解决方案,请分享。 centos8 需要 XZ_5.2 而不是 XZ_5.2.2

      这是我修补的 xz-5.2.5/src/libzma.map

      
      XZ_5.0 {
      global:
          lzma_alone_decoder;
          lzma_alone_encoder;
          lzma_auto_decoder;
          lzma_block_buffer_bound;
          lzma_block_buffer_decode;
          lzma_block_buffer_encode;
          lzma_block_compressed_size;
          lzma_block_decoder;
          lzma_block_encoder;
          lzma_block_header_decode;
          lzma_block_header_encode;
          lzma_block_header_size;
          lzma_block_total_size;
          lzma_block_unpadded_size;
          lzma_check_is_supported;
          lzma_check_size;
          lzma_code;
          lzma_crc32;
          lzma_crc64;
          lzma_easy_buffer_encode;
          lzma_easy_decoder_memusage;
          lzma_easy_encoder;
          lzma_easy_encoder_memusage;
          lzma_end;
          lzma_filter_decoder_is_supported;
          lzma_filter_encoder_is_supported;
          lzma_filter_flags_decode;
          lzma_filter_flags_encode;
          lzma_filter_flags_size;
          lzma_filters_copy;
          lzma_filters_update;
          lzma_get_check;
          lzma_index_append;
          lzma_index_block_count;
          lzma_index_buffer_decode;
          lzma_index_buffer_encode;
          lzma_index_cat;
          lzma_index_checks;
          lzma_index_decoder;
          lzma_index_dup;
          lzma_index_encoder;
          lzma_index_end;
          lzma_index_file_size;
          lzma_index_hash_append;
          lzma_index_hash_decode;
          lzma_index_hash_end;
          lzma_index_hash_init;
          lzma_index_hash_size;
          lzma_index_init;
          lzma_index_iter_init;
          lzma_index_iter_locate;
          lzma_index_iter_next;
          lzma_index_iter_rewind;
          lzma_index_memusage;
          lzma_index_memused;
          lzma_index_size;
          lzma_index_stream_count;
          lzma_index_stream_flags;
          lzma_index_stream_padding;
          lzma_index_stream_size;
          lzma_index_total_size;
          lzma_index_uncompressed_size;
          lzma_lzma_preset;
          lzma_memlimit_get;
          lzma_memlimit_set;
          lzma_memusage;
          lzma_mf_is_supported;
          lzma_mode_is_supported;
          lzma_physmem;
          lzma_properties_decode;
          lzma_properties_encode;
          lzma_properties_size;
          lzma_raw_buffer_decode;
          lzma_raw_buffer_encode;
          lzma_raw_decoder;
          lzma_raw_decoder_memusage;
          lzma_raw_encoder;
          lzma_raw_encoder_memusage;
          lzma_stream_buffer_bound;
          lzma_stream_buffer_decode;
          lzma_stream_buffer_encode;
          lzma_stream_decoder;
          lzma_stream_encoder;
          lzma_stream_flags_compare;
          lzma_stream_footer_decode;
          lzma_stream_footer_encode;
          lzma_stream_header_decode;
          lzma_stream_header_encode;
          lzma_version_number;
          lzma_version_string;
          lzma_vli_decode;
          lzma_vli_encode;
          lzma_vli_size;
      };
      
      XZ_5.1.2alpha {
      global:
         lzma_stream_encoder_mt;
         lzma_stream_encoder_mt_memusage;
      } XZ_5.0;
      
      XZ_5.2.2 {
      global:
          lzma_block_uncomp_encode;
          lzma_cputhreads;
          lzma_get_progress;
          lzma_stream_encoder_mt;
          lzma_stream_encoder_mt_memusage;
      
      local:
          *;
      } XZ_5.1.2alpha;
      
      

      如何在此文件或 5.2.5 src 树中的任何其他 src 文件中修改 XZ_5.2

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-12-12
        • 1970-01-01
        • 2017-07-14
        • 2015-06-05
        • 2022-09-27
        • 2020-07-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多