【问题标题】:Offline installing g++ on 10.04 lucid gives cyclic dependency在 10.04 lucid 上离线安装 g++ 会产生循环依赖
【发布时间】:2012-08-14 05:47:25
【问题描述】:

当我尝试安装离线 g++-4.4 软件包时,它依赖于 libstdc++6-4.4-dev,当我尝试安装 libstdc++6-4.4-dev 时,它依赖于 g++-4.4。

ocpe@blrkec241972d:~/Download/g++$ sudo dpkg -i g++-4.4_4.4.3-4ubuntu5.1_amd64.deb
    (Reading database ... 45040 files and directories currently installed.)
    Preparing to replace g++-4.4 4.4.3-4ubuntu5.1 (using g++-4.4_4.4.3-4ubuntu5.1_amd64.deb) ...
    Unpacking replacement g++-4.4 ...
    dpkg: dependency problems prevent configuration of g++-4.4:
     g++-4.4 depends on libstdc++6-4.4-dev (= 4.4.3-4ubuntu5.1); however:
      Package libstdc++6-4.4-dev is not configured yet.
    dpkg: error processing g++-4.4 (--install):
     dependency problems - leaving unconfigured
    Processing triggers for man-db ...
    Errors were encountered while processing:
     g++-4.4
    ocpe@blrkec241972d:~/Download/g++$ sudo dpkg -i libstdc++6-4.4-dev_4.4.3-4ubuntu5.1_amd64.deb
    (Reading database ... 45040 files and directories currently installed.)
    Preparing to replace libstdc++6-4.4-dev 4.4.3-4ubuntu5.1 (using libstdc++6-4.4-dev_4.4.3-4ubuntu5.1_amd64.deb) ...
    Unpacking replacement libstdc++6-4.4-dev ...
    dpkg: dependency problems prevent configuration of libstdc++6-4.4-dev:
     libstdc++6-4.4-dev depends on g++-4.4 (= 4.4.3-4ubuntu5.1); however:
      Package g++-4.4 is not configured yet.
    dpkg: error processing libstdc++6-4.4-dev (--install):
     dependency problems - leaving unconfigured
    Errors were encountered while processing:
     libstdc++6-4.4-dev

【问题讨论】:

    标签: linux ubuntu ubuntu-10.04


    【解决方案1】:

    尝试同时安装它们:

    sudo dpkg -i ./*.deb
    

    【讨论】:

    • 不工作。不显示任何错误。但是当我尝试通过$g++ -v 获取 g++ 版本时,它什么也没显示。在这里:
    • ocpe@blrkec241972d:~/Download/g++$ sudo dpkg -i ./*.deb (Reading database ... 45040 files and directories currently installed.) Preparing to replace g++-4.4 4.4.3-4ubuntu5.1 (using .../g++-4.4_4.4.3-4ubuntu5.1_amd64.deb) ... Unpacking replacement g++-4.4 ... Preparing to replace libstdc++6 4.4.3-4ubuntu5.1 (using .../libstdc++6_4.4.3-4ubuntu5.1_amd64.deb) ... Unpacking replacement libstdc++6 ... Preparing to replace libstdc++6-4.4-dev 4.4.3-4ubuntu5.1 (using .../libstdc++6-4.4-dev_4.4.3-4ubuntu5.1_amd64.deb) Unpacking replacement libstdc++6-4.4-dev Setting up libstdc++6 (4.4.3-4ubuntu5.1)
    • Setting up g++-4.4 (4.4.3-4ubuntu5.1) ... Processing triggers for man-db ... Setting up libstdc++6-4.4-dev (4.4.3-4ubuntu5.1) ... ocpe@blrkec241972d:~/Download/g++$ g++ -v The program 'g++' can be found in the following packages: * g++
    • 检查g++ 是否真的链接到这个包。我正在运行g++ 4.7.1,所以我认为4.4 可能与g++-4.4 之类的东西相关联。
    【解决方案2】:

    这在某些情况下可能有效,但我最近在 Linux Mint 13 中遇到了同样的问题。建议的命令 (sudo dpkg -i ./.deb) 将临时安装此类软件包,但它们仍将注册为“损坏”(即在解决这些冲突之前,您不得使用甚至修改您的包)。解决这些问题的唯一方法是通过包管理器。目前没有其他办法。

    有趣的是,我在尝试用正常工作的驱动程序替换以太网适配器的故障驱动程序时发现了这些无意义的依赖关系。事实证明,大多数 Linux 发行版都没有附带开发工具(因此您不能只在离线模式下“进行安装”)。但是由于草率的开发人员政策[循环依赖、自依赖、dpkg 在这些情况下不起作用],无法离线安装软件包,因此某些 Linux 版本可能会在某些平台上永久损坏(如果互联网连接不起作用)。

    建议?我建议向开发者论坛发送垃圾邮件,向程序员请求严格的依赖策略:在对其运行自动依赖检查之前,不应向公众发布任何模块(以避免自我依赖,这很蹩脚)。在循环依赖的情况下(即 a 依赖于 b,b 依赖于 c,c 依赖于 a),应该要求模块在发布之前合并为一个。该文件将变得多大并不重要。没有什么比看似模块化的系统更糟糕的了,但实际上这些模块产生的问题比它们解决的问题还要多。在这种情况下,非模块化“阻止”策略应该是必须的。

    外面的世界很复杂......只有人才能让它变得更加复杂......

    【讨论】:

      【解决方案3】:

      我愿意: sudo dpkg -i g++-4.4_4.4.3-4ubuntu5.1_i386.deb libstdc++6-4.4-dev_4.4.3-4ubuntu5.1_i386.deb

      prebious 我不加载 pacage: http://packages.ubuntu.com/lucid/i386/g++-4.4/download http://packages.ubuntu.com/lucid/i386/libstdc++6-4.4-dev/download

      【讨论】:

        猜你喜欢
        • 2012-03-15
        • 2012-05-28
        • 2012-06-25
        • 2021-08-08
        • 2019-10-28
        • 1970-01-01
        • 2012-06-04
        • 1970-01-01
        相关资源
        最近更新 更多