欢迎光临
我们一直在努力

Ubuntu / Linux 软件安装完整笔记

核心目标:以后遇到 GitHub、官网、README 里的各种安装命令,不再死记硬背,而是能判断:

  • 我拿到的到底是什么?

  • 它是源码还是已经编译好的程序?

  • 每条命令是在下载、解压、编译,还是安装?

  • Ubuntu 应该优先选择哪种安装方式?


  • 1. 先理解:Linux 中“安装软件”到底是什么

    Windows 中我们经常双击:

    xxx.exe

    然后一路“下一步”。

    看起来安装只有一个动作,实际上安装程序帮我们偷偷完成了:

    下载 / 准备软件
    ↓
    检查依赖
    ↓
    解压文件
    ↓
    复制程序到指定目录
    ↓
    安装库和配置
    ↓
    让系统能够找到程序

    Linux 只是把这些步骤暴露得更多。

    所以我们会看到:

    sudo apt install git

    也会看到:

    sudo apt install ./xxx.deb

    还可能看到:

    tar -zxvf xxx.tar.gz
    cd xxx
    make
    sudo make install

    甚至:

    curl https://xxx.com/install.sh | bash

    这些命令表面差很多,但最终都是围绕:

    获得软件
    ↓
    准备依赖
    ↓
    得到可执行程序
    ↓
    把程序放到合适的位置
    ↓
    让系统以后能找到并运行它


    2. 当前目录和“软件安装位置”不是一回事

    这是最容易产生误解的一点。

    例如:

    cd ~/Desktop
    sudo apt install git

    和:

    cd /tmp
    sudo apt install git

    结果通常没有区别。

    因为:

    apt install

    不会把 Git 安装进你当前所在的目录。

    Linux 会按照自己的目录规范把文件分别放到系统目录,例如:

    /usr/bin/ 可执行程序

    /etc/ 配置文件

    /usr/lib/ 库文件

    /usr/share/ 软件共享数据

    /var/log/ 日志

    /usr/local/bin/ 手动安装的软件经常放这里

    所以:

    当前目录 ≠ 软件安装目录。

    但是当命令操作的是“当前目录中的文件”时,当前目录就很重要。

    例如:

    tar -zxvf redis.tar.gz

    这里必须能找到:

    redis.tar.gz

    又例如:

    make

    一般会寻找当前目录里的:

    Makefile

    所以可以先记:

    apt install 软件名

    在哪个目录执行通常无所谓。

    而:

    ./xxx
    make
    tar xxx

    这种涉及本地文件的命令,就需要考虑当前目录。


    3. Ubuntu 最推荐的软件安装方式:APT

    Ubuntu 属于:

    Debian 系 Linux

    它主要使用:

    APT

    作为软件包管理工具。

    最典型:

    sudo apt install git

    看似只有一条命令,APT 实际会帮我们:

    查找软件
    ↓
    找到对应版本
    ↓
    检查 CPU 架构
    ↓
    下载 .deb 软件包
    ↓
    检查依赖
    ↓
    下载依赖
    ↓
    安装软件
    ↓
    记录软件安装信息

    所以只要 Ubuntu 软件仓库中有:

    一般优先使用 APT。

    常见命令:

    sudo apt update

    作用:

    更新“软件仓库目录”。

    注意:

    apt update

    通常不是升级软件本身。

    它更像是在告诉系统:

    软件仓库现在有哪些软件、有哪些新版本?


    更新已经安装的软件:

    sudo apt upgrade


    安装:

    sudo apt install git


    卸载:

    sudo apt remove git


    连配置一起清除:

    sudo apt purge git


    查看某个软件是否存在:

    apt search redis


    4. APT、dpkg 和 .deb 是什么关系

    Ubuntu / Debian 的标准软件包格式是:

    .deb

    可以粗略理解成 Windows 世界中的:

    .msi

    例如:

    xxx_2.1.0_amd64.deb

    通常包含:

    xxx 软件名
    2.1.0 软件版本
    amd64 CPU 架构
    .deb Debian 软件包

    安装本地 .deb 时推荐:

    sudo apt install ./xxx_2.1.0_amd64.deb

    而不是优先:

    sudo dpkg -i xxx.deb

    原因在于:

    dpkg

    更加底层。

    它主要负责:

    安装、删除、管理 .deb 软件包。

    而:

    APT

    除了能够调用底层软件包系统,还能负责:

    软件仓库
    下载
    依赖关系
    升级

    可以粗略理解:

    APT
    │
    ├─ 找软件
    ├─ 下载软件
    ├─ 解决依赖
    └─ 调用底层包管理
    │
    dpkg
    │
    .deb

    所以 Ubuntu 用户安装本地 .deb:

    sudo apt install ./xxx.deb

    一般最舒服。


    5. GitHub Release 到底应该下载哪个文件

    GitHub 软件经常在:

    Releases

    中提供很多文件。

    例如:

    xxx-linux-amd64.tar.gz

    xxx-linux-arm64.tar.gz

    xxx_amd64.deb

    xxx_arm64.deb

    xxx.x86_64.rpm

    xxx.AppImage

    xxx.sha256

    xxx.asc

    Source code (zip)

    Source code (tar.gz)

    不要看到一堆文件就乱选。

    判断顺序:

    1. 我的操作系统是什么?
    2. 我的 CPU 架构是什么?
    3. 这是安装包、预编译程序还是源码?


    6. 先学会判断 CPU 架构

    Ubuntu 中:

    uname -m

    如果显示:

    x86_64

    那么 GitHub 中通常找:

    x86_64
    amd64
    x64

    这几个名称在常见软件发布中基本都指:

    64 位 Intel / AMD PC 架构。

    普通 Intel / AMD 笔记本,大多数都是它。


    如果:

    uname -m

    输出:

    aarch64

    那么通常应该选择:

    arm64
    aarch64

    例如:

    树莓派
    ARM 服务器
    部分开发板
    部分 ARM Linux 设备

    可能使用这种架构。

    因此:

    x86_64 ≈ amd64 ≈ x64

    aarch64 ≈ arm64

    这个对应关系以后 GitHub 下载软件非常重要。


    7. GitHub 常见文件后缀

    7.1 .deb

    例如:

    xxx_amd64.deb

    这是:

    Debian / Ubuntu 软件安装包。

    Ubuntu 中通常优先考虑它。

    安装:

    sudo apt install ./xxx_amd64.deb


    7.2 .rpm

    例如:

    xxx.x86_64.rpm

    主要用于:

    Fedora
    RHEL
    CentOS
    Rocky Linux
    AlmaLinux

    等 Red Hat 系 Linux。

    你是 Ubuntu:

    一般不要选择 .rpm。


    7.3 .tar.gz / .tgz

    这是:

    压缩包。

    重点:

    .tar.gz

    只告诉你:

    有一堆文件被打包并压缩了。

    它并没有告诉你:

    里面到底是源码还是已经编译好的软件。

    因此可能出现两种情况。

    情况 1:里面是预编译程序

    例如:

    xxx/
    ├── bin/
    ├── lib/
    └── README

    可能解压以后就可以运行。

    情况 2:里面是源码

    例如:

    xxx/
    ├── src/
    ├── include/
    ├── Makefile
    ├── CMakeLists.txt
    └── README.md

    这时候你还需要:

    编译

    所以:

    看到 .tar.gz 不要立刻判断它是安装包。

    先看 Release 描述或者 README。


    7.4 .zip

    也是:

    压缩包。

    和 .tar.gz 一样:

    后缀本身不能证明里面是源码还是二进制程序。


    7.5 .AppImage

    这是 Linux 中一种比较方便的:

    便携式桌面应用格式。

    可以粗略理解成:

    Windows 绿色版软件。

    下载:

    xxx.AppImage

    有时需要:

    chmod +x xxx.AppImage

    然后:

    ./xxx.AppImage

    即可启动。

    这里:

    chmod +x

    意思是:

    给文件添加“可执行权限”。

    不是安装。


    7.6 .sh

    例如:

    install.sh

    这是:

    Shell 脚本。

    可能是安装脚本,也可能只是普通脚本。

    执行:

    bash install.sh

    或者某些情况下:

    ./install.sh

    但是:

    不要看到 .sh 就直接执行。

    尤其是来源不明的脚本。


    7.7 .bin

    可能是:

    已经编译好的二进制程序。

    具体如何使用必须看项目说明。


    7.8 .sha256

    例如:

    xxx.tar.gz.sha256

    这不是软件。

    它用于:

    校验下载文件有没有损坏或者被修改。

    常见验证:

    sha256sum xxx.tar.gz

    然后和官方提供的 SHA256 对比。


    7.9 .sig / .asc

    一般用于:

    数字签名验证。

    它们同样不是软件本体。


    7.10 Source code (zip)

    以及:

    Source code (tar.gz)

    GitHub 每个 Release 基本都会自动提供。

    它们就是:

    这个 GitHub 仓库对应版本的源码快照。

    重点:

    不要因为看到 tar.gz 就认为这是 Linux 安装包。

    例如:

    Source code (tar.gz)

    只是:

    源码
    +
    tar.gz 压缩

    如果项目官方已经提供:

    xxx_amd64.deb

    通常没必要去下:

    Source code

    除非你就是想自己编译。


    8. 源码安装到底是在干什么

    例如下载:

    redis-x.x.x.tar.gz

    然后:

    tar -zxvf redis-x.x.x.tar.gz

    第一步仅仅是:

    解压。

    不是安装。

    进入目录:

    cd redis-x.x.x

    然后:

    make

    这里才开始:

    编译源码。

    源码:

    .c
    .cpp

    经过编译:

    源代码
    ↓
    编译器
    ↓
    机器能够执行的程序

    最后:

    sudo make install

    通常是在:

    把编译好的程序复制到系统规定的位置。

    因此经典源码安装流程:

    下载源码
    ↓
    解压
    ↓
    配置编译环境
    ↓
    编译
    ↓
    安装


    9. ./configure && make && make install

    这是 Linux 非常经典的一套源码安装流程:

    ./configure
    make
    sudo make install

    分别对应:

    第一步

    ./configure

    主要作用:

    检查你的计算机环境,并准备编译配置。

    例如可能检查:

    有没有 gcc?
    有没有某个库?
    有没有某个头文件?
    操作系统是什么?
    安装路径是什么?

    最后可能生成:

    Makefile


    第二步

    make

    作用:

    按 Makefile 中的规则编译项目。

    可以理解:

    源码
    ↓
    make 根据 Makefile 指挥
    ↓
    gcc / g++
    ↓
    目标文件
    ↓
    可执行程序 / 库


    第三步

    sudo make install

    作用:

    把编译结果复制到系统安装目录。

    常见:

    /usr/local/bin
    /usr/local/lib
    /usr/local/include


    所以:

    configure
    ↓
    准备

    make
    ↓
    编译

    make install
    ↓
    安装


    10. CMake 项目为什么安装命令又变了

    现代 C / C++ 项目经常使用:

    CMake

    而不是直接手写 Makefile。

    可能看到:

    mkdir build
    cd build
    cmake ..
    make

    含义是:

    源代码
    ↓
    CMakeLists.txt
    ↓
    CMake
    ↓
    生成构建文件
    ↓
    make
    ↓
    编译器
    ↓
    程序

    现代推荐写法也经常是:

    cmake -S . -B build
    cmake –build build

    其中:

    cmake -S . -B build

    意思:

    源码目录:.
    构建目录:build

    然后:

    cmake –build build

    意思:

    编译 build 目录中的项目。

    所以:

    cmake 本身一般不是“安装软件”。

    它主要负责:

    配置、生成和组织构建过程。


    11. curl xxx | bash 到底是什么

    经常看到:

    curl https://example.com/install.sh | bash

    拆开:

    curl URL

    作用:

    从 URL 获取内容。

    如果 URL 返回:

    install.sh

    那么:

    |

    管道会把前面获得的内容交给:

    bash

    执行。

    相当于:

    下载安装脚本
    ↓
    执行安装脚本

    安装脚本内部可能执行:

    mkdir
    cp
    chmod
    apt
    wget
    curl
    echo

    等等。

    因此:

    curl | bash 并不是特殊的 Linux 安装技术。

    它只是:

    下载别人写好的 Shell 脚本,然后立即执行。

    因此安全上需要注意:

    不要对不可信网站无脑执行 curl xxx | bash。

    因为这相当于:

    把别人给你的代码直接放到自己电脑上执行。


    12. 为什么有时候 apt install 前面还有十几行命令

    比如安装某些软件可能先要求:

    curl …
    sudo mkdir …
    gpg …
    echo …
    sudo apt update
    sudo apt install xxx

    看起来特别复杂。

    实际上真正的安装可能仍然只是:

    sudo apt install xxx

    前面的步骤是在:

    添加第三方软件仓库。


    原来的 APT:

    APT
    │
    └─ Ubuntu 官方仓库

    加入软件官方仓库后:

    APT
    ├─ Ubuntu 官方仓库
    │
    └─ 某软件官方仓库

    这样以后:

    sudo apt update

    APT 不仅会查询 Ubuntu:

    还会查询:

    这个软件自己的官方仓库

    然后可以:

    sudo apt install xxx

    以后:

    sudo apt upgrade

    也能统一更新它。

    所以很多“安装前几十行命令”的本质其实是:

    加仓库
    ↓
    验证仓库
    ↓
    更新仓库信息
    ↓
    apt install


    13. 软件仓库中的 GPG Key 是什么

    添加第三方仓库时,经常看到:

    GPG key

    或者:

    gpg

    相关命令。

    它的作用主要是:

    验证你下载的软件包确实来自对应的软件发布者,而不是被别人伪造。

    大概:

    软件发布者
    ↓
    给软件包签名
    ↓
    你的系统拥有对应公钥
    ↓
    APT 验证签名
    ↓
    确认软件包可信

    所以第三方 APT 仓库常常包含两件事:

    仓库地址
    +
    仓库签名公钥


    14. Snap 是什么

    Ubuntu 中还会看到:

    sudo snap install xxx

    这是另一套软件分发系统:

    Snap

    传统 .deb 软件经常依赖:

    系统中已经安装的库

    而 Snap 倾向于:

    把程序运行所需的很多东西一起打包。

    优点:

    依赖冲突少
    不同 Linux 环境更容易运行
    安装简单
    自动更新方便

    缺点可能包括:

    软件包体积较大
    部分软件启动稍慢
    文件系统整合方式和传统软件不同

    因此 Ubuntu 上:

    APT
    Snap

    同时存在很正常。


    15. Flatpak 是什么

    另外还有:

    Flatpak

    它和 Snap 的目标类似:

    提供跨 Linux 发行版的软件分发方式。

    桌面软件中比较常见。

    因此你可能看到:

    .deb
    Snap
    Flatpak
    AppImage

    它们都是不同的软件分发形式。


    16. 为什么 Python、Node 又有自己的安装命令

    除了操作系统的软件管理器,还有:

    编程语言自己的包管理器。

    例如:

    Python:

    pip install requests

    Node.js:

    npm install axios

    Rust:

    cargo install ripgrep

    它们和:

    apt install

    管理的层级不同。

    例如:

    sudo apt install python3

    通常是在:

    给 Ubuntu 系统安装 Python。

    而:

    pip install requests

    是在:

    Python 环境中安装一个 Python 包。

    所以可以这样理解:

    操作系统层
    │
    ├─ apt
    ├─ snap
    └─ flatpak

    Python 生态
    └─ pip

    Node.js 生态
    └─ npm

    Rust 生态
    └─ cargo


    17. 为什么 Linux 安装软件的命令看起来千奇百怪

    因为你实际上遇到的是完全不同的情况:

    ① Ubuntu 官方仓库
    ↓
    apt install xxx

    ② 下载好的 .deb
    ↓
    apt install ./xxx.deb

    ③ Snap
    ↓
    snap install xxx

    ④ AppImage
    ↓
    chmod +x
    ./xxx.AppImage

    ⑤ 已经编译好的压缩包
    ↓
    tar 解压
    直接运行

    ⑥ 源码
    ↓
    解压
    configure / cmake
    make
    make install

    ⑦ 官方安装脚本
    ↓
    curl / wget
    bash

    ⑧ Python 包
    ↓
    pip

    ⑨ Node.js 包
    ↓
    npm

    因此:

    不是 Linux “没有统一安装规则”。

    而是你面对的软件来源和软件形态本来就不一样。

    Windows 其实也有:

    .exe
    .msi
    Microsoft Store
    winget
    zip 绿色版
    pip
    npm
    Steam

    只是普通 Windows 用户主要接触:

    双击 .exe

    所以这种差别没有 Linux 明显。


    18. GitHub Release 实战判断流程

    假设:

    uname -m

    输出:

    x86_64

    GitHub 提供:

    myapp_amd64.deb
    myapp_arm64.deb

    myapp.x86_64.rpm

    myapp-linux-amd64.tar.gz
    myapp-linux-arm64.tar.gz

    myapp.AppImage

    Source code.zip
    Source code.tar.gz

    你的思考过程应该是:

    我是 Ubuntu
    ↓
    优先找 .deb
    ↓
    有
    ↓
    CPU 是 x86_64
    ↓
    x86_64 ≈ amd64
    ↓
    选择:
    myapp_amd64.deb

    然后:

    sudo apt install ./myapp_amd64.deb


    如果没有 .deb:

    桌面软件?
    ↓
    可以看看 AppImage

    如果没有:

    看 linux-amd64.tar.gz

    然后去 README 判断:

    这是已经编译好的程序,还是源码?


    而:

    Source code.zip
    Source code.tar.gz

    通常最后再考虑。

    因为那意味着:

    你可能需要自己编译。


    19. chmod +x 是什么

    Linux 文件有三类基础权限:

    r = read
    w = write
    x = execute

    例如:

    chmod +x xxx.sh

    就是:

    给 xxx.sh 添加可执行权限。

    之后:

    ./xxx.sh

    Shell 才允许把它当程序执行。

    同理:

    chmod +x xxx.AppImage

    也是:

    允许执行这个 AppImage 文件。

    注意:

    chmod +x 不是安装。

    它只是改变文件权限。


    20. ./xxx 为什么前面有 ./

    假设当前目录有:

    hello

    运行:

    hello

    Shell 通常不会默认在当前目录寻找。

    它只会去:

    PATH

    中的目录找。

    而:

    ./hello

    含义就是:

    .
    当前目录

    /

    目录中的

    hello

    也就是:

    运行当前目录里的 hello。

    所以:

    ./xxx

    不是特殊命令。

    它就是:

    指定一个程序的路径。


    21. PATH:为什么安装后可以直接输入程序名

    例如:

    sudo apt install git

    安装完成以后:

    git

    就能运行。

    为什么不用:

    /usr/bin/git

    ?

    因为 Shell 有一个环境变量:

    PATH

    查看:

    echo $PATH

    可能得到:

    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:…

    输入:

    git

    Shell 会依次去:

    /usr/local/sbin/git

    /usr/local/bin/git

    /usr/sbin/git

    /usr/bin/git

    等目录寻找。

    最后找到:

    /usr/bin/git

    于是运行。

    所以可以简单理解:

    输入 git
    ↓
    Shell 查询 PATH
    ↓
    找到 /usr/bin/git
    ↓
    运行


    这也是为什么:

    当前目录

    和:

    程序安装目录

    没有直接关系。

    程序安装进:

    /usr/bin

    以后,你站在:

    /home
    /tmp
    /Desktop

    都可以直接:

    git


    22. 如何查看一个命令到底在哪里

    非常实用。

    例如:

    which git

    可能输出:

    /usr/bin/git

    说明:

    当前执行的 git 是 /usr/bin/git。

    还可以:

    command -v git

    作用类似,而且在 Shell 脚本中更加常见。


    23. /usr/bin 和 /usr/local/bin 的区别

    简单理解:

    /usr/bin

    更多是:

    系统包管理器管理的软件。

    比如:

    apt install git

    得到的程序经常位于:

    /usr/bin

    而:

    /usr/local/bin

    通常更适合:

    用户自己手动安装的软件。

    例如:

    sudo make install

    很多项目默认可能把程序放到:

    /usr/local/bin

    这样就可以避免:

    手动安装的软件和系统包管理器的软件混在一起。


    24. /opt 又是什么

    有一些完整的第三方应用会放到:

    /opt

    例如可能出现:

    /opt/google/
    /opt/xxx/

    可以理解成:

    给比较独立的第三方大型软件准备的位置。

    它可能把整个程序目录都放进去。


    25. /usr/bin 里的程序和真正的软件全部内容不是一回事

    例如一个软件可能包含:

    /usr/bin/xxx 可执行程序

    /etc/xxx/ 配置

    /usr/lib/xxx/ 库

    /usr/share/xxx/ 数据

    /var/log/xxx/ 日志

    所以:

    一个 Linux 软件通常不是一个单独文件。

    APT 安装时会把不同类型的文件分别放到不同目录。


    26. 软件“安装”“运行”“服务启动”是三回事

    尤其后面装:

    Redis
    MySQL
    Nginx

    非常容易混淆。

    例如:

    sudo apt install nginx

    这是:

    安装 Nginx。

    但是 Nginx 是服务器程序,它还可能有:

    启动
    停止
    重启
    开机自启

    例如使用 systemd:

    sudo systemctl start nginx

    启动。

    sudo systemctl stop nginx

    停止。

    sudo systemctl restart nginx

    重启。

    sudo systemctl status nginx

    查看状态。

    sudo systemctl enable nginx

    设置开机启动。

    因此一定区分:

    安装
    ≠
    运行
    ≠
    启动服务


    27. 安装软件遇到 sudo 是什么

    例如:

    sudo apt install git

    sudo 的意思可以简单理解为:

    临时以管理员权限执行后面的命令。

    为什么安装经常需要?

    因为:

    /usr/bin
    /etc
    /usr/lib

    这些系统目录普通用户不能随意修改。

    因此需要管理员权限。

    但是:

    pip install …
    npm install …

    等命令是否应该加 sudo,要看具体环境。

    不要形成:

    安装东西一律 sudo

    这种习惯。


    28. GitHub 软件选择优先级

    Ubuntu 上遇到一个普通软件,可以先按照下面顺序考虑:

    ① Ubuntu 官方 APT 仓库
    ↓

    ② 软件官方 APT 仓库
    ↓

    ③ 官方 .deb
    ↓

    ④ 官方 AppImage / Snap / Flatpak
    ↓

    ⑤ 官方预编译 tar.gz
    ↓

    ⑥ 源码编译

    这不是绝对规则,但对日常使用非常实用。

    原因是:

    越靠前通常越容易安装、升级和卸载。


    29. 为什么源码编译一般放到最后

    因为源码安装需要你自己负责更多事情:

    编译器
    依赖库
    编译选项
    安装路径
    升级
    卸载

    例如:

    make
    sudo make install

    安装的软件不一定会被:

    apt

    完整管理。

    以后可能:

    apt 不知道它是谁

    卸载也没有:

    sudo apt remove xxx

    那么方便。

    因此:

    如果只是使用软件,通常优先使用成熟的软件包。

    如果为了学习源码、定制功能、需要特殊版本,再考虑源码编译。


    30. 遇到安装教程以后,应该怎么读

    不要上来就复制粘贴。

    先判断每一步属于哪一类:

    例如:

    wget https://xxx.com/app.tar.gz
    tar -zxvf app.tar.gz
    cd app
    cmake -S . -B build
    cmake –build build
    sudo cmake –install build

    你应该翻译成:

    wget
    ↓
    下载

    tar
    ↓
    解压

    cd
    ↓
    进入源码目录

    cmake -S . -B build
    ↓
    配置项目

    cmake –build build
    ↓
    编译

    cmake –install build
    ↓
    安装

    一旦能这么拆:

    再长的安装命令也不会觉得神秘。


    31. 常见命令功能速查

    apt install

    从 APT 软件源安装软件。


    apt update

    更新软件仓库信息。


    apt upgrade

    升级已安装的软件。


    dpkg -i xxx.deb

    底层方式安装 .deb。


    tar -zxvf xxx.tar.gz

    解压 .tar.gz。


    unzip xxx.zip

    解压 .zip。


    wget URL

    下载文件。


    curl URL

    获取 URL 内容。


    chmod +x xxx

    给文件增加可执行权限。


    ./xxx

    执行当前目录下的 xxx。


    make

    按 Makefile 编译。


    make install

    按 Makefile 规则安装。


    cmake

    配置 / 生成项目构建系统。


    which xxx

    查看当前命令实际对应哪个程序。


    uname -m

    查看 CPU 架构。


    systemctl status xxx

    查看系统服务状态。


    32. 最终决策树

    以后在 GitHub / 官网看到软件,可以直接按照这棵树判断:

    我要安装一个软件
    │
    ├─ Ubuntu APT 仓库里有吗?
    │
    │ ├─ 有
    │ │ └─ apt install
    │ │
    │ └─ 没有
    │
    ├─ 官方提供 Ubuntu / Debian 的 .deb 吗?
    │
    │ ├─ 有
    │ │ ├─ uname -m 看 CPU 架构
    │ │ ├─ x86_64 → amd64
    │ │ └─ apt install ./xxx.deb
    │ │
    │ └─ 没有
    │
    ├─ 官方有自己的 APT 仓库吗?
    │
    │ └─ 按官方说明添加仓库
    │ → apt install
    │
    ├─ 有 AppImage / Snap / Flatpak 吗?
    │
    │ └─ 根据需求选择
    │
    ├─ 有 linux-amd64.tar.gz 吗?
    │
    │ └─ 看 README:
    │ │
    │ ├─ 已经编译好的
    │ │ └─ 解压 → 运行
    │ │
    │ └─ 源码
    │ └─ 编译
    │
    └─ 只有 Source Code
    │
    └─ README
    ↓
    configure / cmake
    ↓
    make
    ↓
    install


    33. 最后真正需要记住的东西

    不要背:

    这个软件执行五条命令
    那个软件执行八条命令

    以后只问:

    ① 我拿到的是什么?

    是:

    .deb?
    AppImage?
    压缩好的二进制?
    源码?
    安装脚本?


    再问:

    ② 它现在处于哪个阶段?

    是:

    下载?
    解压?
    配置?
    编译?
    安装?
    启动?


    最后问:

    ③ 为什么这一行命令现在要执行?

    例如:

    wget
    → 下载

    tar
    → 解压

    cmake
    → 准备构建

    make
    → 编译

    make install
    → 安装

    systemctl start
    → 启动服务

    这样以后哪怕 README 从来没见过:

    curl …
    tar …
    cmake …
    ninja …
    install …

    也不用害怕。

    因为表面命令可能变:

    “下载 → 解压 → 构建 → 安装 → 运行”这条主线不会变。


    一句话总纲

    Linux 安装软件不是背安装命令。

    先判断:
    “我拿到的到底是什么?”

    再判断:
    “我现在是在下载、解压、编译,还是安装?”

    命令只是这些步骤使用的工具。

    赞(0)
    未经允许不得转载:171主机测评 » Ubuntu / Linux 软件安装完整笔记
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址