1个软件包可能会包含n个二进制(命令),所以软件包名和二进制名并不一定一样,如:net-tools 是软件包名,其中包含了可执行文件 ifconfig 。
起初只有dpkg工具,用于管理软件包,但是dpkg不能自动解决软件的依赖问题,所以后来有了apt命令。apt在dpkg的基础上,引入了在线软件仓库,可以通过配置软件源选择不同的软件仓库,并且apt可以自动解析依赖和安装依赖。
因此在安装deb包时,请使用apt命令而不是dpkg命令。
添加/更新软件源
# 添加软件源,主源
sudo vim /etc/apt/sources.list
# 添加软件源,扩展源
# sudo vim /etc/apt/sources.list.d/
# 更新软件源
sudo apt update
安装软件包
# 安装软件源中的包
sudo apt install <软件包名>
# 安装本地包
sudo apt install ./<软件包名>
# 自动解决存在的依赖问题
sudo apt install -f
# 不推荐的方法
# sudo dpkg -i <软件包名>
卸载软件包
# 卸载软件包,但不卸载配置
sudo apt remove <软件包名>
# 卸载软件包,并且卸载配置
sudo apt purge <软件包名>
# 不推荐的方法
# sudo dpkg -r <软件包名>
# sudo dpkg -P <软件包名>
查看/搜索软件包
# 枚举所有已安装的软件包
dpkg -l
# 查看指定软件包的安装目录
dpkg -L <软件包名>
# 查看已安装的软件包的元信息
dpkg -s <软件包名>
# 解析指定文件所在的软件包名
dpkg -S $(readlink -f <文件名>)
deb 包管理
# 查看deb包的元信息,不需要解压
dpkg-deb --info <deb包名>
# 打包
dpkg-deb -b <已解压的deb包目录>
# 解包
dpkg-deb -R <deb包名> <解压位置>
# 重新配置软件包
sudo dpkg-reconfigure <软件包名>
apt 源管理
# 开启i386架构
sudo dpkg --add-architecture i386
# 查看软件源中的所有软件包版本
apt-cache policy <软件包名>
# 下载软件包
apt download <软件包名>
# 搜索包含指定命令的软件包
apt search <命令>
常见问题
下载软件包依赖
:::warning{title=“注意”}
必须在纯净环境中操作,如chroot或docker。
:::
- 清空apt缓存:
sudo apt clean
sudo apt-get --download-only install <包名>
sudo apt-get --download-only dist-upgrade
- 拷贝apt缓存路径中的依赖包
cp -R /var/cache/apt/archives/* <目的地>
i386包和amd64包不匹配
- 问题描述
比如这样i386和64位依赖版本不一致:
- 解决方案
- 先查看源中的最高版本
- 然后到ppa中查看编译状态,可以看到i386编译失败了,
- 将未编译成功的高版本,重新编译成功即可。