Ray-D-Song's Blog

软链接(符号链接)应用入门

2024-9-9 2min

最近有一个需求,需要研究实现一个简化的包管理器。

现代的包管理器,比如Go ModulesMaven都支持soft link(软链接),也称为symbolic link(符号链接)

软链接的就是将文件或文件夹映射到另一个位置,对映射文件的操作会同步到源文件上。

对包管理来说,这样做的好处是,不用多次拉取同一个依赖。
如果项目 A 和 B 都依赖 package alpha,那只需要拉取 alpha 到一个公共位置,再在 A 和 B 中分别创建一个软链接到这个位置即可。

shell

# Linux macOS
ln -s <target> <link name>

# Windows
mklink <link name> <target>

Go 语言控制软链接

Go 语言提供了os.Symlink来操作软链接。

https://pkg.go.dev/os#Symlink

err := Symlink(oldname, newname)