libstdc++ conflicts itself, perl, yast, git

Issue: 在 openSuSE 11, 12, 13的某些版本中,通过yast安装 git 工具包,会遇到类似问题:

Problem: solvable libstdc++6-4.8.1_20130909-3.2.1.i586 conflicts with libstdc++6 provided by itself

—-

Why do some packages conflict with themselves?
“Oneiric supports Multi-Arch, that is, allowing you to install packages of different architectures simultaneously (currently i386 and amd64 a.k.a. 32-bit and 64-bit). Some packages cannot be installed simultaneously (like libc6:i386 and libc6:amd64). aptitude cannot handle these cases and therefore thinks that it may be a good idea to remove those packages. It’s recommended to use apt-get now.”

—-

解决办法:

Package conflicting with itself?

>> You somehow need an upgraded zypp stack, which will ignore the self
>> conflict.
>
> Yeah, but it's kind of tough as the new zypp stack requires new libstdc++ 
> and a bunch of other things which I don't really want to force install.

Can't you just force-install libstdc++6-4.8.1_20130909-3.2.1.i586?

强制重新安装

libstdc++6-4.8.1_20130909-3.2.1.i586

shell> wget “ftp://bo.mirror.garr.it/pub/1/opensuse/distribution/13.1/repo/oss/suse/i586/libstdc++6-4.8.1_20130909-3.2.1.i586.rpm”
shell> rpm -ivh –nodeps –force libstdc++6-4.8.1_20130909-3.2.1.i586.rpm
然后再安装 perl相关的一些工具包
shell> zypper -v install –force-resolution yast2-perl-bindings

之后可能会碰到一些其他异常或者丢失,缺啥少啥补啥。

这一过程中,还可能遇到 yast 无法使用,或者
shell> perl -MCPAN -eshell
无法调用的情况,均是由于在安装过程中 libstdc++ 的版本问题遇到故障,可以在解决上来上面的问题之后,重新安装 perl 即可。

本质上,每个软件的版本都有与之同期的对应的版本相配合,跨时期的软件版本很难融合。这是本次,也是上次 apache 和 resin融合遇到的问题的共同特征。

 

This entry was posted in 服务器运维, 编程技术, 计算机技术. Bookmark the permalink.

发表评论

电子邮件地址不会被公开。 必填项已用*标注