Linux-软件包安装

背景

全文针对Linux系统下软件包的更新、安装、升级做简要叙述。本文环境是Ubuntu 20.10,它基于dpkg,如果使用的是CentOS,则不适用。

内容

在Linux系统中,当我们想要查看某一个软件的相关信息,则可以通过apt命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
apt show [包名]

# 执行后,可获得如下结果:
Package: vim
Version: 2:8.1.2269-1ubuntu5
Priority: optional
Section: editors
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 3,111 kB
Provides: editor
Depends: vim-common (= 2:8.1.2269-1ubuntu5), vim-runtime (= 2:8.1.2269-1ubuntu5), libacl1 (>= 2.2.23), libc6 (>= 2.29), libcanberra0 (>= 0.2), libgpm2 (>= 1.20.7), libpython3.8 (>= 3.8.2), libselinux1 (>= 1.32), libtinfo6 (>= 6)
Suggests: ctags, vim-doc, vim-scripts
Homepage: https://www.vim.org/
Task: server, cloud-image, lubuntu-desktop
Download-Size: 1,238 kB
APT-Manual-Installed: yes
APT-Sources: http://mirrors.tencentyun.com/ubuntu focal/main amd64 Packages
Description: Vi IMproved - enhanced vi editor
Vim is an almost compatible version of the UNIX editor Vi...

如果需要查看与该软件相关的文件/目录,则可以使用dpkg

1
2
# -L:查询与软件相关的目录
dpkg -L [包名]

同理,也可以通过dpkg查询到与指定目录相关的软件

1
2
# --search:查询与路径相关的软件
dpkg --search [路径]

而如果我们想要安装某一类软件,但是不知道具体的名称,则可以通过apt搜索一下

1
apt search [包名]

安装软件的话:

1
2
# 直接安装,则会安装最新的包
apt install [包]

如果对系统的所有软件进行升级,则:

1
2
3
4
5
6
7
8
9
10
11
# 对比仓库更新源信息
apt update

# 升级软件,这个方法在遇到环境被多方依赖产生冲突,或是新软件与现有软件存在冲突的时候,就会拒绝升级,安全
apt upgrade

# 升级软件,并且在升级软件的时候可根据需要直接删除已安装的软件包,慎用!
apt full-upgrade

# 升级软件,当遇到环境依赖发生变化时,upgrade会拒绝升级,而dist-upgrade会安装新的环境,并且升级
apt dist-upgrade

如果需要卸载软件,则:

1
2
3
4
5
# 仅仅只删除软件,但是保留相关的配置文件和数据信息
apt remove [软件名]

# 彻底删除软件及其相关的配置文件和数据
apt purge [软件名]

如果查看已经安装的包

1
apt list --installed

通过apt安装的软件都是从linux仓库下载的,这个仓库对应的配置文件是:/etc/apt/sources.list,如果需要添加新的仓库连接,则直接编辑该软件进行添加即可,此处解释一下该文件内容:

1
2
3
4
5
6
# 遇到的格式也就这两种
deb http://mirrors.tencentyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.tencentyun.com/ubuntu/ focal-security main restricted universe multiverse

# deb开头的表示这是已编译程序的源
# deb-src开头的表示这是源代码的源

上面的方式是通过仓库进行安装的,都是别人弄好的,而有的软件仓库并没有,比如一些开源的,对于这类软件,则需要我们通过源码安装。以nginx为例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 拉取源码
git clone [nginx连接]

# 检查环境,查看环境是否支持
./configure

# 编译,将源码编译为程序
make

# 检查编译后的程序是否可以在当前系统环境下运行
make test

# 将程序安装到本机
make install