নোড-ডেভ ব্যবহার শুরু করার জন্য এনপিএমের অনুমতি কেন অস্বীকার করা হচ্ছে?


9

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

sudo su - nodejs ./start-apps.sh

শেল স্ক্রিপ্ট অ্যাপ্লিকেশনটি শুরু করতে এই আদেশটি চালায় runs

cd "/home/nodejs/my-app"
npm start

npm startএখানে নথিভুক্ত করা হয় । এটি মূলত প্যাকেজ.জসন ফাইলটি ব্যবহার করতে কমান্ডটি টানছে যা আমাদের অ্যাপ্লিকেশনটিতে এটির মতো দেখাচ্ছে:

// snip
"scripts": {
    "start": "node-dev app"
  },

এবং এটি ত্রুটিটি থুথু দেয়:

> my-app@0.1.0-build.100 start /home/nodejs/my-app
> node-dev app

sh: 1: node-dev: Permission denied

npm ERR! spicoli-authorization@0.1.0-build.100 start: `node-dev app`
npm ERR! Exit status 126

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

$ sudo find / ! \( -type d \) -name npm -exec ls -lah {} \;
-rwxr-xr-x 1 root root 274 Nov 12 20:22 /usr/local/src/node-v0.10.22/deps/npm/bin/npm
-rwxr-xr-x 1 root root 274 Nov 12 20:22 /usr/local/lib/node_modules/npm/bin/npm
lrwxrwxrwx 1 root root 38 Jan 14 07:49 /usr/local/bin/npm -> ../lib/node_modules/npm/bin/npm-cli.js

দেখে মনে হচ্ছে প্রত্যেকেরই এটি কার্যকর করা উচিত।

এর node-devমতো দেখতে অনুমতিগুলি :

$ sudo find / ! \( -type d \) -name node-dev -exec ls -lah {} \;
-rwxr-xr-x 1 nodejs nodejs 193 Mar  3  2013 /home/nodejs/.npm/node-dev/2.1.4/package/bin/node-dev
-rw-r--r-- 1 nodejs nodejs 193 Mar  3  2013 /home/nodejs/spicoli-authorization/node_modules/node-dev/bin/node-dev
lrwxrwxrwx 1 root root 24 Jan 14 07:50 /home/nodejs/spicoli-authorization/node_modules/.bin/node-dev -> ../node-dev/bin/node-dev

আমি ইতিমধ্যে chownলিঙ্কটি যুক্ত করার চেষ্টা করেছি nodejs:nodejs, তবে স্ক্রিপ্টটি একই ত্রুটিটি অনুভব করে।

বাইনারি ফাইলগুলি দিয়ে আমি দেখছি না এমন কিছু ফাইলের অনুমতিের সমস্যা আছে? বা এটি একটি npm/ node-devনির্দিষ্ট ত্রুটি?

উত্তর:


10

দ্বিতীয়টি node-devকার্যকরযোগ্য নয়, এবং সিমলিংক এটিতে নির্দেশ করে। যদিও সিমলিংক এক্সিকিউটেবল হয় (সিমলিঙ্কগুলি সর্বদা 777 থাকে) তবে এটি সেই ফাইলের মোড যা এটি গণনা করে; নোট করুন যে chmodলিঙ্কটিতে কল করা প্রকৃতপক্ষে যে ফাইলটির দিকে ইঙ্গিত করে সেটির মোড পরিবর্তন করে (সিমলিংক অনুমতিগুলি কখনই পরিবর্তন হয় না)।

সুতরাং আপনাকে সবার জন্য এক্সিকিউটেবল বিট যুক্ত করতে হবে:

chmod 755 /home/nodejs/spicoli-authorization/node_modules/.bin/node-dev

ওহ হ্যাঁ, আমি chmodএকটি সিমিলিঙ্ক তৈরি করে বেশি কিছু জানতাম না , আমি কেবল মালিকানা পরিবর্তনের চেষ্টা করেছি। আমি এখনই মৃত্যুদণ্ড কার্যকর করার চেষ্টা করব - আমি বিশ্বাস করতে পারি না যে আমি এটি মিস করেছি। আমার ধারণা আমি ভাবছিলাম যে আমার .npmডিরেক্টরিতে থাকা অনুলিপিটি নিশ্চিতভাবে কার্যকর করা হবে। আমি কীভাবে এটি চেক করব তা ভাবতে পারি নি, কারণ node-devবিশ্বজুড়ে এনপিএম ইনস্টল করা হয়নি, সুতরাং বাশ node-devআদেশটি স্বীকৃতি দেয় না ; এনপিএম কেবল কোথায় এবং কী কল করতে হবে তা যাদুকরিভাবে চিত্রিত করে।
প্যাট্রিক এম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.