您的位置:首页 > 运维架构

ubuntu-14.04-desktop-amd64 安装 Beyond Compare,ia32-libs

2014-12-15 14:40 302 查看
以前都是安装 32 位的 Ubuntu,这次想开始全新的 64 位时代了,所以安装了 64 位的 Ubuntu 14.04。不过安装完系统后,安装一些软件时发现库或者软件包依赖的问题。于是就各种搜索找解决办法,最终算是把问题都解决了,所以写篇文章总结一下在 64 位系统下安装 32 位软件以及解决 deb 包依赖的一些方法。

首先,要在 64 位系统下安装 32 位软件需要有一些基本库(32位)的支持,例如:libc6:i386 等。默认情况下,64 位的 Ubuntu 使用软件中心或者新立得等工具安装的都是 64 位的库或者软件,所以要想安装 32 位的库或者软件需要进行一些必要的设置来使系统支持 i386 架构的软件:

1 打开终端,使用 dpkg 命令(dpkg --help 查看帮助)进行架构的添加:

dpkg --remove-architecture i386 // 移除对 i386 架构的支持

dpkg --add-architecture i386 // 添加对 i386 架构的支持

2 安装基础的 32 位库:

在终端中输入命令(使用软件包管理工具也可以):

sudo apt-get install gcc-multilib

3 下载 Beyond Compare(deb包),安装时会报缺少库 ia32-libs 的错误,所以需要先完成 ia32-libs 的安装,

虽然我下载的就是 amd64 版本的软件,但还是会依赖 ia32-libs,可能是 64 位不完全,呵呵;

4 安装 ia32-libs(下载地址: http://pkgs.org/):
sudo dpkg -i ia32-libs_20140131_amd64.deb

执行上面的命令后发现还是软件包依赖关系不满足,缺少以下软件包(我的电脑是这几个):

lib32z1

lib32ncurses5

lib32asound2

lib32v4l-0

ps:上面命令执行完后虽然安装是失败的,但是会造成其他软件包安装时出问题,最好清理掉:

sudo dpkg -r ia32-libs

其中前两个可以直接在新立得软件包管理器中找到,而另外两个却没有!

继续从 http://pkgs.org/ 搜索下载(amd64的)。

在这里不得不说一下,这个网站真是不错,有超多的软件包,rpm和deb的都有!

好不容易下载完了,在安装的时候还是遇到了老问题:软件包依赖关系!

lib32asound2 依赖的软件包是 libasound2 (= 1.0.25-3ubuntu3.1);

lib32v4l-0 依赖的软件包是 libv4l-0 (= 0.8.8-3);

就是说前面 32 位的软件包又依赖后面 64 位的软件包,通过新立得搜索发现这两个 64 位的软件包都已经安装了,只是版本太高了!而两个 32 位的软件包都是依赖特定的版本(=)。

执行命令:sudo apt-get install lib32bz2-1.0 lib32ncurses5 lib32z1 lib32tinfo5

这时候我首先想通过强制安装试一下,就是先忽略依赖关系:

我用的是忽略依赖版本,其他选项使用命令查看:dpkg --force-help

sudo dpkg -i --force-depends-version lib32asound2_1.0.25-3ubuntu3.1_amd64.deb

这样确实是可以安装上的,但是使用新立得管理时提示有破损的软件包,这样可能导致其他软件包安装出问题,看来这样强制安装的方法是不可取的,只能寻找其他办法了!

既然已经安装了高版本,并且在高版本的依赖关系里写明了替代之前的版本,那么库内部的实现应该是兼容的。所以考虑尝试修改deb软件包。

开始想直接通过归档管理器提取deb包中 DEBIAN 下的 control 文件,通过 vi 或者 gedit 修改后,再替换掉原来的。但是无法通过归档管理器向deb包中添加文件,看来需要使用deb打包工具了。

搜索一番后发现如果只是进行简单修改再重新打包,那么使用 dpkg-deb 命令就可以了。

其他关于deb打包的知识:http://www.startos.com/ubuntu/tips/2010122417734.html

修改下载的deb包,将deb包中 DEBIAN 下的 control 文件中关于依赖的字段中的 = 改为 >=:

dpkg-deb --help // 查看命令帮助

1 解压缩 deb 包中的文件:

dpkg-deb -x lib32asound2_1.0.25-3ubuntu3.1_amd64.deb deb;

2 解压缩 deb 包中的控制信息:

cd deb

dpkg-deb -e ../lib32asound2_1.0.25-3ubuntu3.1_amd64.deb

此时在 deb 目录下应该有两个目录:DEBIAN 和 usr

3 修改 DEBIAN/control 文件:

原来:Depends: libasound2 (= 1.0.25-3ubuntu3.1), libc6-i386 (>= 2.7)

改为:Depends: libasound2 (>= 1.0.25-3ubuntu3.1), libc6-i386 (>= 2.7)

这样其实就可以了,当然高兴的话把软件包的版本也改一下,呵呵:

原来:Version: 1.0.25-3ubuntu3.1

改为:Version: 1.0.25-3ubuntu3.2(自定义)

4 重新打包:

切换到 deb 目录的上一级目录下,执行命令(后面软件包名自定义):

dpkg-deb -b deb lib32asound2_1.0.25-3ubuntu3.2_amd64.deb

出现一个小的警告后,新的 deb 包就打好了!

现在再进行新 deb 包的安装就没有问题了:

sudo dpkg -i lib32asound2_1.0.25-3ubuntu3.2_amd64.deb

另外一个软件包 lib32v4l-0 也是一样的步骤,将相应的 = 改为 >= 重新打包安装就可以了!

最后再次运行上面的命令完成 ia32-libs 的安装:

sudo dpkg -i ia32-libs_20140131_amd64.deb

5 终于进入正题了:安装 Beyond Compare (程序员必备)

ia32-libs 安装好后,一条命令就搞定了:

sudo dpkg -i ia32-libs_20140131_amd64.deb

安装好后启动 bcompare,然后完成注册就行了!

--------------------------------------------------------------------------------------------------------------------------

附件:Beyond Compare 和 ia32-libs(内含注册码,ia32-libs 目录下 original 中的是未修改的)

bcompare:http://pan.baidu.com/s/1c0kXh0c

ia32-libs:http://pan.baidu.com/s/1jGDRk0I

博客来源:/article/10138750.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: