我正在编写一个新的 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
等等)。