发现一个 /opt 和 /usr/local 的不同

之前对于这两个目录的作用一直有疑问,感觉前者没什么用,第三方软件都放在后者里完全够了
直到发现有位朋友开发软件在按绿色软件的逻辑写,程序里硬编码从当前目录读取其他文件

locale/
  zh_cn.json
  en.json
myapp
readme.txt

这个程序显然没法原样安装到/usr/bin,因此不适合安装到 /usr/local/bin,但安装在/opt/myapp就没影响。如果给这个程序打包,则把makefile的 PREFIX/usr/bin 改为 /opt/myapp,不用动代码,就能完成打包

总结:判别标准是 /usr/local放那些能被原样打包放到/usr的软件,/opt放那些不能的

/opt整个软件的所有文件 二进制 库 配置都塞在/opt/软件名下面
​/usr/local 软件文件按类型分散到bin lib等子目录里
/opt是一个软件一个坑
/usr/local是所有软件混着放