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:~# apt update
命中: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:~# aptitude  install mariadb-server
下列“新”软件包将被安装。         
  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
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐