最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【记录】换了256G的SSD然后重装Win7后去恢复docbook的开发环境

Docbook crifan 2422浏览 0评论

【背景】

之前由于:

【血的教训】修复移动硬盘上面的文件系统索引问题导致电脑上的硬盘的某个分区被格式化:该分区所有数据都丢失了

而换了更大的256G的SSD:

【记录】购买浦科特的256G的SSD:M5P(PX-256M5PRO 256G)

【记录】K470上把128G的OCZ的AGT3的SSD换成Plextor的256G的M5P

然后再去重装了Win7:

【记录】换了256G的SSD后重新从硬盘安装Win7系统

现在,需要去恢复之前的docbook开发环境。

【折腾过程】

1.之前已有的cygwin的整个目录,都还保存着。

发现:

cygwin是无需再次重新安装即可使用的。

只是需要折腾点小工具:

【记录】恢复cygwin开发环境:右键打开cygwin+mintty为交互窗口+mintty支持log文件

即可很方便的继续使用了。

2.然后就是去修复环境了。

期间需要:

去添加环境变量:

FOP_HOME=E:\dev_root\docbook\tools\fop-1.0

且要把FOP_HOME加到path中。

PATH=xxx;%FOP_HOME%

注:

不是添加fop的bin路径:

%FOP_HOME%\bin

因为:

fop中根本不存在bin目录

fop的可执行文件,就是fop根目录中的

fop

fop.bat

fop.cmd

而已。

3.然后发现,新装的win7 x64,java没装。

所以去安装jdk。

下载到最新的:

jdk-7u45-windows-x64.exe

去安装即可。

安装后,再去设置对应的

JAVA_HOME=C:\Program Files\Java\jdk1.7.0_45

如此,后面的fop才能正常运行。

注:

安装完毕java后,其有些文档:

http://docs.oracle.com/javase/

有空可以去学学。

4.然后,剩下的,由于之前的一些内容被损坏,

而导致重新修复了docbook的一些config等内容。

其中,关于ln软链接:

去删除之前的tools_root和config_root

更新了最新的链接

但是后来发现,还是去掉这个软链接:

Administrator@PC-20131018OHXV /cygdrive/e/dev_root/docbook/dev/books/rec_soft_npp/src
$ ls /home/develop/docbook/ -l
总用量 2
lrwxrwxrwx 1 Administrator None 39 十一  6 23:43 config_root -> /cygdrive/e/dev_root/docbook/dev/config
lrwxrwxrwx 1 Administrator None 35 十一  6 23:43 tools_root -> /cygdrive/e/dev_root/docbook/tools/

Administrator@PC-20131018OHXV /cygdrive/e/dev_root/docbook/dev/books/rec_soft_npp/src
$ rm /home/develop/docbook/*

Administrator@PC-20131018OHXV /cygdrive/e/dev_root/docbook/dev/books/rec_soft_npp/src
$ ls /home/develop/docbook/ -l
总用量 0

尽量减少docbook的makefile和xsl和外部cygwin的依赖。

所以,再去更新对应的xsl配置文件,使其不依赖于之前的cygwin中软链接了。

5.然后就是一堆的,针对于xsl的修改。

主要是修改其中的tools中xsl的路径和config的路径。

6.另外,对于chm的htmlhelp的hhc,找不到,所以要去把htmlhelp加上:

去参考:

【已解决】给cygwin的docbook环境中安装和配置hhc

下载

Microsoft HTML Help Downloads

下载到htmlhelp.exe,去安装。

然后再去把

E:\dev_install\HTML Help Workshop

加到环境变量PATH中。

重启cygwin,再去运行,就可以找到hhc了。

7.后来又出现那个:

com.nexwave.nquindexer.IndexerMain

的错误了:

java \
        -DhtmlDir=../output/webhelp \
        -DindexerLanguage=zh \
        -DhtmlExtension=html \
        -DdoStem=true \
        -DindexerExcludedFiles=ix01.html \
        -Dorg.xml.sax.driver=org.ccil.cowan.tagsoup.Parser \
        -Djavax.xml.parsers.SAXParserFactory=org.ccil.cowan.tagsoup.jaxp.SAXFactoryImpl \
        -classpath "E:/dev_root/docbook/tools/docbook-xsl-ns-1.78.1/extensions/webhelpindexer.jar;E:/dev_root/docbook/tools/docbook-xsl-ns-1.78.1/extensions/tagsoup-1.2.1.jar;E:/dev_root/docbook/tools/docbook-xsl-ns-1.78.1/extensions/lucene-analyzers-3.0.0.jar;E:/dev_root/docbook/tools/docbook-xsl-ns-1.78.1/extensions/lucene-core-3.0.0.jar;" \
        com.nexwave.nquindexer.IndexerMain
/bin/sh: line 1: java: command not found
../../../config/docbook.mk:760: recipe for target `webhelp_index' failed
make: *** [webhelp_index] Error 127

去参考之前自己的:

【已解决】docbook中去make webhelp编译webhelp结果出错:Error: Could not find or load main class com.nexwave.nquindexer.IndexerMain

去看看当前的变量:

Administrator@PC-20131018OHXV /cygdrive/e/dev_root/docbook/dev/books/rec_soft_npp/src
$ echo $JAVA_HOME
C:\Program Files\Java\jdk1.7.0_45

Administrator@PC-20131018OHXV /cygdrive/e/dev_root/docbook/dev/books/rec_soft_npp/src
$ echo $JDK_HOME


Administrator@PC-20131018OHXV /cygdrive/e/dev_root/docbook/dev/books/rec_soft_npp/src
$

但是已确定和此无关。

然后看到是java的classpath中分隔符的问题。

再去确认自己当前的makefile:docbook.mk

结果:

是已经之前已经修复后的:

# =================================================
# You probably don't need to change anything below
# unless you choose to add a validation step.
# ================================================
INDEXER_JAR         := $(TOOLS_XSL_NS_EXTENSIONS)/webhelpindexer.jar
TAGSOUP_JAR         := $(TOOLS_XSL_NS_EXTENSIONS)/tagsoup-1.2.1.jar
LUCENE_ANALYZER_JAR := $(TOOLS_XSL_NS_EXTENSIONS)/lucene-analyzers-3.0.0.jar
LUCENE_CORE_JAR     := $(TOOLS_XSL_NS_EXTENSIONS)/lucene-core-3.0.0.jar

CLASSPATH_FROM_ENV = $(CLASSPATH)
#CLASSPATH_FROM_ENV := $(CLASSPATH)
#CLASSPATH_FROM_ENV ?= $(CLASSPATH)

#under Windows(Cygwin), (java classpath)
#(1)path seperator is semicolon ';' (not Linux's colon ':')
#(2) command contain semicolon means multile command, so need quote
# so become -> "path1;path2;path3"
#detail can refer:
#【已解决】docbook中去make webhelp编译webhelp结果出错:Error: Could not find or load main class com.nexwave.nquindexer.IndexerMain
#https://www.crifan.com/docbook_make_webhelp_error__could_not_find_or_load_main_class_com_nexwave_nquindexer_indexermain/
ifeq ($(OS_NAME_LOWCASE), cygwin)
PATH_DELIMITER = ;
else
PATH_DELIMITER = :
endif

#WEBHELP_CLASSPATH := $(INDEXER_JAR):$(TAGSOUP_JAR):$(LUCENE_ANALYZER_JAR):$(LUCENE_CORE_JAR)
#WEBHELP_CLASSPATH := "$(INDEXER_JAR);$(TAGSOUP_JAR);$(LUCENE_ANALYZER_JAR);$(LUCENE_CORE_JAR)"
#WEBHELP_CLASSPATH := $(INDEXER_JAR):$(TAGSOUP_JAR):$(LUCENE_ANALYZER_JAR):$(LUCENE_CORE_JAR)
#WEBHELP_CLASSPATH := "$(CLASSPATH_FROM_ENV)$(PATH_DELIMITER)$(INDEXER_JAR)$(PATH_DELIMITER)$(TAGSOUP_JAR)$(PATH_DELIMITER)$(LUCENE_ANALYZER_JAR)$(PATH_DELIMITER)$(LUCENE_CORE_JAR)"
#WEBHELP_CLASSPATH = "$(INDEXER_JAR)$(PATH_DELIMITER)$(TAGSOUP_JAR)$(PATH_DELIMITER)$(LUCENE_ANALYZER_JAR)$(PATH_DELIMITER)$(LUCENE_CORE_JAR)$(PATH_DELIMITER)$(CLASSPATH_FROM_ENV)"
WEBHELP_CLASSPATH := "$(INDEXER_JAR)$(PATH_DELIMITER)$(TAGSOUP_JAR)$(PATH_DELIMITER)$(LUCENE_ANALYZER_JAR)$(PATH_DELIMITER)$(LUCENE_CORE_JAR)$(PATH_DELIMITER)$(CLASSPATH_FROM_ENV)"

webhelp_index:
	java \
        -DhtmlDir=$(OUTPUT_DIR_WEBHELP) \
        -DindexerLanguage=$(WEBHELP_INDEX_LANGUAGE) \
        -DhtmlExtension=html \
        -DdoStem=true \
        -DindexerExcludedFiles=$(INDEXER_EXCLUDED_FILES) \
        -Dorg.xml.sax.driver=org.ccil.cowan.tagsoup.Parser \
        -Djavax.xml.parsers.SAXParserFactory=org.ccil.cowan.tagsoup.jaxp.SAXFactoryImpl \
        -classpath $(WEBHELP_CLASSPATH) \
        com.nexwave.nquindexer.IndexerMain
	mkdir -p ${OUTPUT_DIR_WEBHELP}/search
	cp -r $(TOOLS_XSL_NS_WEBHELP)/template/search/* ${OUTPUT_DIR_WEBHELP}/search

后来,才注意到:

原来此处是:

java: command not found

很明显,是java没有找到。。。

所以,需要去把java的bin路径,加上path中:

PATH中最后加上对应的%JAVA_HOME%\bin;

然后,再去重启cygwin,如此:

cygwin中,才能找到java,才能运行java,此处才不会出错:

java \
        -DhtmlDir=../output/webhelp \
        -DindexerLanguage=zh \
        -DhtmlExtension=html \
        -DdoStem=true \
        -DindexerExcludedFiles=ix01.html \
        -Dorg.xml.sax.driver=org.ccil.cowan.tagsoup.Parser \
        -Djavax.xml.parsers.SAXParserFactory=org.ccil.cowan.tagsoup.jaxp.SAXFactoryImpl \
        -classpath "E:/dev_root/docbook/tools/docbook-xsl-ns-1.78.1/extensions/webhelpindexer.jar;E:/dev_root/docbook/tools/docbook-xsl-ns-1.78.1/extensions/tagsoup-1.2.1.jar;E:/dev_root/docbook/tools/docbook-xsl-ns-1.78.1/extensions/lucene-analyzers-3.0.0.jar;E:/dev_root/docbook/tools/docbook-xsl-ns-1.78.1/extensions/lucene-core-3.0.0.jar;" \
        com.nexwave.nquindexer.IndexerMain
Stemming enabled
The created index files are located in ..\output\webhelp\search
Indexed the contents in 2 seconds
mkdir -p ../output/webhelp/search
cp -r E:/dev_root/docbook/tools/docbook-xsl-ns-1.78.1/webhelp/template/search/* ../output/webhelp/search

 

 

【总结】

至此,基本算是恢复了docbook的开发环境了。

总结一下,把当前的docbook,移到别的windows的环境中,需要做的事情:

1.cygwin

(1)确保已安装了可用的cygwin。

2.FOP

(1)本地已有fop后,去添加环境变量:

FOP_HOME=E:\dev_root\docbook\tools\fop-1.0

(2)且要把FOP_HOME加到path中。

PATH=xxx;%FOP_HOME%

3.java

(1)确保已经安装了java:最好安装了对应的JDK。

(2)再去添加环境变量JAVA_HOME

JAVA_HOME=C:\Program Files\Java\jdk1.7.0_45

(3)再去把java的bin路径加到环境变量中

PATH=xxx;%JAVA_HOME%\bin;

4.确保hhc可以找到

下载并安装:

Microsoft HTML Help Downloads

然后把hhc所在路径加到环境变量PATH中

即:

PATH=xxx;E:\dev_install\HTML Help Workshop;

5.更新xsl中的路径配置

最新的docbook.mk和各种xsl配置文件,已经更新了,不再依赖公用的那个:

/home/develop/docbook/config_root -> /cygdrive/e/dev_root/docbook/dev/config
/home/develop/docbook/tools_root -> /cygdrive/e/dev_root/docbook/tools/

路径,而是需要根据当前环境,更新对应的xsl文件。

6.更新docbook.mk中的对应的路径

主要是一些根目录的路径:

################################################################################
# Enviroment Settings
################################################################################

# ----------------------- home config -----------------------
TOOLS_ROOT_CMD = E:/dev_root/docbook/tools
CONFIG_ROOT_CMD = E:/dev_root/docbook/dev/config
LOCAL_RELEASE_PARENT_CMD = E:/dev_root/www_crifan_com/files/doc/docbook
LOCAL_PDF_CMD = E:/tmp/books
CONFIG_ROOT_CYGWIN = /cygdrive/e/dev_root/docbook/dev/config
TOOLS_ROOT_CYGWIN = /cygdrive/e/dev_root/docbook/tools

的配置。

7.关于fop的一个bug

最好去修复一下:

修改fop文件,将(大概是189行的):

LCP_TEMP=`cygpath --path --unix "$LOCALCLASSPATH"`

改为:

#LCP_TEMP=`cygpath --path --unix "$LOCALCLASSPATH"`
# for cygpath has bug, so use follow workaround
# edit by admin AT crifan DOT com
LCP_TEMP=`cygpath --path --$format "$LOCALCLASSPATH"`
LCP_TEMP=`cygpath --path --unix "$LCP_TEMP"`

即可。

详见:

【终极解决】fop错误:Exception in thread "main" java.lang.NoClassDefFoundError:org/apache/xmlgraphics/image/loader/ImageContext 的终极解决办法,即cygpath有bug,转换路径出错,导致部分路径被截断

转载请注明:在路上 » 【记录】换了256G的SSD然后重装Win7后去恢复docbook的开发环境

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
82 queries in 0.195 seconds, using 22.13MB memory