Ubuntu 24.04 安装 Gitit 0.15.1.1 指南
Ubuntu 24.04 安装 Gitit 0.15.1.1 全实测指南:在线 apt 仓库安装+初始化+systemd 托管为主线,离线 deb 包断网安装与源码编译方案并列,含 Web 页面增删改与 Git 后端提交全链路验证、注册/编辑/locale 排障实录。
Ubuntu 24.04 安装 Gitit 0.15.1.1 指南
目标:在一台 Ubuntu 24.04 (noble) 服务器上,从发行版仓库在线安装 Gitit、完成 Wiki 仓库初始化、systemd 服务托管,并实测通过 Web 界面注册登录、页面增删改与 Git 后端提交的全链路;同时给出断网环境的离线 deb 包安装方案与官方源码编译方案的实测记录。本文所有命令与回显均为 2026-11-01 在 Ubuntu 24.04 服务器上的真实执行结果。Gitit 的定位与选型见 《Gitit 介绍与选型指南》。
一、环境信息
- 操作系统:Ubuntu 24.04.2 LTS (noble),x86_64
- 软件:gitit 0.15.1.1+dfsg-1build3(universe 仓库,apt 安装)
- 依赖:git 2.43.0(随 gitit 自动安装)、libghc-gitit-data 0.15.1.1+dfsg-1build3(静态资源数据包)
- 服务监听:TCP 8138(
address: 0.0.0.0,端口经ss -ltn实查空闲后选定) - Wiki 数据目录:
/srv/gitit/wiki(内含wikidata/git 仓库、static/、templates/、gitit-users、gitit.log) - 托管方式:systemd(
gitit.service) - 演示账号:Wiki 登录用户
admin,密码q1w2e3r4 - 网络说明:安装源为 Ubuntu 官方 archive.ubuntu.com,实测直连可用,未发生下载降级
二、前置条件
- UTF-8 locale:Gitit 官方明确要求运行于 UTF-8 locale,否则页面名与正文的 UTF-8 编解码出错。服务器 shell 默认环境实测为 POSIX:
locale
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
因此 systemd 服务单元中必须显式注入 Environment=LANG=C.UTF-8(见第四章 4.4 节),由此引发的真实故障与定位过程见第九章 FAQ。
- git 可用:Gitit 的存储后端直接调用
git命令。apt 安装 gitit 会自动带入 git,若单独部署需确认:
git --version
git version 2.43.0
-
可写的运行目录:Gitit 首次启动在当前工作目录自动创建
wikidata/仓库及配套文件,目录必须可写。本文统一使用/srv/gitit/wiki。 -
端口规划:默认端口 5001,本文使用 8138。开工前实查空闲:
ss -ltn | grep ':8138'
# 无输出 = 空闲
三、版本选型说明
Gitit 官方不发布二进制包,分发渠道是 Hackage 源码包 + 各发行版仓库(详见 《Gitit 介绍与选型指南》 第五章)。本文实测基准与官方最新版的对照(官方版本数据查询日期 2026-11-01):
| 渠道 | 版本 | 获取方式 | 说明 |
|---|---|---|---|
| Ubuntu 24.04 universe 仓库 | 0.15.1.1+dfsg-1build3 | apt install gitit | 本文实测部署版本 |
| Hackage 官方最新稳定版 | 0.16.0.2(2026-09-29 上传) | cabal install gitit / stack 源码编译 | 需自备 GHC 工具链,编译代价见第六章 |
| Ubuntu 22.04 jammy 仓库 | 0.13.0.0+dfsg | apt | 更旧,不建议 |
仓库实查:
apt-cache policy gitit
gitit:
Installed: 0.15.1.1+dfsg-1build3
Candidate: 0.15.1.1+dfsg-1build3
Version table:
*** 0.15.1.1+dfsg-1build3 500
500 http://archive.ubuntu.com/ubuntu noble/universe amd64 Packages
⚠️ 注意版本落差与功能差异:apt 版比官方最新稳定版落后一个代际(0.15.1.1 vs 0.16.0.2),且 Debian/Ubuntu 以
+dfsg重打包时关闭了插件编译开关——gitit --version回显中的-plugins(减号)即表示 plugins 能力未编入:
gitit --version
gitit version 0.15.1.1 -plugins
Copyright (C) 2008 John MacFarlane
This is free software; see the source for copying conditions. There is no
warranty, not even for merchantability or fitness for a particular purpose.
需要 Haskell 页面插件能力的场景必须走源码编译路线;纯 Wiki 使用场景 apt 版功能完整。
四、在线 apt 仓库安装方案(方案 A,推荐主线)
4.1 方案说明
Ubuntu universe 仓库收录了 gitit 及其数据包的现成 deb,一条 apt install 完成安装,自动带入 git 与全部运行依赖,适合可联网服务器的标准部署。
4.2 安装
apt update
输出节选(实测首尾):
Get:17 http://archive.ubuntu.com/ubuntu noble-backports/main amd64 Packages [49.0 kB]
Get:19 http://archive.ubuntu.com/ubuntu noble-backports/multiverse amd64 Packages [669 B]
Fetched 33.6 MB in 5s (6227 kB/s)
Reading package lists...
apt install -y gitit
apt 解析出 33 个新装包(gitit、git、libghc-gitit-data、libjs-jquery 系列前端资源等),需下载 43.4 MB、安装后占用 274 MB。输出节选(实测首尾):
The following NEW packages will be installed:
git git-man gitit javascript-common less ... libghc-gitit-data ...
Need to get 43.4 MB of archives.
After this operation, 274 MB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 perl-modules-5.38 all 5.38.2-3.2ubuntu0.6 [3110 kB]
...
Setting up libghc-gitit-data (0.15.1.1+dfsg-1build3) ...
Setting up git (1:2.43.0-1ubuntu7.4) ...
Setting up gitit (0.15.1.1+dfsg-1build3) ...
Processing triggers for libc-bin (2.39-0ubuntu8.9) ...
安装结果验证:
dpkg -l gitit libghc-gitit-data
+++-=================-=====================-============-===========================================================
ii gitit 0.15.1.1+dfsg-1build3 amd64 Wiki engine backed by a git or darcs filestore
ii libghc-gitit-data 0.15.1.1+dfsg-1build3 all Wiki engine backed by a git or darcs filestore - Data files
which gitit
/usr/bin/gitit
gitit 包只含主程序与缓存失效工具,页面初始模板、CSS/JS 等数据文件在 libghc-gitit-data:
dpkg -L gitit | grep -v man
/usr/bin/expireGititCache
/usr/bin/gitit
/usr/share/gitit/README.markdown
/usr/share/gitit/plugins/...
4.3 初始化 Wiki 仓库
Gitit 没有独立的 init 子命令——在目标工作目录直接启动即完成初始化(创建 git 仓库、写入默认页面、释放 static/templates)。先建目录:
mkdir -p /srv/gitit/wiki
4.4 节 systemd 启动后,首次运行日志即初始化过程(journal 实测回显):
Nov 01 12:42:14 wiki-server gitit[1060]: Created repository in wikidata
Nov 01 12:42:14 wiki-server gitit[1060]: Added Front Page.page to repository
Nov 01 12:42:14 wiki-server gitit[1060]: Added Help.page to repository
Nov 01 12:42:14 wiki-server gitit[1060]: Added Gitit User's Guide.page to repository
Nov 01 12:42:14 wiki-server gitit[1060]: Created static/css/custom.css
Nov 01 12:42:14 wiki-server gitit[1060]: Created static/img/logo.png
Nov 01 12:42:14 wiki-server gitit[1060]: Created templates/footer.st
初始化后的目录结构:
ls -la /srv/gitit/wiki
total 24
-rw-r--r-- 1 root root 229 Nov 1 12:42 gitit.log
drwxr-xr-x 4 root root 4096 Nov 1 12:42 static
drwxr-xr-x 2 root root 4096 Nov 1 12:42 templates
drwxr-xr-x 3 root root 4096 Nov 1 12:42 wikidata
wikidata/ 就是一个普通 git 仓库,默认页面以 <页面名>.page 纯文本落盘,文件头部带格式声明:
cat "/srv/gitit/wiki/wikidata/Front Page.page"
---
format: Markdown
...
# Welcome to Gitit!
This is the front page of your new gitit wiki. ...
git -C /srv/gitit/wiki/wikidata log --oneline
a1f8c7b User's guide (README)
53659f8 Default help page
3f1a7cc Default front page
💡 技术拓展:Wiki 引擎的初始化形态不止「首启自建」一种。常见形态对比——
形态 代表 特点 首启自动初始化 Gitit、Gollum 无 init 命令,切到空目录启动即建库 独立安装脚本/向导 MediaWiki、Wiki.js 建库阶段配置数据库/管理员,交互多 纯文件目录约定 DokuWiki、WiKiss 解包即用,数据目录手工建 Gitit 属第一类:初始化与启动合一,好处是零交互可脚本化,代价是「装完即跑」的裸启动会把初始化日志混进服务日志。
4.4 systemd 托管
创建服务单元 /etc/systemd/system/gitit.service:
[Unit]
Description=Gitit wiki engine
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/srv/gitit/wiki
Environment=LANG=C.UTF-8
ExecStart=/usr/bin/gitit -p 8138
Restart=on-failure
[Install]
WantedBy=multi-user.target
逐项说明:
WorkingDirectory=/srv/gitit/wiki:决定wikidata/、static/、templates/、gitit-users、gitit.log的落盘位置,必须指向数据目录;Environment=LANG=C.UTF-8:满足 UTF-8 locale 硬性要求(见第二章),缺失会导致中文页面名与含特殊字符页面名报错;ExecStart=... -p 8138:-p指定监听端口,不加则用默认 5001;监听地址默认0.0.0.0,可用-l收紧(见第八章);Restart=on-failure:进程异常退出自动拉起。
启用并启动:
systemctl daemon-reload
systemctl enable gitit
systemctl start gitit
systemctl is-active gitit
active
服务状态实测:
systemctl status gitit --no-pager
● gitit.service - Gitit wiki engine
Loaded: loaded (/etc/systemd/system/gitit.service; enabled; preset: enabled)
Active: active (running) since Sun 2026-11-01 12:42:13 UTC; 3s ago
Main PID: 1060 (gitit)
Tasks: 5 (limit: 2266)
Memory: 11.7M (peak: 11.8M)
CPU: 20ms
Nov 01 12:42:13 wiki-server systemd[1]: Started gitit.service - Gitit wiki engine.
常驻内存仅约 12 MB,单进程 Haskell 服务的资源占用非常轻。
4.5 运行验证
端口与 HTTP 响应:
ss -ltn | grep 8138
LISTEN 0 10 0.0.0.0:8138 0.0.0.0:*
curl -sI http://localhost:8138/
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Connection: Keep-Alive
Content-Type: text/html; charset=utf-8
Server: Happstack/7.8.0.2
响应头 Server: Happstack/7.8.0.2 印证 Gitit 内嵌 Happstack Web 服务器、无需外部 Web 服务器(如 nginx/tomcat)。
注册管理员账号(演示账号 admin / q1w2e3r4):注册入口为 /_register(表单字段:username、email、password、password2):
curl -s -c cookies.txt -d "username=admin&email=admin@example.com&full_name_1=&password=q1w2e3r4&password2=q1w2e3r4&destination=®ister=Register" \
-w "HTTP=%{http_code}\n" http://localhost:8138/_register
HTTP=303
303 表示注册成功并重定向。用户口令以盐化哈希写入 gitit-users(非明文):
head -c 120 /srv/gitit/wiki/gitit-users
[("admin",User {uUsername = "admin", uPassword = Password {pSalt = "fJLX=dfoZvNpaVlEtvYn]pV`@R@`1gkg", pHashed = "4453cd73242b90e2...
登录:
curl -s -b cookies.txt -c cookies.txt -d "username=admin&password=q1w2e3r4&login=Login" \
-w "HTTP=%{http_code}\n" http://localhost:8138/_login
HTTP=303
新建页面(登录态下 POST 页面 URL 本身,字段 editedText/logMsg/update=Save):
curl -s -b cookies.txt \
--data-urlencode "editedText=# Deploy Test
Created via Web UI on 2026-11-01.
- item one
- item two" \
--data-urlencode "logMsg=first commit from web" \
--data-urlencode "update=Save" \
-w "HTTP=%{http_code} redirect=%{redirect_url}\n" \
http://localhost:8138/Deploy%20Test -o /dev/null
HTTP=303 redirect=http://localhost:8138/Deploy%20Test
Git 后端提交验证——Web 编辑自动落一次 git commit,作者取登录账号:
git -C /srv/gitit/wiki/wikidata log --oneline
cd7b426 first commit from web
a1f8c7b User's guide (README)
53659f8 Default help page
3f1a7cc Default front page
git -C /srv/gitit/wiki/wikidata show --stat HEAD | head -9
commit cd7b426a07c7c020998d8722e728847b5ae05bc3
Author: admin <admin@example.com>
Date: Sun Nov 1 12:44:11 2026 +0000
first commit from web
Deploy Test.page | 6 ++++++
1 file changed, 6 insertions(+)
编辑与删除:编辑已有页面需携带隐藏字段 sha1(当前版本哈希,乐观锁防写冲突,缺失会 500,见 FAQ);删除经 /_delete/<页面> 确认后同样产生提交:
SHA1=$(git -C /srv/gitit/wiki/wikidata rev-parse HEAD)
curl -s -b cookies.txt --data-urlencode "sha1=$SHA1" \
--data-urlencode "editedText=# Deploy Test
Created via Web UI on 2026-11-01. **Revised in second edit.**" \
--data-urlencode "logMsg=second edit: revise wording" \
--data-urlencode "update=Save" -w "HTTP=%{http_code}\n" \
http://localhost:8138/Deploy%20Test -o /dev/null
HTTP=303
curl -s -b cookies.txt --data-urlencode "filetodelete=Deploy Test.page" \
--data-urlencode "confirm=Yes, delete it!" -w "HTTP=%{http_code}\n" \
http://localhost:8138/_delete/Deploy%20Test -o /dev/null
HTTP=303
git -C /srv/gitit/wiki/wikidata log --oneline -2
082356e Deleted using web interface.
4b33bce second edit: revise wording
至此「安装 → 初始化 → 服务化 → Web 编辑 → Git 提交」全链路实测通过。页面/文件操作的完整命令体系见 《Gitit 0.15.1.1 常用 CLI 命令与工具详解》。
五、离线 deb 包安装方案(方案 B,断网服务器)
5.1 方案说明
内网隔离服务器无法访问 archive.ubuntu.com 时,在一台同版本(Ubuntu 24.04)可联网机器上把 gitit 及其全部递归依赖的 deb 一次拉齐,拷贝到目标机 dpkg -i 本地安装。gitit 主包 26.9 MB,连依赖共 81 个 deb、65 MB。
5.2 联网机下载 deb 全集
mkdir -p /debs && cd /debs
pkgs=$(apt-cache depends --recurse --no-recommends --no-suggests \
--no-conflicts --no-breaks --no-replaces --no-enhances gitit \
| grep "^[a-z0-9][a-z0-9.+-]*$" | sort -u)
echo "包数: $(echo $pkgs | wc -w)"
包数: 81
apt-get download $pkgs
Fetched 67.4 MB in 10s (6551 kB/s)
W: Download is performed unsandboxed as root as file '/debs/cdebconf_0.271ubuntu3_amd64.deb' couldn't be accessed by user '_apt'.
⚠️ 说明:
W: Download is performed unsandboxed as root是 root 下apt-get download的常见告警,不影响 deb 文件完整性;_apt用户权限告警可忽略。--recurse展开的 81 包多于在线安装时的 33 包,因为递归口径包含了已预装的基础库,多出的包在目标机上重复安装无害。
5.3 目标机安装
将 /debs 目录整体传输到离线服务器(U 盘/scp 均可),执行:
dpkg -i /debs/*.deb
输出节选(实测首尾,在一台全新、无任何外网通道的 Ubuntu 24.04 环境实测):
Selecting previously unselected package tzdata.
Preparing to unpack .../tzdata_2026e-0ubuntu0.24.04.1_all.deb ...
Selecting previously unselected package ucf.
Preparing to unpack /debs/ucf_3.0043+nmu1_all.deb ...
...
Setting up gitit (0.15.1.1+dfsg-1build3) ...
验证:
which gitit
/usr/bin/gitit
gitit --version | head -1
gitit version 0.15.1.1 -plugins
git --version
git version 2.43.0
5.4 离线启动验证
离线机上直接前台启动做首启验证(无外网环境下初始化正常完成):
mkdir -p /root/offwiki && cd /root/offwiki
LANG=C.UTF-8 gitit -p 8139
Created repository in wikidata
Added Front Page.page to repository
Added Help.page to repository
生产化仍按 4.4 节 systemd 单元托管(把 WorkingDirectory 与端口改为离线机实际值)。
六、源码编译安装方案(方案 C,官方推荐路径与实测中断记录)
6.1 官方方法
Gitit 官方 README 的推荐安装路径是 Haskell 工具链编译(可得到最新 0.16.0.2 与 -plugins 开启的完整功能):
# 路径一:cabal(需 GHC + cabal-install)
cabal update && cabal install gitit
# 路径二:stack(README 称"最可靠")
git clone https://github.com/jgm/gitit && cd gitit && stack install
6.2 实测尝试与中断记录
本次部署在 Ubuntu 24.04 上实际尝试了 cabal 路径安装 0.16.0.2:下载了 cabal-install 3.14.2.0 静态二进制(38 MB)并启动 cabal update:
tar -xJf cabal-install-3.14.2.0-x86_64-linux-deb10.tar.xz
./cabal update
Config file path source is default config file.
Config file not found: /root/.config/cabal/config
Writing default configuration to /root/.config/cabal/config
Downloading the latest package list from hackage.haskell.org
terminated
末行 terminated 为真实中断记录:cabal update 拉取 Hackage 全量包索引 + 其后 cabal build gitit 需从源码编译 Gitit 的数百个 Haskell 依赖包(pandoc、happstack、skylighting 全家桶),在常规 2C/4G 服务器上耗时以小时计,且 GHC 编译内存峰值远超 apt 方案的 12 MB 常驻。评估后放弃源码路线,以 apt 0.15.1.1 为实测部署版本,与官方最新 0.16.0.2 的版本落差在本文第三章如实记录。
6.3 需要源码编译时的正确姿势
若必须获得 0.16.0.2 或插件能力,按以下清单执行(资源要求:≥4 核 8 GB 内存、≥10 GB 空闲磁盘、Hackage 网络可达):
apt install -y ghc cabal-install # Ubuntu 24.04 提供 ghc 9.4/cabal 3.0
cabal update
cabal install gitit # 产物在 ~/.local/bin/gitit
gitit --version # 应为 0.16.0.2 +plugins
⚠️ 注意:本次实测环境未完成该路线(见 6.2),上述命令为官方文档口径,未逐条验证回显;
stack install路线同理。插件功能在源码版上如何启用,见 《Gitit 0.15.1.1 配置参数详解》 5.11 节。
七、方案对比与选择建议
| 维度 | A:在线 apt | B:离线 deb | C:源码编译 |
|---|---|---|---|
| 版本 | 0.15.1.1+dfsg | 0.15.1.1+dfsg | 0.16.0.2(最新) |
| 是否需联网 | 需官方源 | 目标机免网 | 需 Hackage |
| 安装耗时 | 秒级 | 分钟级 | 小时级 |
| plugins 能力 | ❌(-plugins) | ❌(-plugins) | ✅ |
| systemd 服务名 | gitit.service(自建) | 同左 | 同左 |
| 监听端口 | 5001 默认/本文 8138 | 同左 | 同左 |
| 优缺点 | 简单、自动带依赖 | 断网可用、需同版本联网机 | 功能最全、编译成本高 |
选择建议:可联网的常规部署直接用方案 A;内网隔离环境用方案 B(务必与目标机同发行版版本);只有明确需要插件扩展或追新功能时才投入方案 C,并预留编译资源。
八、配置说明
Gitit 的全部可配项集中在配置文件(40 余项,gitit --print-default-config 可打印默认模板)。两点实测结论必须掌握:
- 配置文件不会被自动加载——即使在工作目录放置
gitit.cfg,裸启动仍走默认值;必须用-f显式指定。对照实测:目录内存在wiki-title: Team Knowledge Base的gitit.cfg时,gitit -p 8138启动页面标题仍是默认Wiki;改为gitit -f /srv/gitit/wiki/gitit.cfg后标题变为Team Knowledge Base:
curl -s http://localhost:8138/ | grep -oE "<title>[^<]*"
<title>Wiki - Front Page # 无 -f(默认配置)
curl -s http://localhost:8138/ | grep -oE "<title>[^<]*"
<title>Team Knowledge Base - Front Page # -f 显式加载后
- 切换到配置文件托管时,服务单元
ExecStart改为:
ExecStart=/usr/bin/gitit -f /srv/gitit/wiki/gitit.cfg
配合如下最小生产配置(/srv/gitit/wiki/gitit.cfg,逐项详解见 《Gitit 0.15.1.1 配置参数详解》):
port: 8138
wiki-title: Team Knowledge Base
use-feed: yes
base-url: http://localhost:8138
feed-days: 7
use-cache: yes
max-upload-size: 50K
改完执行 systemctl daemon-reload && systemctl restart gitit,验证 feed 生效:
curl -s http://localhost:8138/_feed | head -c 300
<?xml version="1.0" encoding="UTF-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">Team Knowledge Base</title><id>http://localhost:8138/</id><updated>2026-11-01T12:47:40Z</updated>...
九、常见问题
9.1 注册账号返回 200 且表单回显、账号未建成
现象:POST /_register 后 gitit-users 仍不存在。定位:注册表单里有一个对用户不可见的陷阱字段 full_name_1(HTML 中 class="req" 隐藏项),用于拦截机器人——只要它收到非空值,注册被静默拒绝并回显表单。解决:full_name_1= 留空提交即可,实测返回 303 且用户落盘:
curl -s -c cookies.txt -d "username=admin&email=admin@example.com&full_name_1=&full_name_2=&password=q1w2e3r4&password2=q1w2e3r4&destination=®ister=Register" \
-w "HTTP=%{http_code}\n" http://localhost:8138/_register
HTTP=303
9.2 编辑已有页面 HTTP 500
现象:新建页面 303 成功,编辑同一页面却 500。定位:抓取编辑表单发现已有页面的表单多一个隐藏字段 sha1(页面当前修订的版本哈希,gitit 用它做乐观锁防并发覆盖),POST 缺 sha1 即 500;携带过期 sha1 同样 500(响应体为 Happstack 错误页 error was "NotFound")。解决:编辑前先取当前 sha1 再提交:
SHA1=$(git -C /srv/gitit/wiki/wikidata rev-parse HEAD)
curl -s -b cookies.txt --data-urlencode "sha1=$SHA1" ... # 303
浏览器编辑不受影响(表单自动带出),此坑仅影响脚本化编辑。
9.3 开启 use-feed 后 /_feed 返回 500:recoverEncode
现象:
The error was "git: recoverEncode: invalid argument (cannot encode character '\8217')"
定位:'\8217' 是默认帮助页 "Gitit User's Guide" 文件名中的右单引号(U+2019)。feed 生成需经 git 输出页面名,而进程运行在 POSIX/C locale 下无法编解码该字符。解决:为进程注入 UTF-8 locale——systemd 单元加 Environment=LANG=C.UTF-8(本文 4.4 节即此配方的来源),前台运行则先 export LANG=C.UTF-8。对照实测:同一配置 LANG=C 启动必现上述 500,LANG=C.UTF-8 启动 feed 正常输出 Atom XML。
9.4 局域网其他机器访问不通
定位:检查是否误用了 -l 参数。-l 127.0.0.1 实测只绑回环:
gitit -f gitit.cfg -l 127.0.0.1 -p 8138 &
ss -ltn | grep 8138
LISTEN 0 10 127.0.0.1:8138 0.0.0.0:*
解决:对外服务不传 -l(默认 address: 0.0.0.0),或在配置文件写 address: 0.0.0.0。
9.5 需要插件但 apt 版报 GHC 缺失
现象:-plugins 版本配置 plugins: 后启动崩溃:
Loading plugin '/usr/share/gitit/plugins/CapitalizeEmphasis.hs'...
gitit: Missing file: /usr/lib/ghc/lib/settings
原因:dfsg 包编译时关闭插件支持,运行时加载 Haskell 源码插件需要 GHC 运行时环境。解决:插件需求只能走第六章源码编译路线,或接受无插件部署。
十、卸载与清理
dpkg 路线卸载(离线机实测回显):
dpkg -r gitit
(Reading database ... 10249 files and directories currently installed.)
Removing gitit (0.15.1.1+dfsg-1build3) ...
which gitit || echo "gitit 已移除"
gitit 已移除
在线安装的主机用 apt purge gitit libghc-gitit-data 可连同数据包一并清除(依赖包 git 等可能被其他软件共用,按需 apt autoremove)。服务与数据残留清理:
systemctl disable --now gitit
rm -f /etc/systemd/system/gitit.service
systemctl daemon-reload
rm -rf /srv/gitit/wiki
⚠️ 注意:
/srv/gitit/wiki/wikidata是 Wiki 全部内容所在,删除前务必git clone或打包备份;这也是 Gitit 的备份优势——迁走一个 git 仓库即完成整站迁移。
十一、参考链接
- 官方仓库:https://github.com/jgm/gitit (查询日期 2026-11-01)
- Hackage 包页:https://hackage.haskell.org/package/gitit (查询日期 2026-11-01)
- Ubuntu 包页:https://packages.ubuntu.com/noble/gitit (查询日期 2026-11-01)
- 本专栏配套篇:《Gitit 介绍与选型指南》、《Gitit 0.15.1.1 配置参数详解》、《Gitit 0.15.1.1 常用 CLI 命令与工具详解》