我有一些即将发布的软件(研究生项目),我想知道在 UNIX 机器上安装软件的最佳实践是什么。
我最初是通过/usr/local/bin
我的项目链接的,但最近我考虑通过附加到.bashrc
特定用户的文件来安装它,特殊情况是如果用户是 root,它会附加到全局路径而不是特定于用户的路径。
这为我带来了一些简单的功能添加,因为我可以通过将单个变量添加到.bashrc
安装用户的文件夹中来快速链接到其他资源。
然而,我开始怀疑这个决定。
附加到路径还是不附加到路径,这就是问题。无论是 中的符号链接更高贵/usr/local/bin
,还是拿起武器并附加到不断增长的路径变量中。
更多信息:
它是一个带有 TCL 前端的 C++ 后端。 TCL 前端还启动了一个 java 存档(在我职业生涯的早期创建)。除此之外,还有 TCL 前端的扩展,可以使用自己的 TCL 解释器来运行另一个程序。我需要使用解释器向程序提供 bwidget tcl 包。因此,提供 bwidget 包并启动 jar 文件需要有一个链接到的位置。此外,我需要让用户感到轻松,因为他们主要是化学用户,不太熟悉 UNIX,可能使用 mac。
该平台需要在 Mac 或 Unix 上运行。
理想情况下,我希望用户能够使用单个命令启动 TCL 脚本,而不是让他们记住位置。
这是一个以前封闭源代码的项目,现在是开源的,我们希望用户能够轻松编译和安装该程序
我正在使用 make 创建安装选项。
答案1
不要符号链接到 /usr/local/bin或者搞乱路径。尤其不是后者。只需编写一个安装程序,将东西安装到指定位置即可。检查一个类似的、最好是众所周知的程序,了解它是如何工作的。如果您可以提供有关您的计划的更多详细信息,我们可以根据您的需要提供一些具体的建议。
而且,没有人从头开始编写安装程序。人们通常使用 Make、Cmake、scons 等程序。有些语言有专门的安装软件,例如 python 的 distutils,如果你想使用它的话。
答案2
我见过一些软件包(通常是您在发行版的软件包存储库中找不到的东西)将自身安装到 /opt 并将 .desktop 文件添加到 ~/Desktop 和 ~/.local/share/applications 来启动它们。
答案3
两个替代建议:
- 在类似 Red Hat 的系统上,您可以将文件拖放到
/etc/profile.d/myprogram.sh
例如包含PATH=$PATH:/opt/myprogram
- 在许多系统上,您可以将
PATH=...
行附加到/etc/environment
但我认为安装你的程序/opt/myprogram
并放置一个脚本来启动它/usr/local/bin
可能是较小的罪恶。
答案4
如果您想为单个用户安装该程序,可以将二进制可执行文件放在 ~/bin 中。大多数 UNIX 系统上的 .bashrc 设置为在用户路径中包含 ~/bin(如果存在)。