এনপিএম সুডো ছাড়াই ত্রুটি ছুড়ে ফেলে


1285

আমি কেবল 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

35
দয়া করে এনভিএম ব্যবহার করে সমাধানটি বিবেচনা করুন : স্ট্যাকওভারফ্লো. com / a / 24404451 / 1480391 (অনুমতি নিয়ে হ্যাক করার পরিবর্তে)
ইয়ভেস এম

2
@ জাজানপেজ আপনি এনপিএম (নোড প্যাকেজ ম্যানেজার) এর মাধ্যমে নোড বা এনভিএম (নোড ভার্সন ম্যানেজার) ইনস্টল করতে পারবেন না, এটি বোকামি । এনপিএম নোডের মধ্যে আসে (এটি একই সময়ে ইনস্টল করা হয়)। উইকিপিডিয়া পৃষ্ঠাটি দেখুন: en.wikedia.org/wiki/Npm_(software)
ইয়ভেস এম

5
পরিশেষে এর চেয়ে আরও ভাল সমাধান sudo chown: github.com/sindresorhus/guides/blob/master/…
দিমিত্রি

ওএসএক্সের অধীনে এবং 0 বেসরকারী পিকেজি ইন্টেলারের সাথে নোড ইনস্টল করা এই সমাধানটি কার্যকর হয়নি work : আমি পরিবর্তে এই একটি ব্যবহার stackoverflow.com/a/34968008/675565
fmquaglia

2
এটি ইস্যুটি এবং ঠিক করার বিষয়টি ব্যাখ্যা করে: docs.npmjs.com/getting-started/fixing-npm-perifications
n00b

উত্তর:


2268

এটি আপনার হোম ডিরেক্টরিতে কোনও অনুমতি ইস্যুর মতো দেখাচ্ছে। .Npm ডিরেক্টরিটি সম্পাদন করুন এর মালিকানা দাবি করতে :

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

102
আমি ভেবেছিলাম যে whoamiএটি একটি স্থানধারক, তবে এটি অক্ষরে অক্ষরে টাইপ করে কাজ করে, তাই এটি অবশ্যই একটি পরিবর্তনশীল হতে হবে যা আমি বুঝতে পারি না।
সিম্পলজি

127
whoami প্রকৃত শেল কমান্ড en.wikipedia.org/wiki/Whoami । আশেপাশের ব্যাকটিকগুলি whoamiনিশ্চিত করে যে এটি সঠিকভাবে সম্পাদিত হবে এবং তারপরে chown আদেশে স্থাপন করা হবে
নোহ

13
আপনি নিজে নিজে আপনার ব্যবহারকারীর নামটিও নির্দিষ্ট করতে পারেন। যদি আপনার ব্যবহারকারীর নামটি "সিম্পাসিকসোল্ডবে" হয় তবে আদেশটিটি হবেsudo chown -R simpleascouldbe ~/.npm
নোহ

13
npm প্রয়োজন হয় না এবং তোমরা উবুন্টু ব্যবহার করা হবে - বিশেষ করে @HeberLZ নিচে উত্তর দেখার তার 2nd সংক্রান্ত বিকল্প: ./configure --prefix = xxxxxx
স্কট Stensland

9
@ ক্রিস্টোফারওয়িল: এটি কোনও সিস্টেম ডিরেক্টরিের মালিকানা পরিবর্তন করছে না। এটি ব্যবহারকারীর হোম ডিরেক্টরিতে ডিরেক্টরিগুলির মালিকানা পরিবর্তন করছে, যা ব্যবহারকারীর মালিকানাধীন হওয়া উচিত
ব্যবহারকারী 4815162342

619

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

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


সমাধান 1: এনভিএম

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

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

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

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

এখন npm link, npm install -gআপনাকে আর রুট হওয়ার দরকার নেই।

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


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

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

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

পরীক্ষা করে দেখুন এই মহান নিবন্ধ বিশ্বব্যাপী উবুন্টু ছাড়া npm মডিউল ইনস্টল করার ধাপে ধাপে নির্দেশাবলীর জন্য।

আরও দেখুন: এনপিএমের অনুমতিগুলি স্থির করার জন্য এনপিএমের ডকুমেন্টেশন ।


32
সমস্ত সমাধানগুলির মধ্যে এখানে এনভিএম সমাধান পোস্ট করা আমার জন্য সেরা ফলাফল সরবরাহ করেছে। অনুমতি নিয়ে টোটিংয়ের চেয়ে এনভিএম ব্যবহারের উচ্চ প্রস্তাব দিন।
ওয়েইনকোড

9
এই নির্দেশাবলী খুব ভাল কাজ করে। তবে আপনি সম্ভবত নোডেজগুলি আনইনস্টল করার আগে সুডোর সাথে ইনস্টল করা মডিউলগুলি সরাতে চাইবেন : npm ls -gp | awk -F/ '/node_modules/ && !/node_modules.*node_modules/ {print $NF}' | xargs npm -g rm- আমাকে নোডেজ পুনরায় ইনস্টল করতে হবে এবং একটি রুট শেলের মধ্যে এবং আনইনস্টল করতে হবে, অন্যথায় আপনার কাছে ইও, গ্রাঞ্জ ইত্যাদির সাথে সংলগ্নতা থাকবে ...
ব্রুনো ফ্লাভিও

4
এটিই সেরা সমাধান, আমি প্রথমে sudo npm list -g --depth=0. | awk -F ' ' '{print $2}' | awk -F '@' '{print $1}' | sudo xargs npm remove -g স্ট্যাকওভারফ্লো.com/a/22290968/1449157 করে সমস্ত মডিউলগুলি সরিয়েছি npmএবং তারপরে সরানো এবং এটি ইনস্টল করে দিয়েছিnvm
ফ্যাবিও আন্তুনেস

3
নোডের জন্য আনইনস্টল নির্দেশাবলীর জন্য এই এসও উত্তরটি ব্যবহার করুন
stackoverflow.com/a/11178106/480031

3
কেন একটি উত্পাদন মেশিনে নোড ইনস্টল করতে রুট ব্যবহার করা ঠিক আছে?
ব্রুনো পেরেস

400

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

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

7
পাশাপাশি ~/tmpআমার জন্য ডিরেক্টরি।
পরিচিতসিল্যা

122
আমি জানি না কেন এটি এখনও উপবিষ্ট হয়। সিস্টেম ডিরেক্টরিগুলির মালিকানা নির্দিষ্ট ব্যবহারকারীর কাছে পরিবর্তন করা খুব খারাপ অভ্যাস! অন্যান্য সমাধানের জন্য দয়া করে নীচে উত্তর দেখুন (যেমন নোড ব্যবহারকারীদের জন্য পৃথক গোষ্ঠী তৈরি করা)।
ক্রিস্টোফার

1
আমার নেই node_modulesমধ্যে /usr/local/lib/। Wtf?
কনার জোঁক

27
আপনি যা করেন - নিখুঁতভাবে / ইউএসআর / লোকাল / লিব বা / ইউএসআর / লিবি / আপনার sudoers ফাইলটি নষ্ট করে দেবে এবং আপনি নিজেকে ঘৃণা করবেন 'sudo chmod -R whoami' চালাবেন না।
কডেনিনজা

7
সবাই, দয়া করে এটিকে কমিয়ে দিন ... Then I ran sudo chown -R $USER /* and everything was fine- না - আপনি নিজের মেশিনটি নষ্ট করছেন।
20:25

75

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

npm config set prefix ~/npm

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

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

দেখুন @ErikAndreas ' উত্তর করার NPM মডিউল উবুন্টু ছাড়া বিশ্বব্যাপী ইনস্টল করা হবে না এবং আর ধাপে ধাপে নির্দেশিকা দ্বারা @sindresorhus এছাড়াও সেট সঙ্গে $MANPATH


আমি দৃ strongly়ভাবে সম্মত হই, কেবলমাত্র আমি প্রস্তাব দিই যদি আপনি কেবল $HOMEতখনই উপসর্গটি সেট করেন তবে সাধারণত আপনার .profileস্ক্রিপ্ট $PATHপরবর্তী সময় আপনি এটি উত্স করার সময় যত্ন নেবেন (যেমন পরবর্তী সময় আপনি লগ ইন করবেন)।
জেস অস্টিন

@ জেস অস্টিন: সম্ভবত, তবে এটি আপনার আরও বিশৃঙ্খলা আনতে $HOMEপারে এবং অন্যান্য (ভবিষ্যত?) এনপিএম ফাইল / সাবফোল্ডারগুলিতে হস্তক্ষেপ করতে পারে। বিভিন্ন প্যাকেজ পরিচালক / ভাষা / বিল্ড সিস্টেমগুলি পৃথক করে বাইনারি রাখতে পছন্দ করুন এবং পরিবর্তে স্পষ্টত সেট করুন $PATH(লগইন সময় স্ক্রিপ্টে)।
জোয়েল পুররা

এহ, গোলমাল? আমরা কেবলমাত্র বিশ্বব্যাপী ইনস্টলড মডিউলগুলির ~/lib/node_modulesসাথে তাদের সম্পর্কিত সিএলআই, যদি কোনও উপস্থিত থাকে, এর সাথে কথা বলছি ~/bin। অনেক ব্যবহারকারী, বিশেষ করে যদি তারা মূল থাকে না, উভয়ের জন্য ~/binএবং ~/libইতিমধ্যেই বিদ্যমান।
জেস অস্টিন 12

@ জেস অস্টিন: এটি গ্রন্থাগার এবং বাইনারিগুলির জন্য নামের সংঘর্ষের বিষয়। ধরা যাক আপনি এনপিএমকে বাইনারি রাখার জন্য নির্দেশ করেছেন ~/binএবং তারপরে এক বা দুটি অতিরিক্ত প্যাকেজ পরিচালকদের জন্য একই করুন। এটি আজ বা কালটি নাও হতে পারে তবে এটির একটি স্পষ্ট ঝুঁকি রয়েছে যে বিভিন্ন পরিচালকের দুটি প্যাকেজের একটি নাম সংঘর্ষ হয় এবং একে অপরের ফাইলগুলিকে ওভাররাইট করে। এটি আমার পক্ষে পৃথক উপসর্গ রাখার পক্ষে যথেষ্ট ভাল। (কংক্রিটের উদাহরণগুলি প্রশংসা করা হবে))
জোয়েল পুররা

1
এটি সেরা উত্তর হিসাবে গ্রহণ করা উচিত। সিস্টেম-গ্লোবাল ফোল্ডারগুলি পরিবর্তন করা বিপজ্জনক হতে পারে।
ভ্লাদিমির মার্টন

58

বুটস্ট্র্যাপ 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/প্রকৃতপক্ষে কোনও সিস্টেম দির নয়, সুতরাং, এই উত্তরটি ম্যাক ব্যবহারকারীদের জন্য আসলে পুরোপুরি "নিরাপদ"। তবে, যদি আপনি লিনাক্সে থাকেন তবে একাধিক-ব্যবহারকারী বান্ধব, সিস্টেম দির নিরাপদ (তবে আরও জটিল) সমাধানের জন্য নীচে ক্রিস্টোফার উইলের উত্তর দেখুন।


35
এটি একটি খারাপ ধারণা। আপনি সম্ভবত সিস্টেম ডিরেক্টরিগুলি কোনও নির্দিষ্ট ব্যবহারকারীর মালিকানাধীন না চান। গুরুতর সুরক্ষার উদ্বেগের পাশাপাশি এটি মাল্টিউসার সামঞ্জস্যপূর্ণও নয়।
ক্রিস্টোফার

2
হ্যাঁ তবে এটি উন্নয়নের পরিবেশ +২ এর জন্য দুর্দান্ত সমাধান, বিশেষ করে যদি আপনি ইতিমধ্যে নোড.জেএস ইনস্টল করে রেখেছেন এবং কেবল দুলিয়ে রাখা প্রয়োজন!
এলিওট্রোক

আপনার সত্যিকারের হোম ডিরেক্টরিের বাইরে প্যাকেজগুলির মালিকানা উচিত নয়
বেন

1
যদি এটি আপনার হোম ফোল্ডারে না থাকে তবে বিপরীতে কোনও দাবি সত্ত্বেও এটি একটি সিস্টেম ডিরেক্টরি। এটি ওএস এক্স দ্বারা ব্যবহৃত না হওয়ার অর্থ এটি কোনও সিস্টেম ডিরেক্টরি নয়।
ধনী রিমার

53

সতর্ক থেকো!!! সতর্ক থেকো!!! সতর্ক থেকো!!!

সুরক্ষা-ঝুঁকির কারণে ডাবন বা chmod সমাধান নয়

পরিবর্তে এটি করুন, করুন:

প্রথমে পরীক্ষা করুন, এনপিএম কোথায় নির্দেশ করে, যদি আপনি কল করেন:

npm config get prefix

যদি / usr ফিরে আসে, আপনি নিম্নলিখিতগুলি করতে পারেন:

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

এটি আপনার হোম ডিরেক্টরিতে একটি এনপিএম-ডিরেক্টরি তৈরি করে এবং npmএটি নির্দেশ করে।

এই পরিবর্তনগুলি স্থায়ী করতে, আপনাকে .bashrc এ রফতানি-আদেশ যুক্ত করতে হবে:

echo -e "export NPM_CONFIG_PREFIX=~/.npm-global\nexport PATH=\$PATH:~/.npm-global/bin" >> ~/.bashrc

আমি / ইউএসআর পেলে কেবলমাত্র বিকল্প 2 এ যেতে হবে?
অ্যালবার্ট লরে

3
নোট করুন যে শেষ কমান্ডটি আসলে $PATHস্ট্রিং নয়, এর সামগ্রীর আউটপুট দেয়। আপনার এটি পরিবর্তন করা উচিত।
ভেলুরিয়া

1
এটি স্থির! ধন্যবাদ. আমি 'অনুমতি প্রত্যাখ্যান, লিঙ্কমুক্ত করা' /
ইউএসআর

1
এটি সেরা উত্তর। সমস্যাটি সমাধানের এটি প্রস্তাবিত উপায়।
পাওলো কোঘি - মনিকা 18

সুরক্ষা ঝুঁকিপূর্ণ কেন?
ফ্র্যাঙ্ক

40

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

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

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

# 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

কিছু মডিউল (গ্রান্ট, বোভার, ইও ইত্যাদি) এখনও মূল হিসাবে ইনস্টল করা প্রয়োজন। এর কারণ তারা / ইউজার / বিন / এ সিমলিংক তৈরি করে।

সম্পাদন করা

3 বছর পরে আমি নোড সংস্করণ পরিচালক ব্যবহার করার পরামর্শ দেব । এটি আপনাকে অনেক সময় এবং ঝামেলা বাঁচায়।


2
যদি নোডগুলি উত্স দ্বারা ইনস্টল করা হয় তবে মাল্টুউসারটি সমস্যা হলেও, সমস্ত মডিউল সুডো ব্যবহার না করে নিখুঁতভাবে কাজ করবে। এটিও খুব গুরুত্বপূর্ণ কারণ ইয়োমন মডিউলের ক্ষেত্রে লোকেরা ইয়োমন অ্যাপ্লিকেশনটি সুডো করার মাধ্যমে জেনারেটর আপডেট করতে পারে না কারণ এটি
সুডোর

1
লিনাক্সে, আমি সাধারণত staffআমার ডেভ ফোল্ডারগুলিতে অনুমতি দেওয়ার জন্য অন্তর্নির্মিত গোষ্ঠীটি ব্যবহার করি । এছাড়াও, chmod g+ws node_modulesআপনার গ্রুপটি / লেখার অনুমতি পড়েছে তা নিশ্চিত করার জন্য এটি চালানো ভাল ধারণা ।
jackvsworld

@ Jackvsworld আমি কর্মী গ্রুপ সম্পর্কে অবগত ছিলাম না। আমার ধারণা এটি আরও মসৃণ সমাধান হবে, যেহেতু নতুন কল্পিত একটি দল তৈরি করতে হবে না .. যদিও এটি কম স্পষ্ট হবে। তবে এই ইনপুট জন্য ধন্যবাদ।
ক্রিস্টোফার

সাধারণভাবে বলতে গেলে, /usr/libআপনার সিস্টেম প্যাকেজ ম্যানেজারের নিয়ন্ত্রণাধীন এবং আপনার সেখানে কোনও পরিবর্তন করা উচিত নয়।
সমৃদ্ধ পুনরায় 21

23

ত্রুটির সাথে অনুমতিগুলি কীভাবে ঠিক করবেন সে সম্পর্কে অফিসিয়াল ডকুমেন্টেশনটি https://docs.npmjs.com/getting-st সূত্র / ফিক্সিং- npm installnpm- EACCESperifications এ অবস্থিত ।

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

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

  1. এনপিএমের ডিরেক্টরিতে যাওয়ার পথটি সন্ধান করুন:

    npm config get prefix

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

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

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

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

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

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

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

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

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

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

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

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

    source ~/.profile

1
ধন্যবাদ, ক্লাউন সলিউডিয়ান না হওয়ায় এটি আমার জন্য কাজ করেছিল। তুমি আমাকে বাঁচালে.
fmquaglia

আমি / ইউএসআর পেলে কেবলমাত্র বিকল্প 2 এ যেতে হবে?
অ্যালবার্ট লরে

আমি এই উত্তরের বিকল্পটি 2 পছন্দ করি ( এন্ট্রি অন্তর্ভুক্ত। যোগ করার জন্য আপনাকে ধন্যবাদ!
টম রোজ

সুতরাং আপনি কি এমন কিছু ইনস্টল করবেন যা সদৃশ হয়ে আছে /usr/bin/? এখন কেবলমাত্র আপনার ব্যবহারকারী এটি অ্যাক্সেস করতে পারবেন। আপনি অন্য কারও হিসাবে লগ ইন করেছেন, এখনও অ্যাক্সেস নেই, যেহেতু ফাইলগুলি আসলে অন্য ব্যবহারকারীর হোম ডিরেক্টরিতে থাকে!
ফ্রান্স

খুব ভাল, এই আমার জন্য কাজ করেছে। আদেশগুলি ছাড়াও ব্যাখ্যার জন্য ধন্যবাদ।
ফ্রাঙ্কবাইট.কম

12

যেন আমাদের এখানে আরও উত্তর প্রয়োজন তবে যাইহোক ..

ওয়ান এক্স এবং লিনাক্সে সুডো ছাড়াই বিশ্বব্যাপী এনপিএম প্যাকেজ ইনস্টল করার জন্য সিঁদ্রে সোরাসের একটি গাইড রয়েছে যা অনুমতি নিয়ে গণ্ডগোল না করে কীভাবে পরিষ্কারভাবে ইনস্টল করতে হবে সেটির রূপরেখা রয়েছে:

প্রদত্ত ব্যবহারকারীর জন্য বিশ্বব্যাপী প্যাকেজ ইনস্টল করার একটি উপায় এখানে।

  1. আপনার বিশ্ব প্যাকেজগুলির জন্য একটি ডিরেক্টরি তৈরি করুন

    mkdir "${HOME}/.npm-packages"
  2. আপনার .bashrc / .zshrc এ ভবিষ্যতের ব্যবহারের জন্য এই ডিরেক্টরিটি উল্লেখ করুন:

    NPM_PACKAGES="${HOME}/.npm-packages"
  3. আপনার বিশ্বব্যাপী ইনস্টল করা প্যাকেজটি কোথায় সংরক্ষণ করতে হবে তা এনএমপিতে নির্দেশ করুন। আপনার $HOME/.npmrcফাইল যুক্ত করুন:

    prefix=${HOME}/.npm-packages
  4. নোড তাদের খুঁজে পাবেন তা নিশ্চিত করুন। আপনার .bashrc / .zshrc এ নিম্নলিখিতগুলি যুক্ত করুন:

    NODE_PATH="$NPM_PACKAGES/lib/node_modules:$NODE_PATH"
  5. আপনি ইনস্টলড বাইনারি এবং ম্যান পৃষ্ঠাগুলি খুঁজে পাবেন তা নিশ্চিত করুন। আপনার .bashrc/ এ নিম্নলিখিতগুলি যুক্ত করুন .zshrc:

    PATH="$NPM_PACKAGES/bin:$PATH"
    # Unset manpath so we can inherit from /etc/manpath via the `manpath`
    # command
    unset MANPATH # delete if you already modified MANPATH elsewhere in your config
    MANPATH="$NPM_PACKAGES/share/man:$(manpath)"

পরীক্ষা করে দেখুন npm-g_nosudo স্বয়ংক্রিয়ভাবেই আপনার উপরোক্ত ধাপগুলি করছেন জন্য

সর্বশেষ আপডেটের জন্য এই গাইডের উত্সটি চেকআউট করুন ।


2
@ অ্যান্ডি হেডেন সম্পাদনার জন্য টিএক্স :) আমার পছন্দসই পদ্ধতিটি উপরে মন্তব্যগুলিতে প্রস্তাবিত: এনভিএম ব্যবহার করুন! stackoverflow.com/a/24404451/1480391
ptim

আমার পক্ষে কাজ করা একমাত্র সমাধান যা অনুমতি নিয়ে মাতামাতি জড়িত করে না। আমি এনপিএম এবং এর বোকামি অনুমতি বোকামি ঘৃণা করি। সমাধানের জন্য ধন্যবাদ!
রায়াননার্ড

8

টি এল; ডিআর

সর্বদা ব্যবহার করুন sudo -iবা sudo -Hযখন npm installবিশ্ব প্যাকেজ ইনস্টল করতে চলছে running

-

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

সুতরাং একেবারে প্রতিটি একক ব্যক্তির সাথে এটি ঘটেছিল যিনি কখনও ব্যবহার করেছেন npm:

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

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

কেবল সর্বদা ব্যবহার করুন sudo -iবা sudo -Hযখন npm installবিশ্বব্যাপী প্যাকেজ ইনস্টল করতে চলেছেন এবং আপনার npmঅনুমতিগুলির সমস্যাগুলি গলে যাবে।

ভালোর জন্য.

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

- ইতিমধ্যে fucked ফিক্সিং জন্য গৃহীত উত্তর Qvnpm


সেরা এবং সাধারণ ফিক্স
মনজিৎ সিং

6

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

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

আমার ক্ষেত্রে নোড-ভি0.10.20.tar.gz # নোডেজেএস.আর.জে সর্বশেষতম স্থিতিশীল নোড উত্সগুলি ডাউনলোড করুন

tar -zxf নোড-ভি0.10.20.tar.gz # ইউনিকম্প্রেস উত্স

সিডি নোড-ভি0.10.20 # এন্টার বিহীন ফোল্ডার

sudo chown $ ব্যবহারকারী -আর / usr / স্থানীয়

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

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

mkdir ~ / opt

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

প্রতিধ্বনি 'PATH = ~ / opt / bin: $ {PATH}' >> ~ / .bashrc # অথবা। / .প্রফিল বা ~ / .বাশ_প্রফিল বা ~ / .zshenv বর্তমান অপারেটিভ সিস্টেমের উপর নির্ভর করে

এই পদ্ধতির যে কোনও একটির সাহায্যে আপনি sudo ব্যবহার না করে নিম্নলিখিতটি করতে সক্ষম হবেন

এনপিএম ইনস্টল -জি মডিউল_ থেকে_ইনস্টল করুন


1
আমি এই পদ্ধতিটি ব্যবহার করে শেষ করেছি। sudo chown $USER /use/localবিল্ডিংয়ের আগে ব্যবহার করেছেন । এখনও অবধি ভাল লাগছে, পরমাণু তৈরির চেষ্টা করার সময়! ধন্যবাদ!
প্রসংশাভ

6

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

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

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

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

তথ্যসূত্র: http://foohack.com/2010/08/intro-to-npm/


হ্যাঁ! এই এক এটা আমার কি! : অন্যান্য অন্যান্য বেশী উপরে করছেন পরে sudo chown -R `whoami` ~/.npm, sudo chown -R `whoami` /usr/local/libএবং
রেগিস Zaleman

8
এই অন্যান্য অ্যাপ্লিকেশন প্রচুর সঙ্গে অনুমতি সমস্যা সৃষ্টি করতে পারে, তাই আমি প্রস্তাব করব না এই কাজ। কেন একজন অন্যের জন্য কীট বিক্রি করতে পারে?
ব্র্যাড পার্কস

1
বা কমপক্ষে এটি / usr / স্থানীয় / lib / নোড_মডিউলগুলিতে পরিমার্জন করুন।
কেন

এটি, এটি এবং এই আরও। কোনও দেয়ালের বিরুদ্ধে মাথা ঠেকানোর পরে, এই কৌশলটি করেছে। +1
ড্যাশার্ড

এটা আমার সমস্যা ছিল। একটি নতুন ম্যাকবুকে (ওএস এক্স 10.10.3), / ইউএসআর / লোকাল / লিব / নোড_মডিউলগুলিতে অনুমতিগুলি ছিল: $ এলএল / ইউএসআর / লোকাল / লিব / নোড_মডিউলগুলি মোট 0 ড্রওএক্সআর-এক্সআর-এক্স 3 24561 চাকা 102 বি মার্চ 18 18:19 । drwxrwxr-x 4 24561 অ্যাডমিন 136B মার্চ 31 18:19 .. drwxr-xr-x 26 65534 কর্মী 884B এপ্রিল 13 10:53
এনএম

5

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

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

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

    নতুন অ্যাকাউন্ট> "গোষ্ঠী"
    অ্যাকাউন্টের নাম: নোডগ্রিপি

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

  2. sudo chgrp -R নোডগ্রিপ / usr / স্থানীয় / lib / নোড_মডিউলস /
    sudo chgrp নোডগ্রিপ / usr / বিন / নোড
    sudo chgrp নোডগ্রিপি / usr / বিন / এনপিএম
    sudo chown -R $ (হোয়ামি): নোডগ্রিপ ~ / এনএম পি


1
আমাকে / usr / লোকাল / বিনের কয়েকটি পথ পরিবর্তন করতে হয়েছিল তবে এই সমাধানটি আমার ওএক্স এক্স 10.9 মেশিনে দুর্দান্ত কাজ করেছে - ধন্যবাদ!
splig

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

@ রিচরেমার আমি মনে করি আপনি এটি অর্জন করার চেষ্টা করছেন তার উপর নির্ভর করে। যদি ফোল্ডারটি মূলত কেবল সূডোর দ্বারা অ্যাক্সেসযোগ্য হয় তবে এটি কেবল এইভাবে পরিবর্তন করা যেতে পারে। আমরা এনপিএম সম্পর্কিত ফোল্ডারে পরিবর্তন সীমাবদ্ধ করি। sudoএই ফোল্ডার গোষ্ঠীর মালিকানাটি রাখা বা পরিবর্তন করা কি আরও নিরাপদ হবে যাতে এটি সাধারণ ব্যবহারকারীর দ্বারা সংশোধন করা যায়? যদি সাধারণ ব্যবহারকারীর এই ফোল্ডারে কোনও ক্রিয়াকলাপ করার কথা না মনে করা হয় তবে অবশ্যই ফোল্ডারের গ্রুপ মালিকানা পরিবর্তন করা উচিত নয়।
কেন

উপযুক্ত জিনিস হ'ল সুডো সহ গ্লোবাল প্যাকেজ ইনস্টল করা, তবে -Hপতাকা দিয়ে এটি করুন । বিশেষত sudo -H npm install -g <pkg>,। এটি সিস্টেম এবং ব্যবহারকারী ফোল্ডারগুলির জন্য অনুমতিগুলির যথাযথ বর্ণনাকে নিশ্চিত করে। আপনি যা করতে চান না তা হ'ল ব্যবহার sudo npm install -g, কারণ এটি আপনার ব্যবহারকারী ডিরেক্টরিতে রুট-মালিকানাযুক্ত ফাইলগুলি ইনস্টল করে। এটি দুর্দান্ত হবে যদি এনএমপি সঠিকভাবে এটি করার জন্য যথেষ্ট স্মার্ট ছিল, তবে এটি তা নয়, সুতরাং আপনাকে -Hবিশ্বব্যাপী সুডো পতাকাটি সঠিকভাবে ইনস্টল করতে হবে।
সমৃদ্ধ remer

4

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

sudo chown -R $USER ~/tmp

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


4

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

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

এবং সব ঠিক আছে!


আপনি খুব দুর্দান্ত স্যার :)
ব্যবহারকারী 805981

ফাইলগুলি /usr/libসিস্টেম ফাইল এবং আপনার ব্যক্তিগত ব্যবহারকারীর অ্যাকাউন্টের মালিকানা উচিত নয়।
সমৃদ্ধ পুনরায় 21

4

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

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

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


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

এগিয়ে যাওয়ার আগে আপনার কম্পিউটারকে ব্যাক-আপ করুন।

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

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 config set prefix '~/.npm-global'

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

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

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

    source ~/.profile

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

    npm install -g jshint


3

যদি sudo chown -R $(whoami) ~/.npmআপনার পক্ষে কাজ করে না, বা আপনার একটি নন টার্মিনাল কমান্ড সমাধান দরকার।

সমস্যাটি হ'ল আপনার ব্যবহারকারী অ্যাকাউন্টে নোড_মডিউলগুলি ফোল্ডারে লেখার অনুমতি নেই, সুতরাং আপনি নিম্নলিখিতটি করতে পারেন

  1. ওপেন আবিষ্কর্তা এবং প্রেস cmd+ + shift+ + gএই url সহ ফোল্ডারে যান খুলবে

  2. নিম্নলিখিত পাথ লিখুন /usr/local/lib/node_modulesএবং যান টিপুন

  3. node_modulesফোল্ডারে রাইট ক্লিক করুন এবং নির্বাচন করুনGet Info

  4. sharing & permissionsবিভাগে স্ক্রোল করুন

  5. পরিবর্তন করতে সক্ষম হতে আনলক করুন।

  6. +আপনার ব্যবহারকারী অ্যাকাউন্ট টিপুন এবং যুক্ত করুন

  7. নিশ্চিত হয়ে নিন যে আপনি Read & Writeসুবিধাপ্রাপ্তিতে নেমেছেন

এখন আপনার প্যাকেজগুলি ছাড়াই ইনস্টল করতে সক্ষম হওয়া উচিত sudoএবং অনুমতি সংক্রান্ত সমস্যাগুলি সমাধান করা উচিত


3

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

সমাধান: এনপিএমের জন্য অনুমতি অনুমতি দিন।

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

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

এই আদেশটি লিখুন:

sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
  • দ্রষ্টব্য: এর জন্য আপনার পাসওয়ার্ডের প্রয়োজন হবে।

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


ডাউনভোটিং কারণ সিস্টেম ফোল্ডারগুলির ব্যবহারকারীর মালিকানা সেট করা একটি বিরোধী-প্যাটার্ন এবং এটি এর জন্য অ্যাকাউন্ট করে না। npm config get prefixবাড়ির ফোল্ডারে যে কোনও কিছু প্রত্যাবর্তন করে এমন বিশেষ ক্ষেত্রে , এই সমাধানটি অনুমতিগুলি ঠিক করে দেবে, তবে ভাগ করা পরিবেশের জন্য নিরাপদ উপায়ে বৈশ্বিক প্যাকেজ ইনস্টল করার অন্তর্নিহিত সমস্যাটির সমাধান করবে না।
সমৃদ্ধ পুনরায়

এটি অপারেটিং সিস্টেমের বিশাল অংশের অনুমতিগুলি আবারও লিখবে। উদাহরণস্বরূপ উবুন্টুতে এটি চালানোর ফলে "sudo" কমান্ড নিজেই অকেজো হয়ে উঠবে।
সাহন্দ সেফি

2

এনপিএমকে সঠিকভাবে কনফিগার করতে এখানে আরও একটি দুর্দান্ত ফিক্স, নিম্নলিখিত আদেশগুলি চালনা করুন:

npm config set prefix '~/.npm_packages'
PATH=$PATH:$HOME/.npm_packages/bin; export PATH


1

আমার কাছে যা মনে হচ্ছে সর্বোত্তম বিকল্পটি এনপিএম ডকুমেন্টেশনে প্রস্তাবিত পরামর্শ , যা প্রথমে গ্লোবাল নোড_মডিউলগুলি চালিয়ে ডিফল্টরূপে ইনস্টল করা আছে তা পরীক্ষা করা উচিত npm config get prefix। আমি যেমন বিশ্বাসের মতো করি /usr, আপনি যদি পেলেন তবে আপনি এটিকে এমন কোনও ফোল্ডারে পরিবর্তন করতে চাইতে পারেন যা আমি যেভাবে করেছি তার সাথে ঝামেলা ছাড়াই নিরাপদে মালিকানাধীন can

এটি করতে, আপনার সিস্টেমে একটি নতুন ফোল্ডারটি চয়ন করুন বা তৈরি করুন। আপনি এটি আপনার বাড়ির ডিরেক্টরিতে বা আমার মতোই /usr/localধারাবাহিকতার জন্য রাখতে চাইতে পারেন কারণ আমিও একজন ম্যাক ব্যবহারকারী (আমি যে মেশিনের সামনে আসছি তার উপর নির্ভর করে বিভিন্ন জায়গাগুলি সন্ধান করার প্রয়োজন নেই)। এটি করার আরও একটি ভাল কারণ হ'ল /usr/localফোল্ডারটি সম্ভবত আপনার প্যাথ-এ ইতিমধ্যে রয়েছে (যদি না আপনি আপনার পথের সাথে জগাখিচুড়ি করতে চান) তবে সম্ভাবনাগুলি আপনার নবনির্মিত ফোল্ডারটি নয় এবং আপনাকে এটিতে যুক্ত করতে হবে আপনার .bash- প্রোফাইল বা .bashrc ফাইলটিতে নিজেকে পাঠান

দীর্ঘ কাহিনী সংক্ষেপে, আমি বিশ্বব্যাপী মডিউলগুলির ডিফল্ট অবস্থানটি পরিবর্তিত করে npm config set prefix '/usr/local'ফোল্ডারটি তৈরি করেছি /usr/local/lib/node_modules(এটি এনপিএম দ্বারা ব্যবহৃত হবে) এবং এনএমপি দ্বারা ব্যবহৃত ফোল্ডারগুলির জন্য আদেশের সাহায্যে অনুমতি পরিবর্তন করেছে:

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

এখন আপনি বিশ্বব্যাপী কোনও মডিউল নিরাপদে ইনস্টল করতে পারেন। আশাকরি এটা সাহায্য করবে!


1

এইভাবে আমি উইন্ডোজ 8.1 এ সমস্যাটি সমাধান করেছি:

  • আপনার নোডেজ ইনস্টল এ যান (সাধারণত সি: \ প্রোগ্রাম ফাইলগুলি ode নোডেজ)
  • নোড_মডিউলগুলি ফোল্ডারে রাইট ক্লিক করুন এবং বৈশিষ্ট্যে যান
  • সুরক্ষা ট্যাবে ক্লিক করুন এবং উন্নত
  • শীর্ষে আপনি দেখতে পাবেন "মালিক: SYSTEM", পরিবর্তন ক্লিক করুন
  • আপনি যে ব্যবহারকারীর জন্য অনুমতি চান সেটি লিখুন এবং ঠিক আছে ক্লিক করুন
  • উন্নত সেটিংসের নীচে বাক্সটি চেক করুন "সমস্ত শিশু অবজেক্ট অনুমতি প্রবেশাকে এই বস্তু থেকে উত্তরাধিকার সূত্রে অনুমোদনের প্রবেশদ্বারগুলি প্রতিস্থাপন করুন" এবং ঠিক আছে ক্লিক করুন
  • আপনার প্রয়োজনীয় এনপিএম ইনস্টল / আপডেট করুন

1

সবচেয়ে ভালো সমাধান হবে এই যা npm ডকুমেন্টেশন দ্বারা প্রদান করা হয়।


উবুন্টুর জন্য প্রস্তাবিত সমাধান হ'ল বিকল্প # 2

সংক্ষিপ্ত পদক্ষেপ:
বৈশ্বিক ইনস্টলেশনগুলির জন্য একটি ডিরেক্টরি তৈরি করুন:
mkdir ~/.npm-global

নতুন ডিরেক্টরি পাথ ব্যবহার করতে এনপিএম কনফিগার করুন: উপসর্গটি আপডেট হয়েছিল কিনা তা যাচাই করতে আপনাকে সহায়তা করতে পারে। ফলাফলটি হবে <আপনার হোম ডিরেক্টরি> / এনপিএম-গ্লোবাল
npm config set prefix '~/.npm-global'
npm config get prefix

একটি ~ /। প্রোফাইল ফাইল খুলুন বা তৈরি করুন এবং এই লাইনটি যুক্ত করুন:
export PATH=~/.npm-global/bin:$PATH

কমান্ড লাইনে ফিরে আসুন, আপনার সিস্টেমের ভেরিয়েবলগুলি আপডেট করুন:
source ~/.profile

পদক্ষেপ 2-4 পরিবর্তে আপনি সংশ্লিষ্ট ENV ভেরিয়েবলটিও ব্যবহার করতে পারেন (উদাহরণস্বরূপ যদি আপনি ~ /। প্রোফাইলটি পরিবর্তন করতে চান না):

NPM_CONFIG_PREFIX=~/.npm-global


ম্যাকের জন্য প্রস্তাবিত সমাধানটি বিকল্প # 3

ম্যাক ওএসে আপনি হোমব্রিউ প্যাকেজ ম্যানেজার ব্যবহার করে পুরোপুরি এই সমস্যাটি এড়াতে পারবেন

brew install node


এই NPM_CONFIG_PREFIX কাজ করবে না। এটি এনপিএম-ডেস্ক্রিপ্টিটনে একটি ত্রুটি। উপরোক্ত আমার পোস্টে কেমন সঠিক উপায়ে তা করতে: stackoverflow.com/a/41395398/1256697
suther

1

আমি মালিককে মূল থেকে আমার ব্যবহারকারীর নামে পরিবর্তন করে এটি সমাধান করি

sudo chown -R me:me /home/me/.config/configstore/

আপনার ব্যবহারকারী নাম এবং গোষ্ঠী দিয়ে আমাকে পরিবর্তন করুন।


1

আমি মালিক পরিবর্তনের পরিবর্তে এটি অর্জন করতে উবুন্টু গোষ্ঠীগুলি ব্যবহার করতে চাই। এটি বেশ সহজ।

  1. প্রথমে এপিট-গেট ব্যবহার করে নোডেজ এবং এনপিএম ইনস্টল করুন

    sudo apt-get update && sudo apt-get install nodejs npm

  2. কে লগ ইন করা হয়েছে অর্থাত্ ব্যবহারকারী নাম, এটি টার্মিনালে দেখতে নিম্নলিখিত কমান্ডটি চালান

    whoami

  3. খুব সাধারণ কমান্ড ব্যবহার করে আপনি যে গোষ্ঠীগুলি নির্ধারিত হয়েছিলেন সেগুলির তালিকা আপনি দেখতে পাচ্ছেন, সাধারণত প্রথম গোষ্ঠীটি হ'ল আপনার ব্যবহারকারী নাম

    groups

  4. লগ ইন করা ব্যবহারকারীর অ্যাক্সেসের অনুমতি দিতে নিম্নলিখিত চালান

    sudo chmod 777 -R /usr/local && sudo chgrp $(whoami) -R /usr/local

  5. এনপিএম এবং নোডেজ আপডেট করুন

    npm install -g npm

আপনি allset, আপনার ব্যবহারকারী sudo ছাড়া এনপিএম কমান্ড চালাতে পারেন

আপনি এই লিঙ্কটি https://askubuntu.com/a/1115373/687804 এও উল্লেখ করতে পারেন


0

ম্যাক ওএস এক্সে, হোমব্রিউয়ের সাথে ইনস্টল করার সময়brew install npm , ইনস্টলেশন পথটি /usr/local/share/npm/উভয় bin/এবং lib/node_modules/সাবফোল্ডারগুলির সাথেই থাকে ।

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

sudo chown -R $USER ~/.npm /usr/local/share/npm/


1
আজকাল পরিবর্তে ব্যবহার করা এই প্রশ্নের আমার অন্যান্য উত্তরটি সুপারিশ করবে npm config
জোয়েল পুরারা

0

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

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

তারপরে এনপিএম ভাল কাজ করে!


0

জন পাপা এই ইস্যুটির পিছনে ইতিহাস এবং যুক্তিগুলিকে নির্দেশ করেছেন এবং একটি দৃ fix় সমাধান দিয়েছেন :

জন পাপের পদক্ষেপগুলি হ'ল:

  1. এনপিএম ছাড়াই নোড ইনস্টল করার জন্য ব্রু ব্যবহার করুন
  2. এনপিএম এবং নোডটি কোথায় প্যাকেজ ইনস্টল করতে ও সন্ধান করতে হবে তা জানতে আপনার .bash_profile / .bashrc আপডেট করুন
  3. নিজেকে আপডেট করার জন্য নোড এবং এনএমপি আপডেট করার জন্য ব্রিউ ব্যবহার করুন

আশা করি এটি কৌতূহলকে সহায়তা করবে!


0

এটিই আমি সমাধানটি ব্যবহার করেছি এবং কাজ করেছি। আমি 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


0

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

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
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.