我正在尝试将 Certbot 从 0.10.2 更新到支持 Debian 9.1 中 ACME 2 和 Python 2.7.9 的某个版本。
apt-cache policy certbot
certbot:
Installed: 0.10.2-1
Candidate: 0.28.0-1~deb9u2
Version table:
0.28.0-1~deb9u2 500
500 http://deb.debian.org/debian oldstable/main amd64 Packages
500 http://deb.debian.org/debian oldstable-updates/main amd64 Packages
0.28.0-1~bpo9+1 100
100 http://ftp.debian.org/debian stretch-backports/main amd64 Packages
*** 0.10.2-1 100
100 /var/lib/dpkg/status
从这里,这就是我正在尝试的:
echo "deb http://ftp.debian.org/debian stretch-backports main">>/etc/apt/sources.list
apt-get update
apt-get install python-certbot-nginx -t stretch-backports
/etc/apt/sources.list
deb http://deb.debian.org/debian/ oldstable main contrib non-free
deb-src http://deb.debian.org/debian/ oldstable main contrib non-free
deb http://deb.debian.org/debian/ oldstable-updates main contrib non-free
deb-src http://deb.debian.org/debian/ oldstable-updates main contrib non-free
deb http://deb.debian.org/debian-security oldstable/updates main
deb-src http://deb.debian.org/debian-security oldstable/updates main
deb http://ftp.debian.org/debian stretch-backports main
deb-src http://ftp.debian.org/debian stretch-backports main
||/ Name Version Architecture Description
+++-===================================-======================-======================-============================================================================
ii libc6:amd64 2.24-11+deb9u1 amd64 GNU C Library: Shared libraries
错误:
apt-get install python-certbot-nginx -t stretch-backports
Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
libc-dev-bin : Depends: libc6 (> 2.28) but 2.24-11+deb9u1 is to be installed
Recommends: manpages-dev but it is not going to be installed
libc6-dev : Depends: libc6 (= 2.28-10) but 2.24-11+deb9u1 is to be installed
locales : Depends: libc-bin (> 2.28) but 2.24-11+deb9u1 is to be installed
python-certbot-nginx : Depends: python3-certbot-nginx but it is not going to be installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).
libc6:
Installed: 2.24-11+deb9u1
Candidate: 2.24-11+deb9u4
Version table:
2.24-11+deb9u4 500
500 http://deb.debian.org/debian oldstable/main amd64 Packages
*** 2.24-11+deb9u1 500
500 http://deb.debian.org/debian-security oldstable/updates/main amd64 Packages
100 /var/lib/dpkg/status
libc6-dev:
Installed: 2.28-10
Candidate: 2.28-10
Version table:
*** 2.28-10 100
100 /var/lib/dpkg/status
2.24-11+deb9u4 500
500 http://deb.debian.org/debian oldstable/main amd64 Packages
2.24-11+deb9u1 500
500 http://deb.debian.org/debian-security oldstable/updates/main amd64 Packages
locales:
Installed: 2.28-10
Candidate: 2.28-10
Version table:
*** 2.28-10 100
100 /var/lib/dpkg/status
2.24-11+deb9u4 500
500 http://deb.debian.org/debian oldstable/main amd64 Packages
2.24-11+deb9u1 500
500 http://deb.debian.org/debian-security oldstable/updates/main amd64 Packages
libc-dev-bin:
Installed: 2.28-10
Candidate: 2.28-10
Version table:
*** 2.28-10 100
100 /var/lib/dpkg/status
2.24-11+deb9u4 500
500 http://deb.debian.org/debian oldstable/main amd64 Packages
2.24-11+deb9u1 500
500 http://deb.debian.org/debian-security oldstable/updates/main amd64 Packages
有什么想法吗?这是一个生产服务器。
编辑:
因此显然我在 Debian 9 中安装了一些来自 Debian 10 的软件包。由于我无法使用 apt 做任何事情,因此我正在尝试使用 aptitude 解决依赖关系。
(venv)root@deb64:/home/x/# aptitude -V -s install libc6-dev=2.24-11+deb9u4
The following packages will be DOWNGRADED:
libc6-dev{b} [2.28-10 -> 2.24-11+deb9u4]
The following packages will be REMOVED:
libc-dev-bin{u} [2.28-10]
The following packages will be upgraded:
libc6 [2.24-11+deb9u1 -> 2.24-11+deb9u4] linux-libc-dev [4.9.30-2+deb9u5 -> 4.9.210-1]
The following partially installed packages will be configured:
libc-l10n locales{b} man-db
2 packages upgraded, 0 newly installed, 1 downgraded, 1 to remove and 235 not upgraded.
Need to get 6,539 kB of archives. After unpacking 3,561 kB will be freed.
The following packages have unmet dependencies:
libc6-dev : Depends: libc-dev-bin (= 2.24-11+deb9u4) but it is not going to be installed
locales : Depends: libc-bin (> 2.28) but 2.24-11+deb9u1 is installed and it is kept back
The following actions will resolve these dependencies:
Remove the following packages:
1) locales [2.28-10 (now)]
2) task-english [3.39 (now, oldstable)]
Install the following packages:
3) locales-all [2.24-11+deb9u4 (oldstable)]
Upgrade the following packages:
4) postgresql-9.4 [9.4.13-0+deb8u1 (now) -> 9.4.26-2.pgdg90+1 (stretch-pgdg)]
5) postgresql-9.6 [9.6.4-0+deb9u1 (now) -> 9.6.18-1.pgdg90+1 (stretch-pgdg)]
6) postgresql-contrib-9.4 [9.4.13-0+deb8u1 (now) -> 9.4.26-2.pgdg90+1 (stretch-pgdg)]
7) postgresql-contrib-9.6 [9.6.4-0+deb9u1 (now) -> 9.6.18-1.pgdg90+1 (stretch-pgdg)]
Downgrade the following packages:
8) libc-dev-bin [2.28-10 (now) -> 2.24-11+deb9u4 (oldstable)]
Accept this solution? [Y/n/q/?] q
如果我接受这个解决方案,对系统来说是否安全?
ii libc6:amd64 2.24-11+deb9u1 amd64 GNU C Library: Shared libraries
iU libc6-dev:amd64 2.28-10 amd64 GNU C Library: Development Libraries and Header Files
答案1
我会不建议混合和匹配适用于发行版不同主要版本的软件包因为有时会引入依赖项,从而破坏整体稳定性。如果可能的话,我会在软件包源未混合的其他地方“重建”服务器,因为 libc 是需要更改的主要内容...
正如其他人所建议的那样,您是否可以在类似 docker 的东西中运行您的服务,以便每个服务都可以拥有所需的环境而不会污染主机的环境?这样,如果事情出现问题,您可以拆除容器并构建一个新的...
TLDR;我很担心你的服务器,因为听起来你已经“越界了”。
答案2
最终得到了解决方案:
apt install libc6/stretch libc6-dev/stretch libc-dev-bin/stretch libc-bin/stretch locales/stretch linux-libc-dev/stretch
另一个用户也遇到了同样的问题,幸运的是有人找到了解决方案这里。
答案3
您的配置的第一个视图看起来不错:
- 你正在运行 Debian 9
stretch
oldstable
目前指向stretch
所有列出的配置都显示了应协同工作的值。由于/var/lib/dpkg/status
列出了一些比列出的版本更新的软件包版本,因此必须假设在某个时候存在:
- 配置中列出的其他存储库
- 已手动安装软件包
正如libc6
所涉及,每个步骤都需要谨慎/注意。如果此包损坏/被移除,系统将处于“无法运行”状态。
我个人建议坚持使用一种工具来解决这种情况,并且只使用apt
一种工具dpkg
。
apt-get install -f
建议做什么?- 使用 likely删除该
python-certbot-nginx
包dpkg
将恢复apt
功能。 - 一旦
apt
再次运行,就需要至少降级libc6-dev
和libc6-dev-bin
,并且理想情况下还要降级从“其他”存储库中提取的所有其他软件包。
清除此情况后,可以python-certbot-nginx
通过执行以下操作来手动构建包的反向移植:
deb-src
为 Debian 10 和添加条目update
。apt-get build-dep python-certbot-nginx
这将安装 certbot 所需的所有构建依赖项apt-get source python-certbot-nginx -b
从 Debian 10 获取源包,并尝试使用先前安装的 Debian 9 依赖项来构建它.deb
使用安装结果文件dpkg