如何在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并且之后仍能安装其他软件?

警告:

GuitarPro deb是危险的包装!

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

     以下包将被删除:
     gksu guitarpro6:i386 libgksu2-0 libpam-gnome-keyring sudo ubuntu-desktop
     ubuntu-minimal update-manager update-notifier xauth xinit xorg 
  • sudo更新经理X! 开发人员在想什么?! 它也让apt-get认为一堆i386软件包都没有安装。 这是完整的血腥膏。


安全地安装GuitarPro没有apt-get想要删除它

  • 我相信上面的行为来自deb对gksu:i386的愚蠢依赖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音乐 说明: 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),右键单击并选择在Archive Mounter中打开,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文件夹:

    在此处输入图像描述

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

    • 返回终端,使用cd /opt/GuitarPro6切换到GuitarPro目录

使用ldd

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

    • ldd打印程序的依赖项(共享库),以及它们是否存在于系统上。 这就是GuitarPro的完整输出。
    • 为了让生活更轻松,我们只需通过grep found过滤那些不存在的那些。
  • 这里只缺少libportaudio2库。 但依赖关系表示libportaudio 0 (见第1步。)这是什么?

    • 让我们从终端使用apt-cache search libportaudio可用的版本。
    • 这告诉我们libportaudio2libportaudio0包都可用。 让我们首先安装2
        sudo apt-get install libportaudio2 :i386 
    • :i386部分非常重要 ,因为我们的程序是32位的。 如果apt-get请求替换/删除libportaudio2和/或其他文件,那没关系,因为某些库不能同时安装在32位和64位版本中。
  • 让我们最后一次仔细检查依赖关系: ldd GuitarPro6 | grep found 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文件来清理Download文件夹。

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

  • 由于该软件包已包含一个提取到/usr/share/applicationsGuitarPro6.desktop快捷方式,因此无需手动创建一个。 它坐在启动器中:

    在此处输入图像描述

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

  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. 我用sudo gedit创建了一个.desktop文件:

     #!/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 

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

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

在过去的几天里,我一直在努力解决这个问题。 我发现最好的方法是使用wine下的Windows可执行文件。 似乎更加坚实。

要回答你的问题,要停止apt-get -f install以删除软件,你需要添加--no-remove到你运行的命令。 如果要删除某些内容并且不会删除您的软件,这将立即中止apt-get运行。

但是,您可能正在寻找的是使系统正常运行的方法,同时还安装了该软件。 您需要做的是查看强制使用dpkg安装软件包时的输出,并查看其失败的原因,然后使用

apt-get install package-name

在你的情况下,它是gksu(特别是gksu)。 现在您可能会发现,当您尝试安装gksu时,它还具有需要安装的依赖项。 由于您强制执行32位软件包安装,因此需要使用上面的相同命令手动安装这些依赖项。

我只是在LinuxMint 14 32-Bit下安装gp6,运行updater并通过将zlib.so1.2.27复制到/ opt / GuitarPro,将其重命名为zlib.so.1,安装gksu及其依赖项,再次运行更新程序来修复zlib问题使所有最新。 然后我将我的64位Linux连接到3s-Bit Linux,通过fish:// username @ mymachineIP / opt in Dolphin并将整个GuitarPro6目录复制到我在64位Linux上的主目录,然后从那里复制到/ opt。 作品。

试试这个:

从http://www6.guitar-pro.com/en/index.php?pg=下载.deb文件,但不要安装它。

下载并安装getlibs然后:

 sudo apt-get install libportaudio0 getlibs -l libportaudio.so.2 dpkg -i –force-all /path/to/GuitarPro6Demo2.deb 

最后,使用(忽略错误)启动它:

 /opt/GuitarPro6/gp-launcher.sh