在 Cygwin 上找不到 sudo 命令
Posted
技术标签:
【中文标题】在 Cygwin 上找不到 sudo 命令【英文标题】:sudo command not found on Cygwin 【发布时间】:2014-04-26 23:38:35 【问题描述】:我目前正在尝试在 Windows 操作系统上安装和更新一些软件包。唯一的问题是我使用 Cygwin 是为了通过终端输入命令(据我所知,我可以在 Cygwin 上输入 Linux 类型的命令,例如 cd、ls 等 - 我可能错了)。但是,当我尝试安装如下软件包时:
sudo apt-get install paparazzi-dev
我收到回复:
-sh: sudo: command not found.
有人知道如何解决这个问题吗?
【问题讨论】:
Google 的第一个结果,来自 SO:***.com/questions/4090301/… 【参考方案1】:我想我在做了一些研究后尝试了以下步骤并成功(在 Windows 上)
1.使用powershell 3安装scoop (iex (new-object net.webclient).downloadstring('https://get.scoop.sh')) 2. do scoop install --global sudo 3. 确保在环境路径变量中添加路径(C:\Users\\scoop\shims & C:\ProgramData\scoop\shims)。
【讨论】:
【参考方案2】:Cygwin 允许您运行某些命令,例如 cd、ls 或 mv;但它不允许您运行其他命令,例如 sudo 或 apt-get。
如果您尝试将软件包添加到 Cygwin 安装中,请重新运行 Cygwin 安装程序。它可能仍在您的“下载”文件夹中。再次完成所有步骤。 Cygwin 安装程序将自动下载并安装您想要的软件包,并将其添加到您的 Cygwin 安装中。 (我认为它可能还会将所有其他已安装的 Cygwin 软件包升级到最新的可用版本。)
如果您想要的包不在Cygwin package list 上,但在Cygwin Ports package list 上,请关注Cygwin Ports installation instructions。请注意,Cygwin Ports 与 Cygwin 是分开的。请不要将有关 Cygwin Ports 软件包的消息发送到 cygwin.com 邮件列表。
如果你有多年的 Linux 经验,你也许可以在 Cygwin 中编译你想要的软件。这可能具有挑战性。
也许比“自己编译”更简单的选项是:您可以安装 VirtualBox,然后在虚拟机中安装您最喜欢的 Linux 发行版,然后在 Linux 中安装您想要的软件包。 (我喜欢 Ubuntu Linux,它的“Universe”存储库中有 27,000 多个软件包。)现在您可以同时运行 Linux 和 Windows。
【讨论】:
【参考方案3】:从@Aimal 的答案中得出一个解释性答案,因为它对我有用。
通过单击处于正常模式的Cygwin
图标运行Cygwin
可能无法获得permissions to create folders and files
。
Cygwin
仅在cygwin icon
上的right click -> "run as adminitrator"
获得正确授权,因为它获得permissions to create folders and files
。
【讨论】:
【参考方案4】:在我的情况下,我想安装 curl,但在运行命令“make install”时无法创建目录 /usr/local/curl/lib,因为权限被拒绝。所以我需要更改 /usr/local 权限。当我运行 sudo chmod 755 /usr/local 时,找不到 sudo 命令。
搜索了一些解决方案后,发现在 Cygwin 中默认没有安装 sudo。但是我尝试了Aimal给出的解决方案,即以管理员身份运行Cygwin。我终于可以更改文件夹权限了。谢谢艾马尔。
【讨论】:
你只是在确认Aimals的答案,这不是答案,而是评论。【参考方案5】:以管理员身份运行 cygwin.. 然后你就不需要任何 sudo 命令了。
【讨论】:
它也不能解决需要成为特定用户才能进行 Windows 身份验证的问题。 这对我有用。 Cygwin 只有在 cygwin 图标上右键单击 ->“以管理员身份运行”时才能获得正确的授权,因为我们获得了创建文件夹、用户和文件的权限。 它不起作用。同样的错误,说你没有写入目录的权限。【参考方案6】:确切地说,Windows 没有 sudo、apt 或几乎任何 Linux 命令。 Cygwin 可能允许一些,但由于程序未安装在 Windows 上,因为软件包 apt-get 将不起作用。 Windows 程序的安装程序为 .exe 或 .msi。
Windows 版本的 sudo 称为 runas,以防您需要以其他用户身份运行某些东西。或者,您可以以管理员身份运行 Cygwin。
如果你必须使用你需要 Linux 的软件包。您可以直接安装它来替换 Windows、双启动或使用 VMware VirtualBox 等虚拟化软件。
【讨论】:
您认为可以通过 Cygwin 使用 runas 安装软件包,然后将它们复制到 Linux 机器中吗?问题是我的 linux 机器没有互联网连接,而且我也没有该机器的管理权限。 @Mahmoud 不,因为 Windows 没有安装软件包的命令。此外,在计算机 A 上安装软件包并将生成的文件复制到计算机 B 上通常会导致配置错误。 谢谢。我就是这么想的。【参考方案7】:Cygwin 不是完整的 Linux 发行版。因此,您没有 sudo 或 Debian/Ubuntu 软件包管理器 apt-get。 Cygwin 存储库中提供了许多软件包:http://cygwin.com/packages/ 您必须在设置期间选择这些包。
【讨论】:
想告诉我们可能是哪个包裹? @Ben 这完全取决于您要安装的软件包。没有 sudo 的软件包。你不用 sudo 或 apt-get 在 Cygwin 上安装软件。您可以使用 trueblade.com/knowledge/… 搜索特定文件的包 他的意思是sudo
是Linux 独有的文件权限实用程序,Windows 也有它自己的等价物。因此,将其提供给 Cygwin 将毫无意义。以上是关于在 Cygwin 上找不到 sudo 命令的主要内容,如果未能解决你的问题,请参考以下文章
如何修复 apt-get: 在 AWS EC2 上找不到命令? [关闭]