Linux

debian依赖 利用ar解决debian中常见的依赖问题

Debian作为一种社会化的工程,很多的人通过网络管理、维护着数量庞大的软件库,各种软件的升级很难作到同步,尤其在其维护者好多都是利用业余时间来进行相关的工作,各种软件和库文件的依赖就在所难免,同时好多的商业软件编译时针对的版本不同也会导致此类问题,像skype等,下面通过安装debian/sid中出现依赖问题的nvidia-glx文件实际操作一下如何解决类似的依赖问题。

我用的debian/sid中直接apt-get install nvidia-kernel-source nvidia-glx nvidia-kernel-common nvidia-settings出来的是1.0.7174,我们现在要装得是experimental里的1.0.7676

apt-get -t experimental install nvidia-kernel-source nvidia-glx nvidia-kernel-common nvidia-settings会出现依赖问题,无法安装,因为它依赖nvidia-kernel-1.0.7676

apt-cache show nvidia-kernel-source nvidia-glx nvidia-kernel-common nvidia-settings | grep pool会显示对应deb在服务器上所在的位置,开动lftp将它们拉下来,放到/tmp下面,下面主要解决nvidia-glx中的依赖问题,主要问题在它身上

cd /tmp

mkdir test

cd test

ar x ../nvidia-glx_1.0.7676-1_i386.deb

tar xzvf control.tar.gz 会解出来postinst preinst prerm shlibs conffiles control md5sums七个文件

vi control将里面Depends:行中导致依赖问题的nvidia-kernel-1.0.7676删掉,成下面这样:
Depends: xserver-common (>= 4.0.3), libc6 (>= 2.3.5-1), ....

再把control文件压回去:tar czf control.tar.gz postinst preinst prerm shlibs conffiles control md5sums

好了现在更新下nvidia-glx_1.0.7676-1_i386.deb中的control.tar.gz:

ar r ../nvidia-glx_1.0.7676-1_i386.deb control.tar.gz

安装下新的deb后就可以用apt-get了: dpkg -i nvidia-glx_1.0.7676-1_i386.deb && apt-get -t experimental install nvidia-kernel-source nvidia-kernel-common nvidia-settings

完了就可以利用module-assistant编译内核模块,使用3D驱动了

类似像skype依赖libqt3c2-mt问题,只要把deb文件里的control中的libqt3c2-mt改成sid中的libqt3-mt再压回deb文件就可以了

如此,debian/sid中的一般依赖问题都可解决的,只要不是相关的库文件差别太大的说,呵呵