### 在loongnix下编译syncthing
Syncthing(https://syncthing.net/) 是一个开源的 P2P 文件同步工具,可用于在多个设备(包括 Android 手机)之间同步文件。
-- Ankush Das(作者)。因为工作资料保存需要,一直通过syncthing将工作用机与后台NAS进行备份。
syncthing是由go语言开发完成,也有相应的for loong64版本下载(syncthing-linux-loong64-v1.27.3-rc.2.tar.gz),但因为loongnix是旧世界,所以并不能下载下来直接使用。
解决方法其实也很简单:在旧世界安装go支持环境,然后编译syncthing源码
- 在旧世界安装go 环境
具体参考龙芯官网
(http://docs.loongnix.cn/golang/install.html)
从下载页面下载对应平台安装文件和对应的sha5文件
LoongArch64安装文件: go1.19.linux-loong64.tar.gz
SHA256SUM检验文件 : go1.19.linux-loong64.sha256
校验下载文件的sha256
执行命令: sha256sum -c go1.19.linux-loong64.sha256
正确结果: go1.19.linux-loong64.tar.gz: 成功
移除已安装的Go (放在/usr/local目录下为例)
`rm -rf /usr/local/go`
解压缩下载的tar包到/usr/local目录
$`sudo tar vxf go1.19.linux-loong64.tar.gz -C /usr/local/`
把/usr/local/go/bin目录加入PATH环境变量
`export PATH=$PATH:/usr/local/go/bin`
检查安装结果
执行命令: `go version`
正确结果: `go version go1.19 linux/loong64`
因为syncthing对于go语言版本的要求,此次我安装的为go 1.21.5,另外我这边机器为shell为zsh,所以在.zshrc加上
`export PATH=$PATH:/usr/local/go/bin`
- 编译syncthing
1. 下载源代码,下载的为syncthing-1.24.0
2. 因为编译要下载各类github下小组件,将GOPROXY改为能用的
```
`go env -w GOPROXY=https://goproxy.io,direct
go env -w GO111MODULE=on`
3. tar vxf syncthing-1.24.0.tar.gz
cd sycnthing-1.24.0
3. tar vxf syncthing-1.24.0.tar.gz
cd sycnthing-1.24.0
3. tar vxf syncthing-1.24.0.tar.gz
cd sycnthing-1.24.0
bash build.sh
编译完成后
cd bin
sudo mv * /usr/bin/
```
4. 添加快捷方式
syncthing-start.desktop
```
#!/usr/bin/env xdg-open
[Desktop Entry]
Name=Start Syncthing
GenericName=File synchronization
Comment=Starts the main syncthing process in the background.
Exec=/usr/bin/syncthing serve --no-browser --logfile=default
Icon=/usr/share/images/desktop-base/syncthing-gtk-icon.png
Terminal=false
Type=Application
Keywords=synchronization;daemon;
Categories=Network;FileTransfer;P2P
```
syncthing-ui.desktop
```
#!/usr/bin/env xdg-open
[Desktop Entry]
Name=Syncthing Web UI
GenericName=File synchronization UI
Comment=Opens Syncthing's Web UI in the default browser (Syncthing must already be started).
Exec=/usr/bin/syncthing -browser-only
Icon=/usr/share/images/desktop-base/syncthing-gtk-icon.png
Terminal=false
Type=Application
Keywords=synchronization;interface;
Categories=Network;FileTransfer;P2P
```
`cp *.desktop /usr/share/applications/
cp *.dekstop /home/user/桌面`