使用linux的過程中,我們會熟悉各種指令,偶爾我們不禁會問,這些指令是怎麼實作的,學習他們其實是學習linux進階系統程式設計很快捷的方法。
這些指令的源碼肯定是存放在相應的包裡面,但是是哪些包呢?
發行版的包管理器為我們提供了很友善的指令接口,供我們查找我們指定指令所在的包
比如我們以最普通的uname指令來說明,
使用我們使用whereis或者which指令可以查找指令的絕對位置
通過rpm或者dpkg指令搜尋指令所屬的包資訊
下載下傳并安裝對應的源碼source包,即可得到源碼
怎麼檢視某個指令的源代碼
比如想檢視uname這個指令的源代碼
1
2
3
4
5
6
7
8
9
[問題1] 沒有yumdownloader 的話可以這樣子安裝
下載下傳了源碼包以後有兩種方法可以檢視到源碼包,
第一種方法
第二種方法:安裝源碼包
centos和rhel一般安裝後的源碼在/usr/src/redhat下的各個目錄下,但fedora是在~/rpmbuild/sources/
可以通過locate指令查詢代碼包被安裝到哪裡了
locate coreutils*tar
/home/workhard/tmp/coreutils-8.5.tar.xz
/home/workhard/rpmbuild/sources/coreutils-8.5.tar.xz
cd /home/workhard/rpmbuild/sources/c
安裝*.src.rpm後怎麼解除安裝
yumdownloader comes from the yum-utils package, if you don’t have that installed already.
yum install yum-utils
顧名思義,rpm2cpio是将rpm封包件轉換成cpio歸檔檔案
cpio - copy files to and from archives
與redhat系列的rpm包不同,ubuntu使用的是debian的deb包,是以搜尋和安裝的方式略有不同,但是思路是一樣的
找到想看源碼的指令屬于哪個包:
coreutils: /bin/cp
下載下傳源碼:
其實我們從上面的過程就可以看到,大多數的指令源碼都是在包coreutils中的,其他發行版直接下載下傳即可
<a href="http://ftp.gnu.org/gnu/coreutils/">http://ftp.gnu.org/gnu/coreutils/</a>
coreutils 是gnu下的一個軟體包,包含linux下的 ls等常用指令。這些指令的實作要依賴于shell程式。 gnu/coreutils 是一組類 unix 作業系統所需的基礎軟體包。它包含三組指令,常用的指令如 cat、ls、rm。
對于其他一些非标準的包,我們可以采用同樣的方法,因為這些指令必然我們安裝的包或者應用程式所自帶的,比如git
再比如top指令等,就位于procps包中
轉載:http://blog.csdn.net/gatieme/article/details/51353648