修改源
查看依赖关系
- 编译依赖,
apt-rdepends --build-depends package_name
问题记录
apt-get -y build-dep linux 失败
log:
1 | root@c60c282d2d76:/# apt-get -y build-dep linux |
分析:debhelper 的版本满足不了编译 linux 的依赖。
- 通过
apt-rdepends --build-depends linux > linux.build-depends.txt
查看 linux 的编译依赖。linux 的编译依赖好多,要等很长时间。 - 通过
cat linux.build-depends.txt | grep debhelper
确认对 debhelper 的版本依赖发现有软件对其的版本依赖 >= 10,而 debian jessie 的默认 debhelper 版本为 9.20xxx,在 repo 中可以看到 debhelper 当前最新版本为 10.10.9。
1 | root@c60c282d2d76:/# cat linux.build-depends.txt | grep ">= 10" |
- 查看 debhelper 所有版本
通过 apt-cache madison debhelper
查看 debhelper 的所有版本
1 | root@c60c282d2d76:/# apt-cache madison debhelper |
尝试安装 debhelper 版本 10.2.5~bp08+1,发现有新的依赖关系问题:
1 | root@c60c282d2d76:/# apt-get install debhelper=10.2.5~bpo8+1 |
发现比较高版本的包都是来自 jessie-backports:
Backports: Backports are recompiled packages from testing (mostly) and unstable (in a few cases only, e.g. security updates), so they will run without new libraries (wherever it is possible) on a stable Debian distribution. It is recommended to pick out single backports which fit your needs, and not to use all backports available.
即,Backports 存放的软件为不稳定或仅用于测试目的的编译结果。
1 | root@c60c282d2d76:/# apt-cache madison dh-autoreconf |
OK,是时候把 Backports 的源踢掉了。
故障时的源,被 163 的 Debian镜像使用帮助误导了。
1 | deb http://mirrors.163.com/debian/ jessie main non-free contrib |
在调试的时候,一开始已注意到可能是源的问题,但是还是一遍一遍傻逼式地试不同的源,比如上面的 debian 官方中国源 ftp.cn.debian.org。
烂习惯。。。。。调东西还是乱试一通,没去找根本原因。。。
教训是一个下午没了,正常已经半个小时就可以发现根本原因了。
/boot 目录满了,无法增删内核 image
如果 /boot 目录满了,无法正常地 apt-get intall / remove / purge 等操作。解决方法如下,来自:
- https://gist.github.com/ipbastola/2760cfc28be62a5ee10036851c654600
- https://askubuntu.com/questions/585736/cant-clean-a-full-boot-because-of-unmet-dependencies, msa 的回答
解决步骤:
- sudo apt autoremove –purge
- sudo apt autoremove
- sudo apt-get -f install
异常 log:
1 | jeromesun@km:~$ df -h |