在 Linux 系统中,安装自己的软件的最佳位置是哪里,该软件可以在 Docker 容器内部和外部正常运行?
例如,如果想要安装一个名为的软件:
name="com.hovio.birds.happybirds"
最好将其安装在:
/hovio/birds/happybirds
或者
/opt/hovio/birds/happybirds
我认为在 Docker 之外,/opt
在没有 root 访问权限的 Linux 系统中效果会更好,就像这里解释的那样。
有任何想法吗?
答案1
一般来说,在 Linux/Unix 中,人们不会在文件系统的根级别随意放置目录。关于根文件系统级别通常被接受的部分的良好概述 ( /
)可以在这里找到大致如下,变化不大:
/bin Essential command binaries
/boot Static files of the boot loader
/dev Device files
/etc Host-specific system configuration
/lib Essential shared libraries and kernel modules
/media Mount point for removeable media
/mnt Mount point for mounting a filesystem temporarily
/opt Add-on application software packages
/sbin Essential system binaries
/srv Data for services provided by this system
/tmp Temporary files
/usr Secondary hierarchy
/var Variable data
虽然没有明确说明一个结构不能将自己的目录放在该级别,默示结构基本上表明,“嘿,除了适合已建立的父目录结构的内容外,不要在这里放置任何东西。”
因此,了解了这一点,看到了你问题中关于结构的想法:
/hovio/birds/happybirds
好吧,这让我这个系统管理员感到恶心。你不这样做的原因是根文件系统级别 ( /
) 应该只用于目录父层次结构。如果你对安装的每个软件都这样做,很快就会变得太混乱了。即使你“保证小心谨慎”,随着时间的推移,这样做也会破坏某些东西。
现在将内容放入/opt
目录中已得到充分尊重和理解。因此这样做没问题:
/opt/hovio/birds/happybirds
而且它不一定与根系统访问有关。将不适合其他地方的系统软件放入 中只是一种公认的惯例/opt
。正如这里解释清楚:
此目录保留用于所有不属于默认安装的软件和附加软件包。例如,StarOffice、Kylix、Netscape Communicator 和 WordPerfect 软件包通常都在此处。为了符合 FSSTND,所有第三方应用程序都应安装在此目录中。
如果出于任何原因,其他人(不是您)稍后需要评估系统,那么这也将变得更加容易。他们不必费尽心思去思考/hovio
目录的作用,只要看到其中的内容,他们就会知道/opt
这是有用/重要的。