为什么 n 会抛出错误?错误:需要 sudo (或更改所有权,或定义 N_PREFIX)

2024-03-31

我想安装最新的 Node.js 版本

n latest

  installing : node-v14.2.0
       mkdir : /usr/local/n/versions/node/14.2.0
mkdir: cannot create directory ‘/usr/local/n’: Permission denied

  Error: sudo required (or change ownership, or define N_PREFIX)

所有权出了问题。我尝试解决这个问题

sudo chown -R $(whoami) /usr/local/n

再次出现同样的错误。

n latest
cp: cannot create directory '/usr/local/lib/node_modules': Permission denied
cp: cannot create regular file '/usr/local/bin/node': Permission denied
cp: cannot create symbolic link '/usr/local/bin/npm': Permission denied
cp: cannot create symbolic link '/usr/local/bin/npx': Permission denied

n 中的权限

/usr/local/n$ ll
total 12
drwxrwxr-x  3 miki root 4096 мај  8 13:29 ./
drwxr-xr-x 11 root root 4096 мај  8 13:29 ../
drwxrwxr-x  3 miki miki 4096 мај  8 13:29 versions/

SOLVED

sudo chown -R $(whoami) /usr/local/bin /usr/local/lib /usr/local/include /usr/local/share

Context

n命令下载并安装到/usr/local默认情况下,创建/usr/local/n默认情况下具有这些权限的文件夹:

drwxr-xr-x root  wheel  .
drwxr-xr-x root  wheel  ..
drwxr-xr-x root  wheel  versions

可能的解决方案

A. 将您自己添加到组中并授予写入权限(更安全):

  1. 将您自己添加到wheel group.

    1.1 苹果系统:

     sudo dseditgroup -o edit -a $(whoami) -t user wheel
    

    1.2 GNU/Linux:

     sudo usermod -a -G wheel $(whoami)
    
  2. Allow wheel成员对该文件夹的写入权限:

     sudo chmod -R g+w /usr/local/n/
    

B. 直接将所有权更改给您的用户(更快):

你需要改变哪里n stores node版本所有权:

sudo mkdir -p /usr/local/n && sudo chown -R $(whoami) /usr/local/n/

C. 更改所在文件夹n保存节点二进制文件等。

默认情况下,n 命令下载并安装到 /usr/local,但您可以通过定义 N_PREFIX 来覆盖此位置。

Source: https://github.com/tj/n#可选环境变量 https://github.com/tj/n#optional-environment-variables

  1. 创建一个文件夹,即:$HOME/.n

     mkdir $HOME/.n
    
  2. 定义环境变量N_PREFIX将这一行添加到您的 shell 初始化文件中:

    2.1.巴什(~/.bashrc) or zsh (~/.zshrc):

     export N_PREFIX=$HOME/.n
    

    2.2.鱼(~/.config/fish/config.fish):

     set -x N_PREFIX $HOME/.n
    
  3. 将新的二进制路径添加到您的环境中$PATH:

    3.1. bash/zsh:

     export PATH=$N_PREFIX/bin:$PATH
    

    3.2.鱼:

     set -x PATH $N_PREFIX/bin:$PATH
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 n 会抛出错误?错误:需要 sudo (或更改所有权,或定义 N_PREFIX) 的相关文章

随机推荐

  • 如何从远程页面获取iframe内容?

    我认为PHP没有用 因为iframe是在php执行后插入的 还是我错了 所以 我知道的唯一解决方案是使用 Javascript jQuery 例如 如果 JS 与 iframe 位于同一页面上 则这将起作用
  • 流式传输 html5 canvas 内容的有效方法?

    我正在尝试流式传输 a 的内容html5 canvas实时使用websockets and nodejs html5画布的内容只是一个视频 到目前为止我所做的是 我将画布转换为blob然后得到blob URL并使用 websockets 将
  • 使用 Zend Gdata 在 Google 电子表格中插入行时出错

    我正在尝试使用 Zend Gdata 1 11 库在 Google 电子表格中插入行的最简单的可能方案 电子表格的单元格 A1 中有单词 Kolona 这是整个 php 文件
  • 从一开始就构建 IDocument 最有效的方法是什么

    我想使用以下类作为具体示例逐步构建一个新的 IDocument 对象 您可以从您喜欢的任何对象开始 并使用您喜欢的任何中间对象 只要生成的对象是一个代表完整类的 IDocument 步骤 1 添加一个名为 MyNamespace 的新命名空
  • iOS 照片库读取权限

    在用户允许我们访问他的相机胶卷后 我们希望获取数据并将其从应用程序内部上传到我们的服务 有没有办法从文件中访问视频数据 打开视频文件的唯一方法是创建 AVAsset 但这对我来说还不够 我知道关闭 func requestExportSes
  • Visual Studio 2015 JSX/ES2015 语法突出显示

    如何使用 ES2015 代码在 Visual Studio 2015 for JSX 中获得正确的语法突出显示 It works fine if I remove the import and export keywords 我刚刚更新到
  • 强制关闭应用程序

    我是 Android 新手 遇到了一个问题 我想知道如何以编程方式强制关闭应用程序并再次重新启动它 我正在尝试这个 因为我真的很坚持OutOfMemmoryError我想释放内存并再次重新启动应用程序 如果我错了 请指导我 要强制关闭应用程
  • php打开修改并保存html文件

    在php中我想打开一个html文件 删除div 类区域 的内容并保存它 dom new DOMDocument dom gt loadHTMLFile temp page y xhtml xpath new DOMXPath dom pDi
  • Nodejs 与 C++ 程序通信?

    假设我有一个 C 程序与 Linux 服务器上的 Node js Web 应用程序在同一台服务器上运行 C 程序维护一个队列 而我想要使用 Node js 做的是将一些数据推送到队列中 最好的方法是什么 哪个更好 套接字还是IPC 如果你使
  • 是否可以在重新加载后立即执行函数...?

    我有一组代码 setTimeout function window location reload true if scope attribute parentAttribute id angular element document ge
  • BitmapFactory.decodeFile() 在某些设备中返回 null

    我正在使用以下代码here http voidcanvas com whatsapp like image compression in android 我想压缩图像 BitmapFactory Options options new Bi
  • Cassandra 中的二级索引和倒排索引有什么区别?

    当我读到这两篇文章时 我认为他们都在解释相同的方法 我用谷歌搜索但什么也没找到 执行上有区别吗 Cassandra本身有二级索引 但倒排索引必须自己实现 顺便问一下 哪个搜索速度更快 主要区别在于 Cassandra 中的二级索引的分布方式
  • 如何删除树枝中的空格

    我需要的 我需要从 html 中删除空格 我需要喜欢 data 额外的空格被删除 删除 html 元素之间的额外空格 sypmfony 还支持什么 code spaceless code endspaceless Debug http tw
  • 删除 VSMacros80 目录

    有什么方法可以阻止 Visual Studio 在我的默认项目目录中创建 VSMacros80 文件夹吗 我自己刚刚发现 如果你在后面添加一个反斜杠项目文件夹设置例如改变它从C dev to C dev the VSMacros80将不再创
  • 使用 PlayFramework 在 YAML 文件中映射 BigInteger

    给出以下模型示例 Entity Table name tierenforcers public class TierEnforcer extends Model public BigInteger maxStorage expressed
  • 删除 matplotlib 图例中的重复标签[重复]

    这个问题在这里已经有答案了 如果您使用 matplotlib 绘制多条线或点 有时您可能会发现出现重复标签的情况 例如 for i in range 5 Y1 boatarrays i Y2 cararrays i ax plot X Y1
  • 如何从可反应的单元格渲染器按钮中使用observeEvent触发模态框?

    继从this https stackoverflow com questions 68573006 creating shiny outputs from custom html inputs 68573232 68573232帖子 我想知
  • Java泛型接口实现

    我有一个界面如下 public interface MethodExecutor
  • 如何从 RDL 文件中的语义查询中获取物理 SQL 查询?

    如何从 RDL 文件中的语义查询中获取物理 SQL 查询 从 RDL 中提取语义查询时 我们需要执行以下一些步骤 从 RDL 文件中提取语义查询 根据语义模型 XSD 进行验证 将语义查询解析并转换为我们能够生成物理 SQL 的结构 执行转
  • 为什么 n 会抛出错误?错误:需要 sudo (或更改所有权,或定义 N_PREFIX)

    我想安装最新的 Node js 版本 n latest installing node v14 2 0 mkdir usr local n versions node 14 2 0 mkdir cannot create directory