ubuntu上的软件源

纵一苇 / 2024-03-15 / 原文

0、Ubuntu上安装软件的方式和原理

Ubuntu 中安装软件的方式:

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

  1. 可执行文件安装。具体分为2种,1)通过 apt 包管理工具从软件源中安装; 2)通过 deb 格式的软件包安装
  2. 从软件源码手动编译安装

通过软件源安装软件的原理:

其实通过软件源安装软件的原理非常简单。
Ubuntu 系统中自带了一个名为 apt的软件包管理工具,它的主要功能就是负责 Ubuntu 系统中所有软件包的管理,包括从软件源中下载软件,卸载系统中已经安装的软件等。

而每当我们通过 sudo apt-get install 命令去安装一个软件时,apt-get工具就会从系统中一个叫做源列表的文件中去读取软件源的网址信息,
查找包含该软件的软件源的网址,然后就从这个网址上把指定的软件给下载下来,然后由 apt-get 包管理工具在本地进行一些解压和安装的操作。

1、ubuntu上的3种软件源

APT (Advanced Packaging Tool) 用于管理Ubuntu及其衍生版本的软件包。APT依赖于存储在Ubuntu软件仓库中的软件包。Ubuntu软件仓库源是APT用于获取软件包的位置。

Ubuntu软件仓库源分为以下几种类型:

官方源(Main、Restricted、Universe、Multiverse)
第三方源(PPA)
本地源(Local)
其中:
1)官方源由Canonical官方维护。
2)第三方源由社区或第三方维护。
3)本地源则是本地计算机上存储软件包的位置。

2、官方源

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

deb [web/ftp地址] [发行版名字][ main/contrib/non-free]

deb开头的行设置下载软件软件包的路径,而以deb-scr开头的行设置下载软件包源码的路径,

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

Main、Restricted、Universe、Multiverse是Ubuntu官方源的四个组件。每个组件包含不同类型的软件包。

Main:包含Ubuntu官方支持的自由软件。
Restricted:包含Ubuntu官方支持的非自由软件,如硬件驱动程序。
Universe:包含社区支持的自由软件。
Multiverse:包含社区支持的非自由软件。
例如,要安装OpenSSH服务器软件包,可以使用以下命令:

sudo apt-get update
sudo apt-get install openssh-server

3、第三方源

除了官方源之外,我们还可以添加第三方源,通过它们来获取更多软件包。

Ubuntu 为了分辨官方的源和第三方的源才设计成在sources.list存储官方源网址 和 sources.list.d/下存放第三方软件源地址。

最常见的第三方源是PPA(Personal Package Archives),由社区维护

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

添加PPA源可以通过以下命令:

sudo add-apt-repository ppa:用户名/仓库名
sudo apt-get update

例如,要添加Node.js的PPA源,可以使用以下命令:

sudo add-apt-repository ppa:nodejs/ppa
sudo apt-get update
sudo apt-get install nodejs

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

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

我们再来打开一下 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根据软件包的开发组织对该软件的支持程度,以及遵循来源的程度,划分如下:
一.核心(Main)。官方维护的开源软件,是由Ubuntu官方完全支持的软件,包括大多数流行的、稳定的开源软件,是Ubuntu默认安装的基本软件包。
二.公共(Universe)。社区维护的开源软件,是由Ubuntu社区的计算机爱好者维护的软件,是Linux世界中完全自由和开源的部分,包括了绝大多数软件。
这些软件都是以(Main)中的软件包为基础,编写而成。但此类软件包没有安全升级的保障。
三.受限(Restricted)。官方维护的非开源软件,是专供特殊用途,且没有自由软件版权,不能直接修改的软件,但仍然被Ubuntu团队支持。
四.多元化(Multiverse)。非Ubuntu官方维护的非开源软件,是那些非自由软件,通常不能被修改,用户使用这些软件包时,需要特别注意版本问题。

Ubuntu根据软件包的必要性和安全性,又将软件包划分为四类:
一.安全更新(Security)。稳定的、安全的软件包,是必须要安装的软件包。
二.最新更新(Updates)。最新完成的更新软件包,建议安装的。
三.推荐更新(Proposed)。提前释放的更新,处于alpha测试阶段的软件包。
四.修补更新(Backports)。在Ubuntu旧版本中部分添加新的功能,该类软件包无任何技术支持。

4、本地源

有时,我们需要将软件包存储在本地计算机上,例如在没有internet连接时。可以通过创建本地源的方式自己管理软件包。例如,可以将deb软件包放在/var/cache/apt/archives目录中,然后使用以下命令将该目录添加为本地源:

sudo apt-ftparchive packages /var/cache/apt/archives > Packages
sudo gzip -c Packages > Packages.gz
sudo apt-ftparchive release . > Release

然后,可以使用以下命令将该源添加到apt的源列表中:

sudo echo "deb [trusted=yes] file:///var/local_repo ./" > /etc/apt/sources.list.d/local.list  #注意file后面三个/
sudo apt-get update

以上命令将在本地创建名为local的源,并将/var/local_repo目录添加为其存储软件包的位置。