升级到8.10 intrepid过程中libc6依赖性死循环问题的解决

依然是采取从源升级的方式,不过却遇到了依赖性死循环:

fwolf@svr6:~$ sudo apt-get install
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:
  libc6: Depends: findutils (>= 4.4.0-2ubuntu2) but 4.2.28-2 is installed
  libc6-dev: Depends: libc6 (= 2.5-0ubuntu14) but 2.8~20080505-0ubuntu7 is installed
  libc6-i686: PreDepends: libc6 (= 2.5-0ubuntu14) but 2.8~20080505-0ubuntu7 is installed
E: Unmet dependencies. Try using -f.

使用-f参数也无济于事:

fwolf@svr6:~$ sudo apt-get install -f
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Correcting dependencies... Done
The following extra packages will be installed:
  findutils libc6-dev libc6-i686
Suggested packages:
  mlocate locate slocate glibc-doc manpages-dev
The following packages will be upgraded:
  findutils libc6-dev libc6-i686
3 upgraded, 0 newly installed, 0 to remove and 362 not upgraded.
5 not fully installed or removed.
Need to get 0B/5077kB of archives.
After unpacking 1561kB of additional disk space will be used.
Do you want to continue [Y/n]? y
E: Couldn't configure pre-depend libc6 for findutils, probably a dependency cycle.

看到没,libc6依赖findutils 4.4以上,而升级findutils又依赖libc6,所以陷入死循环,可以尝试这样解决,前提是相关的deb包都已经用apt下载到了本地cache里:

fwolf@svr6:~$ cd /var/cache/apt/archives
fwolf@svr6:/var/cache/apt/archives$ sudo dpkg --force-depends --install libc6_2.8~20080505-0ubuntu7_i386.deb findutils_4.4.0-2ubuntu3_i386.deb

强制直接安装这两个冤家包,然后是libc6相关的这两个重要包:

sudo aptitude install libc6-i686 libc6-dev

然后,再进行其它upgrade就都正常了。

参考

coreutils and debianutils dependency cycle on reinstall command

Vim的奇怪问题

把Ubuntu升级到了7.10 Gutsy,基本顺利,接着得寸进尺,想顺便把compiz启用试试,让我的LeadTek Gforce2 GTS也发一下飙,没想到彻底失败,提示没有Xgl,或者说没有开Composite,天,我这块卡不关掉Composite还无法启动glx呢:

# Add this line in xorg.conf
Section "Extensions"
Option "Composite" "Disable"
EndSection

抱着一线希望鼓捣半天,重启n次之后,放弃,卸载,开始把玩gaim的升级换代产品pidgin,不错的东东,不用开LumaQQ了,问题就是好友太多(尤其是不在线或隐身的)分组、聊天信息都没了,一个人也不认识了。pidgin的新配置记录在~/.purple目录下,原来的~/.gaim下的内容都拷贝过来了,logs和smiles也link到了这个新的目录下。在尝试把这么目录配置到unison同步配置文件当中时,发现刚才不知道折腾啥了,vim出了奇怪的问题:

Vim的奇怪问题

vim在编辑文件的时候,只要一用方向键,或者是jkhl键移动光标,屏幕内容就向上移动一行,下面多出一个空行,还没等挪动光标到要编辑的位置呢,文件内容已经乱得没法看了。

怀疑是compiz造成的效果,卸载它,未果,重开Xfce Session,也不行,又重启了n回,居然发现了一个让我啼笑皆非的原因。

把鼠标移动到xfce4-terminal窗口的边缘,当鼠标从指针变成其它状态,也就是改变窗口大小的时候,按住鼠标左键,terminal窗口的中央就会显示当前terminal的行、列数,我的大小是78×23,而默认窗口的大小是多少呢?是80×24。再来看vim默认的状态栏,也就是屏幕上显示的最后一行:12,1 Top,前面的数字是当前光标所在位置的行、列号,Top后面还有一空格;再看我那出了问题的terminal窗口,每次移动光标多出来的一行第一个字母都是p,明白了吧,这个p就是Top中的第三个字母,由于屏幕宽度不够,每次vi刷新屏幕显示的时候,一行显示不下,就给挤到第二行了。

terminal窗口宽度至少设置为79,就没有问题了,着实让我弱智了一把。

另外,找到两篇不错的compiz使用方法介绍,对kde或xfce用户尤其有用,英文:

[ubuntu]安装vmware时找不到c header files的小问题

很多人都是用xp作主系统,然后用vmware虚拟一个linux学习,我现在的做法却恰恰相反,我用ubuntu作主系统,然后虚拟一个xp用于工作 :)。

vmware下载和安装就不说了,安装完成之后,运行vmware-config.pl的时候,会有一步是询问内核的头文件在哪里:

What is the location of the directory of C header files that match your running kernel? [/usr/src/linux/include]

由于ubuntu 6.06 dapper的内核版本是,2.6.15,所以就没法找到,网上说这是vmware自己的问题,到http://ftp.cvut.cz/vmware/下载一个vmware-any-any-updatexxx.tar.gz装上,然后再次运行vmware-config.pl就能够找到正确的地址了:

What is the location of the directory of C header files that match your running kernel? [/lib/modules/2.6.15-22-386/build/include]

参考1参考2(这里还有关于安装鼠标的讨论),参考3

可怜我一开始没有安装linux-headers,而是傻傻的下载安装了一个linux-source-2.6,70多M,下载了1个多小时啊。。。 (注意安装的headers版本要和当前运行的一样,386和686版本要分清)

🙂

vmware 5.5.1 19175 linux 版的注册码: J3E6J-V6G4M-Y84DY-4YXQQ GC4K9-FMC0A-1A0FV-4YEX2

附上一张截图,哈哈。

在linux下运行vmware的截图

update @ 20060510: 我安装使用的xp是一个什么秋无痕告别2004什么的版本,里面有4种安装方式,自动/手动安装免激活版、自动/手动安装零售版,一开始选择两个手动安装的版本,一到同意完协议,“正在安装设备”的时候,就停住了,剩余37分钟,再也不前进了,后来偶然选了一个自动安装零售版的,居然就没事了。

update @ 2007-02-12

ubuntu升级到edgy之后,vmware又罢工了(另外一台机就没事),提示vmmon编译什么的错误,就像这样,解决方法为:到/usr/lib/vmware/modules/source下,新建一个脚本:

for foo in vmmon vmnet; do 
    tar xf $foo.tar
    perl -pi -e 's,-Werror,-DKBUILD_BASENAME=\\"\$\(DRIVER\)\\" \\\n\t-Werror,g' ${foo}-only/Makefile.kernel
    mv ${foo}.tar ${foo}.tar.vm
    tar cf ${foo}.tar ${foo}-only
done

赋予执行权限,执行,然后再vmware-config.pl就可以了。 参考一参考二(我手工改就不行,用脚本就可以了,怎么回事捏?)。

Update @ 2007-04-24

升级到feisty之后,内核升级到了2.6.20-15,vmware又找不到c header了,到这里再下载一个any-any补丁,运行后就可以了。

Update @ 2007-11-03

升级到ubuntu 7.10 Gutsy之后,也是需要安装这个补丁,补丁也升级了:http://knihovny.cvut.cz/ftp/pub/vmware/vmware-any-any-update113.tar.gz,参见Installing VMware Products on Unsupported Linux Distributions

Update @ 2008-06-23

升级到Ubuntu 8.04 Hardy之后,安装补丁http://blog.creonfx.com/temp/vmware-any-any-update-116.tgz,参见How-to Install VMware Player / Workstation on 2.6.24 Kernel,不过配置正常后运行出现错误:

/usr/lib/vmware/bin/vmware: /usr/lib/vmware/lib/libgcc_s.so.1/libgcc_s.so.1: version `GCC_3.4' not found (required by /usr/lib/libcairo.so.2)
/usr/lib/vmware/bin/vmware: /usr/lib/vmware/lib/libpng12.so.0/libpng12.so.0: no version information available (required by /usr/lib/libcairo.so.2)
/usr/lib/vmware/bin/vmware: /usr/lib/vmware/lib/libgcc_s.so.1/libgcc_s.so.1: version `GCC_4.2.0' not found (required by /usr/lib/libstdc++.so.6)

按照回复中的内容更改了几个so文件之后,错误更离谱了,无从下手,只好重新安装了个VMware Player 2.0.3.80004 For Linux,config时依然需要应用上面哪个any-any补丁,然后就能跑起来了。

后来安装VMware Workstation 6.5 Build 91182 Beta for Linux就顺利多了,一下就成功了,从官网上可以申请到30天试用的序列号。

vmware功能丰富但每次升级内核以后配置都很麻烦,virtualbox升级方便些但少一点功能,真的是很难选择呢。

参考