node.js - npm sudo ছাড়া ত্রুটি ছোঁড়ে




unix permissions (20)

আমি nodejs.org প্যাকেজের মাধ্যমে কেবল নোড এবং এনপিপি ইনস্টল করেছি এবং যখনই আমি এনপিএম দিয়ে কিছু অনুসন্ধান বা ইনস্টল করার চেষ্টা করি তখন এটি নিম্নোক্ত ত্রুটিটি ছুঁড়ে ফেলে, যতক্ষণ না আমি কমান্ডটি শুড করি। আমি একটি অনুমতি ইস্যু একটি অনুভূতি আছে? আমি ইতিমধ্যে প্রশাসক।

npm ERR! Error: EACCES, open '/Users/chietala/.npm/-/all/.cache.json'
npm ERR!  { [Error: EACCES, open '/Users/chietala/.npm/-/all/.cache.json']
npm ERR!   errno: 3,
npm ERR!   code: 'EACCES',
npm ERR!   path: '/Users/chietala/.npm/-/all/.cache.json' }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

npm ERR! System Darwin 12.2.0
npm ERR! command "node" "/usr/local/bin/npm" "search" "bower"
npm ERR! cwd /Users/chietala
npm ERR! node -v v0.10.4
npm ERR! npm -v 1.2.18
npm ERR! path /Users/chietala/.npm/-/all/.cache.json
npm ERR! code EACCES
npm ERR! errno 3
npm ERR! stack Error: EACCES, open '/Users/chietala/.npm/-/all/.cache.json'
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /Users/chietala/npm-debug.log
npm ERR! not ok code 0

"সিস্টেম-গ্লোবাল" ফোল্ডারে মালিক পরিবর্তন করা একটি হ্যাক। একটি নতুন ইনস্টলেশনে, আমি "ব্যবহারকারী-বিশ্বব্যাপী" প্রোগ্রামগুলির জন্য একটি পূর্বনির্ধারিত অবস্থান ব্যবহার করতে NPM কনফিগার করব:

npm config set prefix ~/npm

তারপরে নিশ্চিত করুন যে আপনি আপনার পঠনে সেই ফোল্ডার যুক্ত করেছেন:

export PATH="$PATH:$HOME/npm/bin"

দেখুন @ErikAndreas answer এনপিএম মডিউলগুলি বিশ্বব্যাপী @ErikAndreas ছাড়াই ইনস্টল করবে না এবং @sindresorhus দ্বারা আরও github.com/sindresorhus/guides/blob/master/… $MANPATH সেট করবে।


@ ইয়েভেস এম এর উত্তর আমার সমাধানটির মতোই ছিল। এখানে আমি ব্যবহৃত কমান্ড, যা তার থেকে সামান্য ভিন্ন ছিল।

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash

তারপরে সর্বশেষ সংস্করণের জন্য অনুসন্ধান করুন:

nvm ls-remote

তারপরে নতুন সংস্করণটি ইনস্টল করুন:

nvm install YOUR_VERSION_HERE

উদাহরণ

nvm install v5.8.0

অন্যান্য উত্তর একটি নির্দিষ্ট ব্যবহারকারীর সিস্টেম ডিরেক্টরি মালিকানা বা অনুমতি পরিবর্তন করার পরামর্শ দেওয়া হয়। আমি অত্যন্ত তাড়াহুড়া করা, এই খুব বেদনাদায়ক হতে পারে এবং পুরো সিস্টেম আপ জগাখিচুড়ি হতে পারে!

এখানে আরও সাধারণ এবং নিরাপদ পদ্ধতি যা মাল্টি-ব্যবহারকারীকে সমর্থন করে।

নোড ব্যবহারকারীদের জন্য একটি নতুন গ্রুপ তৈরি করুন এবং এই গোষ্ঠীতে প্রয়োজনীয় ব্যবহারকারী যুক্ত করুন। তারপরে এই গোষ্ঠীতে নোড-নির্ভর ফাইল / ডিরেক্টরিগুলির মালিকানা সেট করুন।

# Create new group
sudo groupadd nodegrp 

# Add user to group (logname is a variable and gets replaced by the currently logged in user)
sudo usermod -a -G nodegrp `logname`

# Instant access to group without re-login
newgrp nodegrp

# Check group - nodegrp should be listed as well now
groups

# Change group of node_modules, node, npm to new group 
sudo chgrp -R nodegrp /usr/lib/node_modules/
sudo chgrp nodegrp /usr/bin/node
sudo chgrp nodegrp /usr/bin/npm

# (You may want to change a couple of more files (like grunt etc) in your /usr/bin/ directory.)

এখন আপনি সহজেই ব্যবহারকারী হিসাবে আপনার মডিউল ইনস্টল করতে পারেন

npm install -g generator-angular

কিছু মডিউল (তিমি, ঝরনা, Yo ইত্যাদি) এখনও রুট হিসাবে ইনস্টল করা প্রয়োজন। এই কারণ তারা / ব্যবহারকারী / bin / মধ্যে symlinks তৈরি হয়।

সম্পাদন করা

3 বছর পর আমি NVM ব্যবহার করার পরামর্শ দিই। এটা আপনি সময় এবং কষ্ট অনেক নিরাপদ।


আপনি এই চেষ্টা করতে পারে

sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}

আমার ক্ষেত্রে, এটি ~ / tmp এর অনুমতির কারণে। তাই আমি করি:

sudo chown -R $USER ~/tmp

এবং এটা ঠিক আছে!


আমার জন্য, শুধুমাত্র চালানো

sudo chown -R $(whoami) ~/.npm

কাজ করে না। তারপর, আমি খুব চালানো

sudo chown -R $(whoami) /usr/lib/node_modules/
sudo chown -R $(whoami) /usr/bin/node
sudo chown -R $(whoami) /usr/bin/npm

এবং সব ঠিক কাজ করে!


আসলে, আমি একই সমস্যা ছিল। আমি উবুন্টু চালাচ্ছিলাম। খানিকটা সমস্যা দেখা দেয় কারণ উবুন্টুর আমার পাবলিক কী হারিয়ে গেছে। এমনকি আমার সিস্টেম আপডেট করা হচ্ছে না। এটি জিপিজি ত্রুটি প্রদান করা হয়। এই ক্ষেত্রে, আপনি এই কমান্ডটি ব্যবহার করে আপনার কী পুনরায় পেতে পারেন:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <key in GPG error>

যে npm পরে জরিমানা কাজ করে!


এই আমি ব্যবহার এবং কাজ সমাধান। আমি কখনোই whoami কাজে whoami চেষ্টা করিনি।

sudo chown -R $USER /usr/local/lib/node_modules

তারপর

sudo chown -R $USER /usr/local/bin/npm

তারপর

sudo chown -R $USER /usr/local/bin/node


এছাড়াও আপনি node_modules ডিরেক্টরির মধ্যে লেখার অনুমতি প্রয়োজন হবে:

sudo chown -R $USER /usr/local/lib/node_modules

এটি আপনার হোম ডিরেক্টরি একটি অনুমতি সমস্যা মত দেখায়। .Npm ডিরেক্টরি মালিকানা পুনরুদ্ধার করতে:

sudo chown -R $(whoami) ~/.npm

টি এল; ডিআর

গ্লোবাল প্যাকেজ npm install করার জন্য npm install করার সময় সর্বদা sudo -H বা sudo -H ব্যবহার করুন।

-

আপনি npm ব্যবহার করলে এটি আপনার ব্যবহারকারীর হোম ডিরেক্টরিতে প্যাকেজ ডাউনলোড করে। যখন আপনি sudo হিসাবে চালান, npm একই ডিরেক্টরিতে ফাইল ইনস্টল করে, কিন্তু এখন তারা রুট দ্বারা মালিকানাধীন।

তাই এই npm ব্যবহার করা হয়েছে একেবারে প্রতি একক ব্যক্তি কি ঘটেছে:

  • npm install foo ব্যবহার করে সমস্যা ছাড়াই কিছু স্থানীয় প্যাকেজ npm install foo
  • সমস্যা ছাড়াই sudo install -g foo-cli ব্যবহার করে বিশ্বব্যাপী প্যাকেজ sudo install -g foo-cli
  • npm install bar সাথে স্থানীয় প্যাকেজ ইনস্টল করার চেষ্টা করুন
  • এখন npm ডিজাইনারদের হতাশ হোন যে আপনাকে আবার একটি ডিরেক্টরি chmod করতে হবে

যখন আপনি -H সাথে -i বা -H বিকল্পটি ব্যবহার করেন, তখন আপনার হোম ডিরেক্টরি root হোম ডিরেক্টরি হতে পারে। কোনও বিশ্বব্যাপী ইনস্টলেশানগুলি root ফাইলের ফাইলগুলির পরিবর্তে /root/.npm প্যাকেজগুলি /root/.npm ক্যাশে করবে।

গ্লোবাল প্যাকেজ npm install করার জন্য npm install করার সময় সর্বদা sudo -i বা sudo -H ব্যবহার করুন এবং আপনার npm অনুমতি সমস্যাগুলি দ্রবীভূত হয়ে যাবে।

ভালোর জন্য.

http://hood.ie/blog/why-you-shouldnt-use-sudo-with-npm.html

- qv ইতিমধ্যে একটি fucked npm ফিক্সিং জন্য গৃহীত উত্তর।


ডিরেক্টরি /usr/local/lib/npm_modules জন্য অনুমতি পরিবর্তন না করলে, আপনার ব্যবহারকারীকে গ্রুপে যুক্ত করতে হবে (বেশিরভাগ ক্ষেত্রে এটি staff গ্রুপ), যার জন্য /usr/bin ডিরেক্টরিের rwx অধিকার আছে। কারণ npm /usr/bin/__package__ সাথে symlink তৈরি করার চেষ্টা করে।

পিএস ব্যবহারকারীর গ্রুপ পরিবর্তন করার পরে relogin ভুলবেন না


নোড ইনস্টল করার সময় আপনার এনপিএম ডিরেক্টরি ( npm link , npm install -g , ইত্যাদি) লেখার মতো জিনিসগুলি করার সময় অনুমতিগুলি ব্যবহার করা হবে।

সম্ভবত আপনি রুট অনুমতি দিয়ে নোড ইনস্টলেশন চালান, তাই বিশ্বব্যাপী প্যাকেজ ইনস্টলেশনটি আপনাকে রুট বলে জিজ্ঞাসা করছে।

সমাধান 1: NVM

অনুমতি দিয়ে হ্যাক করবেন না, সঠিক ভাবে নোড ইনস্টল করুন।

একটি ডেভেলপমেন্ট মেশিনে, আপনার রুট অনুমতিগুলির সাথে নোড ইনস্টল এবং চালানো উচিত নয়, অন্যথায় npm link মতো জিনিসগুলি, npm install -g একই অনুমতিগুলির প্রয়োজন হবে।

NVM (নোড ভার্সন ম্যানেজার) আপনাকে রুট অনুমতি ছাড়া নোড ইনস্টল করতে দেয় এবং আপনাকে তাদের সাথে সহজেই খেলতে নোডের অনেক সংস্করণ ইনস্টল করতে দেয় .. বিকাশের জন্য উপযুক্ত।

  1. আনইনস্টল নোড (রুট অনুমতি সম্ভবত প্রয়োজন হবে)। This আপনাকে সাহায্য করতে পারে।
  2. তারপর NVM NVM নিম্নলিখিত নির্দেশাবলী ইনস্টল NVM
  3. NVM এর মাধ্যমে নোড ইনস্টল করুন: nvm install node

এখন npm link , npm install -g আপনাকে আর রুট হতে হবে না।

সম্পাদনা করুন: https://docs.npmjs.com/getting-started/fixing-npm-permissions এও দেখুন

সমাধান 2: প্রদত্ত ব্যবহারকারীর জন্য বিশ্বব্যাপী প্যাকেজ ইনস্টল করুন

অনুমতি সহ হ্যাক করবেন না, npm প্যাকেজ বিশ্বব্যাপী সঠিক ভাবে ইনস্টল করুন।

আপনি যদি OSX বা লিনাক্সে থাকেন তবে আপনার বিশ্বব্যাপী প্যাকেজের জন্য ব্যবহারকারী ডেডিকেটেড ডিরেক্টরি তৈরি করতে পারেন এবং বিশ্বব্যাপী ইনস্টল করা প্যাকেজগুলি কীভাবে খুঁজে বের করতে node তা জানতে npm এবং node সেটআপ করতে পারেন।

Sudo ছাড়া বিশ্বব্যাপী npm মডিউল ইনস্টল করার ধাপে ধাপে নির্দেশাবলীর জন্য github.com/sindresorhus/guides/blob/master/…

আরও দেখুন: এনপিএম এর ডকুমেন্টেশন https://docs.npmjs.com/getting-started/fixing-npm-permissions


বুটস্ট্র্যাপ 3 এর জন্য আমার সিএসএস কম্পাইল করার জন্য রেসেস ( https://github.com/twitter/recess ) ইনস্টল করার সময় এটির মুখোমুখি হলাম।

পুনঃস্থাপন ইনস্টল করার সময়:

-npm install recess -g
  1. আপনাকে আপনার home ডিরেক্টরিতে অনুমতিগুলি আনলক করতে হবে, যেমন বলেছেন:

    sudo chown -R `whoami` ~/.npm
  2. আপনি node_modules ডিরেক্টরিতে লেখার অনুমতিগুলিও প্রয়োজন, যেমন বলেছেন, তাই এটি এখনও কাজ না করে তবে চেষ্টা করুন:

    sudo chown -R `whoami` /usr/local/lib/node_modules
  3. আপনি যদি এখনও ত্রুটিগুলি দেখেন তবে আপনাকে /usr/local অনুমতিগুলি সংশোধন করতে হবে:

    sudo chown -R `whoami` /usr/local

দয়া করে মনে রাখবেন যে এই পোস্ট /usr/local/ নির্দেশিত হিসাবে যদি আপনি কোনও ম্যাকের উপর থাকেন তবে এটি কোনও সিস্টেমের ডিআইআর নয়, তাই এই উত্তরটি আসলে ম্যাক ব্যবহারকারীদের জন্য পুরোপুরি "নিরাপদ"। যাইহোক, যদি আপনি লিনাক্সে থাকেন, দেখুন ক্রিস্টোফার উইল এর একটি মাল্টি-ইউজার ফ্রেন্ডলিস্টের উত্তর নিচে, সিস্টেম নিরাপদ (কিন্তু আরো জটিল) সমাধানটি দেখুন।


ম্যাকের জন্য (ক্রিস্টোপার উইলের উত্তর থেকে গৃহীত)

ম্যাক ওএস এক্স 10.9.4

  1. সিস্টেম পছন্দ> ব্যবহারকারী এবং গোষ্ঠী> (আনলক করুন)> চাপুন +:

    নতুন অ্যাকাউন্ট> "গ্রুপ"
    অ্যাকাউন্ট নাম: নোডগ্রুপ

    গ্রুপটি তৈরি করার পরে, এই গোষ্ঠীতে অন্তর্ভুক্ত ব্যবহারকারীকে টিক দিন

  2. sudo chgrp -R nodegrp / usr / স্থানীয় / lib / node_modules /
    sudo chgrp nodegrp / usr / bin / নোড
    sudo chgrp nodegrp / usr / bin / npm
    sudo chown -R $ (whoami): nodegrp ~ /। npm


যখন আপনি npm ইনস্টল-g কিছু প্যাকেজ চালান, তখন আপনাকে একটি EACCES ত্রুটি হতে পারে যা আপনাকে রুট / প্রশাসক হিসাবে আবার চালানোর জন্য জিজ্ঞাসা করে। এটি একটি অনুমতি সমস্যা।

এটা ঠিক করা সহজ , আপনার টার্মিনাল খুলুন (অ্যাপ্লিকেশন> ইউটিলিটি> টার্মিনাল)

sudo chown -R $USER /usr/local/lib/node_modules

** আমি দৃঢ়ভাবে আপনাকে সুডোর সাথে প্যাকেজ পরিচালনার ব্যবহার করার পরামর্শ দিচ্ছি না (sudo npm-g কিছু ইনস্টল করুন), কারণ আপনি কিছু সমস্যা পরে পেতে পারেন **

রেফারেন্স: http://foohack.com/2010/08/intro-to-npm/


সমস্যা: গ্লোবাল প্যাকেজ এবং কমান্ডগুলি সংরক্ষণ করতে এনপিএম ব্যবহার করে এমন ডিরেক্টরিগুলিতে লেখার অনুমতি আপনার নেই।

সমাধান: npm জন্য অনুমতি অনুমতি দিন।

একটি টার্মিনাল খুলুন:

কমান্ড + স্পেসবার তারপর টাইপ করুন 'টার্মিনাল'

এই কমান্ড লিখুন:

sudo chown -R $ (whoami) $ (npm কনফিগারেশন উপসর্গ পান) / {lib / node_modules, bin, share}

  • দ্রষ্টব্য: এই আপনার পাসওয়ার্ড প্রয়োজন হবে।

এই সমাধানটি শুধুমাত্র ডিরেক্টরিগুলির জন্য অনুমতি দেয় যা অন্যান্য ডিরেক্টরিগুলিকে সুন্দর এবং নিরাপদ রাখে।


এনপিএম মডিউলগুলিতেও একই রকম সমস্যা ছিলো সুডো ছাড়াই বিশ্বব্যাপী ইনস্টল করা হবে না , ইস্যুটি ছিল যে যখন আমি নোড ইনস্টল করি তখন আমি ক্রিস / লি পিপিএ রেপোর মাধ্যমে সুডোর সাথে এটি করি

আমার সমাধান নোড আনইনস্টল এবং তারপর এই ভাবে ইনস্টল ছিল:

Nodejs.org # থেকে আমার সর্বশেষ নোড-v0.10.20.tar.gz থেকে সর্বশেষ স্থিতিশীল নোড উত্স ডাউনলোড করুন

tar-zxf নোড-ভি0.10.20.tar.gz # অসম্প্রপ উৎস

সিডি নোড-v0.10.20 # ধারক অসম্পূর্ণ ফোল্ডার

sudo chown $ USER -R / usr / স্থানীয়

./configure --prefix = / usr / স্থানীয় && তৈরি && ইনস্টল করুন

পিডি: যদি আপনি / usr / স্থানীয় ফোল্ডারটির মালিকানা পরিবর্তন করতে চান না তবে আপনি এটি ইতিমধ্যেই নিজের নামে ইনস্টল করতে পারেন। এই পদ্ধতির সমস্যাটি হল যে আপনি bash কমান্ড লাইনের সাথে ইনস্টলেশন ফোল্ডারটি আবদ্ধ করতে হবে যাতে আমরা পরে নোড কমান্ডটি ব্যবহার করতে পারি

mkdir ~ / অপ্ট

./configure --prefix = ~ / opt && && && ইনস্টল করুন

বর্তমান অপারেটিং সিস্টেমের উপর নির্ভর করে এক্সপোর্ট 'এক্সপোর্ট প্যাথ = ~ / অপট / বিন: $ {PATH}' >> ~ / .bashrc #or ~ / .profile বা ~ / .bash_profile বা ~ / .zshenv

এই পদ্ধতির সাথে আপনি সুডোর ব্যবহার না করে নিম্নলিখিতগুলি করতে সক্ষম হবেন

npm ইনস্টল -g module_to_install


EACCES ত্রুটির সাথে EACCES npm install করার অনুমতিগুলি ঠিক করার জন্য অফিসিয়াল ডকুমেন্টেশান https://docs.npmjs.com/getting-started/fixing-npm-permissions এ অবস্থিত।

OSX এ .pkg ইনস্টলার ব্যবহার করে নোডের একটি নতুন ইনস্টল করার পরে আমি এই সমস্যার সম্মুখীন হয়েছি। এখানে কিছু মহান উত্তর আছে, কিন্তু আমি এখনও npmjs.com একটি লিঙ্ক দেখতে না।

বিকল্প 1: npm এর ডিফল্ট ডিরেক্টরিতে অনুমতি পরিবর্তন করুন

  1. Npm এর ডিরেক্টরির পাথ সন্ধান করুন:

    npm config get prefix

অনেক সিস্টেমের জন্য, এই / usr / স্থানীয় হবে

সতর্কতা : প্রদর্শিত পথটি যদি কেবল / usr হয় তবে বিকল্প 2 এ স্যুইচ করুন।

  1. বর্তমান ব্যবহারকারীর নাম (ইউজারনেম!) এর নামে npm এর ডিরেক্টরিগুলির মালিক পরিবর্তন করুন:

    sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}

    এটি npm এবং কিছু অন্যান্য সরঞ্জাম ( lib / node_modules , bin , এবং ভাগ ) দ্বারা ব্যবহৃত উপ-ফোল্ডারগুলির অনুমতিগুলি পরিবর্তন করে।

বিকল্প 2: অন্য ডিরেক্টরির মধ্যে npm এর ডিফল্ট ডিরেক্টরি পরিবর্তন করুন

এমন সময় আছে যখন আপনি ডিফল্ট ডিরেক্টরিটির মালিকানা পরিবর্তন করতে চান না যে npm ব্যবহার করে (অর্থাত / usr ) এটি কিছু সমস্যার কারণ হতে পারে, উদাহরণস্বরূপ, যদি আপনি অন্যান্য ব্যবহারকারীদের সাথে সিস্টেমটি ভাগ করে থাকেন।

পরিবর্তে, আপনি একটি পৃথক ডিরেক্টরি সম্পূর্ণরূপে ব্যবহার করতে npm কনফিগার করতে পারেন। আমাদের ক্ষেত্রে, এটি আমাদের হোম ফোল্ডারে একটি লুকানো ডিরেক্টরি হবে।

  1. বিশ্বব্যাপী ইনস্টলেশনের জন্য একটি ডিরেক্টরি তৈরি করুন:

    mkdir ~/.npm-global
  2. নতুন ডিরেক্টরি পাথ ব্যবহার করতে npm কনফিগার করুন:

    npm config set prefix '~/.npm-global'
  3. খুলুন বা একটি ~ /। প্রোফাইল ফাইল তৈরি করুন এবং এই লাইন যোগ করুন:

    export PATH=~/.npm-global/bin:$PATH
  4. কমান্ড লাইনের পিছনে, আপনার সিস্টেম ভেরিয়েবল আপডেট করুন:

    source ~/.profile

ইস্যু : আপনি (ব্যবহারকারীর) ডিরেক্টরিটির জন্য অনুমতিগুলির সঠিক সেট নেই।

তাত্ক্ষণিক ভাবে আউট sudo ব্যবহার করে npm ইনস্টল চালানো হয়, তবে এটি আপনাকে একই ত্রুটি বা অনুপযুক্ত ইনস্টলেশন দিতে পারে।

এবং পরিবর্তন ডিরেক্টরি মালিকানা একটি ভাল বিকল্প নয়, একটি অস্থায়ী প্যাচ।

সমাধান / পরামর্শ : Npm এর ডিফল্ট ডিরেক্টরি পরিবর্তন করুন (সরকারী docs থেকে)

এগিয়ে চলন্ত আগে আপনার কম্পিউটার ব্যাক আপ।

(ঐচ্ছিক) যদি আপনার কোন ত্রুটিপূর্ণ ইনস্টলেশন থাকে তবে প্রথমে এটি আনইনস্টল করুন:

npm uninstall <package-name>  # use sudo if you used it while installation
npm cache verify  # or, npm cache clean for npm version below 5.x.x 
  1. বিশ্বব্যাপী ইনস্টলেশনের জন্য একটি ডিরেক্টরি তৈরি করুন:

    mkdir ~/.npm-global

  2. নতুন ডিরেক্টরি পাথ ব্যবহার করতে npm কনফিগার করুন:

    npm config set prefix '~/.npm-global'

  3. খুলুন অথবা একটি ~/.profile বা ~/.bash_profile ফাইল তৈরি করুন এবং এই লাইনটি যোগ করুন:

    export PATH=~/.npm-global/bin:$PATH

  4. কমান্ড লাইনের পিছনে, আপনার সিস্টেম ভেরিয়েবল আপডেট করুন, অথবা টার্মিনালটি পুনরায় চালু করুন:

    source ~/.profile

  5. (ঐচ্ছিক) পরীক্ষা: সুডো ব্যবহার না করে বিশ্বব্যাপী একটি প্যাকেজ ডাউনলোড করুন।

    npm install -g jshint





sudo