Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
zjyd
V2EX  ›  Linux

请教了一个 Linux 安装 rpm 的问题

  •  
  •   zjyd · Dec 22, 2020 · 3282 views
    This topic created in 1966 days ago, the information mentioned may be changed or developed.

    在国产某麒麟系统下通过 rpm 方式安装 postgresql11,postgresql11-server-11.10-2PGDG.el7.x86_64.rpm 依赖 libicu-50, 但是系统本身安装了 libicu-52, 但是 libicu-52 也不能卸载,依赖了一堆其他东西,一强制安装桌面就挂了,桌面上有给 rpm 签名加白名单的图形化软件。现在有什么方法解决不

    24 replies    2020-12-23 07:01:26 +08:00
    CallMeReznov
        1
    CallMeReznov  
       Dec 22, 2020
    docker ?
    msg7086
        2
    msg7086  
       Dec 22, 2020
    一般 rpm 是绑定操作系统的。如果你那个系统不是基于 RHEL7 的话,直接装是会有问题的。
    如果他是魔改现有系统的话,还是找原始的系统上的包吧……
    zjyd
        3
    zjyd  
    OP
       Dec 22, 2020 via Android
    @CallMeReznov docker 和虚拟化都不行,数据库太大担心性能等风险,而且方案上没有也不好这么弄
    yulgang
        4
    yulgang  
       Dec 22, 2020
    升级到 12 、装个 52 不冲突的包,里面包含 50 的、把 52 连接成 50 、虚拟化?
    yulgang
        5
    yulgang  
       Dec 22, 2020
    系统降级?
    zjyd
        6
    zjyd  
    OP
       Dec 22, 2020 via Android
    @yulgang 做了软连接不行,下载了 pg13 还是依赖 52🤣,虚拟化大家怕有风险,系统降级也弄不了,这个系统是 xx 指定 xx 版本🤣🤣
    lvzhiqiang
        7
    lvzhiqiang  
       Dec 22, 2020
    @zjyd 容器化是最方便的,数据独立挂载出来那有什么风险,最多就是性能会有点损耗,但是比你去折腾依赖方便稳定多了。 数据库数据定时做好备份,就不担心了。
    lvzhiqiang
        8
    lvzhiqiang  
       Dec 22, 2020
    @lvzhiqiang 容器化本质就是被隔离的一个进程组。
    m4d3bug
        9
    m4d3bug  
       Dec 22, 2020 via Android
    @zjyd 你都已经在未经认证测试的系统上安装无法满足依赖的软件,还谈什么风险?
    m4d3bug
        10
    m4d3bug  
       Dec 22, 2020 via Android
    要么容器要么把麒麟的人找来给你适配
    littlewing
        11
    littlewing  
       Dec 22, 2020 via iPhone
    自己编译 pg
    AmrtaShiva
        12
    AmrtaShiva  
       Dec 22, 2020 via iPhone
    所谓的国产系统 魔改了很多东西 和通用发行版本不能 平行讨论 包也一样
    no1xsyzy
        13
    no1xsyzy  
       Dec 22, 2020
    @zjyd 你担心性能先把桌面卸载了。
    docker 再怎么占性能甚至不如 i3wm 占性能多。
    tomychen
        14
    tomychen  
       Dec 22, 2020
    源码编译安装?
    omph
        15
    omph  
       Dec 22, 2020
    [NixOS/patchelf: A small utility to modify the dynamic linker and RPATH of ELF executables]( https://github.com/NixOS/patchelf)
    可能有用
    dorothyREN
        16
    dorothyREN  
       Dec 22, 2020
    麒麟不是 debian 系的嘛,
    freenull
        17
    freenull  
       Dec 22, 2020
    拿到 postgresql11,postgresql11-server 的源码包,在 spec 文件修改 libicu-50 依赖或者将其删掉即可,然后重新编包,但这样可能会影响 postgresql11 的使用
    defunct9
        18
    defunct9  
       Dec 22, 2020   ❤️ 2
    开 ssh,让我上去看看
    freenull
        19
    freenull  
       Dec 22, 2020
    特意看了下 postgresql11-server 的 spec 文件:
    %if %icu
    Requires: libicu-devel
    %endif

    %if %icu
    BuildRequires: libicu-devel
    Requires: libicu
    %endif

    spec 文件并没有要求 libicu 的版本,这应该是编译环境决定的,建议楼主在麒麟上重编下 postgresq11-server,应该能够正常安装
    12101111
        20
    12101111  
       Dec 22, 2020
    icu 每次升级都要重新 rebuild 的,C++写的, ABI 不稳定, 但是 API 一般不会变的, 只能 rebuild 了.
    另外 icu 这个依赖都是大户,编译都要好几个小时的那种
    (dev-libs/icu-68.1:0/68.1::gentoo, ebuild scheduled for merge) causes rebuilds for:
    (dev-qt/qtwebengine-5.15.2:5/5.15::12101111-overlay, ebuild scheduled for merge)
    (dev-util/electron-11.1.1:11/11::12101111-overlay, ebuild scheduled for merge)
    (dev-util/electron-9.4.0:9/9::12101111-overlay, ebuild scheduled for merge)
    (net-libs/webkit-gtk-2.30.4:4/37::12101111-overlay, ebuild scheduled for merge)
    (dev-libs/libxml2-2.9.10-r4:2/2::gentoo, ebuild scheduled for merge)
    (media-gfx/imv-4.1.0-r1:0/0::gentoo, ebuild scheduled for merge)
    (www-client/chromium-89.0.4350.3:0/0::12101111-overlay, ebuild scheduled for merge)
    (www-client/firefox-84.0:0/84::12101111-overlay, ebuild scheduled for merge)
    (x11-misc/slop-7.5:0/7.5::gentoo, ebuild scheduled for merge)
    (dev-qt/qtcore-5.15.2:5/5.15.2::gentoo, ebuild scheduled for merge)
    (media-libs/harfbuzz-2.7.2:0/0.9.18::gentoo, ebuild scheduled for merge)
    (x11-libs/vte-0.60.3:2.91/2.91::gentoo, ebuild scheduled for merge)
    icu 是 Unicode 国际化库, 还经常有更新, 更新一下新 emoji 表什么的
    yanqiyu
        21
    yanqiyu  
       Dec 22, 2020
    去找 postgresql 的 srpm (可以去 https://src.fedoraproject.org/rpms/postgresql 或者 https://koji.mbox.centos.org/koji/packageinfo?packageID=1932 )寻找对应的 srpm, 然后在你的系统下 yum/dnf builddep 然后 rpmbuild 一波
    julyclyde
        22
    julyclyde  
       Dec 22, 2020
    看包名,libicu-50 和 libicu-52 是相同的,应该不存在兼容问题(和 libicu50 、libicu52 是不同的概念)
    可以强制安装上

    至于为什么 pgsql 依赖 52,那估计是你用错了发行版的包
    typetraits
        23
    typetraits  
       Dec 22, 2020
    @defunct9 #18 老哥,看你开了至少三年的 ssh 了,真的有人找你看过吗?
    defunct9
        24
    defunct9  
       Dec 23, 2020 via iPhone   ❤️ 2
    @typetraits 貌似有。还不少
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1198 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 75ms · UTC 18:00 · PVG 02:00 · LAX 11:00 · JFK 14:00
    ♥ Do have faith in what you're doing.