Linux作为开源操作系统,其软件安装方式多样,涵盖包管理器、源码编译、Snap/Flatpak等现代工具,不同发行版采用的包管理器不同,以下从主流发行版出发,详细介绍各类安装命令及使用场景。

基于Deb/Ubuntu的包管理器(APT)
Ubuntu、Debian等系统使用apt作为核心包管理器,安装软件前通常需更新软件源列表:
sudo apt update # 更新软件源列表 sudo apt upgrade # 升级已安装的软件包
安装软件包
sudo apt install 软件名1 软件名2 # 安装一个或多个软件包,如sudo apt install vim git sudo apt install -y 软件名 # 自动确认安装,避免交互式提示
卸载软件包
sudo apt remove 软件名 # 卸载软件但保留配置文件 sudo apt purge 软件名 # 卸载软件并删除配置文件 sudo apt autoremove # 自动清理不再依赖的软件包
搜索软件包
apt search 关键词 # 搜索包含关键词的软件包,如apt search text editor apt show 软件名 # 显示软件包的详细信息(版本、描述、依赖等)
管理软件源
sudo nano /etc/apt/sources.list # 编辑软件源文件,可替换为阿里云、清华等镜像源 sudo apt update # 修改源后需更新列表
基于RPM/Fedora/CentOS的包管理器(YUM/DNF)
CentOS 7及之前版本使用yum,CentOS 8+、Fedora等使用dnf(语法与yum基本一致,仅命令名不同)。
安装软件包
sudo yum install 软件名 # CentOS 7及以前,如sudo yum install httpd sudo dnf install 软件名 # Fedora/CentOS 8+,如sudo dnf install nginx sudo dnf install -y 软件名 # 自动确认安装
卸载软件包
sudo yum remove 软件名 # 卸载软件,保留配置 sudo yum erase 软件名 # 同remove,彻底删除 sudo dnf remove 软件名 # dnf卸载命令 sudo yum autoremove # 清理依赖
搜索与查询
yum search 关键词 # 搜索软件包,如yum search database dnf search 关键词 # dnf搜索 yum info 软件名 # 查看软件包信息 dnf list installed # 列出已安装的软件包
软件源管理
sudo nano /etc/yum.repos.d/CentOS-Base.repo # 编辑软件源文件 sudo yum clean all && yum makecache # 清理缓存并生成新缓存
基于Arch Linux的包管理器(Pacman)
Arch Linux采用pacman,强调简洁与快速同步。
安装软件包
sudo pacman -S 软件名1 软件名2 # 安装软件,如sudo pacman -S neofetch sudo pacman -S --noconfirm 软件名 # 自动确认安装
卸载与清理
sudo pacman -R 软件名 # 卸载软件,保留依赖 sudo pacman -Rs 软件名 # 卸载软件及不再需要的依赖 sudo pacman -Rc 软件名 # 卸载软件并删除配置文件 sudo pacman -Scc # 清理所有缓存(保留最近版本)
同步与升级
sudo pacman -Syu # 同步软件源并升级系统(Arch推荐定期执行) sudo pacman -Sy 软件名 # 仅同步源后安装(不升级系统)
查询与搜索
pacman -Ss 关键词 # 在仓库中搜索软件,如pacman -Ss browser pacman -Qi 软件名 # 查看已安装软件的详细信息 pacman -Ql 软件名 # 列出软件安装的文件
源码编译安装
当软件包未收录于仓库或需自定义编译时,可通过源码安装,通用步骤如下:

安装编译依赖
# Ubuntu/Debian sudo apt install build-essential cmake gcc g++ make # CentOS/RHEL sudo yum groupinstall "Development Tools" # 安装开发工具组 sudo yum install cmake gcc gcc-c++ make # Arch Linux sudo pacman -S base-devel cmake
下载与编译
wget https://github.com/user/project/archive/v1.0.tar.gz # 下载源码包 tar -xvzf v1.0.tar.gz && cd project-1.0 # 解压并进入目录 mkdir build && cd build # 创建编译目录 cmake .. # 配置编译选项(部分项目需./configure) make -j$(nproc) # 编译(-j$(nproc)使用所有CPU核心) sudo make install # 安装到系统
常见问题
- 编译报错:检查依赖是否安装,查看
CMakeLists.txt或configure脚本要求; - 安装路径:默认安装至
/usr/local/,可通过cmake -DCMAKE_INSTALL_PREFIX=/path/to/install自定义。
现代打包工具:Snap与Flatpak
Snap(Canonical开发,跨发行版)
sudo apt install snapd # Ubuntu安装snapd sudo snap install 软件名 # 安装软件,如sudo snap install spotify sudo snap list # 查看已安装的snap软件 sudo snap remove 软件名 # 卸载软件 snap info 软件名 # 查看软件信息(含版本、渠道等) sudo snap refresh 软件名 # 更新特定软件 sudo snap refresh --all # 更新所有snap软件
Flatpak(社区驱动,沙箱隔离)
# 安装Flatpak(Ubuntu) sudo apt install flatpak flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo # 添加Flathub仓库(最大软件源) flatpak install flathub 软件名 # 安装软件,如flatpak install flathub org.gtk.Gtk3theme.Adwaita-dark flatpak list # 查看已安装软件 flatpak uninstall 软件名 # 卸载软件 flatpak update # 更新所有软件
其他安装方式
二进制包(.run/.bin)
部分软件提供预编译二进制包(如NVIDIA驱动、VirtualBox),直接执行安装脚本:
chmod +x package.run # 添加可执行权限 ./package.run # 运行安装(图形界面或交互式命令)
Docker容器安装
适合环境隔离,通过容器运行软件:
sudo apt install docker.io # 安装Docker(Ubuntu) sudo systemctl start docker # 启动Docker服务 docker run -d -p 8080:80 nginx # 后台运行Nginx容器,映射端口8080
软件安装方式对比表
| 方式 | 适用场景 | 优点 | 缺点 | 示例命令 |
|---|---|---|---|---|
| APT/YUM/DNF | 官方仓库软件,快速安装 | 自动解决依赖,管理方便 | 版本可能较旧 | sudo apt install vim |
| 源码编译 | 自定义功能,最新版本,无仓库收录 | 灵活度高,可优化性能 | 编译耗时,依赖复杂 | make && sudo make install |
| Snap/Flatpak | 跨发行版,需要沙箱隔离 | 版本独立,环境隔离 | 容器化可能增加资源占用 | sudo snap install code |
| 二进制包 | 无需编译的预编译软件(驱动、工具) | 安装简单,无需依赖 | 版本固定,难以管理 | ./NVIDIA-Linux.run |
| Docker | 需要环境隔离或快速部署多版本 | 环境一致性,启动快速 | 需学习容器命令,资源占用较高 | docker run nginx |
相关问答FAQs
Q1:为什么用apt install时提示“无法定位软件包”?
A:可能原因有二:一是软件名错误,可通过apt search 关键词查找正确名称;二是未启用对应源(如第三方源需手动添加到/etc/apt/sources.list),解决方法:先更新源列表(sudo apt update),确认软件名无误后重试,或检查源配置是否正确。
Q2:Snap和Flatpak有什么区别?哪个更适合日常使用?
A:Snap由Canonical开发,采用中心化仓库和严格沙箱,更新机制独立(每个软件自带依赖),但可能占用较多磁盘空间;Flatpak由社区驱动,支持多仓库(如Flathub、GNOME SDK),沙箱策略更灵活,且可共享系统依赖(节省空间),日常使用中,若需跨发行版兼容且重视稳定性,可选Snap;若追求资源效率和定制化,Flatpak更合适,多数Linux发行版(Ubuntu、Fedora等)已默认支持。

