# 软件安装

- 本节贡献者: {{田冬冬}}、{{姚家园}}
- 最近更新日期: 2021-01-12
- 预计阅读时间: 10 分钟

---

## 安装方式

Linux 或 macOS 系统下安装软件通常有如下几种方式：

1. 使用系统自带的应用商店（App Store）在图形界面下安装软件
2. 使用软件包管理器通过命令行安装软件。例如，Ubuntu/Debian 的 `apt`、
   Fedora 的 `dnf`、macOS 的 `brew`。这些软件包管理器既可以安装
   官方源提供的软件，也可以安装可信赖的第三方源提供的软件
3. 直接下载闭源软件或商业软件提供的二进制包进行安装，如 Linux 下的 `deb`
   和 `rpm`、macOS 下的 `dmg`
4. 某个编程语言的包，通常可以使用该编程语言自带的包管理工具进行安装，比如
   Python 语言的包管理器 `conda` 和 `pip`
5. 某些软件提供了二进制的压缩包，则解压后直接放在某个目录，然后修改环境变量
   **PATH** 即可使用
6. 下载软件源码、编译并安装

绝大多数非科研类开源软件都可以通过方式 1–3 安装；多数闭源软件或商业软件
都可以通过方式 1–3 和方式 5 安装；对于地震学科研软件而言，
通常可以通过方式 4（很多地震学软件是用 Python 语言写的，因而可以通过 `conda`
或 `pip` 安装）、方式 5 或方式 6 进行安装。

方式 1–4 会将软件安装到默认的位置，通常用户无法控制，也无需关心其具体安装位置。
而对于方式 5 和 6，用户可选择将软件安装到任意位置。为了便于安装与管理科研
相关软件，我们总结了如下实践经验。

## 安装路径

软件安装相关的路径如下：

- {file}`~/software/`：存放软件的原始压缩包
- {file}`~/opt/`：解压即用的软件、需源码编译并安装的软件
- {file}`~/src/`：需源码编译的软件（含需源码编译并安装软件的源码目录）
- {file}`~/bin/`：简单的小工具软件，如单个源码文件编译链接后生成的可执行文件、
  单个可执行文件以及工具型脚本
- {file}`/opt/`：大多数闭源软件或商业软件、某些与地震学科研无关的软件、ARM 架构
  macOS 下的 Homebrew

### 软件包

软件的原始压缩包可以保存在 {file}`~/software/` 目录下，相当于做一个备份，
如 {file}`~/software/TauP-2.4.5.tgz`。

### 解压即用的软件

某些软件提供了二进制包，可以解压即用，可安装在 {file}`~/opt/` 的子目录下，
如 {file}`~/opt/TauP`。

### 从源码编译的软件

需要从源码编译的软件，可将源码目录放在 {file}`~/src/` 的子目录下，如 {file}`~/src/fk`、
{file}`~/src/GMT`、{file}`~/src/distaz`。

若该软件不需安装，则编译链接后生成的可执行文件在该软件目录下或其子目录 {file}`bin` 下，
如 {file}`~/src/fk`、{file}`~/src/CPS/bin`。如果该软件只是一个简单的小工具，
比如单个源码文件或单个可执行文件，则可以将生成的可执行文件复制至 {file}`~/bin/` 目录下，
如 {file}`~/bin/distaz`。

若该软件编译后需要安装，可安装在 {file}`~/opt/` 的子目录下，如 {file}`~/opt/GMT`。

### 闭源或商业软件

大多数闭源软件或商业软件可安装到 {file}`/opt/` 的子目录下，如 Matlab、Intel 编译器等。
一般这也是闭源软件或商业软件的默认安装路径。某些与地震学科研无关的软件，比如
文献管理软件 Mendeley 和 Zotero 均可安装到任意路径，也建议安装到 {file}`/opt/` 目录下。

## 关于 ~/opt/ 的说明

这里推荐将科研相关软件安装到 {file}`~/opt/` 目录下，而不是更常见的 {file}`/opt/`
或 {file}`/usr/local/` 目录，主要是基于如下几点考虑：

- 某些包管理器使用了这些目录，比如非 ARM 架构 macOS 下的 Homebrew 的软件安装路径是
  {file}`/usr/local/`，macOS 的 MacPorts 的软件安装路径是 {file}`/opt/local/`。
  历史上，该目录主要用于放置在本地编译并另行安装的程序，避免和 {file}`/usr/`
  目录下的系统自带版本冲突
- {file}`/opt/` 目录一般用于安装非系统自带的、第三方预先编译并发行的独立软件包。
  例如，某些闭源或商业软件（如 Matlab、Google Chrome、Google Earth）默认将软件
  安装到 {file}`/opt/` 目录下。ARM 架构 macOS 下的 Homebrew 也被安装到该目录下
- 地震学科研软件与其他软件属于不同的两类软件，因而将二者放在不同的目录下更合理
- 对于使用服务器的用户而言，通常没有权限在 {file}`/opt/` 或 {file}`/usr/local/` 等
  目录安装软件，因而服务器用户必须在家目录下安装软件。设定软件安装在 {file}`~/opt/`
  下使得用户在个人电脑和服务器上可以有完全相同的目录结构
- 将所有科研相关软件的源码及二进制文件都放在家目录下，使得备份和还原变得更简单

基于以上理由，推荐将地震学科研软件安装在 {file}`~/opt/` 目录下。
