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


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.