01 软件依赖

按照软件的依赖关系,在很多地方都会遇到,如Ubuntu系统的使用,Centos服务器的使用,Docker镜像的制作等。

合法操作

以ubuntu软件安装为例。centos的Yum也是差不多的。

# 通过网络Repository源安装软件,过程中会自动把需要的依赖安装完成
sudo apt-get install xxx

# 安装本地的deb包,这样可以自动解决依赖问题
sudo apt-get install ./xxx

# 正常都成功,遇到失败,apt-get会提示使用下面的命令,多执行几次一般也成功了
sudo apt-get -f install

# 还是不行,那就手动下载deb包安装
sudo dpkg -i xxx.deb

国内Repository源镜像站点

  1. 清华大学
  2. 阿里巴巴
  3. 。。。

以清华大学开源软件镜像站点为例,https://mirrors.tuna.tsinghua.edu.cn/ubuntu/pool/ 这个路径下的 mainrestricteduniversemultiverse 这几个目录。

说明

  1. apt\apt-get\dpkg 都是命令行的。
  2. dpkg只进行依赖检测和软件安装,依赖修复的问题由apt\apt-get解决。
  3. aptitude是图形界面的,感觉还是命令行舒服。

黑科技

所有这些操作都只能把软件安装成功,不能保证正常运行。

  • --ignore-depends,忽略依赖直接装。
  • 解压安装包,删掉依赖字段重新打包。
  • 修改系统中记录的 /var/lib/dpkg/status 文件。
  • 无视安装失败,直接运行。
  • 直接拿到根目录,就地解压。
  • 改掉 dpkg 源码,直接不检测依赖。

--ignore-depends

dpkg --help

...
  --ignore-depends=<软件包>,...
                             忽略关于 <软件包> 的所有依赖关系。

...

指定要被忽略的安装包,安装不会有问题,能不能用另说。记住,并不是依赖不满足安装了就不能用,可能只是部分功能不行。

删除依赖字段

# 解压出打包之前的样子
dpkg-deb -R xxx.deb ./xxx

# 重新打包
dpkg-deb --build ./xxx xxx.deb

打开解压后的control文件,删除Depends后面的内容。

上次修改: 9 May 2020