配置文件问题 - Agzs/geth-pbft-study GitHub Wiki
1、core.yaml文件
修改viper中获取core.yaml的路径:(注释部分为$HOME/.geth-pbft路径,未注释部分为$GOPATH/src/github.com/yeongchingtarn/geth-pbft/node路径)
viper.AddConfigPath("./") // Path to look for the config file in
//========================================================>
// Path to look for the config file in based on HOME
// home := os.Getenv("HOME") //=>GOPATH -> HOME --Agzs
// for _, p := range filepath.SplitList(home) {
// pbftpath := filepath.Join(p, ".geth-pbft") //=>11.13 path--Agzs
// viper.AddConfigPath(pbftpath)
// }
//=========================================================>
// Path to look for the config file in based on GOPATH
gopath := os.Getenv("GOPATH")
for _, p := range filepath.SplitList(gopath) {
peerpath := filepath.Join(p, "src/github.com/yeongchingtarn/geth-pbft/node")
viper.AddConfigPath(peerpath)
}
调整rocksDB中db.Start()和db.Stop()的方式,二者仅在geth-pbft版本下的signer情形下启动,即含有PBFT配置文件的pbft实例下才会启动rocksDB。此外,修改core.yaml文件中的fileSystemPath为/usr/local/geth-pbft/hyperledgerRocksDB/signer,这样在ubuntu的任何账户下该路径不用重新修改。
2、config.yaml文件
修改viper中获取config.yaml的路径:(注释部分为$HOME/.geth-pbft路径,未注释部分为$GOPATH/src/github.com/yeongchingtarn/geth-pbft/consensus/pbft路径)
//========================================================>
// Path to look for the config file in based on HOME
// home := os.Getenv("HOME") //=>GOPATH -> HOME --Agzs
// for _, p := range filepath.SplitList(home) {
// pbftpath := filepath.Join(p, ".geth-pbft") //=>11.13 $HOME/.geth-pbft. path--Agzs
// config.AddConfigPath(pbftpath)
// }
//=========================================================>
// Path to look for the config file in based on GOPATH
gopath := os.Getenv("GOPATH")
for _, p := range filepath.SplitList(gopath) {
pbftpath := filepath.Join(p, "src/github.com/yeongchingtarn/geth-pbft/consensus/pbft")
config.AddConfigPath(pbftpath)
}
3、通过shell脚本,配置.yaml文件
大体思路:将.yaml文件和可执行程序(geth、puppeth...)放在同一个文件夹,在该文件夹内创建名为install.sh的shell脚本,通过运行该脚本,将.yaml文件放到指定目录($HOME/.geth-pbft),将可执行程序安装到指定目录(/usr/local/geth-pbft),并将可执行程序的安装目录添加到环境变量PATH中。
编写install.sh脚本,如下:
#!/bin/bash
set -eu
prefix="$HOME"
if [ "${PREFIX:-}" != "" ] ; then
prefix=${PREFIX:-}
elif [ "${BOXEN_HOME:-}" != "" ] ; then
prefix=${BOXEN_HOME:-}
fi
rm -rf $prefix/geth-pbft
mkdir -p $prefix/geth-pbft
for i in `ls -l |awk 'NR>1 {print $NF}' `
do
for FILE in `echo $i | awk '/yaml$/{print $i}'`
do
mv $i "$prefix/geth-pbft"
done
done
mv $HOME/geth-pbft $HOME/.geth-pbft
rm -rf rm -rf $prefix/geth-pbft
prefix2="/usr/local"
if [ "${PREFIX:-}" != "" ] ; then
prefix2=${PREFIX:-}
elif [ "${BOXEN_HOME:-}" != "" ] ; then
prefix2=${BOXEN_HOME:-}
fi
rm -rf $prefix2/geth-pbft
mkdir -p $prefix2/geth-pbft
pushd "$( dirname "${BASH_SOURCE[0]}" )" > /dev/null
install abigen "$prefix2/geth-pbft"
install bootnode "$prefix2/geth-pbft"
install evm "$prefix2/geth-pbft"
install faucet "$prefix2/geth-pbft"
install puppeth "$prefix2/geth-pbft"
install rlpdump "$prefix2/geth-pbft"
install geth "$prefix2/geth-pbft"
popd > /dev/null
注:该脚本参考git-lfs的安装脚本