新应用程序的 Linux 目录结构

新应用程序的 Linux 目录结构

我正在编写一个新的 Python 应用程序,打算分发给几位同事。与我通常的无忧无虑的态度不同,我只会将所有内容独立并运行在主目录中的文件夹中,这次我想拓宽我的视野,并真正尝试按照预期(至少在一定程度上)利用 Linux 目录结构。您能否阅读下面的分析,如果其中不正确,请发表评论或提出建议。

我们将该程序称为“narf”

/usr/narf - Install location for the actual python file(s).    
/usr/bin/narf - Either a softlink to the main python file above or use this location instead.    
/etc/narf - Any configuration files for app narf.    
/var/log/narf - Any log files for app narf.    
/usr/lib - Any required libraries for app narf.    
/run/narf - Any persistent (across reboot), but still temp files for app narf.    
/tmp/narf - Very temp files for app narf that go away with reboot

我认为我应该坚持使用 /usr/X(例如 /usr/bin 而不是仅仅 /bin),因为我的应用程序不是系统关键的,而只是一个插件。

我目前使用 16 LTS,然而这部分是为了尝试使我的应用程序标准化以适应任何流行的 Linux 发行版。

谢谢您的帮助。

答案1

您可能遇到的唯一问题是/run目录。它还用作临时存储,建议仅用于特权进程。因此,存储在那里的文件不是持久的,正如您希望的那样,并且会在重新启动后消失。

根据这些持久文件的用途,~/.local/share/narf如果临时数据是用户特定的,你可以将其存储在用户目录中,或者使用/var/cache/narf(或/var/tmp,因为根据维基百科的崩溃) 用于持久数据。

答案2

/usr/narf - Install location for the actual python file(s).

不要。软件包不会为自己创建顶级目录/usr。如果这些是供应用程序使用的 Python 文件,请将它们放在某个位置/usr/share/narf,这是用于软件包 narf 使用的与体系结构无关的文件。例如,terminator 和/usr/share/terminator/terminatorlib/translation.py

如果您没有创建包,那么所有内容都会/usr移动到/usr/local(所以/usr/local/bin/narf,,/usr/local/share/narf等等)。

相关内容