[wiki--gitit]在Linux系統搭建gitit wiki

簡述

對於喜歡用markdown寫博客或做一些筆記,或者做學習知識庫整理……等等之類的,gitit wiki是不錯的wiki系統選擇。因爲一般的markdown語法是很簡單的,以至於太簡單而許多需要使用稍微複雜些的圖表之類的,就不能太好的支持,因此是比較影響書寫的。因此對於markdown就出現了許多的Extended的版本,這其中有個Pandoc的,使用支持pandoc擴展語法的markdown寫wiki,那麼wiki原始.md文件,可以通過強大的Pandoc工具,可以在書籍格式、PDF格式、word格式、epub格式、html格式……等等之間進行自動的生成,甚至可以生成PPT slide。
而gitit wiki系統,就可以顯示這些支持pandoc extension的markdown語法的.md文件進行顯示,有各種鏈接、圖表展示等功能,很適合打造自己的私人wiki系統。
接下來介紹如何在Linux系統(可以是自己的Linux Server)上部署gitit wiki,之後自己可以使用自己的PC電腦進行登陸和wiki的維護與更新,只要聯網,隨時隨地訪問和更新。

Haskell開發工具安裝

Why Haskell? 因爲gitit是使用Haskell開發的,gitit的源碼在github,因此Linux的方式是,將source code clone過來,然後安裝Haskell開發工具,然後對gitit的源碼進行編譯和安裝,這樣就達到了安裝gitit的目的。

stack(首選,最可靠)

stack就是Haskell的開發工具,“Stack is a cross-platform program for developing Haskell projects.”跨平臺。關於stack的說明以及安裝,可參考The Haskell Tool Stack
我在自己的64 bit的Debian系統,使用如下命令安裝stack:

curl -sSL https://get.haskellstack.org/ | sh
# 或如下命令(Debian使用curl可以成功,Ubuntu下使用wget才成功,所以這兩個可以根據情況試一試)
wget -qO- https://get.haskellstack.org/ | sh

不過一開始並不能成功安裝,shell給出瞭如下的log:

Detected Linux distribution: debian

Installing dependencies...

sudo: unable to resolve host my_host_name
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package libffi-dev
E: Unable to locate package libgmp-dev
E: Unable to locate package zlib1g-dev
Installing apt packages failed.  Please run 'apt-get update' and try again.

於是按照提示輸入:

apt-get update

果然更新了不少東西,然後再次輸入上面的“curl -sSL https://get.haskellstack.org/ | sh”,此時就能安裝成功了:

root@my_host_name:~# curl -sSL https://get.haskellstack.org/ | sh
Detected Linux distribution: debian

Installing dependencies...

sudo: unable to resolve host my_host_name
Reading package lists... Done
Building dependency tree
Reading state information... Done
g++ is already the newest version.
g++ set to manually installed.
gcc is already the newest version.
libc6-dev is already the newest version.
libc6-dev set to manually installed.
make is already the newest version.
make set to manually installed.
xz-utils is already the newest version.
The following extra packages will be installed:
  libgmpxx4ldbl
Suggested packages:
  libgmp10-doc libmpfr-dev
The following NEW packages will be installed:
  libffi-dev libgmp-dev libgmpxx4ldbl zlib1g-dev
0 upgraded, 4 newly installed, 0 to remove and 5 not upgraded.
Need to get 1,006 kB of archives.
After this operation, 2,778 kB of additional disk space will be used.
Get:1 http://mirrors.cloud.aliyuncs.com/debian/ jessie/main libgmpxx4ldbl amd64 2:6.0.0+dfsg-6 [22.1 kB]
Get:2 http://mirrors.cloud.aliyuncs.com/debian/ jessie/main libffi-dev amd64 3.1-2+deb8u1 [157 kB]
Get:3 http://mirrors.cloud.aliyuncs.com/debian/ jessie/main libgmp-dev amd64 2:6.0.0+dfsg-6 [621 kB]
Get:4 http://mirrors.cloud.aliyuncs.com/debian/ jessie/main zlib1g-dev amd64 1:1.2.8.dfsg-2+b1 [206 kB]
Fetched 1,006 kB in 0s (2,417 kB/s)
Selecting previously unselected package libgmpxx4ldbl:amd64.
(Reading database ... 39920 files and directories currently installed.)
Preparing to unpack .../libgmpxx4ldbl_2%3a6.0.0+dfsg-6_amd64.deb ...
Unpacking libgmpxx4ldbl:amd64 (2:6.0.0+dfsg-6) ...
Selecting previously unselected package libffi-dev:amd64.
Preparing to unpack .../libffi-dev_3.1-2+deb8u1_amd64.deb ...
Unpacking libffi-dev:amd64 (3.1-2+deb8u1) ...
Selecting previously unselected package libgmp-dev:amd64.
Preparing to unpack .../libgmp-dev_2%3a6.0.0+dfsg-6_amd64.deb ...
Unpacking libgmp-dev:amd64 (2:6.0.0+dfsg-6) ...
Selecting previously unselected package zlib1g-dev:amd64.
Preparing to unpack .../zlib1g-dev_1%3a1.2.8.dfsg-2+b1_amd64.deb ...
Unpacking zlib1g-dev:amd64 (1:1.2.8.dfsg-2+b1) ...
Processing triggers for man-db (2.7.0.2-5) ...
Processing triggers for install-info (5.2.0.dfsg.1-6) ...
Setting up libgmpxx4ldbl:amd64 (2:6.0.0+dfsg-6) ...
Setting up libffi-dev:amd64 (3.1-2+deb8u1) ...
Setting up libgmp-dev:amd64 (2:6.0.0+dfsg-6) ...
Setting up zlib1g-dev:amd64 (1:1.2.8.dfsg-2+b1) ...
Processing triggers for libc-bin (2.19-18+deb8u10) ...

Using generic bindist...

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:--  0:00:02 --:--:--     0
100   628    0   628    0     0    180      0 --:--:--  0:00:03 --:--:--  1956
100 11.4M  100 11.4M    0     0   984k      0  0:00:11  0:00:11 --:--:-- 2397k
Installing Stack to: /usr/local/bin/stack...

-------------------------------------------------------------------------------

Stack has been installed to: /usr/local/bin/stack

WARNING: '/root/.local/bin' is not on your PATH.
    For best results, please add it to the beginning of PATH in your profile.

這裏看到了上面的WARNING提示,於是使用下面的命令將’/root/.local/bin’加入到環境變量PATH中:

PATH=$PATH:/root/.local/bin
#通過“echo $PATH”可以查看是否已經加入PATH中

在上面步驟完成後,最好還使用下面的命令更新下stack,以便避免系統更新帶來的問題:

stack upgrade

Haskell Platform(僅作備選介紹,Debian下實測未成功)

如果不想使用stack,Debian中可以安裝Haskell Platform,不過試了下,後續安裝等待了很久都沒有動靜:

sudo apt-get install haskell-platform

gitit編譯與安裝

如果使用stack工具

首先安裝git工具–“apt-get install git”,然後運行如下命令,分別是clone gitit源代碼,在stack中編譯與安裝gitit:

git clone https://github.com/jgm/gitit
cd gitit
stack install

不過在Debian上使用stack install時,從log看貌似有些東西要從亞馬孫awx鏡像中去下載,好幾次出現了connection timeout,不過嘗試了多次,並中途用了stack setup後,stack install終於可以開始運作了,不過整個編譯過程相對是比較緩慢的。
在該過程結束後,貌似gitit沒有成功安裝,因爲gitit命令提示找不到……
沒辦法,後面換用Ubuntu系統再嘗試,在使用stack install命令後,等了一個下午,之後發現仍然卡在:

Updating package index Hackage (mirrored at https://s3.amazonaws.com/hackage.fpcomplete.com/) ...

這裏沒動,沒辦法,停止後再次使用stack install嘗試,然後終於開始看到mirror連接到了,開始Progress中了。

如果使用Haskell Platform(備用,Debian下用了下未能成功)

使用如下的命令:

cabal update
cabal install gitit

使用cabal update命令後,會看到先找/root/.cabal/config,沒有找到就會創建默認的,然後再去hackage.haskell.org下載最新的package。
不過使用haskell platform, 使用cabal install安裝clone下來的本地的gitit時一直出現問題:

Resolving dependencies...
cabal: Could not resolve dependencies:
trying: gitit-0.12.2.1 (user goal)
next goal: base (dependency of gitit-0.12.2.1)
rejecting: base-4.6.0.1/installed-96b... (conflict: gitit => base>=4.9 && <5)
rejecting: base-4.10.0.0, 4.9.1.0, 4.9.0.0, 4.8.2.0, 4.8.1.0, 4.8.0.0,
4.7.0.2, 4.7.0.1, 4.7.0.0, 4.6.0.1, 4.6.0.0, 4.5.1.0, 4.5.0.0, 4.4.1.0,
4.4.0.0, 4.3.1.0, 4.3.0.0, 4.2.0.2, 4.2.0.1, 4.2.0.0, 4.1.0.0, 4.0.0.0,
3.0.3.2, 3.0.3.1 (global constraint requires installed instance)
Dependency tree exhaustively searched.

而使用“cabal install gitit”安裝時,也是類似的提示base不符合。
這裏不清楚什麼原因,可能是gitit版本更新到了0.12.2造成了系統中dependencies的兼容問題了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章