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. html-edm(邮件营销)编写规则

    最近写了一个edm邮件 以前没有接触过  使用的是很老的html页面编写规则  只能用table标签  在此记录一下edm编写的一些规则 个人参考的是这两个网址,转载一下 http://www.zco ...

  2. 编译percona-server-locks-detail-5.7.22

    yum install -y binutils compat-libstdc++ gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgc ...

  3. Linux进程优先级的处理--Linux进程的管理与调度(二十二)

    1. linux优先级的表示 1.1 优先级的内核表示 linux优先级概述 在用户空间通过nice命令设置进程的静态优先级, 这在内部会调用nice系统调用, 进程的nice值在-20~+19之间. ...

  4. Linux进程调度器概述--Linux进程的管理与调度(十五)

    调度器面对的情形就是这样, 其任务是在程序之间共享CPU时间, 创造并行执行的错觉, 该任务分为两个不同的部分, 其中一个涉及调度策略, 另外一个涉及上下文切换. 1 背景知识 1.1 什么是调度器 ...

  5. c 指针函数 vs 函数指针

    指针函数,函数指针 #include <stdio.h> int max(int a, int b){ return a > b ? a : b; } //函数指针,2个int参数, ...

  6. .svn文件夹特别大

    一个项目通过svn管理,迭代开发一年之后,.svn目录达到20G或更大,对于SSD硬盘来说是非常占用空间的,经过我的尝试,可以使用tortoiseSVN自带的cleanup为文件夹瘦身. 操作方法: ...

  7. LeetCode算法题-First Unique Character in a String(Java实现)

    这是悦乐书的第213次更新,第226篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第81题(顺位题号是387).给定一个字符串,找到它中的第一个非重复字符并返回它的索引. ...

  8. 7个小技巧,解决eclipse卡顿问题

    eclipse作为开发工具,每天都要使用,你肯定遇到过eclipse卡到想哭的时刻,严重影响开发效率啊!如果内存条不要钱,那就加内存吧!一个不够加两个!当然这都是玩笑话,如果不花钱也能解决问题,希望下 ...

  9. Go学习笔记06-内建容器

    Go学习笔记06-内建容器 Go语言 数组 *切片(Slice) #F44336 Slice的操作 Map map示例 字符处理 数组 定义数组: //这样定义数组编译器自动初始化每个元素为0  va ...

  10. AIX查看系统版本

    AIX系统版本   1. AIX 主要版本.次要版本.维护级 oslevel -r  lslpp -h bos.rte      2. 确定某个特定的 AIX 级别缺少哪些文件集更新 举例,若要确定 ...