কমান্ডের উত্স কোডটি আমি কীভাবে দেখতে পারি? [বন্ধ]


13

আমি হঠাৎ করেই সিদ্ধান্ত নিয়েছি আমি 'ইকো' এর উত্স কোডটি দেখতে চাই

$ which echo
/usr/bin/echo

সুতরাং

$ ls -al /usr/bin/echo
-rwxr-xr-x. 1 root root 32536 Oct 31  2016 /usr/bin/echo

সুতরাং

$strings /usr/bin/echo

আমাকে বিশ্বাস করতে পরিচালিত করে এটি একটি সংকলিত সি প্রোগ্রাম

এখন আমি আটকে আছি।

আমি কিভাবে করবো:

  1. এটি কোন প্যাকেজে রয়েছে তা সন্ধান করুন

  2. উত্স পান

  3. এটি পুনর্নির্মাণ

  4. এটা পরীক্ষা করো

  5. নতুন সংস্করণ সিস্টেম-ভিত্তিক ইনস্টল করুন

(আমি জানি যে 5 টি ভাল ধারণা নয়, আমি কেবল কৌতুহলী ...)

আমি বর্তমানে ফেডোরায় আছি, তবে আমি দেবিয়ানর উত্তরগুলিতেও আগ্রহী

একটি প্রাসঙ্গিক টিউটোরিয়াল একটি লিঙ্ক একটি ভাল উত্তর হবে।


সম্পাদনা:

$ type -a echo
echo is a shell builtin
echo is /usr/bin/echo

সুতরাং আমি অনুমান করি যে এটি /usr/bin/echoসম্পূর্ণরূপে পড়ার চেয়ে বরং দেখতে চাই bash।


2
type -a echoপ্রথমে চেষ্টা করুন ।
— স্যাটাস কাতসুর

1
টাইপ -a প্রতিধ্বনি; প্রতিধ্বনি একটি শেল অন্তর্নির্মিত; প্রতিধ্বনি / ইউএসআর / বিন / প্রতিধ্বনি; সুতরাং আমি অনুমান করি যে সমস্ত বাশ পড়ার চেয়ে আমি / usr / bin / প্রতিধ্বনি দেখতে চাই!
— জন লরেন্স অ্যাসপডেন

2
/usr/bin/echo --versionপরবর্তী চেষ্টা করুন ।
— সাটস কাতসুরা


2
... এবং এটি আপনি যা চেয়েছিলেন তার চেয়ে খুব আলাদা প্রশ্ন।
— সাটস কাতসুরা

উত্তর:


13

RHEL / ফেডোরা

চালান rpm -qf /path

$ rpm -qf /usr/bin/echo
coreutils-8.25-17.fc25.x86_64

উত্স প্যাকেজ ডাউনলোড করুন ( yumআরএইচইএল এর জন্য ব্যবহার করুন ):

$ dnf download coreutils --enablerepo="*source"

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

$ rpmbuild -rp coreutils-8.25-17.fc25.src.rpm
$ cd ~/rpmbuild/BUILD/coreutils-8.25/
$ find src -iname '*echo*'
src/echo.c

আপনি প্যাকেজটি ব্যবহার করে পুনর্নির্মাণ করতে পারবেন rpmbuild --rebuild coreutils-8.25-17.fc25.src.rpm, যা আপনার সিস্টেমে সরাসরি ইনস্টল করতে পারবেন এমন RPM তৈরি করবে।

যদি আপনাকে ফেডোরা প্যাকেজগুলির জন্য কিছু পরিবর্তন করার প্রয়োজন হয় তবে রক্ষণাবেক্ষণকারী পদ্ধতিতে যাওয়া আরও সহজ: ইনস্টল করুন fedpkg, সংগ্রহস্থলটি ক্লোন করুন , পরিবর্তনগুলি করুন (প্যাচগুলি ব্যবহার করে) এবং প্যাকেজটি পুনর্নির্মাণের মাধ্যমে পুনরায় নির্মাণ করুন:

$ sudo dnf install fedpkg
$ fedpkg clone coreutils
$ cd coreutils
$ # do the modifications
$ fedpkg local

15

ডেবিয়ান (এবং ডেরিভেটিভস)

চালান dpkg -S /pathযা দেখতে প্যাকেজ /pathজন্যে:

$ dpkg -S /bin/echo
coreutils: /bin/echo

উত্স পান (আমি উবুন্টুতে আছি):

$ apt-get source coreutils
Reading package lists... Done
Need to get 5,755 kB of source archives.
Get:1 http://jp.archive.ubuntu.com/ubuntu xenial/main coreutils 8.25-2ubuntu2 (dsc) [2,071 B]
Get:2 http://jp.archive.ubuntu.com/ubuntu xenial/main coreutils 8.25-2ubuntu2 (tar) [5,725 kB]
Get:3 http://jp.archive.ubuntu.com/ubuntu xenial/main coreutils 8.25-2ubuntu2 (diff) [28.0 kB]
Fetched 5,755 kB in 3s (1,758 kB/s)
gpgv: Signature made 2016年02月18日 22時28分36秒 JST using RSA key ID 73F3F233
gpgv: Can't check signature: public key not found
dpkg-source: warning: failed to verify signature on ./coreutils_8.25-2ubuntu2.dsc
dpkg-source: info: extracting coreutils in coreutils-8.25
dpkg-source: info: unpacking coreutils_8.25.orig.tar.xz
dpkg-source: info: unpacking coreutils_8.25-2ubuntu2.debian.tar.xz
dpkg-source: info: applying no_ls_quoting.patch
dpkg-source: info: applying 61_whoips.patch
dpkg-source: info: applying 63_dd-appenderrors.patch
dpkg-source: info: applying 72_id_checkngroups.patch
dpkg-source: info: applying 80_fedora_sysinfo.patch
dpkg-source: info: applying 85_timer_settime.patch
dpkg-source: info: applying 99_kfbsd_fstat_patch.patch
dpkg-source: info: applying 99_hppa_longlong.patch
dpkg-source: info: applying 99_float_endian_detection.patch

ফাইলটি সন্ধান করুন:

$ cd coreutils-8.5 
$ find src -iname '*echo*'
src/echo.c

বাকিটা আপনার উপর.


অনেক ধন্যবাদ. আমি মনে করি যে আরএইচইএল / ফেডোরা আমাকে গ্রহণযোগ্য উত্তরটি দেওয়া উচিত, যেহেতু আমি এ সম্পর্কে জিজ্ঞাসা করেছি না। তবে প্রধানত আমি ডেবিয়ান ব্যবহার করি, সুতরাং আপনার সম্ভবত আমার দৃষ্টিকোণ থেকে পছন্দসই! একটি লজ্জা আমি উভয় গ্রহণ করতে পারি না।
— জন লরেন্স অ্যাসপডেন

উত্তরটি সঠিক, তবে অতিরিক্ত হিসাবে কেউ প্রায়শই প্রবাহের উত্সটি দেখতে চাইতে পারে (যেমন তাদের নতুন পরিবর্তনগুলি এখনও ডিজ্রোতে নেই কিনা)। সেই কলটি করতে dpkg -s coreutils(বা আপনার যে আগ্রহের প্যাকেজ রয়েছে) এবং এর জন্য সন্ধান করুন Homepage:। হোমপৃষ্ঠা থেকে আপনি সাধারণত তাদের উত্স কোড এবং সম্পূর্ণ সংস্করণ ইতিহাসে পড়ার অ্যাক্সেস পেতে পারেন।
— উয়ে জিউডার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.