Linux的软件安装包采用依赖调用的方式进行开发,大大简化了应用开发者的维护难度与时间,总体开发效率变得更高。反过来,系统运维则会容易遇到很多意料之外的问题,所以建议部署服务还是以Docker容器比较简便!
举个栗子:
手机厂商做一个手机,你不可能要求它自己独立完成手机所有配件的研发与生产,它只需要去采购相关配件,然后再核心部分二次改造即可,就好像一个手机屏幕,可以直接去买一个,然后装上去就可以用了。同样的道理,Linux开发需要用到的功能已经有人写好了,那我在我的软件加上这个需求就行了,系统检测到我的需求就会自动帮我安装。扯远了。。。。。
在实践操作中,通过Linux安装软件的时候,尤其是使用离线安装的方式,往往会遇到缺少依赖、安装到一半、系统环境依赖错误等等千奇百怪的问题,使得在Linux离线安装软件也变成了一种技术活,下面的情况也许你们都遇到过:
依赖版本问题
下列软件包有未满足的依赖关系:
mariadb-server
: 依赖: mariadb-server-10.1
(>= 10.1.37-0+deb9u1
) 但是它将不会被安装
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。
下列软件包存在未满足的依赖关系:
libdbi-perl
: 依赖: perlapi-5.24.1 是虚拟软件包,提供者:
- perl-base
(5.24.1-3+deb9u5
), 但是 5.28.1-6 已安装
libfcgi-perl
: 依赖: perlapi-5.24.1 是虚拟软件包,提供者:
- perl-base
(5.24.1-3+deb9u5
), 但是 5.28.1-6 已安装
libterm-readkey-perl
: 依赖: perlapi-5.24.1 是虚拟软件包,提供者:
- perl-base
(5.24.1-3+deb9u5
), 但是 5.28.1-6 已安装
libdbd-mysql-perl
: 依赖: perlapi-5.24.1 是虚拟软件包,提供者:
- perl-base
(5.24.1-3+deb9u5
), 但是 5.28.1-6 已安装
libmariadb3
: 破坏: libmariadbclient18 但是 10.1.37-0+deb9u1 将被安装
这类问题建议先检查配置的源是否对应本Linux发行版,如果国内源不支持加速,那也不建议使用其他版本的源,例如最新版Debian11(相对本文编辑时间)系统不要去使用国内的Debian10的加速镜像。
解决办法:
换源
cat <<EOF
> /etc/apt/sources.list
deb https://mirrors.ustc.edu.cn/debian/ buster main contrib non-free
deb https://mirrors.ustc.edu.cn/debian/ buster-updates main contrib non-free
deb https://mirrors.ustc.edu.cn/debian/ buster-backports main contrib non-free
deb https://mirrors.ustc.edu.cn/debian-security/ buster/updates main contrib non-free
deb-src https://mirrors.ustc.edu.cn/debian/ buster main contrib non-free
deb-src https://mirrors.ustc.edu.cn/debian/ buster-updates main contrib non-free
deb-src https://mirrors.ustc.edu.cn/debian/ buster-backports main contrib non-free
deb-src https://mirrors.ustc.edu.cn/debian-security/ buster/updates main contrib non-free
EOF
更新源信息
apt update
root@ml:~
命中:1 http://uos-packages.deepin.com/printer eagle InRelease
获取:2 https://mirrors.ustc.edu.cn/debian buster InRelease
[122 kB
]
命中:3 https://professional-store-packages.chinauos.com/appstore eagle InRelease
获取:4 https://mirrors.ustc.edu.cn/debian buster-updates InRelease
[51.9 kB
]
获取:5 https://mirrors.ustc.edu.cn/debian buster-backports InRelease
[46.7 kB
]
获取:6 https://mirrors.ustc.edu.cn/debian-security buster/updates InRelease
[65.4 kB
]
获取:7 https://mirrors.ustc.edu.cn/debian buster/main Sources
[7,840 kB
]
获取:8 https://mirrors.ustc.edu.cn/debian buster/contrib Sources
[42.9 kB
]
获取:9 https://mirrors.ustc.edu.cn/debian buster/non-free Sources
[85.6 kB
]
获取:10 https://mirrors.ustc.edu.cn/debian buster/contrib i386 Packages
[46.4 kB
]
获取:11 https://mirrors.ustc.edu.cn/debian buster/contrib amd64 Packages
[50.5 kB
]
获取:12 https://mirrors.ustc.edu.cn/debian buster/non-free i386 Packages
[76.2 kB
]
获取:13 https://mirrors.ustc.edu.cn/debian buster/main amd64 Packages
[7,906 kB
]
获取:14 https://mirrors.ustc.edu.cn/debian buster/non-free amd64 Packages
[87.7 kB
]
获取:15 https://mirrors.ustc.edu.cn/debian buster/main i386 Packages
[7,864 kB
]
获取:16 https://mirrors.ustc.edu.cn/debian buster-updates/main Sources
[3,716 B
]
获取:17 https://mirrors.ustc.edu.cn/debian buster-updates/non-free Sources
[716 B
]
获取:18 https://mirrors.ustc.edu.cn/debian buster-updates/main i386 Packages
[7,864 B
]
获取:19 https://mirrors.ustc.edu.cn/debian buster-updates/main amd64 Packages
[7,868 B
]
获取:20 https://mirrors.ustc.edu.cn/debian buster-updates/non-free amd64 Packages
[604 B
]
获取:21 https://mirrors.ustc.edu.cn/debian buster-updates/non-free i386 Packages
[604 B
]
获取:22 https://mirrors.ustc.edu.cn/debian buster-backports/contrib Sources
[4,740 B
]
获取:23 https://mirrors.ustc.edu.cn/debian buster-backports/non-free Sources
[7,040 B
]
获取:24 https://mirrors.ustc.edu.cn/debian buster-backports/main Sources
[313 kB
]
获取:25 https://mirrors.ustc.edu.cn/debian buster-backports/contrib i386 Packages
[7,604 B
]
获取:26 https://mirrors.ustc.edu.cn/debian buster-backports/non-free amd64 Packages
[23.8 kB
]
获取:27 https://mirrors.ustc.edu.cn/debian buster-backports/contrib amd64 Packages
[8,000 B
]
获取:28 https://mirrors.ustc.edu.cn/debian buster-backports/main i386 Packages
[348 kB
]
获取:29 https://mirrors.ustc.edu.cn/debian buster-backports/non-free i386 Packages
[16.4 kB
]
获取:30 https://mirrors.ustc.edu.cn/debian buster-backports/main amd64 Packages
[351 kB
]
获取:31 https://mirrors.ustc.edu.cn/debian-security buster/updates/main Sources
[134 kB
]
获取:32 https://mirrors.ustc.edu.cn/debian-security buster/updates/non-free Sources
[692 B
]
获取:33 https://mirrors.ustc.edu.cn/debian-security buster/updates/non-free i386 Packages
[556 B
]
获取:34 https://mirrors.ustc.edu.cn/debian-security buster/updates/non-free amd64 Packages
[556 B
]
获取:35 https://mirrors.ustc.edu.cn/debian-security buster/updates/main amd64 Packages
[218 kB
]
获取:36 https://mirrors.ustc.edu.cn/debian-security buster/updates/main i386 Packages
[218 kB
]
已下载 26.0 MB,耗时 18秒
(1,412 kB/s
)
正在读取软件包列表
... 完成
正在分析软件包的依赖关系树
正在读取状态信息
... 完成
有 425 个软件包可以升级。请执行 ‘apt list --upgradable’ 来查看它们。
配置好对应的源之后,执行下面的命令进行安装(把mariadb-server换成你需要安装的软件)
aptitude install mariadb-server
安装记录:
root@ml:~
下列“新”软件包将被安装。
galera-3
{a
} libcgi-fast-perl
{a
} libcgi-pm-perl
{a
} libconfig-inifiles-perl
{a
} libdbd-mysql-perl
{a
} libdbi-perl
{a
} libfcgi-perl
{a
} libhtml-template-perl
{a
} libterm-readkey-perl
{a
}
mariadb-client-10.3
{a
} mariadb-client-core-10.3
{a
} mariadb-server mariadb-server-10.3
{a
} mariadb-server-core-10.3
{a
}
下列软件包将被升级:
mariadb-common
1 个软件包被升级,新安装 14 个,0 个将被删除, 同时 424 个将不升级。
需要获取 19.3 MB 的存档。解包后将要使用 162 MB。
您要继续吗?
[Y/n/?
] y
读取: 1 https://mirrors.ustc.edu.cn/debian buster/main amd64 mariadb-common all 1:10.3.23-0+deb10u1
[32.0 kB
]
读取: 2 https://mirrors.ustc.edu.cn/debian buster/main amd64 galera-3 amd64 25.3.25-2
[920 kB
]
读取: 3 https://mirrors.ustc.edu.cn/debian buster/main amd64 libdbi-perl amd64 1.642-1+b1
[775 kB
]
读取: 4 https://mirrors.ustc.edu.cn/debian buster/main amd64 libconfig-inifiles-perl all 3.000001-1
[51.9 kB
]
读取: 5 https://mirrors.ustc.edu.cn/debian buster/main amd64 mariadb-client-core-10.3 amd64 1:10.3.23-0+deb10u1
[5,752 kB
]
读取: 6 https://mirrors.ustc.edu.cn/debian buster/main amd64 mariadb-client-10.3 amd64 1:10.3.23-0+deb10u1
[1,139 kB
]
读取: 7 https://mirrors.ustc.edu.cn/debian buster/main amd64 mariadb-server-core-10.3 amd64 1:10.3.23-0+deb10u1
[5,929 kB
]
读取: 8 https://mirrors.ustc.edu.cn/debian buster/main amd64 mariadb-server-10.3 amd64 1:10.3.23-0+deb10u1
[4,199 kB
]
读取: 9 https://mirrors.ustc.edu.cn/debian buster/main amd64 libcgi-pm-perl all 4.40-1
[222 kB
]
读取: 10 https://mirrors.ustc.edu.cn/debian buster/main amd64 libfcgi-perl amd64 0.78-2+b3
[39.0 kB
]
读取: 11 https://mirrors.ustc.edu.cn/debian buster/main amd64 libcgi-fast-perl all 1:2.13-1
[11.4 kB
]
读取: 12 https://mirrors.ustc.edu.cn/debian buster/main amd64 libdbd-mysql-perl amd64 4.050-2
[121 kB
]
读取: 13 https://mirrors.ustc.edu.cn/debian buster/main amd64 libhtml-template-perl all 2.97-1
[66.0 kB
]
读取: 14 https://mirrors.ustc.edu.cn/debian buster/main amd64 libterm-readkey-perl amd64 2.38-1
[27.4 kB
]
读取: 15 https://mirrors.ustc.edu.cn/debian buster/main amd64 mariadb-server all 1:10.3.23-0+deb10u1
[31.0 kB
]
已下载 19.3 MB,耗时 41秒
(475 kB/s
)
正在预设定软件包
...
(正在读取数据库
... 系统当前共安装有 193328 个文件和目录。
)
准备解压
.../0-mariadb-common_1%3a10.3.23-0+deb10u1_all.deb
...
正在解压 mariadb-common
(1:10.3.23-0+deb10u1
) 并覆盖
(1:10.3.22-0+deb10u1
) ...
正在选中未选择的软件包 galera-3。
准备解压
.../1-galera-3_25.3.25-2_amd64.deb
...
正在解压 galera-3
(25.3.25-2
) ...
正在选中未选择的软件包 libdbi-perl:amd64。
准备解压
.../2-libdbi-perl_1.642-1+b1_amd64.deb
...
正在解压 libdbi-perl:amd64
(1.642-1+b1
) ...
正在选中未选择的软件包 libconfig-inifiles-perl。
准备解压
.../3-libconfig-inifiles-perl_3.000001-1_all.deb
...
正在解压 libconfig-inifiles-perl
(3.000001-1
) ...
正在选中未选择的软件包 mariadb-client-core-10.3。
准备解压
.../4-mariadb-client-core-10.3_1%3a10.3.23-0+deb10u1_amd64.deb
...
正在解压 mariadb-client-core-10.3
(1:10.3.23-0+deb10u1
) ...
正在选中未选择的软件包 mariadb-client-10.3。
准备解压
.../5-mariadb-client-10.3_1%3a10.3.23-0+deb10u1_amd64.deb
...
正在解压 mariadb-client-10.3
(1:10.3.23-0+deb10u1
) ...
正在选中未选择的软件包 mariadb-server-core-10.3。
准备解压
.../6-mariadb-server-core-10.3_1%3a10.3.23-0+deb10u1_amd64.deb
...
正在解压 mariadb-server-core-10.3
(1:10.3.23-0+deb10u1
) ...
正在设置 mariadb-common
(1:10.3.23-0+deb10u1
) ...
正在选中未选择的软件包 mariadb-server-10.3。
(正在读取数据库
... 系统当前共安装有 193652 个文件和目录。
)
准备解压
.../0-mariadb-server-10.3_1%3a10.3.23-0+deb10u1_amd64.deb
...
正在解压 mariadb-server-10.3
(1:10.3.23-0+deb10u1
) ...
正在选中未选择的软件包 libcgi-pm-perl。
准备解压
.../1-libcgi-pm-perl_4.40-1_all.deb
...
正在解压 libcgi-pm-perl
(4.40-1
) ...
正在选中未选择的软件包 libfcgi-perl。
准备解压
.../2-libfcgi-perl_0.78-2+b3_amd64.deb
...
正在解压 libfcgi-perl
(0.78-2+b3
) ...
正在选中未选择的软件包 libcgi-fast-perl。
准备解压
.../3-libcgi-fast-perl_1%3a2.13-1_all.deb
...
正在解压 libcgi-fast-perl
(1:2.13-1
) ...
正在选中未选择的软件包 libdbd-mysql-perl:amd64。
准备解压
.../4-libdbd-mysql-perl_4.050-2_amd64.deb
...
正在解压 libdbd-mysql-perl:amd64
(4.050-2
) ...
正在选中未选择的软件包 libhtml-template-perl。
准备解压
.../5-libhtml-template-perl_2.97-1_all.deb
...
正在解压 libhtml-template-perl
(2.97-1
) ...
正在选中未选择的软件包 libterm-readkey-perl。
准备解压
.../6-libterm-readkey-perl_2.38-1_amd64.deb
...
正在解压 libterm-readkey-perl
(2.38-1
) ...
正在选中未选择的软件包 mariadb-server。
准备解压
.../7-mariadb-server_1%3a10.3.23-0+deb10u1_all.deb
...
正在解压 mariadb-server
(1:10.3.23-0+deb10u1
) ...
正在设置 libconfig-inifiles-perl
(3.000001-1
) ...
正在设置 libcgi-pm-perl
(4.40-1
) ...
正在设置 libhtml-template-perl
(2.97-1
) ...
正在设置 mariadb-server-core-10.3
(1:10.3.23-0+deb10u1
) ...
正在设置 galera-3
(25.3.25-2
) ...
正在设置 mariadb-client-core-10.3
(1:10.3.23-0+deb10u1
) ...
正在设置 libfcgi-perl
(0.78-2+b3
) ...
正在设置 libterm-readkey-perl
(2.38-1
) ...
正在设置 libdbi-perl:amd64
(1.642-1+b1
) ...
正在设置 libcgi-fast-perl
(1:2.13-1
) ...
正在设置 mariadb-client-10.3
(1:10.3.23-0+deb10u1
) ...
正在设置 libdbd-mysql-perl:amd64
(4.050-2
) ...
正在设置 mariadb-server-10.3
(1:10.3.23-0+deb10u1
) ...
Created symlink /etc/systemd/system/mysql.service → /lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/mysqld.service → /lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /lib/systemd/system/mariadb.service.
正在设置 mariadb-server
(1:10.3.23-0+deb10u1
) ...
正在处理用于 man-db
(2.8.5-2
) 的触发器
...
正在处理用于 systemd
(241.6+c2-1+eagle
) 的触发器
...
当前状态:424
(-1
) 可升级。
root@ml:~
终极解决办法
apt upgrade --fix-missing