星期一, 二月 05, 2024

在龙芯 3A6000 loongnix 20.5 下编译syncthing

    <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/styles/default.min.css"/>

    Syncthing(https://syncthing.net/) 是一个开源的 P2P 文件同步工具,可用于在多个设备(包括 Android 手机)之间同步文件。

    -- Ankush Das(作者)。因为工作资料保存需要,一直通过syncthing将工作用机与后台NAS进行备份。



    syncthing是由go语言开发完成,也有相应的for loong64版本下载([syncthing-linux-loong64-v1.27.3-rc.2.tar.gz](https://github.com/syncthing/syncthing/releases/download/v1.27.3-rc.2/syncthing-linux-loong64-v1.27.3-rc.2.tar.gz)),但因为loongnix是[旧世界](https://bbs.loongarch.org/d/89),所以并不能下载下来直接使用。


    解决方法其实也很简单:在旧世界安装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](https://github.com/syncthing/syncthing/archive/refs/tags/v1.24.0.tar.gz)

    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/桌面`


    没有评论: