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


15

我知道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,之后仍然能够安装其他软件?

Answers:


30

警告:

GuitarPro DEB是危险的包装!

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

    将删除以下软件包:
     gksu guitarpro6:i386 libgksu2-0 libpam-gnome-keyring  sudo ubuntu-desktop
    ubuntu最小更新管理器更新通知程序xauth xinit  xorg
  • 须藤更新管理X!开发人员在想什么?它还使人们apt-get认为一堆i386软件包都已经安装了。这是完整的gory 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音乐 说明: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通过右键单击并选择“ 在Archive Mounter中打开”将其安装为存档之后,您会看到gp6.tar左侧边栏添加到底部,旁边是弹出图标:

    在此处输入图片说明

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

    在此处输入图片说明

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

    在此处输入图片说明

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

    • 涉及的所有内容/opt都是自包含的,不会影响系统上的其他任何内容。
    • 我们看到其中/usr/share仅包含无害的图标/位图。

3.如果安全,请解压缩tar文件来“安装”程序

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

    须藤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 install 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无需手动创建一个。它位于启动器中:

    在此处输入图片说明


是的,一切都很好,除非我上次使用ldd GuitarPro6。grep发现它给了我一个响应:./GuitarPro:/opt/GuitarPro6/./libz.so.1:找不到版本'ZLIB_1.2.3.3'(/ usr / lib / i386-linux-gnu / libxml2要求.so.2)
Shahe Tajiryan 2012年

我尝试将其安装在另一台计算机(64.12.10 64位)上,遇到另一个错误,此错误得以解决:bit.ly/X7nvJ5。如果有人遇到问题,只想在这里分享
Jeggy

真是一个了不起的答案。这在Ubuntu 14.10 64位上完美运行。我希望我能给予好评不止一次......仅供参考,我也不得不这样做sudo apt-get install libssl0.9.8:i386,除了libportaudio2:i386
friederbluemle

它在14.04中完美运行
caisara 2015年

1

我尝试了一些东西并使其起作用!

  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。


1
那是一个可怕的解决方案。
tgm4883 2012年

1
有什么更好的解决方案?我已经尝试了所有其他答案。你知道更好的吗?而且这个实际上很好用。
Jeggy 2012年

您已经安装了Guitar Pro的所有依赖项?
tgm4883 2012年

好吧,现在我做到了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。而且效果也一样。
Jeggy 2012年

将来,您不应该跑步sudo gedit。您应该使用gksu geditgksudo gedit代替。当应用程序具有每个用户的配置文件时,像root使用Plain 一样运行图形程序sudo可能会使非root用户混淆这些程序
伊利亚·卡根

1

在过去的几天里,我也一直在为此苦苦挣扎。我发现最好的方法是在wine下使用Windows可执行文件。似乎更加扎实。


0

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

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

apt-get install package-name

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


0

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


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.