安装脚本需要以某个(普通)用户身份运行,但需要创建一个系统目录

安装脚本需要以某个(普通)用户身份运行,但需要创建一个系统目录

我是Linux新手,让我解释一下这个问题。我正在尝试comsol使用某种网络许可证进行安装。

如果我使用sudo ./setup服务器目录无法识别用户名“root”。服务器识别出我的用户名,即 zahir。如果我只是写./setup安装通过了许可证检查阶段,但无法继续,因为它无法在/usr/local.

zahir我应该使用什么命令才能以 root 权限运行安装?

答案1

尝试寻找setup脚本的任何帮助。也许它带有一个README文件或者它接受一个-h开关(通过运行检查./setup -h)。一个写得相当好的脚本应该允许您更改安装目录。你可以做类似的事情

./setup --prefix=/home/zahir/

或类似的内容(取决于您从脚本的帮助中找到的内容)。

这将安装comsol在您的主目录中,然后您可以/usr/local使用sudo.

更新

您报告上述方法有效,但该comsol命令无法识别。这仅意味着您需要将二进制文件的位置添加comsolPATH变量中。

假设comsol已安装在 中/usr/local/comsol35,您只需添加/usr/local/comsol35/binPATH变量中即可。 (您系统上的实际路径可能会有所不同)。

添加路径到您的PATH多变的:

只需运行以下命令:

export PATH=$PATH:/usr/local/comsol35/bin

这只会改变PATH您当前会话中的。要使更改永久生效,您可以执行以下操作:

echo 'export PATH=$PATH:/usr/local/comsol35/bin' >> ~/.bashrc

对于上述命令,使用单引号而不是双引号非常重要,这样就可以$PATH按字面意思添加到您的命令中.bashrc,而不是进行插值。您还应该确保使用>>代替,>以免破坏您的.bashrc.

运行该echo命令后,该comsol命令应该可以从您打开的任何新终端使用。如果您想让更改在用于发出命令的终端中生效echo,则必须运行

. ~/.bashrc

(是的,该命令只是一个句点)

答案2

有一些命令无法通过sudo例如显然您的sudo ./setup.我通常会按如下方式成为 shell 的 root:

选项1- 您的系统可能不支持

$ sudo -i

选项2- 应得到广泛支持

$ sudo su -

一旦您运行了这两个命令之一,您就有效地进入了该 shell,并且可以运行您的./setup命令。确保将目录 ( cd) 更改回./setup程序运行的位置。

以 root 和 zahir 身份运行?

如果您需要自己运行安装,zahir则可以创建安装所需的目录,以便zahir可以提前安装到其中,然后运行./setup​​as zahir

$ sudo mkdir -p /usr/local
$ sudo chown -R zahir /usr/local

答案3

我猜测setup脚本正在从您的环境中读取用户名。它可能会检查$USER或环境变量之一$USERNAME(这些是默认变量,您可以通过echo $USER在终端中运行来检查它们的值)。它可能包含一行像

current_user=$USERNAME

尝试在文件中搜索$USER

grep USER setup

然后您应该能够将其更改为zahir,例如:

current_user=zahir

如果您可以将脚本发布到某个地方,我很乐意查看并给您更具体的答案。

相关内容