01-包管理
包管理介绍
Linux发行版本操作系统
内核、库文件、命令行shell、图形接口、其他应用软件包共同组成操作系统
包管理
- 安装、删除、更新、配置修改
- 不同发行版的主要不同之处
- 库软件包提供其他软件依赖
- 减少内存硬盘用量(所有软件依赖内核包)
- 丢失或版本差异问题主要原因,一环出错全部出错
- Linux的库文件
.so
,windows下的库文件.dll
Linux的依赖关系很突出,值得重视,比windows上的要严重。
- Linux的发行版本太多,都打造自己的软件仓库,维护独立的包依赖关系是发行版包管理器的最大任务。
软件包格式
- RPM、DEB(Ubuntu集成自Debian Linux)
- tar、gzip等打包压缩发布
- 内含meta-data、预编译的二进制程序文件(不是源码)、配置脚本等
包管理系统
- meta-data提供追踪包中全部文件的内容
- 维护已安装文件的数据库(包名称、归属以及辅助信息)
- 解决包依赖关系
- 建议使用唯一的包管理系统
官方软件仓库(Repositories)
- 打造封闭但有质量保证的软件包来源
- 慎用第三方软件仓库
dpkg 本地包管理器
- 安装、删除、创建deb包
- 不依赖软件仓库、不能自动检索和下载软件包
- 不判断和解决以来关系
dpkg本地包管理器的使用
1 | dpkg -l # 列出本地所有安装的软件 |
APT包管理器
APT 包管理器介绍
- ubuntu首选的包管理器
- 依赖软件仓库
- 安装、卸载、更新包括整个操作系统的所有软件包
- 更新索引、更新包、自动解决依赖关系
APT 常用使用方法
1 | sudo apt update # 更新索引 |
APT更新配置
1 | sudo vim /etc/apt/source.list |
以空格分成四列:
- 第一列:二进制安装包或源码包(deb)
- 第二列:库的url地址
- 第三列:操作系统codename
lsb_release -a
- 第四列:库的内容构成、以及是否官方支持
- main 官方支持,包含源码,官方维护bug
- restricted 官方支持,非开源许可
- universe 社区支持
- multiverse 既不开源也不支持,自己承担风险,通常不是安全更新
第三方库:
- 存在安全风险,可能造成系统稳定性问题
- 作为最后一种选择
- 建议为每个第三方库建立独立的源
.list
文件 在/etc/apt/sources.list.d
- 验证GnuPG Key 公开的加密框架
1 | # 举例 |
Personal Package Archive (PPA)
ubuntu官方提供服务器、使用方法等,个人开发软件发布
简介
PPA本质上是另外一种形式的apt软件库
- 适用于没有自建软件库的发布者
- PPA中的软件没有经过官方审核
使用
PPA的主页:https://launchpad.net/ubuntu/
1 | apt-add-repository ppa:ondrej/mariadb-10.0 # 相当于创建源文件.list |
删除PPA
- 删除索引文件
- 运行apt-key命令删除 GnuPG Key
无人值守更新
1 | sudo apt install unattended-upgrades # 安装无人值守升级包 |
1 | sudo vim /etc/apt/apt.conf.d/10periodic # 决定多长时间更新索引 |
重启服务
1 | sudo systemctl restart unattended-upgrades.service |
日志目录
1 | /var/log/unattended-upgrades/ |
无人值守更新通知:
1 | sudo vim /etc/apt/apt.conf.d/50unattended-upgrades |
软件更新snap
snap包管理
APT包管理的缺点
- 系统版本升级后应用软件库基本冻结
- 安全补丁除外
- 这是为了维护一致的包和库的依赖关系无法安装最新版软件
snap包管理
snap包管理操作独立于软件仓库
- 可分发不属于官方库的软件版本
- 软件安装使用不受操作系统包和库依赖关系的影响
- snap包内建与Linux发行版本不兼容的库
使用方法
先安装snap
1 | sudo apt install snap |
snap使用:
1 | sudo snap find nmap # 查找软件包 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 伊甸园!