Ubuntu: 软件库(software repositories)
Linux 生态下,几乎每个发行版都有自己的软件库(software repositories),Ubuntu 当然也不例外。Ubuntu 提供了四个不同的软件库,分别是 main、restricted、universe 和 multiverse:

本文主要介绍它们之间的区别。本文的演示环境为 Ubuntu Desktop 18.04。
Main 库
Main 库由 Ubuntu 官方支持,其中的软件都是开源免费的。Ubuntu 的默认安装中的所有开源软件都在 main 库中,另外还有一些比较重要的服务器软件也被包含在 main 库中。在 Ubuntu 发行版的生命周期中,main 库中的软件会有安全更新,严重的问题会被修复。
Main 库是 Ubuntu 最重要的软件库,Ubuntu 官方(实际上是 Canonical 公司)承诺在发行版的生命周期中,这里面的每一个软件包都会收到安全补丁和严重问题的修复补丁。比如对于 Ubuntu LTS(长期支持版)来说,支持周期为五年,就是保证在五年内会有安全更新。而这里的安全更新,实际上就是对 main 库中的包进行安全更新。之所以会有这样的保证,也是因为 main 库中的软件都是开源软件,Ubuntu 自己的开发人员就可以修复这些问题而无需依赖第三方。
在 Ubuntu Desktop 中通过 GUI 工具管理软件时,可以在软件的详细信息处看到该软件属于哪个库,比如下图中的 Vim 属于 main 库:

Restricted 库
Restricted 库中包含 Ubuntu 官方支持的闭源软件(Closed-Source),主要是一些硬件驱动程序。比如运行一些游戏程序,需要安装 NVIDIA 或 AMD 的图形驱动程序来获得最佳的图形硬件性能。这些驱动程序可以通过 Ubuntu 中的其他驱动管理工具来启用。
Ubuntu 官方将在承诺的支持期内为这些闭源的驱动程序和固件包提供支持。他们致力于让这些驱动程序继续工作,解决任何严重的问题,并堵住任何的安全漏洞。当然,Ubuntu 自己无法做到这一点——当出现问题时,他们必须等待硬件制造商发布新的驱动程序或更新有问题的驱动程序。因为代码不是开源的,所以 Ubuntu 官方无法自己修复它,这就是为什么这里只包含关键的硬件驱动程序的原因(没有其他的封闭源软件得到官方支持)。
Universe 库
Universe 库中存放的是由社区维护的开源软件。我们在 GUI 工具 Ubuntu Software 中看到的软件多数都来自 universe 库:

这些软件包要么是自动从最新版本的 Debian 库中导入的,要么是由 Ubuntu 社区上传和维护的。
Ubuntu 不为 universe 库中的软件提供官方支持或更新。即便不能收更新,universe 库中的软件通常也能够运行的很好。所以我们基本上可以放心的使用 universe 库中的软件!
但是,在服务器系统上,需要我们考虑安装的服务器软件是 main 库的一部分还是  universe 库的一部分。如果它来自 universe 库,您需要关注其安全性更新。如果发现漏洞,您需要自己更新该服务器软件。
同样在 Ubuntu Software 中,可以在软件的详细信息处看到该软件是否属于 universe 库,比如下图中的 plan 程序就属于 universe 库:

Multiverse 库
Multiverse 库是不受 ubuntu 官方支持的软件、闭源软件和专利授权软件聚集的地方。这是哪些有争议的东西存在的地方。它包括像 Adobe Flash 插件这样的闭源软件,和那些依赖于闭源软件的包,比如 Skype 的插件。它还包括受法律限制的开源软件,例如侵犯专利的音频和视频播放软件。这里不包括 DVD 播放软件——开源的 libdvdcss DVD 播放库存在严重的法律问题。
Ubuntu 不会在主发行版发布的同时发布这些包,但是我们却可以从这里提供的内容获得便利。在其他 Linux 发行版中,这里的内容通常可以在第三方存储库中找到,比如 Fedora 的 RPM Fusion、openSUSE 的 Packman 等。
和 universe 库一样,Multiverse 也是一个由社区支持的库,因此这里不会保证有安全更新。
Download Server
Ubuntu 官方提供了上述库的下载服务器,但是对于全球的使用者来说使用默认的服务器并不一定是最好的选择。我们可以指定一个地理位置上比较近或者是认为下载速度比较快的服务器:

总结这样下载更新文件的速度可能会有比较大的提升。
配置文件
我们在 GUI 工具中配置的 Download Server 信息都保存在配置文件 /etc/apt/sources.list 和 /etc/apt/sources.list.d 目录下的文件中。/etc/apt/sources.list 中一般保存 Ubuntu 库的配置信息,比如:
deb http://cn.archive.ubuntu.com/ubuntu/ bionic main restricted
这行信息指明 Ubuntu bionic(18.04) 版本的 main 库和 restricted 库的服务器地址为  http://cn.archive.ubuntu.com/ubuntu/。
如果要添加第三方软件库的信息,可以在 /etc/apt/sources.list.d 目录下创建 .list 文件,把源信息写入到文件中就可以了。
或者我们不使用 GUI 工具,直接编辑配置文件 /etc/apt/sources.list,把其中指定的默认的库的 Download Server 修改为指定的服务器。修改后运行下面的命令,然后就可以使用新指定的服务器安装包了:
$ sudo apt-get update
Other Softwares
还有一些软件提供了自己的库和下载服务器,它们被显示为 "Other Software",比如下图中显示的 docker 和 vscode:

在我们安装这些软件前,需要先添加其下载服务器已经库信息:

当然,你也可以通过编辑配置文件或者是通过命令完成同样的任务。
参考:
What's the Difference Between Main, Restricted, Universe, and Multiverse on Ubuntu?
Ubuntu: 软件库(software repositories)的更多相关文章
- make deb for debian/ubuntu, package software for debian/ubuntu
		here you may find useful information: =====================X8---------------------------------8X==== ... 
- Ubuntu's Software
		(1)indicator-sysmonitor & acpi (2)nvidia-prime (3)sogou (4)wps (5)ubuntu-tweak 
- ubuntu  下配置Python wxWidgets (复制自官方网站)
		全系统英文官网操作地址:http://wxpython.org/download.php Ubuntu 英文操作地址:http://wiki.wxpython.org/InstallingOnUbun ... 
- ubuntu 快捷键和安装知识知识
		本文节选自“The Official Ubuntu Book, 7th Edition.pdf” 快捷键部分直接引用原书中图片. Linux Folders Learning Unity Keyboa ... 
- How To Install Apache Kafka on Ubuntu 14.04
		打算学习kafka ,接触一些新的知识.加油!!! 参考:https://www.digitalocean.com/community/tutorials/how-to-install-apache- ... 
- ubuntu 14.04 (desktop amd 64) 安装和配置ROS Indigo
		安装ROS 配置Ubuntu的软件源 配置Ubuntu要求允许接受restricted.universe和multiverse的软件源,可以根据下面的链接配置: https://help.ubuntu ... 
- [django] Deploy Django Applications Using uWSGI and Nginx on Ubuntu 14.04
		关键点1:chmod-socket=666 (mysite_uwsgi.ini) 关键点2 : 工程目录和虚拟环境目录搞清楚 几个参考: http://uwsgi-docs.readthedocs.i ... 
- 安装Ubuntu 13.04后要做的六件事
		2013-05-07 09:23 最新版本的Ubuntu已经新鲜出炉:Ubuntu 13.04,代号为Raring Ringtail.作为幕后开发Ubuntu Linux的公司,Canonica ... 
- ubuntu包管理机制
		1 ubuntu包管理机制 跟大家分享一下ubuntu的软件管理机制.如果你们有过: apt-get install 或者 apt-get update 失败的经历. 在众多的apt命令中迷失. 疑惑 ... 
随机推荐
- 【PHPStorm使用手册】如何设置字体大小?
			方案一:鼠标滚轮设置 打开窗口 file -> settings -> Editor -> General, 勾上选项“Change font size(Zoom) with Ctr ... 
- LeetCode题解之 Find the Town Judge
			1.题目描述 2.问题分析 使用map set数据结构. 3.代码 int findJudge(int N, vector<vector<int>>& trust) { ... 
- Linux中对逻辑卷的移除
			移除前先df -mT 看一下:(在上一篇的基础上:Linux中对逻辑卷进行扩容) 1.取消挂载同时删除/etc/fstab下的记录 取消挂载 umount /dev/zhi/lv-zhi 删除记录 v ... 
- sql-server的添加数据库文件(日志数据)以及收缩数据库文件(日志数据)
			环境: SSMS sql-server2016 一.为数据库添加数据文件 添加日志数据文件 以下是添加数据文件和日志文件的代码 ALTER DATABASE [joinbest] ADD FILE ( ... 
- VMWare 虚拟机设置网络访问
			使用桥接模式 将本机IP设置为和虚拟机IP在同一个可以上网的网段中 
- 三、Tableau筛选器的使用
			一.使用筛选器制作联动效果 注意,下面两幅图以‘是否盈利’来添加颜色标签 图一:地图 图二:月度销售客户细分 图三:月度销售产品类别 1.新增仪表盘:将图一.图二.图三拉进同一个仪表盘 2.在图一原图 ... 
- adb连接手机模拟器
			首先,要保证模拟器和电脑在同一网段(手机模拟器设置为桥接模式即可) 我使用的是夜神模拟器. 然后查看一下adb版本, adb version 需要1.0.31往上的版本才能连接. 然后输入 adb c ... 
- Metasploit渗透测试实际应用
			Metasploit:如何在 Metasploit 中使用反弹 Shell https://xz.aliyun.com/t/2380 Metasploit:如何使用 msfvenom https:// ... 
- TCP长连接保持连接状态
			对于TCP长连接保活是十分必要的,原因如下: 1.系统多在OA网和外网间有防火墙隔离,很多防火墙对一段时间内没有报文活动的socket会自动关闭. 2.对于非正常断开的连接系统并不能侦测到,比如防火墙 ... 
- C#字节数组与字符串转换
			using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ... 
