如何在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 install
,apt-get
将需要删除以下系统关键软件包 ,这可能会破坏您的Ubuntu安装!以下包将被删除: gksu guitarpro6:i386 libgksu2-0 libpam-gnome-keyring sudo ubuntu-desktop ubuntu-minimal update-manager update-notifier xauth xinit xorgsudo ? 更新经理 ? 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
文件。 - 这对于仅二进制程序来说是正常的; 他们试图包含他们需要的特定库的版本,因为这些库可能无法从特定发行版的存储库中获得。
- 我们看到可执行文件名为GuitarPro(带有菱形 – “齿轮”图标),并且文件夹中还包含许多
-
除了这些包含的库和
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
可用的版本。 - 这告诉我们
libportaudio2
和libportaudio0
包都可用。 让我们首先安装2sudo 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/applications
的GuitarPro6.desktop
快捷方式,因此无需手动创建一个。 它坐在启动器中:
我尝试了一些东西并让它发挥作用!
-
我在某处复制了“/ opt / GuitarPro6”。
-
我做了
sudo apt-get -f install
来删除Guitar Pro。 -
我将文件夹复制回
/opt/GuitarPro6
并替换了那里的所有内容。 -
我按如下方式安装了更多包:
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
-
我下载了这个图像GuitarPro图标并将其保存在
/opt/GuitarPro6/icon.png
这样我就可以创建一个图像来创建自己的.desktop
文件。 -
我用
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