Ubuntu 24.04 安装 Gitit 0.15.1.1 指南

Ubuntu 24.04 安装 Gitit 0.15.1.1 全实测指南:在线 apt 仓库安装+初始化+systemd 托管为主线,离线 deb 包断网安装与源码编译方案并列,含 Web 页面增删改与 Git 后端提交全链路验证、注册/编辑/locale 排障实录。

GititGititWikiHaskell自托管2026/11/01

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,实测直连可用,未发生下载降级

二、前置条件

  1. 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。

  1. git 可用:Gitit 的存储后端直接调用 git 命令。apt 安装 gitit 会自动带入 git,若单独部署需确认:
git --version
git version 2.43.0
  1. 可写的运行目录:Gitit 首次启动在当前工作目录自动创建 wikidata/ 仓库及配套文件,目录必须可写。本文统一使用 /srv/gitit/wiki。

  2. 端口规划:默认端口 5001,本文使用 8138。开工前实查空闲:

ss -ltn | grep ':8138'
# 无输出 = 空闲

三、版本选型说明

Gitit 官方不发布二进制包,分发渠道是 Hackage 源码包 + 各发行版仓库(详见 《Gitit 介绍与选型指南》 第五章)。本文实测基准与官方最新版的对照(官方版本数据查询日期 2026-11-01):

渠道版本获取方式说明
Ubuntu 24.04 universe 仓库0.15.1.1+dfsg-1build3apt install gitit本文实测部署版本
Hackage 官方最新稳定版0.16.0.2(2026-09-29 上传)cabal install gitit / stack 源码编译需自备 GHC 工具链,编译代价见第六章
Ubuntu 22.04 jammy 仓库0.13.0.0+dfsgapt更旧,不建议

仓库实查:

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=&register=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:在线 aptB:离线 debC:源码编译
版本0.15.1.1+dfsg0.15.1.1+dfsg0.16.0.2(最新)
是否需联网需官方源目标机免网需 Hackage
安装耗时秒级分钟级小时级
plugins 能力❌(-plugins)❌(-plugins)✅
systemd 服务名gitit.service(自建)同左同左
监听端口5001 默认/本文 8138同左同左
优缺点简单、自动带依赖断网可用、需同版本联网机功能最全、编译成本高

选择建议:可联网的常规部署直接用方案 A;内网隔离环境用方案 B(务必与目标机同发行版版本);只有明确需要插件扩展或追新功能时才投入方案 C,并预留编译资源。

八、配置说明

Gitit 的全部可配项集中在配置文件(40 余项,gitit --print-default-config 可打印默认模板)。两点实测结论必须掌握:

  1. 配置文件不会被自动加载——即使在工作目录放置 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 显式加载后
  1. 切换到配置文件托管时,服务单元 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=&register=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 仓库即完成整站迁移。

十一、参考链接

Ubuntu 24.04 安装 Gitit 0.15.1.1 指南 - Quzuo