更新时间: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. JAVA生成数字0~9字母A~Z混合编码0000、0001...0009、000A...000Z、0010......

    分别是求下一个编码 和 输出所有编码 /** * 用1--9加A--Z混合编码 使用ASCII码判断 * LYL * 传一个值 求下一个编码 */ public String getABCDCode( ...

  2. RobotFramework自动化测试框架-使用Python编写自定义的RobotFramework Lib

    使用Python构建Lib工程 可以用来开发Python Lib的IDE工具有很多,常见的有Pycharm,Eclipse with PyDev插件等,而且在RobotFramework官网中也已经提 ...

  3. Freemarker商品详情页静态化服务调用处理

    --------------------------------------------------------------------------------------------- [版权申明: ...

  4. malloc_stats---检查内存泄露的神器

    在之前的博客中提到过,valgrind可以用来检测内存泄露,但在使用中,往往会遇到一些问题,给调试工作带来很多不必要的麻烦,我自己遇到的有以下两种: (1)内存泄露误检(系统初始化时,可能有一些需要长 ...

  5. linux简单命常用令

    Linux常用命令总结 切换:cd tmp cd/tmp/yun cd 切换到host目录 cd .. 显示:ll Top显示系统情况 Netstat显示网络情况 Ifconfig显示网络配置 Mor ...

  6. OpenCV, MatBGR2ARGB, ARGB2MatBGR

    代码片段~ unsigned int* abMatBGR2ARGB(Mat imag) { int nCols; int nRows; unsigned int *pbuff = NULL; if(i ...

  7. 剑指Offer——好未来视频面知识点储备+面后总结

    剑指Offer--好未来视频面知识点储备+面后总结 情景介绍 时间:2016.10.12 13:00- 地点:宿舍 事件:好未来视频面 知识点储备 数据结构 单链表反转 public class Li ...

  8. tomcat生命周期的管理——生命周期统一接口Lifecycle

    我们知道Tomcat的架构设计是清晰的.模块化的,其拥有很多组件,假如我们要启动Tomcat,可以一个一个启动组件,但这样启动有很多缺点,不仅麻烦,而且容易漏了组件启动,还会对后面动态组件扩展带来麻烦 ...

  9. 19 主线程向子线程发送信息(handler)

    package com.fmy.handler; import android.app.Activity; import android.os.Bundle; import android.os.Ha ...

  10. Django 表单校验 表单字段设置 自定义表单校验规则

    今天看到了一篇非常好的博文,拿来和大家分享一下. 内容包括了: 用户注册时输入数据的校验 使用widget进行字段设置 实现自定义的校验规则 参考自下面的这篇文章