নেটখাতা

October 24, 2007

রাইজার ফাইলসিস্টেম ও বাইনারি চালানোর অধিকার

নেটখাতার এই পাতাটার নাম দেওয়াই যেত এমপ্লেয়ার কেলেঙ্কারি। এমপ্লেয়ারের সঙ্গে এত কেলেঙ্কারি জড়িত। কোনও ডিস্ট্রোর এমপ্লেয়ারের ভার্শন অমুক, কোনওটার তমুক, কিন্তু সর্বাধুনিক ভার্শনটা তো চাইই চাই। নইলে জীবনের আর অর্থ কী, অাধুনিকতম এমপ্লেয়ার ব্যতিরেকে। এবং তার সবচেয়ে প্রশস্ত পথ তো কম্পাইল করে নেওয়া। আমার যতদূর মনে পড়ছে, ৯৯ বা ২০০০-এ, ম্যানড্রেক ছয় বা সাতে, আমার কম্পাইল করার হাতেখড়ি এই এমপ্লেয়ার দিয়েই। তথাগত আমায় বুদ্ধি দিয়েছিল, সিনেমা দেখো, আর তোমার এমপ্লেয়ার নেই? আমি উইনডোজে কোনওদিন সিনেমা দেখিওনি। একটা ৪৮৬ মেশিন ছিল, তাতে উইনডোজ ৯৫ চলত, আর ওয়ার্ড ৯৭, যখন আমি লিনাক্সে এলাম। প্রথমবার ./configure && make && make install চালিয়ে সে যে কী ফূর্তি। যেন আমি রিচার্ড স্টলম্যান কি এরিক রেমন্ডস হয়েই গেলাম, আর ঠেহায় কেডা। আর কম্পাইল করেছিলাম জিটাইপিস্ট। তারপর থেকে যত যত মেশিনে আমি যখনই ইনস্টল করেছি লিনাক্স, কম মেশিনে তো করিনি, শ দুয়েক তো হবে বলেই মনে হয়, এমপ্লেয়ার আর জিটাইপিস্ট দিতামই। পারতপক্ষে কম্পাইল করে। সুজেতে অবশ্য জিটাইপিস্ট কম্পাইল করতে খুব ঝঞ্ঝাট হত সেসময়। কার্সেস লাইব্রেরিগুলো থাকত অন্য জায়গায়। যেদিন, নিজে নিজেই খুঁজে পেয়েছিলাম তার উপায়টা, জিটাইপিস্টের টারবলটা খুলে তার ভিতর .c ফাইলগুলো খুলে সেগুলোয় curses.h আর ncurses.h ফাইলদুটোর ঠিকানাটাই বদলে দেওয়া, সত্যি, কী যে আনন্দ পেয়েছিলাম। যখন লোককে দেখি কম্পিউটার রয়েছে, ইনস্টল করার মত এত এত লিনাক্স রয়েছে, অথচ এই এত সহজলভ্য আনন্দটা পায়না, বেশ খারাপ লাগে।

যাইহোক, যে কথা বলছিলাম, ফেডোরায় এমপ্লেয়ার ইনস্টল করা। এরকম ঘুরপথ কুপথ হবেই। একে মাস্টারি করি, তিন পুরুষের মাস্টার, তায় বয়স তো মেঘে মেঘে কম হলনা, এখন আর সময়ের হিসাবগুলো বছরে না, দশকে করি।

তা, ফেডোরায় এমপ্লেয়ার কম্পাইল করার আগে থেকেই আমার ব্যথাটা শুরু। আমার গোটা সিস্টেমটা যে ঘেঁটে গেছিল, নেটখাতায় আগেই যেটা লিখেছি, একইসঙ্গে লিভনা আর ফ্রেশআরপিএম থেকে প্রিকম্পাইল্ড বাইনারি ইনস্টল করে, সেটা ঘটেছিল এই এমপ্লেয়ার থেকেই। তাই, সিস্টেমকে প্রথম খোপে ফেরত আনার পর, এবার ঠিক করলাম, কম্পাইল করে নেব। আগেই দেখেছিলাম, ফেডোরা মেইলিং লিস্টে একটা আলোচনা-সূত্র চলছে এই ‘mplayer without libmp3lame support’ নিয়ে। সেখানে সমস্যাটা হল একজন জানিয়েছিল, তার মেনকোডার ‘-oac mp3lame’ এই অপশানটা নিচ্ছে না। সেখান থেকে আলোচনার শুরু।

আমি কম্পাইল করতে গিয়ে যে সমস্যাটার সামনে পড়লাম, সেটা অত্যন্ত বিদঘুটে। এরকম কোনও কিছু আমি কখনো দেখিনি। আমি একদম সাম্প্রতিক এমপ্লেয়ার মানে MPlayer-1.0rc2.tar.bz2 এবং তার সঙ্গে কোডেকের জন্যে essential-20071007.tar.bz2 নামিয়ে নিলাম। এদের আনটার করে, বিজিপটু খুলে যা যা করার সেগুলো করে, যেই আনটার করা MPlayer-1.0rc2 ডিরেক্টরিতে গিয়ে ./configure চালালাম, পেলাম একটা বিচিত্র মেসেজ, পারমিশন ডিনায়েড। এর মানে কী? আমি মেলিং লিস্টের ওই আলোনাতেও জানালাম।

প্রথম সমস্যা এই যে, ./configure চলছিল না। আমার সন্দেহ হল, এই configure স্ক্রিপ্টটায় কোন গড়বড় নেই তো? পেলাম না কিছু। আবার sh এবং bash ঠিক জায়গায় ঠিক আকারেই আছে। আমার বোধবুদ্ধিতে তাদের ঠিকঠাকই লাগছিল। তখন ’sh ./configure’ করে চালালাম, এবং চলল। লে গঙ্গা, এর মানে কী? ঠিক চলল তো? বোঝার জন্যে config.h পড়ে দেখলাম, হ্যাঁ, ঠিকই আছে। আগেই লেম কম্পাইল করে নিয়েছি, সেই ঠিক লেম, lame.h, ঠিক জায়গাতেই পেয়েছে।

এবার make চালানোর কথা। চালালাম, এবং, চলল না। এবং তার সঙ্গে একটা বিচিত্র ত্রুটিজ্ঞাপন। পুরোটাই তুলে দিই। আমি এটা রুট হয়ে চালাচ্ছিলাম। কারণ, এর আগে ইউজার হয়ে চালাতে পারিনি। কী জানি, কী থেকে আসছে সমস্যাটা এই জন্যে এই গোটা সময়টাই আমি রুট হয়ে রয়েছি।

[root@mamdo MPlayer-1.0rc2]# make
./version.sh `cc -dumpversion`
/bin/sh: ./version.sh: Permission denied
make: *** [version.h] Error 126
[root@mamdo MPlayer-1.0rc2]#

অর্থাৎ, version.h ফাইলটা চালাতে পারছে না, অনুমতি নেই বলে। ওই ডিরেক্টরিতেই version.h ফাইলটা খুলে দেখলাম, বস্তুটা কী।

#!/bin/sh
echo "#define VERSION \"1.0rc2-$1\"" > version.h
echo "#define MP_TITLE \"MPlayer 1.0rc2-$1 (C) 2000-2007 MPlayer Team\""

মানে, ভার্শনের স্ট্রিংটা তুলে নেওয়ার জন্যে। বেশ, আগের একই কায়দায়, সরাসরি version.sh যখন চলছে না, আমি আগের কায়দাতেই, ’sh ./version.sh’ করে চালালাম। তৈরী হয়ে গেল version.h নামের হেডার। এরপর আবার যেই make চালালাম, সে চলল। চলেই থেমে গেল। এবার ত্রুটিসংবাদটা এরকম:

/bin/sh: ./codec-cfg: Permission denied
make: *** [codecs.conf.h] Error 126

অর্থাৎ, আবার সেই স্ক্রিপ্ট চালানোর সমস্যা। এবার স্ক্রিপ্টটা হল codec-cfg যা কোডেকগুলো কনফিগার করার কথা। আমি মেইলিং লিস্টে এই পুরোটা জানালাম, এবার আমার কী করার এই প্রশ্ন নিয়ে।

Is this some peculiarity of this version of 'sh' in F7, or, some silly error I am doing?

এই মেলটা দুপুরে পাঠিয়ে আমি কলেজ চলে গেছিলাম। তখন সঙ্কর্ষণকেও পাঠিয়েছিলাম। ওর মাথায় এসেছিল এটা সেলিনাক্সের সমস্যা হতে পারে, কিন্তু তার আগেই আমি সেলিনাক্স অফ করে নিয়েছি, ওই একই সম্ভাবনা মাথায় আসায়। কলেজ থেকে ফিরতে আমার রাত দশটা বেজে যায়। ফিরে এসে দেখলাম, একটা মেল এসেছে ওই চিঠির উত্তরে, যাতে কার্ল লারসেন বলে একজন লিখেছে, কেন, VLC ইনস্টল করে নিলেই তো হয়, এমপ্লেয়ারে সমস্যা যখন। কী জঘণ্য। অনেকটা সেই পাউরুটি না খেয়ে কেক খাওয়ার সমাধানের মত। তার উত্তর দিলাম, রাত্তির ১০:৪৫-এ, কিন্তু VLC দিয়ে এনকোড করা যায় কি? আর তার চেয়েও বড় কথা, এটা হচ্ছে না কেন তাও তো ছাই বোঝা যাচ্ছে না।

১০:৫৮-তে মরিয়াট এম বলে একজন একটা মেল করল, আমি ঠিক ভাবে আনটার করেছি কিনা, ফাইলগুলো কোরাপ্ট ছিল কিনা, পার্টিশনটায় কোনও ভৌত গন্ডগোল আছে কিনা, আমি fsck করে দেখে নিয়েছি কিনা, ইত্যাদি। আমি নিশ্চিত ছিলাম যে, এগুলো কারণ নয়। তবু, বলার পর, আমি নতুন করে একবার এমপ্লেয়ার সাইট থেকে ফাইলদুটো নামালাম। fsck করে দেখেও নিলাম একবার পার্টিশনটা। সেটা ফের লিস্টে জানালাম।

অনেক চিঠি আসতে শুরু করল। রাত ১১:৪০-এ কেভিন জে কামিংস জানতে চাইল, configure স্ক্রিপ্টটায় একজিকিউটেবল বিট ‘x’ লাগানো আছে কিনা, অর্থাৎ চালানোর রাইট দেওয়া আছে কিনা। আমি একটু আহত হয়েই উত্তর দিলাম, ১১:৫৫-এ, আমি কি সেটা পরখ না-করেই অন্যদের জ্বালাচ্ছি। ওই চিঠির শেষের দিকে কেভিন কামিংস লিখেছিল, কিছু একটা কারণে স্ক্রিপ্ট বা বাইনারিগুলোর চালানোর অনুমতি নষ্ট হয়ে যাচ্ছে। মজার কথা, এর মধ্যেই ঠিক ইঙ্গিতটা ছিল, যেটা আমি পাইনি, কিন্তু অ্যান্ডি গ্রিন পেয়েছিল।

এরপর, এই আলোচনার চিঠি দেওয়া নেওয়া চলল রাত ০১:৩৯ অব্দি। মূলতঃ অ্যান্ডি গ্রিনের সহযোগিতায় যেটা শেষ অব্দি আবিষ্কার করা গেল সেটা বেশ মজার। এই ঘটনাটা ঘটছিল একটা রাইজার ফাইলসিস্টেম পার্টিশনে (এর মধ্যে এমন চিঠিও এসেছিল, রাইজার রাখার দরকার কী বাপু, রাইজার যার বানানো সেই রাইজার তো এখন জেলে, ইত্যাদি, ইত্যাদি)। সেই পার্টিশনের মাউন্ট যাতে ইউজার হিসাবে আমি করতে পারি, তাই আমার /etc/fstab ফাইলে আমি অপশন দিয়ে রাখি, ‘noatime,noauto,user’, noatime টা হল দ্রুত মাউন্ট করে নেওয়ার জন্যে, অ্যাকসেস টাইম দিয়ে ছাই অত কী হবে একটা একা-একলা মেশিনে, noauto যাতে সিস্টেম নিজে মাউন্ট না-করে, ও তো ডিফল্টে করবে, রুট হয়ে ছাড়া কাজ করা যাবেনা কিছু, আর user হল যাতে একজন ব্যবহারকারী পার্টিশনটা মাউন্ট করতে পারে। কিন্তু কেলেঙ্কারিটা হচ্ছে এখানেই, user মাইন্টেবল হলেই সিস্টেম তার সঙ্গে একটা লেজুড় যোগ করে দিচ্ছে: noexec, এতে কোন চালনীয় মানে একজিকিউটেবল ফাইলই আর চালানো যাচ্ছে না।

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

I learned a lot in the last two hours. Thanks to the list.

ঠিক এটাই বলার আমার, ফেডোরায় এসে, ফেডোরার বেশ সিরিয়াস এই মেলিং লিস্টে, অনেকদিন বাদে আবার বেশ গ্নু-লিনাক্সীর অনুভূতি জাগছে।

Filed under: গ্নু-লিনাক্স — dd @ 10:53 am

4 Comments »

  1. কি হল ? আর ব্লগ করছ না কেন ?

    Comment by সঙ্কর্ষণ — November 6, 2007 @ 8:54 pm

  2. ওরে বললেই কী আর হয় ব্লগ করা, বুড়োমানুষদের? মেয়ের জ্বর চলছিল। তারপর টানা তিনদিন ধরে ব্রডব্যান্ড ডাউন। সেদিন তুই কী একটা আমায় বললি চ্যাটে, তখন ভীষণ তাড়ায় রয়েছি, ভাবলাম পরে কথা বলব, আর হল’ই না। তবে একটু সময় পেলেই আমি এই ফেডোরাতেই রেপোজিটরি করার অভিজ্ঞতা, সেই সূত্রে সুস্মিতের স্ক্রিপ্ট আর ওদিকে ক্লজ-মেইল নিয়ে একটা ব্লগ করব।

    Comment by dd — November 8, 2007 @ 3:45 am

  3. বটে। এখন কেমন আছে ? সকালে ফোন করেছিলাম, ছিলে না বোধকরি, অচেনা গলা ছিল ফোনে

    Comment by সঙ্কর্ষণ — November 10, 2007 @ 7:27 am

  4. কি হল গো অনেকদিন কোন লেখা নেই ?

    Comment by সঙ্কর্ষণ — November 25, 2007 @ 10:58 pm

RSS feed for comments on this post. TrackBack URI

Leave a comment

Powered by WordPress