【问题标题】:E: Package 'lib32gcc1' has no installation candidateE: 包 \'lib32gcc1\' 没有安装候选
【发布时间】:2022-11-09 05:31:53
【问题描述】:

我安装了 UR-Sim 文件 (https://www.universal-robots.com/download/software-cb-series/simulator-linux/offline-simulator-cb-series-linux-ursim-1816941tarqz/)。我正在使用 Ubuntu 22.04。

当我运行$ ./install.sh 时,我收到了错误$ Installed java version is too old, exiting 所以我在 install.sh 中替换了 needToInstallJava() 函数

needToInstallJava() {
    echo "Checking java version"
    if command -v java; then
    # source https://stackoverflow.com/questions/7334754/correct-way-to-check-java-version-from-bash-script
        version=$(java -version 2>&1 | awk -F '"' '/version/ {print $2}')

    echo "Stripping the front end"
    majorVersion=${version%%.*}
        echo Java major version "$majorVersion"
    if [ "`echo "$majorVersion > 1.6" | bc`" -eq 1 ]; then
        echo "java version accepted"
            return 0
    fi
    fi
    return 1
}

当我使用更改后的文件 $ ./install.sh 运行时,我得到以下输出。

Checking java version
/usr/bin/java
Stripping the front end
Java major version 11
java version accepted
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Note, selecting 'libjava3d-java-doc' for glob 'libjava3d-*'
Note, selecting 'libjava3d-jni' for glob 'libjava3d-*'
Note, selecting 'libjava3d-java' for glob 'libjava3d-*'
Note, selecting 'ttf-dejavu-core' for glob 'ttf-dejavu*'
Package lib32gcc1 is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
However the following packages replace it:
  lib32gcc-s1

Package libcurl3 is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
However the following packages replace it:
  libcurl4:i386 libcurl4

E: Package 'lib32gcc1' has no installation candidate
E: Package 'libcurl3' has no installation candidate

我该如何解决这个问题?

【问题讨论】:

    标签: ubuntu-22.04


    【解决方案1】:

    问题的根源

    install.sh 脚本中,以下两行在Ubuntu 22.04 发行版上存在问题:

    sudo apt-get install -y lib32gcc1 libc6-i386
    sudo dpkg -i urtool/*.deb
    

    出现问题是因为包lib32gcc1 在此发行版的存储库中重命名为lib32gcc-s1。 在第二行中,urtool/*.deb (urtool/urtool3_0.3_amd64.deb) 具有 lib32gcc1 作为依赖项。由于不存在依赖项,dpkg 拒绝安装该软件包。

    通过编辑.deb 文件的解决方案

    为了解决这个问题,您可以编辑.deb 文件以将lib32gcc-s1 作为依赖项而不是lib32gcc1。首先,您应该安装lib32gcc-s1 包。


    注意与此类似的问题:如果依赖包中的二进制文件更改了名称,则此方法将不起作用。您可以通过以下方式检查:

    dpkg -L lib32gcc-s1 | xargs file
    

    其中显示以下输出:

    /.:                         directory
    /usr:                       directory
    /usr/lib32:                 directory
    /usr/lib32/libgcc_s.so.1:   ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, BuildID[sha1]=bc9d0c313ce683defc25191bac6f913fa197d2d1, stripped
    /usr/share:                 directory
    /usr/share/doc:             directory
    /usr/share/doc/lib32gcc-s1: symbolic link to gcc-12-base
    

    这个包中只有一个可执行文件——即libgcc_s.so.1。 如果你检查content of lib32gcc1 包,你会在那里找到同名的文件。 (如果您想完全确定可执行文件是相同的,您可以比较它们的md5 校验和或查看源代码,看看自包重命名后是否有任何更改。)


    分析.deb 文件

    .deb 文件只是一个 ar 存档文件,其中包含与安装包相关的数据:可执行文件、安装说明、依赖项、元数据等。要提取存档数据,cdurtool 并运行:

    ar x urtool3_0.3_amd64.deb
    

    您应该能够看到以下文件列表:control.tar.gzdata.tar.gzdebian-binary。依赖关系数据包含在 control.tar.gz 中。

    开箱control.tar.gz

    让我们创建新目录并在那里提取控制存档:

    mkdir extras-control
    tar -C extras-control -zxf control.tar.gz
    

    您应该在extras-control 中看到以下文件列表:conffilescontrolmd5sumspostinstpostrmshlibs。 依赖信息在control 文件中。使用您选择的文本编辑器打开它并更改行:

    Depends: lib32gcc1, ...
    

    Depends: lib32gcc-s1, ...
    

    打包备份

    现在依赖改了,先把解压后的.tar目录打包,然后移到外层目录:

    tar cfz control.tar.gz *
    mv control.tar.gz ..
    

    然后,在外部目录中,使用ar 将以下文件打包到一个新的.deb 包中:

    ar r new_urtool3.deb debian-binary control.tar.gz data.tar.gz 
    

    最后,安装你的新包:

    sudo dpkg -i new_urtool3.deb
    

    【讨论】:

      猜你喜欢
      • 2021-04-23
      • 1970-01-01
      • 2022-08-14
      • 2019-08-05
      • 2022-01-22
      • 2021-01-19
      • 1970-01-01
      • 1970-01-01
      • 2021-11-24
      相关资源
      最近更新 更多