FreeBSD编程工具

FreeBSD提供了很多开发工具,例如C和C++编译器以及汇编器,以及经典UNIX工具,如 sedawk

FreeBSD提供的解释器(Interpreters)

FreeBSD提供了一系列解释器(解释型语言):

编译器

FreeBSD默认提供 C llvm ,所以不需要 gcc 就可以编写C语言程序并且 从源代码编译构建FreeBSD

  • 核心系统已经安装了 clang (llvm) 以及 make ,所以通常不需要再安装

安装

  • 安装必要工具

安装开发工具
pkg install bash ruby lua54 node npm-node22 \
    python311 py311-pip go \
    tmux graphviz

# 发行版14.3提供的go版本是 1.21
# 根据 gopls 说明,Go 1.21增加了向前兼容支持,所以只要使用go 1.21或更高版本安装gopls,任何必要的工具链升级都将自动处理,就像任何其他依赖项一样
#
# 发行版现在不通过lua软件包名安装,而是要要指定lua版本软件包进行安装,例如 lang/lua51 , lang/lua52 , lang/lua54
# 当前建议安装 lua54 , 即安装lua5.4.7
#
# 发行版14.3提供的node版本是 22.16

构建 neovim 开发环境

下载nvim配置
mkdir /home/admin/src
cd /home/admin/src && git clone https://github.com/huataihuang/cloud-studio.git && cd /home/admin/src/cloud-studio/config && sh install.sh

我这里遇到和 Linux桌面 不一样的报错( :MasonLog 查看)

安装nvim lsp-server 报错
[INFO  Fri Jun 20 15:52:15 2025] ...e/nvim/lazy/mason.nvim/lua/mason-core/installer/init.lua:184: Executing installer for Package(name=python-lsp-server) {}
[INFO  Fri Jun 20 15:52:15 2025] ...e/nvim/lazy/mason.nvim/lua/mason-core/installer/init.lua:184: Executing installer for Package(name=lua-language-server) {}
[INFO  Fri Jun 20 15:52:15 2025] ...e/nvim/lazy/mason.nvim/lua/mason-core/installer/init.lua:184: Executing installer for Package(name=bash-language-server) {}
[INFO  Fri Jun 20 15:52:15 2025] ...e/nvim/lazy/mason.nvim/lua/mason-core/installer/init.lua:184: Executing installer for Package(name=clangd) {}
[INFO  Fri Jun 20 15:52:15 2025] ...e/nvim/lazy/mason.nvim/lua/mason-core/installer/init.lua:184: Executing installer for Package(name=ruby-lsp) {}
[ERROR Fri Jun 20 15:52:15 2025] ...e/nvim/lazy/mason.nvim/lua/mason-core/installer/init.lua:249: Installation failed for Package(name=lua-language-server) error="The current platform is unsupported."
[INFO  Fri Jun 20 15:52:15 2025] ...e/nvim/lazy/mason.nvim/lua/mason-core/installer/init.lua:184: Executing installer for Package(name=gopls) {}
[ERROR Fri Jun 20 15:52:15 2025] ...e/nvim/lazy/mason.nvim/lua/mason-core/installer/init.lua:249: Installation failed for Package(name=clangd) error="The current platform is unsupported."
[ERROR Fri Jun 20 15:55:01 2025] ...zy/mason.nvim/lua/mason-core/installer/registry/init.lua:186: Failed to download schemas Package(name=bash-language-server) Schema download timed out.
[ERROR Fri Jun 20 15:55:01 2025] ...e/nvim/lazy/mason.nvim/lua/mason-core/installer/init.lua:249: Installation failed for Package(name=python-lsp-server) error="Unable to find python3 installation in PATH. Tried the following candidates: python3, python."
[ERROR Fri Jun 20 15:55:03 2025] ...e/nvim/lazy/mason.nvim/lua/mason-core/installer/init.lua:249: Installation failed for Package(name=ruby-lsp) error=spawn: gem failed with exit code - and signal -. gem is not executable
[INFO  Fri Jun 20 15:55:03 2025] ...e/nvim/lazy/mason.nvim/lua/mason-core/installer/init.lua:245: Installation succeeded for Package(name=bash-language-server)
[ERROR Fri Jun 20 15:55:40 2025] ...im/lazy/mason.nvim/lua/mason-registry/sources/github.lua:146: Failed to install registry GitHubRegistrySource(repo=mason-org/mason-registry). "Failed to download registry archive."
[ERROR Fri Jun 20 15:56:03 2025] ...e/nvim/lazy/mason.nvim/lua/mason-core/installer/init.lua:249: Installation failed for Package(name=gopls) error=spawn: go failed with exit code 1 and signal 0.

看起来 lua-language-serverclangd 并不支持FreeBSD? 不可能啊

另外由于路径中没有 python3 (只有 python3.11 所以还有python比昂管报错,以及访问go下载仓库软件报错

参考 Use Language Servers for Development in the FreeBSD Src Tree 原来在FreeBSD上,可以使用 ccls Language server(发行版支持,可以直接用 pkg 安装),也可以像Linux一样使用 clangd 但是需要先安装 llvm15

  • dev jail 中安装 ccls :

这个空间要求很大(2G):

警告

我发现一个困扰: Mason ( mason.nvim )支持的LSP列表和 nvim-lspconfig 其实有一些gap:

  • 有些LSP在 nvim-lspconfig 中支持,例如 ccls ,但是在 mason.nvim 列表中没有对应项,就无法安装: 也就是在 plugins.lua 中配置:

配置安装LSP
require("lazy").setup({
   -- ...
   -- LSP manager
    { "mason-org/mason.nvim", opts = {} },
    {
        "mason-org/mason-lspconfig.nvim",
        dependencies = {
            "mason-org/mason.nvim",
            "neovim/nvim-lspconfig",
	    	config = function()
	    	    local lspconfig = require("lspconfig")

	    	    lspconfig.pylsp.setup({})
	        end,
        },
        opts = {
            ensure_installed = { "pylsp", "lua_ls", "bashls", "ruby_lsp" },
        },
    },
    {
      "pmizio/typescript-tools.nvim",
      dependencies = { "nvim-lua/plenary.nvim", "neovim/nvim-lspconfig" },
      opts = {},
    },
})

不能设置 ccls ,只能设置 clangd ,因为 Mason ( mason.nvim ) 只支持这个 clangd 插件安装,才能映射到 nvim-lspconfig

如果要支持更多插件(如 ccls ),就只能直接使用 nvim-lspconfig ,不要依赖 mason.nvim

警告

在FreeBSD平台使用 Mason ( mason.nvim ) 还会遇到很多报错: The current platform is unsupported ,例如安装:

  • clangd

  • lua_ls

参考 Neovim Mason and clangd ,原因是 Mason ( mason.nvim ) 是一个Linux为主的插件,所以在FreeBSD上有很多问题。虽然能够hack但是得不偿失。所以有人建议改为使用 helix-editor 来代替nvim,开箱即用,并且支持直接使用系统现有的LSP而不是每次启动来安装LSP

知乎上有一篇 开始使用 HELIX EDITOR 编辑器 可以参考入门

安装依赖

  • 根据 MasonLog 日志,如果要安装 ruby_lsp ,则系统需要先安装 gem 工具,在 FreeBSD 上是通过 pkg install devel/ruby-gems 获得

  • 要安装 clangd ,则需要安装 llvm ,根据 FreeBSD 14.3 RELEASE信息 ,当前使用 llvm19

  • 修改 ~/.config/nvim/lua/lsp.lua :

警告

暂时没有时间继续,后续再研究

参考