আমি আমার অ্যাপ্লিকেশন স্থাপনার জন্য .sh স্ক্রিপ্টটি ব্যবহার করতে চাই। সেই স্ক্রিপ্টটি আমার হোম সার্ভারে রয়েছে (উবুন্টু 15.10 সার্ভার), এক্সিকিউটেবল হিসাবে চিহ্নিত। এই স্ক্রিপ্ট অ্যাক্সেস ssh এর মাধ্যমে সম্পন্ন হয়, এই টিউটোরিয়ালটি ব্যবহার করে , আমি ssh লগইন সেট আপ করেছি, এটি সেই স্ক্রিপ্টটি চালায়। সুতরাং মূলত আমি কেবল কল করি ssh deployer@XXX.com someArguments
এবং এটি আমার স্ক্রিপ্টটি someArguments
পরামিতি হিসাবে চালায় । ব্যবহারকারীর deployer
uid = 0 রয়েছে, সুতরাং এটির মূলত root
(এটি ভবিষ্যতে পরিবর্তিত হবে, আমি এটি ঠিকমত কাজ না করা পর্যন্ত অনুমতি সংক্রান্ত সমস্যাগুলি দূর করার জন্য সেট করেছি)।
জিনিসগুলি কৃপণ হয়ে ওঠে এখানে। স্ক্রিপ্টটি /usr/bin/env: php: No such file or directory
কমান্ডে রিপোর্ট করে /bin/composer install
( রচয়িতা ব্যবহার করে )। বিষয়গুলি আরও অদ্ভুত যে আমি এই স্ক্রিপ্টটিতে দেখছি। এই লাইনের আগে, সেখানেও ডাকা হয় /bin/composer self-update
এবং /bin/composer -V
, যা উভয়ই সঠিকভাবে চালায় এবং সঠিক আউটপুট প্রদর্শন করে।
আমি নিম্নলিখিত জিনিসগুলি যাচাই করেছি:
/usr/bin/env php -v
সঠিক পিএইচপি সংস্করণ প্রদর্শন করে (একই/usr/bin/php -v
)whereis php
প্রদর্শনphp: /usr/bin/php /usr/local/bin/php /usr/share/man/man1/php.1.gz
php5-cli
প্যাকেজ ইনস্টল করা হয়েছে এবং নতুন সংস্করণ$PATH
রয়েছে/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
which env
প্রদর্শন/usr/bin/env
আমি নিম্নলিখিত বিষয়গুলি চেষ্টা করে দেখেছি:
- স্ক্রিপ্টটি সরাসরি
bash deploy.sh
মূলের নীচে চালানো (যেহেতু এটি সেই ব্যবহারকারীর মতো) - ত্রুটি ছাড়াই পুরোপুরি কাজ করে - সরাসরি ব্যর্থ কমান্ড চলমান - ত্রুটি ছাড়াই নিখুঁত
সুতরাং এটি আমার কাছে খুব সুনির্দিষ্ট ক্ষেত্রে মনে হচ্ছে কেন এই আদেশটি কাজ করে না। আমি এটি ডিবাগ করার 12 ঘন্টা ব্যয় করেছি এবং আমি এখানে ধারণার বাইরে।
পিএস: অনুরূপ ত্রুটি ( /usr/bin/env: node: No such file or directory
) ঘটে যখন সেখানে bower install
( বোভার ব্যবহার করে ) হয় তবে চলার সময় নয়npm install
( এনপিএম ব্যবহার করে )।
sh deploy
এবং bash deploy
উভয়ই একই ফলাফল দেয়
/usr/bin/env > environment.txt
sh deploy
পরিবর্তেbash deploy
(সম্ভবত কিছু বাশিজম) চালান । আপনি কীভাবে " নিম্নলিখিত বিষয়গুলি " পরীক্ষা করেছেন ? আমি তাদের স্ক্রিপ্টে পরীক্ষা করার পরামর্শ দিচ্ছি, যাতে আপনি অন্তর্ভুক্তকারীদের উপরের ওভাররাইড এবং স্যানিটেশনগুলি আবিষ্কার করতে পারেন।