如何在 64 位系统上安装 32 位专有 deb 而不会导致依赖性问题?

Jeg*_*ggy 15 64-bit apt proprietary multiarch software-installation

我知道 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
Run Code Online (Sandbox Code Playgroud)

即使在我收到该错误后,该程序也可以正常运行,并且更新和向系统添加 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).
Run Code Online (Sandbox Code Playgroud)

每当我写“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 ...
Run Code Online (Sandbox Code Playgroud)

现在 Guitar Pro 被删除了。
如何在安装 Guitar Pro 之后仍然可以安装其他软件?

ish*_*ish 30

警告:

GuitarPro DEB是危险的包装!

  • 在 64 位系统上,如果您apt-get -f install在尝试安装之后,apt-get想要删除以下系统关键软件包,这会破坏您的 Ubuntu 安装!

    下列软件包将被删除:
     gksu guitarpro6:I386 libgksu2-0 libpam可以-GNOME的钥匙圈 须藤Ubuntu的桌面
    ubuntu-minimal update-manager update-notifier xauth xinit  xorg
  • 须藤更新管理器??X!开发商在想什么?!它还让人apt-get认为安装了一堆 i386 软件包,而没有安装。这是完整的血腥粘贴箱。


安全地安装 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-libs的i386兼容包,如果您尚未:
    • sudo apt-get install ia32-libs
  • 我们还将包的依赖项复制并粘贴到文本文件中,以备后用。

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

  • 让我们提取的DEB到tar归档现在这样我们就可以不必安装它检查其内容:
    • dpkg-deb --fsys-tarfile gp6.deb > gp6.tar
  • 并打开文件管理器(Nautilus),gp6.tar通过右键单击并选择Open in Archive Mounter将其挂载为存档之后,您将看到gp6.tar左侧边栏的底部添加了一个弹出图标:

    在此处输入图片说明

  • 去为文件管理器视图菜单,并更改边栏的视图选项,而不是地方

    在此处输入图片说明

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

    在此处输入图片说明

  • 从结构中,我们看到程序的文件位于两个位置:/opt/usr/share

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

3.如果安全,通过解压tar文件“安装”程序

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

    须藤焦油 -C / -xvf gp6.tar
    
  • 这将在适当的位置提取程序文件,显示文件名和进度。(样本输出

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

4. 找出缺少的依赖项ldd,安装它们,然后摇滚!

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

    在此处输入图片说明

    • 我们看到可执行文件名为 GuitarPro(带有菱形“齿轮”图标),并且lib-xxxx文件夹中包含许多文件。
    • 这对于纯二进制程序来说是正常的;他们试图包含他们需要的特定库的版本,因为这些版本可能无法从特定发行版的存储库中获得。
  • 连同这些包含的库和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库。但是依赖项说libportaudio 0(见第 1 步。)它是什么?

    • 让我们apt-cache search libportaudio从终端搜索可用版本。
    • 这告诉我们, libportaudio2libportaudio0封装。让我们先安装2,用
      须藤 apt-get 安装 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 文件来解决此问题:
      须藤rm libz.so.1
      Guitar Pro 将回退到您系统的 libz 版本。
  • 退出终端并返回/opt/GuitarPro6文件管理器中的文件夹。双击 GuitarPro 并...

    在此处输入图片说明

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

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

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

    在此处输入图片说明