更新时间:2016-08-05

更新说明:

由于在 Linux 内核的机器上安装 Calibre 需要安装的依赖库过多,故不推荐在此类机器上使用格式转换功能。你可以阅读 在自己的电脑上安装GitBook For Mac 来了解在 Mac 上完美使用 Gitbook .

无意间发现在这个开源的EBook制作软件GitBook,你可以在官网上配置相关信息来和自己的GitHub账号绑定来创建自己的EBook,并且支持生成PDF、ePub和MOBI 三种格式提供下载。

但是我想自己安装GitBook来生成HTML格式,那样就可以放在自己的网站里面了。

安装过程:

  • 安装基本环境

    • 安装Git
    • 安装NVM、Node.js和NPM
    • 升级Python版本到2.7.1以上
  • 安装GitBook及calibre组件
  • 初始化并生成Demo
  • 生成HTML以及其他格式的文件

安装基本环境

安装Git

CentOS安装Git的过程我写在自己的问答网站了,点击 CentOS安装Git

安装NVM、Node.js和NPM

快速搭建 Node.js / io.js 开发环境以及加速 npm

升级Python版本到2.7.1以上

由于GitBook生成多格式的文件需要用到calibre,calibre最新版要求python ≥ 2.7.1 not 3.x 。

查看Python版本:python ,看结果中Python的版本是否符合要求。

如果需要升级Python,请查看:centos系统升级python 2.7.3

安装GitBook及calibre组件

安装GitBook:

$ npm install gitbook-cli -g

安装calibre:

Calibre安装文档 For Linux

我找到的安装代码如下:

wget -nv -O- https://raw.githubusercontent.com/kovidgoyal/calibre/master/setup/linux-installer.py | python -c "import sys; main=lambda x:sys.stderr.write('Download failed\n'); exec(sys.stdin.read()); main('/opt')"

命令的最后 main('/opt')/opt 为Calibre的安装目录,可根据需要修改。

初始化并生成Demo

$ cd /home/
$ mkdir gitbook
$ cd gitbook/
$ mkdir demo
$ cd demo/
$ gitbook init

执行最后一个命令之后会在 /home/gitbook/demo/ 下生成 README.mdSUMMARY.md 两个文件

生成HTML以及其他格式的文件

1.生成完整的静态 HTML:切换到书的目录后built 即可

$ cd /home/gitbook/demo/
$ gitbook build

会在/home/gitbook/demo/ 目录下生成 _book 目录,即为完整的HTML静态网站

2.生成其他格式的文件

先切换到项目的目录下:比如本机的/home/gitbook/

PDF:

gitbook pdf ./demo ./demo.pdf

ePub:

gitbook epub ./demo ./demo.epub

MOBI:

gitbook mobi ./demo ./demo.mobi

注:需要提前安装Calibre,Gitbook会使用其中的ebook-convert功能组件来完成书籍格式的转换。

我遇到的Bug

由于我未学习过node.js和Python,在 安装calibre 那一步出错了,导致在GitBook生成其他格式文件的时候出问题,生成pdf 和 mobi 会失败,但是 epub却成功了

安装calibre时的错误信息:

Failed to find directory to install bash completions, using default.
____________________ WARNING ____________________
Setting up completion failed with error:
__________________________________________________
Traceback (most recent call last):
File "site-packages/calibre/linux.py", line 748, in setup_completion
File "site-packages/calibre/linux.py", line 505, in write_completion
File "site-packages/calibre/gui2/__init__.py", line 8, in <module>
ImportError: cannot import name QStyle Setting up desktop integration...
____________________ WARNING ____________________
Setting up desktop integration failed with error:
__________________________________________________
Traceback (most recent call last):
File "site-packages/calibre/linux.py", line 781, in setup_desktop_integration
File "site-packages/calibre/linux.py", line 1097, in render_img
ImportError: cannot import name QImage Creating un-installer: /usr/bin/calibre-uninstall There were 2 warnings * Setting up completion failed with error: * Setting up desktop integration failed with error: Run "calibre" to start calibre

ImportError: cannot import name QStyleImportError: cannot import name QImage来看,估计是Python少了什么库,希望能解决这个问题的博友指点一下。

参考

http://faq.devwiki.cn

http://www.sinlesstime.com

https://github.com/GitbookIO/gitbook

http://www.calibre-ebook.com/download_linux

http://blog.liyibo.org/books-installation-authoring-tool-gitbook

更新 2015-04-26

关于安装过程中出现的Bug问题,我查到了如下一些解答:

1. 在centos 6.2,python2.7 下安装QT 4.8.3,pyqt 4.9.5 详细步骤

2. Building PyQt5 for Python2.7 on a clean Ubuntu 13.10 build machine

3. ImportError: cannot import name QStyle

我的折中方案

对于Python以及Linux方面新手而言,安装py-Qt相关库是件不太容易的事情。如果只是为了生成Pdf等格式的文档,我想到一个折中的方案:

1. 上传文件到Github上

2. 在Gitbook官网注册个账号,创建book并关联Github账号以及对应的项目

3. 在Gitbook上下载生成的pdf、mobi格式的文件

更新 2016-08-05

如果你和我一样安装 Calibre 失败了,要做好文件清理工作:

//卸载calibre
sudo rm -rf /opt/calibre/* //清除失效的软连接
cd /usr/bin/
rm -rf ./calibre*
rm -rf ./ebook*
rm -rf fetch-ebook-metadata
rm -rf lrf2lrs
rm -rf lrfviewer
rm -rf lrs2lrf
rm -rf markdown-calibre
rm -rf web2disk

最后声明一下:转载请注明出处!

在自己的服务器上安装GitBook的更多相关文章

  1. 如何在一台服务器上安装两个mysql或者更多

    如何在一台服务器上安装两个mysql 1       前言 上篇写了在一台机器上源码编译安装一个mysql,那么如何在一台机器上源码编译安装两个mysql或者更多呢? 2       环境 mysql ...

  2. 我为什么很烦在DB服务器上安装杀毒软件

    常见的数据库连接问题无外乎是在数据库服务器本地可以连接SQL Server,但通过其他服务器就不可以连接.但这次我却碰到了相反的情况,在服务器本地无法通过IP/实例名连接,但从其他服务器却可以.而且每 ...

  3. 阿里云服务器上安装mysql的心路历程(博友们进来看看哦)

    在阿里云花了100买了一台云服务器,配置如下: CPU: 1核 内存: 512MB 数据盘: 0G 带宽: 1Mbps 阿里云服务器安装mysql搞得我想吐血,搞了一个多星期,现在才搞好,而且,还有许 ...

  4. 在Windows Server 2012服务器上安装可靠多播协议

    为什么要安装可靠多播协议?   答:随着因特网的发展,出现了视频点播.电视会议.远程学习.计算机协同工作等新业务.传统的点到点通信方式,不仅浪费大量的网络带宽,而且效率很低.一种有效利用现有带宽的技术 ...

  5. 安装VMware vSphere 的目的就是在一台物理服务器上安装很多很多的虚拟机

    版权声明:本文为博主原创文章,未经博主允许不得转载. 我们安装VMware vSphere 的目的就是在一台物理服务器上安装很多很多的虚拟机,我们可以通过VMware vSphere Client直接 ...

  6. 在阿里云Linux服务器上安装MySQL

    申请阿里云Linux服务器 昨天在阿里云申请了一个免费试用5天的Linux云服务器. 操作系统:Red Hat Enterprise Linux Server 5.4 64位. CPU:1核 内存:5 ...

  7. 线上服务器上安装的VNCServer不能正常工作

    1.问题描述: 线上服务器上安装的不能正常工作 2.解决问题过程: 一. 重启vncserver 运行命令:vncserver -kill :1和vncserver :1 二. 发现vncserver ...

  8. 在阿里云服务器上安装完成并启动Tomcat后,通过http不能访问--解决办法

    在阿里云服务器上安装完成并启动Tomcat后,通过http不能访问的原因是阿里云平台为了安全设置了安全组策略,必须我们授权的端口,其他计算机才能通过http访问 解决办法:(这里以阿里轻量应用服务器为 ...

  9. 极简】如何在服务器上安装SSL证书?

    本文适合任何人了解,图形化操作.下面以腾讯云为例,并且服务器(linux)也安装了宝塔面板. 1.登陆腾讯云账号进入控制台,找到SSL的产品 2.按要求申请并填写表单,记住私钥密码 3.提交后,待腾讯 ...

随机推荐

  1. How To determine DDIC Check Table, Domain and Get Table Field Text Data For Value?

     How To determineDDIC Check Table, Domain and Get Table Field Text Data For Value? 1.Get Table Fie ...

  2. 为什么内部类访问的外部变量需要使用final修饰

    因为生命周期的原因.方法中的局部变量,方法结束后这个变量就要释放掉,final保证这个变量始终指向一个对象.首先,内部类和外部类其实是处于同一个级别,内部类不会因为定义在方法中就会随着方法的执行完毕而 ...

  3. 潜谈IT从业人员在传统IT和互联网之间的择业问题(上)-传统乙方形公司

    外包能去吗?项目型公司如何?甲方比乙方好?互联网公司就一定好吗? 相信许多从业者在经历了3-5年的工作期后都会带着这样的疑问或者疑惑. 2012年-2014年间,曾经面试过500人,亲身面试的也有15 ...

  4. Linux 下的一个全新的性能测量和调式诊断工具 Systemtap,第 1 部分: kprobe

    kprobe 的原理.编程接口.局限性和使用注意事项 本系列文章详细地介绍了一个Linux下的全新的调式.诊断和性能测量工具Systemtap和它所依赖的基础kprobe以及促使开发该工具的先驱DTr ...

  5. Zookeeper动态更新服务器列表

    -------------------------------------------------------------------------------------- [版权申明:本文系作者原创 ...

  6. Activity平移动画

    Activity平移动画 效果图 添加动画文件 在res下添加anim文件夹,在anim下添加几个动画文件,分别是进入和退出的动画时间和移动距离,属性很简单,一看就懂,不磨叽了. tran_next_ ...

  7. SpriteKit中反转Action需要注意的问题

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 我们知道在SpriteKit中同样有Cocos2D中类似的Ac ...

  8. [线程]Thead 中传参数RuntimeError: thread.__init__() not called

    在写一个多线程类的时候调用报错 RuntimeError: thread.__init__() not called class NotifyTread(threading.Thread): def ...

  9. tomcat启动批处理——catalina.bat

    这个批处理才是tomcat服务器启动跟关闭的核心脚本.其中包括....(各种变量),此节将详细讲解这个批处理的逻辑. 先看看第一部分脚本: ****************************** ...

  10. Java 单元测试 JUnit4 快速入门

    JUnit最佳实践 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 public class CardServiceTest {     /**      * 最佳 ...