如何确定是否将游戏安装到$ prefix / bin或$ prefix / games?

时间:2017-02-11 19:30:41

标签: shell unix portability

我为类UNIX操作系统编写了a game。我目前正在为这个游戏编写安装脚本。

Traditionally,游戏二进制文件安装到$prefix/games,但是像FreeBSD这样的操作系统已经开始摆脱games目录。如果用户没有明确指定游戏二进制文件,那么确定是否将游戏二进制文件安装到$prefix/games$prefix/bin有什么好方法?

我的安装脚本是用ksh93,bash和POSIX shell提供的功能的通用子集编写的。他们应该只调用广泛使用的公用事业。

澄清:此问题的主题不是确定$prefix。如果用户没有明确指定子目录,则确定使用$prefix/games$prefix/bin中的哪一个。

1 个答案:

答案 0 :(得分:1)

在FreeBSD中,第三方软件旨在安装在/usr/local中。 <{1}}目录(如果存在)不应该被触及。

在OS X中,软件应用程序被捆绑并安装到/usr/games文件夹中,但是文本基础游戏(我假设这是)可能在那里没有意义。如果您使用MacPorts安装软件,则往往会进入/Applications。如果您使用Brew安装软件,则往往会转到/opt/local,以避免与MacPorts冲突。但是&#34;规则&#34; /usr/local下的层次结构与/*/local/下的层次结构不同。

在大多数Linux发行版中,软件可以安装在任何地方,只要它不与以前安装的软件冲突即可。有指导方针,但据我所知,对它们的依从性较低。

所有这些之间的重大共性是涉及包装系统。您通常可以做任何您喜欢的事情,只要您跟踪您在装箱单中所做的事情。 (请参阅macports中的/Applications,FreeBSD中的port contents {portname},基于APT的系统中的pkg info -l {portname},基于RPM的系统中的dpkg-query -L {pkgname}等。

我的建议是让您的安装尽可能简单但尽可能灵活,让本地打包系统强制执行自己的规则。您的软件不应该因为某些操作系统决定游戏应该位于不同的地方而不得不改变。

将前缀设置为类似rpm -ql {pkgname}的内容,以便封闭脚本或Makefile可以轻松覆盖它。查看PREFIX?=/usr/local命令的不同变体,以确定是否有一组基本的选项在您打算支持的平台中是通用的,如果没有,只需复制文件{ {1}},或将您自己的install脚本作为软件的一部分。