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命令中迷失. 疑惑 ...
随机推荐
- spring学习总结——介绍
介绍:以下博客的内容都是依据<spring实战4>这本书.spring4.0 来总结. 一.spring作用 Spring可以做很多事情,它为企业级开发提供给了丰富的功能,但是这些功能的底 ...
- nodejs 第一天
一.nodejs 安装 略过 二.IDE :webstorm(汉化) 三.nodejs 和 js 的区别 1.在ECMAScript 部分node和js 是一样的,比如数据类型的定义,语法结构,内置对 ...
- C# 函数1 (函数的定义)
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 na ...
- mysql 数据库 命令行的操作——对表和字段的操作
一.对表的操作 1.查看所有表 show tables: 2.创建表 create table 表名(字段1 类型1 约束1 ,字段2 类型2 约束2): 3.修改表的名字 rename table ...
- cp 拷贝
cp -a = cp -pdr p (preserve 保持) 复制时保持文件原有的属性(preserve) 模式 所有权 时间戳 d 连接文件 no dereference 复制时拷备连接文件的属 ...
- live555源码学习1---Socket流程架构图
怎么说呢,换了工作环境,好多软件公司禁止使用了,有道笔记也无法使用了.发现博客园还可以上传图片,以后只能在这里记录了. 越发的感觉需要尽快把live555的代码拿下.因为工作环境问题,webrtc的源 ...
- linux中find命令高级用法
前言 在<Linux中的文件查找技巧>一文中,我们已经知道了文件查找的基本方法,今天我们介绍find命令的一些高级使用技巧.它能满足我们一些更加复杂的需求. 查找空文件或空目录 有时候需要 ...
- JSX格式化代码,你值得拥有!
ext install prettier-vscode https://segmentfault.com/q/1010000014822745
- UVA1627-Team them up!(动态规划)
Problem UVA1627-Team them up! Total Submissions:3577 Solved:648 Time Limit: 3000 mSec Problem Descr ...
- Linux shell判断文件和文件夹是否存在(转发)
#!/bin/sh myPath="/var/log/httpd/" myFile="/var /log/httpd/access.log" #这里的-x 参数 ...