了解ubuntu的软件包格式
ubuntu软件包格式为DEB格式,这个格式最早是由Debian开发采用,ubuntu由Debian分支发展而来,从而继承了这种软件包格式。
DEB软件包可以分为两类:
- 扩展名为DEB的二进制软件包
- 源码软件包
通常包含扩展名为.dsc
的源码描述文件、一个扩展名为.orig.tar.gz的源码包、一个扩展名为.diff.gz的源码补丁文件。
DEB软件包的命名格式为:package_ver-rev_arch.deb
其中package为软件包的名字,ver代表版本,rev代表修订版本,arch代表软件包对应的硬件平台
由于开源软件的分散开发与相互继承的特点,DEB软件包之间存在相互依赖的关系,常见的依赖关系有:
- Depends
- Conflict
- Recommends
如果两个软件包A与B相互依赖(Depends),则安装A时也要安装B(知道为啥要装依赖了 AoA )
如果两个软件包相互矛盾(Conflict)则,A与B不能共存
推荐(Recommends)关系代表开发者推荐用户在安装A时也安装B
ubuntu 16.04支持了最新的SNAP软件包格式,SNAP软件包格式是ubuntu未来的格式,以.snap作为扩展名,其优势是没有复杂的依赖关系,并且与操作系统隔离。可以通过snapcraft工具将现有的DEB软件包转化为SNAP格式,并创建SNAP程序。(之前给服务器装nextcloud用的就是这种格式的软件包,现在知道是啥了)
软件包管理程序
软件包管理程序可以分为前端与后端。ubuntu之前的软件管理中心,和现在的Ubuntu software都是前端程序,前端程序依赖后端程序,如dpkg、apt-cache、apt-get等来实现安装、解决依赖关系、升级、卸载等操作。
ubuntu软件仓库管理
软件仓库又称为软件源,通常位于线上如ubuntu官方的在线软件库,还有许多镜像(Mirror).也有保存在光盘上的软件仓库。
第三方非开源的应用程序是无法包含在ubuntu的软件仓库,因为不符合ubuntu软件仓库协议,可以通过Cannonical合作伙伴解决,如图
如图在软件与更新中勾选红框,退出时点yes更新软件仓库,这样软件仓库内就包含很多常用但不符合ubuntu软件仓库协议的应用程序了。
需要注意ubuntu与Debian的软件仓库和非官方衍生版本的软件仓库不通用、不兼容。同是ubuntu发行版本也需要注意硬件架构(32位还是64为)和版本号,完全匹配才能共用软件仓库。
PPA软件仓库(personal package archives)是个人软件包文档的缩写,是由第三方开发者在线打包和发布软件仓库(launchpad.net),最新的软件更新先出现在PPA软件仓库。
命令行下可以使用add-apt-repository
命令添加PPA仓库
ubuntu软件包后端管理工具
dpkg 是最底层的软件包后端管理工具,apt-get 与 aptitude可以调用dpkg,
dpkg是ubuntu软件包管理工具的基础,使用dpkg工具可以实现软件包的安装、卸载、查询、编译、打包等功能。
dpkg命令格式为:
dpkg [-i | -r | -P | -l | -L | -s | -S] package_name
-
-i :安装软件包
-
-r :卸载软件包但是不删除软件包的配置文件
-
-P : 完全卸载软件包,包括所有相关的配置文件
-
-l :查看当前系统已安装软件包的信息
-
-L:查看当前系统中指定软件包所安装的相关文件
-
-s:查看已安装的指定软件包的详细信息
-
-S:查看系统中某个文件所属的软件包
-
-c: 查看软件包所包含的内容
-
-I :查看软件包的详细信息
-
重新配置一个已经安装的软件包,多用于安装某个软件包失败后
sudo dpkg-reconfigure package_name
不建议使用dpkg
直接安装DEB软件包,因为它无法自动解决软件包复杂的依赖关系。
后端自动化软件包管理工具
后端自动化软件包管理工具有apt-cache/apt-get、aptitude、tasksel。
- apt-cathe:用来查询软件仓库的软件包信息;
sudo apt-cache search keyword # 在软件仓库搜索指定关键字的软件包
- apt-get:主要根据软件包名称进行安装;
sudo apt-get search package_name # 搜索软件包
sudo apt-get install package_name # 安装软件包
sudo apt-get remove package_name# 删除软件包
sudo apt-get --purge remove package_name# 彻底删除
sudo apt-get update # 更新软件仓库列表
update仅更新软件列表
sudo apt-get upgrade#更新软件包
upgrade根据列表更新软件本身
- aptitude:可以解决复杂的依赖关系
sudo apt-get install -y aptitude # 安装aptitude -y表示安装时不询问
sudo aptitude # 启动文本界面,j、k键或方向键移动
sudo aptitude search package_name # 搜索软件包
sudo aptitude install package_name # 安装软件包
sudo aptitude remove package_name # 删除软件包
sudo aptitude purge package_name # 彻底删除软件包
sudo aptitude update # 更新软件仓库列表
sudo aptitude upgrade# 更新软件包
- tasksel:用于一次性安装一组软件包
执行一组预定义的安装指令集,适合安装LAMP组合、各种桌面环境
sudo apt-get install tasksel # 安装tasksel
tasksel --list-task # 列出可选安装任务
sudo tasksel install lubuntu-core# 执行安装任务
sudo tasksel #进入文本界面
sudo tasksel remove lubuntu-core # 卸载
添加和删除PPA软件仓库
- 使用命令行
1、获取想要添加的PPA软件源的地址:ppa:ppsspp/stable
2、添加PPA软件仓库:sudo add-apt-repository ppa:ppsspp/stable
3、让PPA软件仓库生效:sudo aptitude update
4、在上一步之后就可以搜索到ppsspp了:sudo aptitude search ppsspp
,之后就可以进行安装了
卸载过程如下
1、卸载PPSSPP:sudo aptitude purge -y ppsspp
2、删除已经添加的软件仓库:sudo add-repository -r ppa:ppsspp/stable
# -r表示删除定制的软件仓库
3、更新软件仓库:sudo aptitude update
SNAP软件包的使用
1、浏览SNAP应用
snap find
2、搜索应用
snap find app_name
3、安装应用
sudo snap install app_name
4、更新应用
sudo snap refresh app_name
5、删除应用
sudo snap remove app_name
6、列出所有安装应用
snap list