所以我正在编写一个小型包管理器,我遇到的一个问题是创建文件的符号链接。
它将包安装到/usr/pkg/name-version
,然后读取文件以确定要创建哪些符号链接。我用来ln
建立链接,并且在尝试安装 Linux API 标头时遇到了问题。我需要链接头文件本身,而不是包含它们的文件夹(因此,如果两个包需要将文件放在 include 的同一子目录中,则无需将其中一个包搞砸即可)。
我解决了这个问题,但ln
如果路径不完整,就会出错,这很烦人,因为在安装包之前这些目录不应该存在。
是否有一个标志ln
可以创建任何丢失的目录,或者我是否必须使用一些复杂的 bash 脚本?
答案1
答案2
您不需要复杂的 bash 脚本,而需要简单的一行代码。mkdir --parents
将处理所有事情,如果目录结构已经存在,甚至不会打印错误。
只是在删除时要小心如何处理这些目录,这样就不会破坏其他包。
另外,既然你写的是bash
,你可以看看巫术(无耻的插头)。也许修改它会更简单,因为它成熟且灵活。
答案3
也许tar
可以帮助准备带有链接的文件:
find . -type l > links.txt
tar cpf links.tar --files-from links.txt
然后在需要的地方创建链接:
tar xvf links.tar