【背景】
之前由于:
【血的教训】修复移动硬盘上面的文件系统索引问题导致电脑上的硬盘的某个分区被格式化:该分区所有数据都丢失了
而换了更大的256G的SSD:
【记录】购买浦科特的256G的SSD:M5P(PX-256M5PRO 256G)
【记录】K470上把128G的OCZ的AGT3的SSD换成Plextor的256G的M5P
然后再去重装了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
下载
下载到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
去参考之前自己的:
去看看当前的变量:
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可以找到
下载并安装:
然后把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"` 即可。 |
详见: