在linux 安装hugo和hexo
运行以下命令分别安装:
1
2
3
| sudo apt update
sudo apt install hugo
npm install hexo
|
运行npm install hexo 时报错:
1
2
3
4
5
6
7
8
9
| ……
npm ERR! A complete log of this run can be found in:
npm ERR! /home/sb/.npm/_logs/2025-12-28T09_01_28_100Z-debug-0.log
npm ERR! If you believe this might be a permissions issue, please double-check the
npm ERR! permissions of the file and its containing directories, or try running
npm ERR! the command again as root/Administrator.
npm ERR! A complete log of this run can be found in:
npm ERR! /home/sb/.npm/_logs/2025-12-28T09_01_28_100Z-debug-0.log
|
这是因为权限问题,经过询问gemini找到解决方案:
- 创建一个新的全局模块存放目录
- 告诉 npm 使用这个新路径
1
| npm config set prefix '~/.npm-global'
|
- 将新路径添加到系统的环境变量中
你需要编辑你的 shell 配置文件(如果你用的是默认终端,通常是 ~/.bashrc;如果是 Mac 常用 ~/.zshrc)。
使用以下命令直接将配置写入文件:
1
2
3
| # 如果你不确定用哪个,两个都执行一遍也无妨
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.zshrc
|
- 使配置立即生效
1
2
| source ~/.bashrc
# 或者如果你用 zsh: source ~/.zshrc
|
- 重新安装 Hexo
现在你不再需要 sudo,也不会再看到权限报错了:
1
| npm install -g hexo-cli
|
为什么这样做更好?
安全性:你不需要给 npm 赋予 root(超级管理员)权限,避免了恶意脚本损坏系统的风险。
独立性:所有的全局包都存在你的家目录下,以后重装系统或迁移数据非常方便。
无缝衔接:一旦设置好,以后安装任何全局包(如 vue-cli, nodemon 等)都不会再报权限错误。
验证是否成功
安装完成后,输入以下命令检查,如果能看到 Hexo 的版本号,说明你已经成功解决了这个问题!
1
2
| hexo -v
hexo-cli: 4.3.2
|
输入以下命令检查hugo,看到输出说明安装没有问题。
1
2
| hugo version
hugo v0.123.7+extended linux/amd64 BuildDate=2025-07-18T03:41:49Z VendorInfo=ubuntu:0.123.7-1ubuntu0.3
|
到这里博客框架就安装好了,安装git:
clone之前同步的私有仓库源码:
1
2
| git clone https://github.com/用户名/hexo-source.git
git clone https://github.com/用户名/huro-source.git
|
本地测试运行hugo博客
1
2
| cd huro-blog
huro server -D
|
运行博客服务器时报错,将错误信息复制给gemini ,给出了解决方案如下:
这是因为你使用的是 Hugo Stack 主题,而新版本的 Hugo 内置模板名称发生了变化,或者主题模板引用了一个在当前 Hugo 版本中找不到的内置组件。别担心,这通常是因为 Hugo 在 v0.120.0 之后对内置模板的调用方式做了微调。我们可以通过两种方式快速修复它:方案一:手动创建占位文件(最简单、推荐)
既然它找不到 google_analytics.html,我们就给它创建一个空的文件,让它闭嘴。在你的博客根目录下执行以下命令:
1
2
3
4
5
| # 确保 layouts/partials 目录存在
mkdir -p layouts/partials
# 创建一个空的 google_analytics.html 文件
touch layouts/partials/google_analytics.html
为什么这样做有效? Hugo 的查找机制是“优先使用用户目录下的布局”。我们在自己的项目里建一个空文件,Hugo 就不会去主题文件夹或系统内置库里找那个报错的文件了。
|
完成后尝试启动:
启动成功,进入网页预览正常。
本地测试运行hexo博客
1
2
| cd hexo-blog
npm install
|
报错,把错误日志提供给gemini,给出解决方案
- 切换回 Node 20
1
2
| nvm install 20
nvm use 20
|
- 彻底清理旧依赖(这一步不能省!)
因为你在 Node 14 下安装了一堆不兼容的包,必须删掉重来:
1
2
3
| cd /home/sb/Documents/hexo-blog-source
rm -rf node_modules package-lock.json
npm cache clean --force
|
- 重新安装依赖
在 Node 20 环境下执行安装。即使有警告也先不管,看它能不能完成:
- 解决 strip-ansi 报错的黑科技
如果安装完后执行 hexo s 依然报之前的 ERR_REQUIRE_ESM 错误,是因为 Hexo 8.x 的某个插件不小心引入了过新版本的 strip-ansi。
请直接运行下面这行命令,强制把该插件降级到兼容版本:
1
2
3
| npm install strip-ansi@6.0.1 --save-exact
为什么之前 Node 20 会报错?
Hexo 8.x 本身是支持新版 Node 的,但它依赖的一些老插件可能没有更新。通过手动安装 strip-ansi@6.0.1,我们强行在你的项目根目录放一个“旧版零件”,让那些报错的插件能找到它们需要的 require 格式,从而避开 ESM 冲突。
|
最后的验证
按照上面步骤操作后,请执行:
到这里hugo和hexo平台的运行测试完成。
测试新建博客
编辑博客后本地运行
鉴于在linux电脑搭建的博客平台只是测试学习。为了避免影响仓库和windows中的源码的正常允许。就不推送发布了。
若偶尔在linux平台写了博客,可以通过U盘或者文件中转站传送到windows后再发布。
LINUX电脑博客运行成功:

我的文件快递柜:
链接