为什么这个特定命令中需要“sudo”?

为什么这个特定命令中需要“sudo”?
 sudo yum install automake libtool flex bison pkgconfig gcc-c++ 
     boost-devel libevent-devel zlib-devel python-devel ruby-devel

在 CentOS 5 上安装 Thrift 所需的软件包。

是否有可能运行没有 sudo 的版本?

编辑:我没有 root 权限,也不在 sudoers 文件中。我想知道我是否可以做一些事情,比如yum install automake .......不等待/询问是否添加到 sudoers 文件中

答案1

是的,这是可能的,但没有 root 访问权限则不行。如果您拥有足够的权限来访问完整命令所需的内容,则不需要 sudo 命令。

例如,如果您以 root 身份登录。或者,首先通过发出以下命令成为“超级用户”:

su 

这实际上需要 root 密码。两者都不推荐。最好使用具有最少必要权限的系统,并在需要时使用 sudo,就像完整命令已经做的那样。

安装任何主要的东西(开发工具)几乎总是需要访问主文件夹之外的文件夹 ~/

*这适用于所有 Linux 发行版,而不仅仅是您正在使用的 CentOS。

答案2

我自己从未尝试过做这样的事情,但据我所知,rpm 包(至少是正确打包的包)确实支持重定位。但为了在没有 root 权限的情况下安装包,需要执行一些步骤。

以下内容摘自 linuxquestions.org:

设置私有 RPM 数据库

mkdir -p /home/username/local/lib/rpm
rpm --initdb --root /home/username/local --dbpath /home/username/local/lib/rpm

如果您不喜欢 ~/local/lib/rpm,您可以选择不同的子目录结构。

检查包依赖关系

rpm -ivh package.rpm

如果发现依赖项,则在安装程序包 RPM 之前安装依赖的 RPM。

最后安装包

rpm --root /home/username/local --dbpath /home/username/local/lib/rpm \
--relocate /usr=/home/username/local --nodeps -ivh package.rpm

要使用该软件包,您必须使用 LD_LIBRARY_PATH 来让加载器知道所需的共享库在哪里,并修改您的 PATH 以包含任何所需的脚本和可执行文件。


答案3

sudo如果当前用户被允许使用,则授予命令 root 权限sudo

如果您已经拥有 root 权限,则除了记录之外,没有必要将其放在命令前面。sudo如果您尚未sudo安装并且已经以 root 身份运行,只需删除它:

yum install automake libtool flex bison pkgconfig gcc-c++ 
     boost-devel libevent-devel zlib-devel python-devel ruby-devel

如果您还不是root用户并且该root帐户已设置密码,请运行su并使用您的root密码登录。

答案4

是的。假设您从某个网站上下载了此安装行,则通常会包含 sudo 行,以防用户自己没有这样做。但是,这通常是一个好主意,因为给程序你信任根访问权限允许它在全球范围内做出必要的更改。

相关内容