简介
在Linux上,安装软件的方式一般有几种:系统包管理器安装、源码编译、二进制包,还有现在桌面系统用比较多的Snap、AppImage、Flatpak等。
Linux包管理
DPKG
dpkg是Debian系的包管理系统,包后缀名是.deb。
apt命令可以快速安装dpkg包,解决包与包的依赖关系。
常用命令:
- # 从软件源同步最新的软件信息并缓存到本地
- apt update
- # 安装指定的包,并同时安装其依赖的其他包。
- apt install [package]
- # 更新软件版本
- apt upgrade
- # 查找软件,没有添加参数就是展示所有的软件包,加关键字就是搜索指定的包
- apt list zlib*
- # 列出已经安装的软件版本
- apt list --installed
- # 关键字搜索软件的名称和描述
- apt search zlib*
- # 卸载包,但是配置文件还是会保存着
- apt remove [package]
- # 卸载包,并删除配置文件
- apt purge [package]
- # 卸载因安装软件自动安装的依赖
- apt autoremove
- # 删除所有已下载的软件包
- apt clean
- # 类似clean,但删除的是过期的包(即已不能下载或者是无用的包)
- apt autoclean
RPM
RPM是红帽系的包管理系统,包后缀名是.rpm。
yum就是类似apt一样的前端工具,可以很好地解决包与包之间的依赖关系。
dnf是yum的升级版本,是下一代的yum。dnf与yum的参数基本一致。
常用命令:
- # 安装软件,-y 表示直接安装不询问
- yum -y install nginx
- # 重新安装
- yum reinstall nginx
- # 查找软件
- yum list nginx
- # 查看包组(后面不加组名,就会列出所有的组)
- yum grouplist
- #根据关键字查找
- yum search nginx
- #根据文件路径查找包名,如果不知道文件具体路径也可以用通配符进行匹配
- yum provides /usr/bin/vim
- yum provides */vim
- #检查更新
- yum check-update
- # 更新软件,如果不执行包名就是更新所有的包
- yum -y update
- #如果不更新指定的包可以使用-x参数
- yum -y update -x nginx
- # 卸载
- yum remove nginx
- # 卸载并删除配置
- yum erase nginx
- #更新索引,可以加快查找依赖包的速度
- yum makecache
Pacman
Pacman是Arch系的包管理系统,新版本包后缀名是.pkg.tar.zst,之前的版本是.pkg.tar.xz。
常用命令:
- # 更新系统
- pacman -Syu
- # 将本地的包数据库与远程的仓库进行了同步
- pacman -Sy
- pacman -Su
- # 安装包
- pacman -S [package]
- # 更新仓库并安装包
- pacman -Sy [package]
- # 更新本地包,一般用于降级,如果是url会自动去下载
- pacman -U /var/cache/pacman/pkg/yay-10.1.2-1-x86_64.pkg.tar.zst
- # 只删除包,保留其全部已经安装的依赖关系
- pacman -R [package]
- # 在删除包的同时,删除其所有没有被其他已安装软件包使用的依赖关系
- pacman -Rs [package]
- #在删除包的同时,删除所有依赖这个软件包的程序
- pacman -Rsc [package]
- # ]在删除包时不检查依赖
- pacman -Rd [package
- #在仓库中搜索含关键字的包
- pacman -Ss 关键字
- # 搜索已安装的包
- pacman -Qs 关键字
- #查看有关包的详尽信息
- pacman -Qi 包名
- #列出该包的文件
- pacman -Ql 包名
- #只下载包,不安装
- pacman -Sw 包名
- #清理未安装的包文件,包文件位于 /var/cache/pacman/pkg/ 目录
- pacman -Sc
- #清理所有的缓存文件
- pacman -Scc
apk
Alpine使用apk进行包管理,通过apk –help命令查看完整的包管理命令。
常用命令:
- # 从远程镜像源中更新本地镜像源索引
- apk update:
- # 安装包
- apk add openssh openntp vim
- apk add --no-cache mysql-client
- apk add docker --update-cache --repository http://mirrors.ustc.edu.cn/alpine/v3.4/main/ --allow-untrusted
- #安装指定版本软件包
- apk add asterisk=1.6.0.21-r0
- apk add 'asterisk<1.6.1'
- apk add 'asterisk>1.6.1'
- # 卸载并删除
- apk del openssh openntp vim
- #升级软件
- apk upgrade
- #指定升级部分软件包
- apk add --upgrade busybox
- #查找所以可用软件包
- apk search
- #查找所以可用软件包及其描述内容
- apk search -v
- #通过软件包名称查找软件包
- apk search -v 'nginx*'
- #通过描述文件查找特定的软件包
- apk search -v -d 'docker'
- #列出所有已安装的软件包
- apk info
- #显示完整的软件包信息
- apk info -a zlib
- #显示指定文件属于的包
- apk info --who-owns /sbin/lbu
其他管理器
还有其他的包管理器,只是我没用过。
Zypper 是openSUSE包管理器。 Portage是Gentoo包管理器。