ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

apt/yum/dnf一键在线安装Git:三大包管理器详解

2026/9/14 4:03:37 拓冰建站 浏览量
apt/yum/dnf一键在线安装Git:三大包管理器详解 我这几年帮人配开发环境碰到最多的一个需求就是“先把 Git 装上”。这事听起来简单但实际操作里五花八门的问题特别多——有人用的是 Ubuntu有人是 CentOS 7还有人是 Rocky Linux 或者 Fedora系统不一样包管理器就不一样网上教程又经常只写某一种照着抄常常翻车。所以我把这块内容整理成一个系列这篇文章先讲最直接、最省事的在线安装方式。所谓在线安装就是直接走系统自带的软件包管理器从官方软件源拉取 Git 并自动配好环境。整个过程只需要一条命令apt、yum、dnf 三大包管理器全覆盖Debian/Ubuntu、CentOS/RHEL 7、RHEL/CentOS 8 以及 Fedora 这些主流发行版都能用。这篇文章适合谁看刚接触 Linux 的新手、需要在多台服务器上批量装 Git 的运维、以及在本地虚拟机里搭开发环境的同学。看完你不仅能装好 Git还能搞清楚这几个包管理器之间的区别遇到问题也知道去哪排查。1. 为什么首选在线安装对比源码编译的优势很多人第一次装 Git搜到的教程往往是“去官网下载源码然后 ./configure、make、make install”。这条路线本身没问题但对绝大多数场景来说属于自己给自己找麻烦。1.1 源码编译的隐形成本Git 是 C 语言写的编译它需要完整的编译工具链包括 gcc、make、autoconf 等一系列工具。全新的最小化服务器上这些通常都没有你得先装一堆依赖。编译本身也要花几分钟机器配置差点的话十分钟都跑不完。更要命的是后续升级——源码装的 Git升级时得重新下载源码、重新编译、重新安装每次都得重复一遍流程时间一长系统里的 Git 版本就停留在远古时代了。另外源码编译默认安装到 /usr/local 目录这跟系统自带的软件包管理数据库完全是两套体系。以后你再用 apt 或者 yum 装别的软件它们不会知道 /usr/local 下面已经有一个 Git 了。万一某个依赖包版本不对编译到一半报错排查起来非常头疼。1.2 包管理器自动处理依赖关系在线安装最大的优势是包管理器会自动处理依赖。Git 在运行时会依赖一些库比如 zlib压缩、libcurlHTTPS 协议支持、openssl加密通信等。你手动装的时候少任何一个Git 就可能出现“能 clone 但 push 不了”或者“访问 HTTPS 仓库报 SSL 错误”这类奇怪问题。而用 apt/yum/dnf 安装时包管理器会自动把这些依赖一起装好。装完之后 Git 马上就能用不需要任何额外配置包括 HTTPS 支持和 SSH 支持都是默认就绪的。这一点对于新手来说价值极高你不需要理解依赖关系系统帮你全搞定了。1.3 卸载和升级更干净包管理器安装的软件卸载时一条命令就能清干净不会在系统里留下散落的文件。升级也简单系统更新的时候顺带就把 Git 升上去了。对于服务器环境这种“可管理性”非常重要——你装的是什么版本、什么时候装的、还依赖哪些包包管理器都有记录出了问题能查、能回退。我个人的建议是除非你有特殊需求比如要体验最新特性或者要改 Git 源码做二次开发否则一律用在线安装。省时、省力、好维护这才是生产环境该有的样子。2. apt/yum/dnf 三大包管理器到底有什么区别既然要一条命令装 Git首先得搞清楚你用的系统该敲哪条命令。apt、yum、dnf 这三个名字长得像背后的关系也不少网上解释得乱的特别容易把人绕晕。2.1 aptDebian/Ubuntu 系的主力apt 是 Debian 及其衍生发行版Ubuntu、Deepin、Linux Mint 等的包管理工具底层是 dpkg。它的全称是 Advanced Package Tool设计上比较简洁直观命令也友好比如 apt install、apt remove、apt update。用 apt 的系统软件源配置写在 /etc/apt/sources.list 文件和 /etc/apt/sources.list.d/ 目录下。安装软件之前先执行 apt update 更新软件包列表这个动作我后面会详细解释为什么不能省。Debian/Ubuntu 系的用户量非常大所以网上能搜到的“apt install git”教程也最多。但要注意Ubuntu 官方源里的 Git 版本偏保守一般比最新版落后一两个大版本但功能完整、稳定性好够用。2.2 yumCentOS/RHEL 7 时代的记忆yum 是 RHEL/CentOS 6、7 时代的默认包管理器底层是 rpm。它的工作机制是用 Python 2 写的从 2003 年一直服役到 CentOS 7 时代结束可以说非常长寿了。CentOS 7 虽然在 2024 年 6 月停止维护了但国内还有大量存量服务器在跑很多老项目的生产环境依然是 CentOS 7。所以哪怕 yum 已经被官方标记为“废弃”在实际工作中你依然绕不开它。yum 的软件源配置在 /etc/yum.repos.d/ 目录一个 .repo 文件对应一个源。使用方式和 apt 类似也是先更新缓存再安装只不过命令是 yum makecache。2.3 dnfyum 的正统继任者dnf 是 yum 的下一代版本底层同样基于 rpm但内核换成了 Python 3依赖解析和性能都更好。Fedora 从第 22 版开始默认使用 dnfRHEL 8 和 CentOS 8 也把 dnf 作为默认包管理器。有个容易混淆的点在 RHEL 8/CentOS 8 系统上你敲 yum 命令其实是能用的因为它是指向 dnf 的软链接命令语法完全兼容。所以你在 CentOS 8 上看到“yum install git”和“dnf install git”都能装成功但底层执行的其实是同一个东西。判断方法很简单执行cat /etc/os-release看系统版本7 及以下跑 yum8 及以上跑 dnf。但为了清晰我建议直接用 dnf不要打 yum。包管理器底层工具常见系统更新命令安装命令aptdpkgDebian / Ubuntu / Mintapt updateapt installyumrpmCentOS 6/7、RHEL 6/7yum makecacheyum installdnfrpmFedora、CentOS 8、RHEL 8dnf makecachednf install用错了会怎样比如在 Ubuntu 上敲 yum系统会提示 command not found。反过来在 CentOS 7 上敲 apt同样不存在。先确认系统属于哪个阵营再决定用哪条命令这是所有安装步骤的第一步。3. 实操三条命令分别怎么执行铺垫完了下面进入正题。我按三种系统分别给出完整步骤每一步都会解释为什么这么做而不是单纯丢命令让你抄。3.1 Debian/Ubuntu 系apt 安装 GitDebian 系系统安装 Git 的完整流程如下# 第一步更新软件包列表 sudo apt update # 第二步安装 Git sudo apt install git -y第一步的apt update很多人会忽略觉得直接 install 就行。但 apt 安装时查询的是本地的软件包列表缓存这个缓存不是实时的。如果你从没更新过或者系统装了好几个月本地列表里的 Git 版本可能非常老甚至找不到这个包。执行完 update 之后第二步的-y参数表示自动确认所有询问避免安装过程中弹交互提示卡住。如果网络状况不好apt 下载中断了重新执行 install 命令它会在断点继续不会从头开始。安装完成后验证一下git --version能正常输出版本号比如 git version 2.34.1就说明装好了。顺手看一下 Git 可执行文件的位置which git通常输出是 /usr/bin/git这意味着 Git 已经被纳入了系统的软件包管理体系后续可以用apt upgrade统一升级。3.2 CentOS/RHEL 7 及更早yum 安装 GitCentOS 7 这类老系统的流程类似但要注意包管理器的习惯差异# 第一步生成软件源缓存 sudo yum makecache fast # 第二步安装 Git sudo yum install git -y旧版 yum 执行makecache速度可能不快耐心等它跑完。如果软件源配置有问题这一步会直接报错正好提前发现问题避免装到一半才失败。这里提醒一句CentOS 7 官方源里的 Git 版本是 1.8.3.1非常老连 GitHub 都在 2022 年停止支持这个版本的 HTTPS 认证。如果你只是用 Git 拉公共仓库问题不大但如果你要往 GitHub 推送代码大概率会认证失败。这个问题我在后面“版本太老怎么办”一节单独讲。验证安装同样用 git --version。如果你发现装出来的版本太老先别急着卸看第 6 节的方案。3.3 RHEL/CentOS 8 及 Fedoradnf 安装 Git较新的红帽系系统直接用 dnf# 第一步刷新源缓存 sudo dnf makecache # 第二步安装 Git sudo dnf install git -ydnf 的依赖解析比 yum 聪明很多速度也快。RHEL 8 官方源的 Git 版本是 2.27 左右RHEL 9 是 2.39 左右CentOS Stream 9 也一样基本够用。在 RHEL 8 系统上你可能注意到执行sudo yum install git也能装成功。我刚才说过这是因为 yum 命令被做成 dnf 的别名了但为了规范和可读性脚本里最好直接写 dnf避免在 Nova 系统上混淆。Fedora 用户更简单Fedora 的软件源版本很新某些版本甚至自带 Git 2.40直接 dnf install 就能拿到很新版本。3.4 无 sudo 权限的特殊处理有一种场景常在公司的共享服务器上遇到——你只有普通用户权限没有 sudo。这种情况下包管理器没法直接使用但有三个替代方案用sudo前缀需要有密码或免密配置请管理员执行安装命令把 Git 装到用户目录下源码编译或者下载预编译二进制这个属于离线安装的范畴后面文章会单独讲如果你连管理员都联系不上还有一个临时办法很多系统自带 Python你可以用 pip 安装一个 GitPython但那是操作 Git 的 Python 库不等于 Git 本身远程 clone 还是得有 Git。所以老老实实找管理员要权限吧。4. 装完不是结束必要的初始化配置Git 装完之后直接 clone 代码可以但提交代码之前还有几个配置必须做。这一步很多新手都会忘结果提交的时候弹出满屏的红色报错不知道发生了什么。4.1 设置身份信息Git 每次提交都会记录“谁提交的”通过 user.name 和 user.email 两个配置项识别。不设置的话提交时 Git 会报错Please tell me who you are。设置方法git config --global user.name 你的名字 git config --global user.email 你的邮箱这三条命令执行后配置写入用户主目录下的 ~/.gitconfig 文件。--global参数表示对当前用户所有仓库生效。如果你有某个项目需要不同的身份比如公司的项目用公司邮箱可以去掉 global到项目目录里单独设置。查看当前配置git config --list4.2 设置默认编辑器Git 在某些操作比如写提交信息、处理合并冲突时会调用编辑器。默认的 vim 对新手不友好一进去不知道怎么退出。建议改成自己熟悉的编辑器# 设置为 nano对新手友好 git config --global core.editor nano # 或者设置为 VS Code git config --global core.editor code --wait这一步不是必须的但能显著提升日常使用体验。我自己默认用 vim但给新手配环境时都会配成 nano。4.3 生成 SSH 密钥如果你想用 SSH 协议连接 GitHub、Gitee 或公司的 GitLab需要先生成密钥ssh-keygen -t rsa -b 4096 -C 你的邮箱一路回车即可默认会在 ~/.ssh/ 目录生成 id_rsa私钥和 id_rsa.pub公钥。然后把公钥内容添加到代码托管平台的 SSH Keys 设置里cat ~/.ssh/id_rsa.pub复制输出内容粘贴到 GitHub 的 Settings → SSH and GPG keys → New SSH key 页面即可。4.4 验证 SSH 连接配好公钥后用以下命令验证ssh -T gitgithub.com能收到 “Hi xxx! Youve successfully authenticated” 的提示说明 SSH 链路已经打通可以正常 push 代码了。5. 常见问题与排查技巧实录装 Git 的过程虽然只有一条命令但实际执行时翻车的情况非常多。我把这几年最常遇到的问题整理成表格附带排查思路你在网上搜到的大多数报错基本都能从下面找到答案。现象可能原因排查与解决sudo: apt: command not found系统不是 Debian/Ubuntu 系用cat /etc/os-release确认系统版本改用 yum 或 dnfsudo: yum: command not found系统太新没有 yum改用 dnfRHEL/CentOS 8 一律用 dnfPackage git has no installation candidate软件源列表太旧或源里没有 git 包先执行 sudo apt update再 install不行就检查源配置是否过期/var/cache/yum 相关报错软件源缓存损坏执行 sudo yum clean all 清空缓存再 makecacheError: Failed to download metadata for repodnf 源失效或网络不通用 curl -I 测试源地址连通性必要时更换为国内镜像源git: command not found安装后安装失败或 PATH 没有包含 git重新执行安装命令检查是否报错用 find / -name git 查找是否装在非标准位置安装 Git 后无法 clone HTTPS 仓库报 SSL 错误缺少 HTTPS 支持库包管理器安装会自动带依赖如果源码编译则需检查 curl/openssl 是否安装5.1 登录 CentOS 7 后没法用 yum报“Could not resolve host”这是 CentOS 7 停维护之后的经典问题。默认源 mirror.centos.org 已经失效yum 一执行就解析不到域名。解决办法是更换镜像源比如替换为阿里云镜像。具体操作是修改 /etc/yum.repos.d/CentOS-Base.repo把 baseurl 的域名指到 mirrors.aliyun.com。这里不展开写全部内容但思路就是“换一个还在维护的源”。5.2 Ubuntu 提示 “The repository ... does not have a Release file”这个报错通常出现在你手动添加了第三方源之后。问题根源是源地址写错或者源不再维护。排查时先看 /etc/apt/sources.list 和 /etc/apt/sources.list.d/ 下的文件找到出错的那一行注释掉再执行 apt update 验证。5.3 系统自带源版本太旧想用小版本号的新特性以 Ubuntu 20.04 为例官方源里的 Git 长期停留在 2.25.x虽然稳定但缺少某些新特性。如果你需要新版本不要手动去官网下载 .deb 乱装那会破坏依赖关系。正确做法是用第三方源或 PPA下一节专门讲。5.4 排查步骤的通用套路遇到装软件报错不管什么系统先做这三件事看完整报错信息不要只看第一行滚动到最后几行通常藏着真正的错误原因确认网络连通性ping 一下软件源的域名或者用 curl 测试源地址的 HTTP 响应清缓存重试apt 用 apt cleanyum 用 yum clean alldnf 用 dnf clean all80% 的安装问题都出在源失效或网络不通这两件事上先排除它们再考虑包冲突之类的复杂问题。6. 版本太老怎么办第三方源和官方 Git 的取舍前面提到 CentOS 7 官方源的 Git 只有 1.8.3.1这版本老得连 GitHub 都不愿意理它了。那有没有办法在不编译源码的前提下拿到新版本有用第三方软件源。但第三方源有好处也有风险这里说清楚。6.1 Ubuntu添加 Git 官方 PPAUbuntu 比较推荐的方式是添加 Git 官方维护的 PPA。在终端依次执行sudo add-apt-repository ppa:git-core/ppa sudo apt update sudo apt install git执行第一条命令时系统会自动添加 PPA 的源信息到源列表并导入对应的公钥。然后 update 更新缓存最后 install 就会安装 PPA 里的新版本了。PPA 是 Ubuntu 生态的特色机制相当于个人/组织维护的软件源。git-core/ppa 这个 PPA 是 Git 官方团队维护的版本更新及时可信度很高。装完之后验证一下版本通常能拿到比官方源新很多的大版本。6.2 CentOS/RHEL 7IUS 社区源红帽系老系统要装新版 Git比较常用的方案是 IUS 社区源。IUS 是一个提供新版软件包的第三方源对 CentOS 7 的兼容性很好。安装步骤分两步先装 IUS 的 release 包再装 git# 先安装 IUS 软件源 sudo yum install https://repo.ius.io/ius-release-el7.rpm -y # 安装新版 Git sudo yum install git236 -y这里注意包名不是 git而是 git236对应 Git 2.36 版本IUS 用这种方式把新版 Git 和系统自带的 git 包区分开了。安装后新版的 git 可执行文件会覆盖旧版直接 git --version 就能看到效果。IUS 源的问题在于它是社区维护的有一定的安全风险。如果你在公司生产环境安装建议先和运维团队确认看有没有内部的软件源镜像优先用内部源。6.3 风险提示第三方源不能乱用第三方源的本质是把系统的包管理信任链扩展到了第三方。虽然 PPA 和 IUS 都有一定口碑但你在网上随便找的某个个人维护的源安全性完全无法保证。恶意软件伪装成“Git 安装包”放到源里你装完可能就是给系统埋了一个雷。我的原则是生产环境能不用第三方源就不用实在要用也只用知名组织维护的源比如 Git 官方 PPA、EPEL、IUS 这些。加源之前先看官网文档确认安装命令是从官网复制的而不是从某篇来路不明的博客。6.4 什么时候必须走源码编译如果你需要的 Git 特性非常新第三方源也跟不上那就只能回到源码编译。比如你想跑 Git 的某个 beta 分支或者要定制编译参数。这种情况源码编译是唯一选择但我建议只在开发环境折腾生产环境还是老老实实用稳定的发行版源或知名第三方源版本。7. 多台服务器批量安装的小技巧如果你要维护的不是一两台机器而是几十台服务器一条一条敲命令显然不现实。这里分享两个我在批量操作时常用的方法。7.1 用 for 循环批量执行在脚本里按 IP 逐台执行安装命令。假设你的服务器都是 Ubuntufor ip in 192.168.1.10 192.168.1.11 192.168.1.12; do ssh user$ip sudo apt update sudo apt install git -y done为了让这个命令能跑通前提是已经配置好了免密登录ssh-copy-id。这个命令会把 apt update 和 apt install 两条命令拼接成一条远程命令执行成功与否会在终端里逐台输出。7.2 结合 ansible 统一管理更规范的场景会用配置管理工具 ansible。写一个简单的 playbook- hosts: all become: yes tasks: - name: Install Git package: name: git state: presentansible 的 package 模块会自动识别远程系统的包管理器同一份 playbook 可以在 Ubuntu、CentOS、Fedora 上通用。这样你根本不需要关心底层是 apt 还是 dnfansible 帮你搞定了。对于个人开发者来说7.1 的方法已经够用前面命令行玩得转就没必要上 ansible。但如果你管着几十台机器还是值得把这套工具学起来毕竟维护成本差很多。回想我在实际工作中踩过的坑最重要的一条经验是装任何软件之前先确认系统版本和包管理器再动手敲命令。很多人一看 “apt install git” 就复制粘贴结果自己明明用的是 CentOS 7敲完直接报 command not found又花十分钟在网上找答案。还有一条装完 Git 第一件事不是急着去 clone 代码而是先配好 user.name 和 user.email。你可以把这两条命令和 Git 安装写进同一个部署脚本一条龙搞定后面就能少踩很多提交报错的坑。希望这篇文章能帮你一步到位装好 Git把时间省下来去做真正有价值的事情。