新服务器装好 Linux 系统后,第一件事就是用包管理器装软件,选对发行版对应的命令,整个过程比 Windows 装软件更直接、更高效。
先分清你的 Linux 发行版,再谈安装软件
不少朋友第一次接触 Linux 服务器,最容易卡在第一步:网上搜到的安装命令五花八门,抄过来却报错,原因很简单,Linux 不是一个系统,而是一整个家族,你手里的服务器装的是 Ubuntu、CentOS、Debian 还是 AlmaLinux,决定了你用哪套安装工具。
行业共识认为,服务器市场目前主要分成两大阵营:Debian 系(Ubuntu、Debian 本身)和 Red Hat 系(CentOS、Rocky Linux、AlmaLinux),Ubuntu Server 因为资料多、社区活跃,是新手首选;CentOS 曾经的霸主地位虽然因停更有所动摇,但 Rocky Linux 和 AlmaLinux 已经接过了它的衣钵。
怎么快速知道自己的系统是哪个?登录服务器后输入:
cat /etc/os-release
看到 Ubuntu 字样,就用 apt;看到 CentOS 或 Rocky,就用 dnf,这一步搞错了,后面全是白忙活。
用 apt 安装软件:Ubuntu 和 Debian 的操作方式
apt 是 Debian 系系统的默认包管理器,它的逻辑很简单:你告诉它软件名字,它自动去软件源下载、解决依赖、完成安装,依赖问题在 Linux 世界很常见,一个软件往往要依赖十几个共享库,手工去配能把人逼疯,apt 一己之力全包了。
安装前先更新软件源
刚装完系统,软件源里的软件列表可能停留在系统发布时的版本,不更新就安装,常常会碰到“软件包不存在”或者版本过旧的情况,所以第一步永远是:
sudo apt update
这只是刷新包列表,不会升级任何软件,想顺便把系统自带的软件也升到最新,再执行:
sudo apt upgrade
搜索和安装软件
不确定软件包叫什么名字?先搜一把:
apt search nginx
搜到了就直接装:
sudo apt install nginx
apt 会显示即将安装的包列表和占用空间,输入 Y 确认就行,如果你已经确定要装,不想每次确认,可以加 -y 参数:
sudo apt install -y nginx
卸载和清理
卸载软件用 remove,配置文件也会一并清掉的话用 purge:
sudo apt remove nginx sudo apt purge nginx
装过不少软件后,系统里会留一堆用不到的依赖包,定期清理是好习惯:
sudo apt autoremove
用 dnf 安装软件:CentOS、Rocky Linux 的操作方式
Red Hat 系的 CentOS 和 Rocky Linux 使用 dnf 作为包管理器(老版本 CentOS 7 用的是 yum,但命令格式几乎一样),dnf 和 apt 的理念相同,只是命令参数稍有区别。
基本安装命令
搜索软件:
dnf search nginx
安装:
sudo dnf install nginx
卸载:
sudo dnf remove nginx
一次装多个软件也很常见,比如装个 Web 环境:
sudo dnf install -y nginx php-fpm mysql-server
启用 EPEL 仓库:装更多软件的关键
很多第三方软件不在默认源里,尤其是 CentOS 系,这时候你需要启用 EPEL(Extra Packages for Enterprise Linux)仓库,它是 Fedora 社区维护的扩展软件包集合,装完之后软件可选范围瞬间大了不少:
sudo dnf install epel-release
没有这个仓库,你搜 certbot(免费 SSL 证书工具)都会搜不到,这是不少人踩过的坑:明明命令没错,就是提示找不到包,原因就是没启用 EPEL。
从官方网站下载软件包安装:处理特殊情况
绝大多数软件都能通过包管理器装,但偶尔会遇到例外:软件官方只提供编译好的二进制压缩包,或者包管理器里的版本太旧,这时候就得手动下载安装。
安装 .deb 和 .rpm 包
- Debian/Ubuntu 用
dpkg:
sudo dpkg -i 软件包名.deb
如果提示依赖缺失,接着跑:
sudo apt install -f
会自动修复依赖问题。
- CentOS/Rocky 用
rpm:
sudo rpm -ivh 软件包名.rpm
同样地,用 dnf 也能装本地 rpm 包,而且会自动处理依赖:
sudo dnf install 软件包名.rpm
解压即用的绿色软件
像部分 JDK 版本、Go 语言工具链,直接提供 tar.gz 压缩包,解压就能用,以 JDK 为例:
tar -zxvf jdk-17_linux-x64_bin.tar.gz sudo mv jdk-17 /usr/local/
然后需要配置环境变量,编辑 /etc/profile 文件,在末尾加上:
export JAVA_HOME=/usr/local/jdk-17 export PATH=$JAVA_HOME/bin:$PATH
执行 source /etc/profile 让它生效,跑一下 java -version 验证是否配置成功,这种安装方式自由度高,但升级得自己动手,适合对系统有一定了解后再使用。
用宝塔面板等图形化工具:适合不愿意碰命令行的场景
不想记命令、不想面对黑乎乎的终端,用宝塔面板(BT Panel)确实是个好选择,它提供网页图形界面,点几下鼠标就能装 Nginx、MySQL、PHP 等常用软件,近年来,国内相当一部分使用服务器的人选择这种方式管理软件。
安装宝塔面板只需要一条命令:
wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sudo bash install.sh
装完后会输出一个面板访问地址和默认账号密码,浏览器打开就能操作。但是,图形化面板的本质是在后台帮你执行命令,它对新手友好,但也容易让人忽略底层逻辑,服务器出了面板本身搞不定的问题,你还是得回终端里排查,我的建议是:面板适合搭环境,不适合深入排障。
源码编译安装:最灵活但最花时间的方式
从源码编译安装是最古老的软件安装方式,它的好处是可以自定义编译参数、优化性能,缺点是耗时久、需要手动处理依赖。
典型流程:
wget https://example.com/software.tar.gz tar -zxvf software.tar.gz cd software ./configure --prefix=/usr/local/software make sudo make install
./configure 阶段可以指定安装路径、启用或禁用某些功能。make 是编译过程,时间从几分钟到半小时不等,取决于服务器的 CPU 性能,这种方式现在多用于安装带特定性能要求的软件,比如自编译 Nginx 以启用特定模块,普通场景下,大部分用户优先选择包管理器安装,避免自己折腾。
新服务器装软件常见问题与解决方案
遇到“Command not found”怎么办
刚装完系统,很多命令可能还没装。wget 和 vim 默认就不在最小化安装的系统里,Ubuntu 上先执行 sudo apt update,然后直接 sudo apt install wget vim;CentOS 则用 sudo dnf install wget vim,装好就能用了。
提示“Package not found”怎么处理
找不到软件包的原因一般是两种:软件源里确实没有,或者软件源列表过期了,先执行更新源命令,再试一次;如果还是没有,就去软件官网查查它提供的安装方式,或者看是不是需要启用第三方仓库。
软件源太慢怎么办
国内访问国外默认源速度拖沓,换简米云或清华镜像源是主流解法,以 Ubuntu 为例,备份原源文件后,将 /etc/apt/sources.list 里的地址改为 mirrors.aliyun.com 即可,镜像源同步频率高,安全性也有保障,使用体验明显提升,具体操作各镜像站官网都有详细步骤,照着做就行。
常见问题解答
问:新服务器装软件,选 apt 还是 dnf 装?
这取决于你的系统发行版,Ubuntu 和 Debian 用 apt,CentOS 和 Rocky Linux 用 dnf,两者本质相同,都是自动处理依赖关系的包管理器,没有优劣之分,装软件之前先确认系统类型,命令用错不会有大损失,只是浪费时间。
问:服务器在本地机房还是云服务器,装软件有区别吗?
没本质区别,服务器的操作系统是哪个,就用对应的包管理器,跟部署位置无关,云服务器厂商的控制台可能提供“一键安装环境”的快捷入口,但那也是在系统内调用包管理器完成的,方便而已。
问:装完软件后怎么开机自启动?
Ubuntu 和 CentOS 现在都用 systemd 管理服务,例如让 Nginx 开机自启:
sudo systemctl enable nginx
立刻启动服务:
sudo systemctl start nginx
查看服务状态:
sudo systemctl status nginx
配合这几个命令,装完的软件就能立刻跑起来了。
新服务器装软件,核心思路就是先认清系统,再用对包管理器,绝大多数需求,apt install 或 dnf install 一条命令足以解决;碰见特殊软件,才考虑手动安装或源码编译,把包管理器的基本操作练熟,就已经解决了 Linux 服务器使用中一半的问题。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/786919.html

