Cygwin中出现sudo命令未找到错误。

30

我目前正尝试在Windows操作系统上安装和更新一些软件包。唯一的问题是我正在使用Cygwin通过终端输入命令(据我所知,在Cygwin上可以输入类似于cd、ls等Linux类型的命令,但可能我是错的)。然而,当我尝试安装一个软件包时:

sudo apt-get install paparazzi-dev 

我收到回复:

-sh: sudo: command not found.

有人知道我该如何解决这个问题吗?


1
来自Google的第一个结果,来自SO:https://dev59.com/questions/TG855IYBdhLWcg3w5IrZ - Losiowaty
7个回答

38

以管理员身份运行Cygwin,这样您就不需要任何sudo命令。


3
它也无法解决为了 Windows 认证而需要成为特定用户的问题。 - stu
2
这对我有用。Cygwin只有在右键单击->以管理员身份运行Cygwin图标时才能获得正确的授权,因为这样我们才能获得创建文件夹、用户和文件的权限。 - veer7
它不工作。相同的错误,显示您没有写入目录的权限。 - felwithe

15

Cygwin不是完整的Linux发行版。因此,您没有sudo或Debian/Ubuntu软件包管理器apt-get。您可以从Cygwin存储库中选择一些软件包:http://cygwin.com/packages/ 您需要在安装过程中选择这些软件包。


13
可以告诉我们是哪个包裹吗? - Ben
3
这完全取决于您要安装的软件包。没有一个sudo软件包。您不能使用sudo或apt-get在Cygwin上安装软件。您可以使用http://www.trueblade.com/knowledge/finding-which-cygwin-package-contains-a-particular-file搜索特定文件的软件包。 - skiphoppy
3
他的意思是sudo是Linux独有的文件权限工具,而Windows也有自己的相应工具。因此,将其提供给Cygwin是没有意义的。 - Hashim Aziz

1
从@Aimal的回答中得出一个解释性答案,因为它对我有用。
当以正常模式点击Cygwin图标运行时,Cygwin可能无法获得创建文件夹和文件的权限。
只有在cygwin图标上右键单击“以管理员身份运行”,Cygwin才能获得正确的授权,因此它可以获得创建文件夹和文件的权限。

1
Cygwin可以运行一些命令,比如cd、ls或mv;但它不能运行其他命令,如sudo或apt-get。
如果您想要添加一个包到您的Cygwin安装中,请重新运行Cygwin Setup。它可能仍然在您的“下载”文件夹中。再次完成所有步骤。Cygwin安装程序将自动下载和安装您想要的包,并将其添加到您的Cygwin安装中。(我认为它也会将所有已安装的Cygwin软件包升级到最新可用版本。)
如果您想要的包不在Cygwin包列表中,但在Cygwin Ports包列表中,则请按照Cygwin Ports安装说明进行操作。请注意,Cygwin Ports与Cygwin是分开的。请不要将有关Cygwin Ports软件包的消息发送到cygwin.com邮件列表。
如果您有多年的Linux经验,您可以尝试在Cygwin内编译所需软件。这可能会很具有挑战性。
也许比“自己编译”更简单的选项是:您可以安装VirtualBox,然后在虚拟机内安装您喜欢的Linux发行版,然后在Linux内安装所需软件包。(我喜欢Ubuntu Linux,它在其“宇宙”存储库中拥有超过27,000个软件包。)现在您可以同时运行Linux和Windows。

1
Windows没有sudo、apt或几乎任何Linux命令。Cygwin可以允许一些命令,但由于在Windows上程序不是作为包安装的,因此apt-get将无法工作。Windows程序有.exe或.msi安装程序。Windows版本的sudo称为runas,以防需要以其他用户身份运行某些内容。或者,您可以以管理员身份运行Cygwin。如果必须使用软件包,则需要使用Linux。您可以直接安装它以替换Windows,双启动或使用虚拟化软件如VMware VirtualBox。

你认为通过Cygwin使用runas安装软件包并将它们复制到Linux机器上是可能的吗?问题在于我的Linux机器没有互联网连接,而且我也没有该机器的管理员权限。 - Adam
@Mahmoud 不行,因为Windows没有安装软件包的命令。此外,在计算机A上安装软件包并将结果文件复制到计算机B上通常会导致配置错误。 - PurkkaKoodari
谢谢。这正是我所想的。 - Adam

0

我在做了一些研究后尝试了以下步骤并成功了(在Windows上)

1.使用PowerShell 3安装scoop(iex(new-object net.webclient).downloadstring('https://get.scoop.sh')) 2.执行scoop install --global sudo 3.确保将路径(C:\ Users \\ scoop \ shims和C:\ ProgramData \ scoop \ shims)添加到环境路径变量中。


-3
在我的情况下,我想安装curl,但是在运行“make install”命令时无法创建目录/usr/local/curl/lib,因为权限被拒绝。所以我需要更改/usr/local的权限。当我运行sudo chmod 755 /usr/local时,提示找不到sudo命令。
经过一番搜索,发现Cygwin默认未安装sudo。但我尝试了Aimal提供的解决方案,即以管理员身份运行Cygwin。最终我成功更改了文件夹权限。感谢Aimal。

2
你只是在确认Aimal的答案,这不是一个答案,而是一条评论。 - Ian2thedv

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接