ubuntu:软件包

烂漫一生 提交于 2020-01-14 02:39:50

了解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
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!