ubuntu_logo

什么是软件源?

Ubuntu 中安装软件的方式

在 Ubuntu 中软件安装的方式和 Windows 系统中双击 exe 文件的傻瓜式软件安装的方式有很大的不同,它主要可以分为下面三种安装方式:

  • 通过 apt 包管理工具从软件源中安装
  • 通过 deb 格式的软件包安装
  • 从软件源码手动编译安装

软件源介绍

Ubuntu 系统中软件源其实本质上就是一个软件仓库,在这个仓库中包含了 Ubuntu 系统中各种软件,需要什么软件,只要记得正确的软件名,就可以非常简单地通过 sudo apt-get install <package-name> 命令进行安装,而卸载软件也非常方便,只需要运行 sudo apt-get remove <package-name> 的命令即可。而在平时的使用过程中,我们使用最多的软件安装方式就是软件源的方式。

其实通过软件源安装软件的原理非常简单,Ubuntu 系统中自带了一个名为 apt 的软件包管理工具,它的主要功能就是负责 Ubuntu 系统中所有软件包的管理,包括从软件源中下载软件,卸载系统中已经安装的软件等。而每当我们通过 sudo apt-get install <package-name> 命令去安装一个软件时,apt 包管理工具就会从系统中一个叫做源列表的文件中去读取软件源的网址信息,查找可以包含该软件的软件源的网址,然后就从这个网址上把指定的软件给下载下来,然后由 apt 包管理工具在本地进行一些解压和安装的其他操作。

软件源的分类

在 Ubuntu 中软件源其实还细分为下面两种:

  • Ubuntu 官方软件源
  • PPA 软件源

Ubuntu 官方软件源

Ubuntu 官方软件源中包含了 Ubuntu 系统中所用到的绝大部分的软件,它对应的源列表/etc/apt/sources.list。在这个文件中,记录了 Ubuntu 官方源的地址,基本格式内容如下所示:

deb [arch=amd64] http://mirrors.zju.edu.cn/ubuntu trusty main universe restricted multiverse
deb [arch=amd64] http://mirrors.zju.edu.cn/ubuntu trusty-security main universe restricted multiverse
deb [arch=amd64] http://mirrors.zju.edu.cn/ubuntu trusty-updates main universe restricted multiverse
deb [arch=amd64] http://mirrors.zju.edu.cn/ubuntu trusty-backports main universe restricted multiverse
deb-src [arch=amd64] http://mirrors.zju.edu.cn/ubuntu trusty main universe restricted multiverse
deb-src [arch=amd64] http://mirrors.zju.edu.cn/ubuntu trusty-security main universe restricted multiverse
deb-src [arch=amd64] http://mirrors.zju.edu.cn/ubuntu trusty-updates main universe restricted multiverse
deb-src [arch=amd64] http://mirrors.zju.edu.cn/ubuntu trusty-backports main universe restricted multiverse

这里我使用了 http://mirrors.zju.edu.cn 镜像地址,它其实和 Ubuntu 官方的镜像是相同的,我这里做了替换主要是为了加快 apt 安装和更新软件源的速度,毕竟学校里的内网速度还是相当不错的。

PPA 软件源

以前我一直不明白既然有了官方的软件源,为什么还多出了一个 PPA 软件源,统一用 Ubuntu 官方源不是挺好吗? 直到在网上看了有关有关 PPA 的介绍后,我才了解了它的真正用途。

PPA 源出现的背景是因为系统自带的源是很有限的,我们肯定需要一些其他的软件包然而如果是直接下载deb格式的文件的话,又不能获取到更新和维护,所以这就用到了十分重要的 PPA 源了。

所谓 PPA 源,就是指 “Personal Package Archives” ,也就是个人软件包集。这其实是一个网站,即-launchpad.net。Launchpad 是 Ubuntu 母公司 Canonical 有限公司所架设的网站,是一个提供维护、支援或联络 Ubuntu 开发者的平台。由于不是所有的软件都能进入 Ubuntu 的官方的软件库,launchpad.net 提供了 PPA,允许开发者建立自己的软件仓库,自由的上传软件。供用户安装和查看更新。

软件源替换和添加

为什么要替换系统默认的官方软件源?

如果你是一个程序员,那么我觉得我回答这个问题会显得很白痴,但是如果你是一个 Ubuntu 小白用户,我觉得我还是有必要和大家解释下这个原因:这时因为 Ubuntu 的官方软件源的服务器是在国外,而从我们中国访问国外的网站都必须先经过一堵“墙”来验证这个网站是否可以访问,另外一个原因就是服务器在国外,距离远了,访问的速度当然没有直接访问国内的网站快。正是由于这种的访问检查和网络传输距离问题,导致我们通常访问 Ubuntu 官方软件源的速度很慢。

那么有什么好的方法来解决访问 Ubuntu 官方软件源速度慢的问题吗?

当然啦!就是下面就要介绍的替换官方软件源的方法。

如何替换系统默认的官方软件源?

为了解决上面提到的这个问题,在我们国内有许多学校和公司的镜像网站都对 Ubuntu 的官方软件源进行了镜像备份,并且定期地进行同步更新,而国内访问这些镜像网站的速度都要比直接访问 Ubuntu 官方镜像源要快地多,所以我们只要将 Ubuntu 官方软件源的网址替换成国内的 Ubuntu 软件源镜像网站的网址就可以达到加速的目的了。

前面我已经介绍过 Ubuntu 官方软件源对应的源列表/etc/apt/sources.list,我们只要对这个文件中内容进行替换就可以了,例如我自己电脑上使用就是浙江大学开源镜像网站上的软件源,如下所示:

deb [arch=amd64] http://mirrors.zju.edu.cn/ubuntu trusty main universe restricted multiverse
deb [arch=amd64] http://mirrors.zju.edu.cn/ubuntu trusty-security main universe restricted multiverse
deb [arch=amd64] http://mirrors.zju.edu.cn/ubuntu trusty-updates main universe restricted multiverse
deb [arch=amd64] http://mirrors.zju.edu.cn/ubuntu trusty-backports main universe restricted multiverse
deb-src [arch=amd64] http://mirrors.zju.edu.cn/ubuntu trusty main universe restricted multiverse
deb-src [arch=amd64] http://mirrors.zju.edu.cn/ubuntu trusty-security main universe restricted multiverse
deb-src [arch=amd64] http://mirrors.zju.edu.cn/ubuntu trusty-updates main universe restricted multiverse
deb-src [arch=amd64] http://mirrors.zju.edu.cn/ubuntu trusty-backports main universe restricted

下面我也贴出一个汇总了我们国内常用开源镜像站点的信息,你们可以到这些地方去获取 Ubuntu 软件源的源列表:国内开源镜像站点汇总

注意:我推荐你在选择开源镜像站点,首先去 ping 一下你到这个站点看一下网络速度,选择一个比较快的站点就好。

如何添加 PPA 软件源

  • 添加 PPA 软件源的命令sudo add-apt-repository ppa:user/ppa-name
  • 删除 PPA 软件源的命令sudo add-apt-repository --remove ppa:user/ppa-name

例如,我们想要添加一个 Wireshark 软件的 PPA 源,我们可以根据它官网上提供的命令来进行添加,如下图所示:

当我们添加完 PPA 源之后,系统就会在 /etc/apt/sources.list.d/ 文件夹里创建了两个文件:

$ cd /etc/apt/sources.list.d

$ ls | grep wireshark
wireshark-dev-stable-trusty.list
wireshark-dev-stable-trusty.list.save

我们再来打开一下 wireshark-dev-stable-trusty.list 文件看看里面的内容是什么:

deb http://ppa.launchpad.net/wireshark-dev/stable/ubuntu trusty main
# deb-src http://ppa.launchpad.net/wireshark-dev/stable/ubuntu trusty main

哈哈~原来文件里就是添加了一个跟软件源一模一样的东西,他们的作用殊途同归啊。我想这其实是 Ubuntu 为了分辨官方的源和第三方的源才设计成在sources.list 和 sources.list.d/这两个地方中存储软件源信息。因为第三方的源毕竟不太可信,如果随便更新的话可是会出事情的。