如何在 64 位系统上安装 32 位专有 deb 而不引起依赖问题?

如何在 64 位系统上安装 32 位专有 deb 而不引起依赖问题?

我知道 Guitar pro 不支持 64 位,但我确实用这个命令让它工作了

jeggy@jeggy-XPS:~$ sudo dpkg --force-architecture -i GuitarPro6-rev9063.deb
[sudo] password for jeggy: 
Selecting previously unselected package guitarpro6:i386.
(Reading database ... 285729 files and directories currently installed.)
Unpacking guitarpro6:i386 (from GuitarPro6-rev9063.deb) ...
dpkg: dependency problems prevent configuration of guitarpro6:i386:
 guitarpro6:i386 depends on gksu.
dpkg: error processing guitarpro6:i386 (--install):
 dependency problems - leaving unconfigured
Processing triggers for bamfdaemon ...
Rebuilding /usr/share/applications/bamf.index...
Processing triggers for desktop-file-utils ...
Processing triggers for gnome-menus ...
Errors were encountered while processing:
 guitarpro6:i386

即使在我收到该错误之后,程序仍然可以正常运行,并且更新和添加 PPA 到系统也可以正常工作,但是当我尝试安装其他软件时,我收到此错误:

jeggy@jeggy-XPS:~$ sudo apt-get install elinks
Reading package lists... Done
Building dependency tree       
Reading state information... Done
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
 elinks : Depends: libfsplib0 (>= 0.9) but it is not going to be installed
          Depends: liblua50 (>= 5.0.3) but it is not going to be installed
          Depends: liblualib50 (>= 5.0.3) but it is not going to be installed
          Depends: libtre5 but it is not going to be installed
          Depends: elinks-data (= 0.12~pre5-7ubuntu1) but it is not going to be installed
 guitarpro6:i386 : Depends: gksu:i386 but it is not going to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

每当我写“apt-get -f install”时,我都会得到这个

jeggy@jeggy-XPS:~$ sudo apt-get -f install
[sudo] password for jeggy: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Correcting dependencies... Done
The following packages were automatically installed and are no longer required:
  dconf-gsettings-backend:i386 python-levenshtein python-indicate libav-tools libstartup-notification0:i386
  libxmuu1:i386 libavfilter-extra-2 libbabl-0.0-0 libgegl-0.0-0 libgconf2-4:i386 python-vobject libgtk-3-0:i386
  libpam-cap:i386 python-utidylib libdconf0:i386 python-iniparse python-xmpp libpam-gnome-keyring:i386
  libxcb-util0:i386 python-farstream
Use 'apt-get autoremove' to remove them.
The following packages will be REMOVED:
  guitarpro6:i386
0 upgraded, 0 newly installed, 1 to remove and 7 not upgraded.
1 not fully installed or removed.
After this operation, 84,0 MB disk space will be freed.
Do you want to continue [Y/n]? y
(Reading database ... 286979 files and directories currently installed.)
Removing guitarpro6:i386 ...
dpkg: warning: while removing guitarpro6:i386, directory '/opt/GuitarPro6/updater' not empty so not removed.
dpkg: warning: while removing guitarpro6:i386, directory '/opt/GuitarPro6/Data/Soundbanks' not empty so not removed.
Processing triggers for bamfdaemon ...
Rebuilding /usr/share/applications/bamf.index...
Processing triggers for desktop-file-utils ...
Processing triggers for gnome-menus ...

现在 Guitar Pro 已被删除。
我怎样才能安装 Guitar Pro 并且之后仍能安装其他软件?

答案1

警告:

吉他专业版deb 是包装危险!

  • 在 64 位系统上,如果你apt-get -f install尝试安装后,apt-get想要消除下列系统关键软件包,这可能会毁掉你的 Ubuntu 安装!

    下列软件包将被删除:
    堪萨斯州立大学guitarpro6:i386 libgksu2-0libpam-gnome-密钥环 须藤Ubuntu 桌面
    Ubuntu 最小版本更新管理器更新通知程序 xauth初始化 组织
  • 须藤更新管理器??X!开发人员在想什么?!它还让人apt-get认为安装了一堆 i386 软件包,但实际上并没有安装。这是完整的血腥 pastebin。


安全安装 GuitarPro 而无需apt-get将其删除

  • 我相信上述行为来自于 deb 对gksu:i386(图形根提升包)的愚蠢依赖
  • 不幸的是,安装此软件的唯一安全方法是不必处理的apt-get抱怨是手动安装它及其依赖项。操作如下:

如何手动检查并安全安装二进制 i386 deb 及其依赖项

  • 首先,删除当前半安装的sudo dpkg --remove guitarpro:i386
  • 现在,切换到存储 deb 文件的目录。为了方便输入,我们创建一个简短的符号链接 - 我的 deb 名为gp6-full-linux-demo-r11100.deb,您的可能有所不同:
    • ln -s gp6-full-linux-demo-r11100.deb gp6.deb

1. 检查 deb 的架构和依赖关系

首先,我们在不安装 deb 的情况下检查它的依赖关系。

  • dpkg-deb -I gp6.deb向我们展示:

    新的 Debian 软件包,版本 2.0。
    大小 172147458 字节:控制档案=75020 字节。
     375 字节,10 行控制
    335109 字节,2770 行 md5sums
    软件包:GuitarPro6 版本:6.1.3 部分:非免费/音频 优先级:可选 架构:i386 依赖:libc6(>= 2.1.3)、libstdc++6、libasound2、libxml2、libxslt1.1、libportaudio0、libportaudio2、libglu1-mesa、gksu、libssl0.9.8 安装大小:222632 维护者:Arobas Music 描述:http://www.guitar-pro.com Guitar Pro 6,Linux 版本。

  • 所以这是一个 i386 应用程序,并且它的所有依赖项也将是 i386。

  • 第一件事要做的就是安装ia32-libsi386 兼容包,如果你还没有的话:
    • sudo apt-get install ia32-libs
  • 我们还将包的依赖项复制并粘贴到文本文件中,以供稍后使用。

2. 将 deb “提取” 到 tar 存档中并检查其内容

  • 让我们提炼现在将 deb 复制到 tar 存档,以便我们无需安装它就可以检查其内容:
    • dpkg-deb --fsys-tarfile gp6.deb > gp6.tar
  • 然后打开文件管理器 (Nautilus),gp6.tar右键单击并选择将其挂载为存档在存档安装器中打开您会看到它gp6.tar添加到左侧边栏的底部,旁边有一个弹出图标:

    在此处输入图片描述

  • 转到文件管理器的视图菜单,然后将侧边栏更改为查看选项,而不是地点

    在此处输入图片描述

  • 现在gp6.tar通过点击三角形展开侧边栏中的树;对每个级别重复此操作,直到你可以看到文件夹结构文件:

    在此处输入图片描述

  • 从结构上看,我们可以看到程序的文件分为两个位置:/opt/usr/share

    • 进入的任何东西/opt都是独立的,不会影响系统中的任何其他东西。
    • 我们看到/usr/share仅包含图标/位图,它们是无害的。

3. 如果安全,请通过提取 tar 文件来“安装”该程序

  • 返回终端,确保您位于包含下载的 deb/tar 文件的目录中。然后输入:

    sudo tar -C / -xvf gp6.tar
    
  • 这将在适当的位置提取程序文件,并显示文件名和进度。(示例输出

    • -C开关告诉tar执行此操作相对于根目录,而不是当前目录。

4. 找出缺少的依赖项ldd,安装它们,然后开始吧!

  • /opt/GuitarPro6在文件管理器中打开文件夹:

    在此处输入图片描述

    • lib-xxxx我们看到可执行文件名为 GuitarPro(带有菱形“齿轮”图标),并且文件夹中包含许多文件。
    • 对于纯二进制程序来说,这是正常的;它们尝试包含所需的特定库的版本,因为这些库可能无法从特定发行版的存储库中获得。
  • 除了这些包含的库和ia32-libs软件包之外,大多数 32 位依赖项也应该已经安装。我们不必盲目地安装我们在 deb 文件信息中看到的依赖项apt-get(这可能会导致问题),而是先弄清楚我们是否实际上缺少任何东西。

    • 返回终端,并使用以下命令切换到 GuitarPro 目录cd /opt/GuitarPro6

使用ldd

  • 输入ldd GuitarPro | grep found,输出将是libportaudio.so.2 => not found

    • ldd打印程序的依赖项(共享库)以及它们是否存在于系统中。这是 GuitarPro 的完整输出。
    • 为了让生活更轻松,我们只需通过 过滤掉不存在的那些grep found
  • 这里,只有libportaudio2缺少库。但是依赖项说库文件0(见步骤 1。)它是哪一个??

    • apt-cache search libportaudio让我们从终端搜索可用的版本。
    • 这告诉我们两个都 libportaudio2libportaudio0软件包都可用。让我们安装2首先,
      安装 libportaudio2:i386
    • :i386部分是很重要因为我们的程序是 32 位的。如果apt-get要求替换/删除libportaudio2和/或其他文件,那没关系,因为有些库不能同时安装在 32 位和 64 位版本中。
  • ldd GuitarPro6 | grep found让我们最后一次检查依赖关系:没有什么(这就是我们想要的!)

    • 如果你收到错误,./GuitarPro: /opt/GuitarPro6/./libz.so.1: version ZLIB_1.2.3.3 not found (required by /usr/lib/i386-linux-gnu/libxml2.so.2)这意味着 Guitar Pro使用错误版本的 libz,通过从 GuitarPro6 目录中删除 libz.so.1 文件来解决这个问题:
      sudo rm libz.so.1
      Guitar Pro 将恢复到系统的 libz 版本。
  • 退出终端并返回/opt/GuitarPro6文件管理器中的文件夹。双击 GuitarPro 然后...

    在此处输入图片描述

  • 通过从文件管理器中删除 tar 文件来清理下载文件夹。

5. 启动器快捷方式已添加

  • 由于软件包中已经包含一个GuitarPro6.desktop解压到的快捷方式/usr/share/applications,因此无需手动创建。它位于启动器中:

    在此处输入图片描述

答案2

我尝试了一些东西并且让它发挥作用!

  1. 我将“/opt/GuitarPro6”复制到了某个地方。

  2. 我确实sudo apt-get -f install删除了 Guitar Pro。

  3. 我将该文件夹复制回去/opt/GuitarPro6并替换了其中的所有内容。

  4. 我安装了更多软件包,如下所示:

    sudo apt-get install dconf-gsettings-backend python-levenshtein python-indicate libav-tools libstartup-notification0 libxmuu1 libavfilter-extra-2 libbabl-0.0-0 libgegl-0.0-0 libgconf2-4 python-vobject libgtk-3-0 libpam-cap python-utidylib libdconf0 python-iniparse python-xmpp libpam-gnome-keyring libxcb-util0 python-farstream
    
  5. 我下载了这张图片GuitarPro 图标并将其保存,/opt/GuitarPro6/icon.png这样我就可以拥有一张图像来创建我自己的.desktop文件。

  6. 我创建了一个.desktop文件sudo gedit

    #!/usr/bin/env xdg-open
    
    [Desktop Entry]
    Type=Application
    Name=Guitar Pro 6
    Comment=Guitar Pro 6
    Icon=/opt/GuitarPro6/icon.png
    Exec=sh /opt/GuitarPro6/gp-launcher.sh
    Terminal=false
    Categories=Audio
    

    我将该文件保存到/usr/share/applications名为 的文件中GuitarPro6.desktop

现在一切正常,我可以在仪表板上找到 Guitar Pro。

答案3

过去几天我也一直在为此苦苦挣扎。我发现最好的方法是使用 wine 下的 Windows 可执行文件。看起来更可靠。

答案4

我简单地在 LinuxMint 14 32 位下安装了 gp6,运行更新程序,并通过将 zlib.so1.2.27 复制到 /opt/GuitarPro、将其重命名为 zlib.so.1 来修复 zlib 问题,安装 gksu 及其依赖项,再次运行更新程序以使所有内容保持最新。之后,我通过 Dolphin 中的 fish://username@mymachineIP/opt 将我的 64 位 Linux 连接到 3s 位 Linux,并将整个 GuitarPro6 目录复制到 64 位 Linux 上的主目录,然后从那里复制到 /opt。有效。

相关内容