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)的更多相关文章

  1. make deb for debian/ubuntu, package software for debian/ubuntu

    here you may find useful information: =====================X8---------------------------------8X==== ...

  2. Ubuntu's Software

    (1)indicator-sysmonitor & acpi (2)nvidia-prime (3)sogou (4)wps (5)ubuntu-tweak

  3. ubuntu 下配置Python wxWidgets (复制自官方网站)

    全系统英文官网操作地址:http://wxpython.org/download.php Ubuntu 英文操作地址:http://wiki.wxpython.org/InstallingOnUbun ...

  4. ubuntu 快捷键和安装知识知识

    本文节选自“The Official Ubuntu Book, 7th Edition.pdf” 快捷键部分直接引用原书中图片. Linux Folders Learning Unity Keyboa ...

  5. How To Install Apache Kafka on Ubuntu 14.04

    打算学习kafka ,接触一些新的知识.加油!!! 参考:https://www.digitalocean.com/community/tutorials/how-to-install-apache- ...

  6. ubuntu 14.04 (desktop amd 64) 安装和配置ROS Indigo

    安装ROS 配置Ubuntu的软件源 配置Ubuntu要求允许接受restricted.universe和multiverse的软件源,可以根据下面的链接配置: https://help.ubuntu ...

  7. [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 ...

  8. 安装Ubuntu 13.04后要做的六件事

    2013-05-07 09:23    最新版本的Ubuntu已经新鲜出炉:Ubuntu 13.04,代号为Raring Ringtail.作为幕后开发Ubuntu Linux的公司,Canonica ...

  9. ubuntu包管理机制

    1 ubuntu包管理机制 跟大家分享一下ubuntu的软件管理机制.如果你们有过: apt-get install 或者 apt-get update 失败的经历. 在众多的apt命令中迷失. 疑惑 ...

随机推荐

  1. 排序算法----快速排序java

    快速排序是对冒泡排序的一种改进,平均时间复杂度是O(nlogn) import java.util.Arrays; import java.util.Scanner; public class tes ...

  2. [转载] erp开发-数据查询优化方法

    系统运行环境:MSSQL 2008随着公司业务快速发展,各种业务数据如火箭般的高速增长,出现一个又一个千万行数据的表,往往大表之间的关联,耗费系统大量的磁盘io,并且会影响正常的实时业务的操作,所以我 ...

  3. 修正Percona Monitoring Plugins for Zabbix的一处脚本Bug

    今天小试了一把Percona Monitoring Plugins for Zabbix模板,自己辛辛苦苦写的那一大堆Python脚本,貌似用这个模板全都覆盖到了.但是,我也发现最新的版本percon ...

  4. SQL Prompt 快捷键

    推荐一个小插件,SQL Prompt,配合Microsoft SQL Server Management Studio,使用起来非常方便,同时再加上以下几个快捷键: (1)ctrl+5或F5,运行代码 ...

  5. liunx搭建DHCP服务器以及DHCP中继服务器

    liunx搭建DHCP服务器以及DHCP中继服务器 一.实验拓扑 二.实验条件 虚拟机取消VMnet1和VMnet8的dhcp动态获取ip地址,以免影响实验 DHCPserver 网关以及DHCP中继 ...

  6. 在Django中接收文件并存储

    首先是一个views函数的例子 def get_user_profiles(request): if request.method == 'POST': myFile = request.FILES. ...

  7. Python 简易版选课系统

    一.创建学生类 # # 创建学生类 import random class Student: def __init__(self,num,name,address,course_lst=None): ...

  8. vue表单控件绑定(表单数据的自动收集)

    v-model指令 你可以用 v-model 指令在表单控件元素上创建双向数据绑定.它会根据控件类型自动选取正确的方法来更新元素.尽管有些神奇 但 v-model 本质上不过是语法糖,它负责监听用户的 ...

  9. Jenkins的环境部署

    一.Tomcat环境安装 1.安装JDK(Java环境) JDK下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index. ...

  10. java中伪共享问题

    伪共享(False Sharing) 原文地址:http://ifeve.com/false-sharing/ 作者:Martin Thompson  译者:丁一 缓存系统中是以缓存行(cache l ...