linux应用程序逆向,Linux下查看并下载命令源码包(根据命令/应用程序逆向获取并且安装其所属源码包)...
使用linux的過程中,我們會熟悉各種命令,偶爾我們不禁會問,這些命令是怎么實現的,學習他們其實是學習linux高級系統編程很快捷的方法。
這些命令的源碼肯定是存放在相應的包里面,但是是哪些包呢?
發行版的包管理器為我們提供了很方便的命令接口,供我們查找我們指定命令所在的包
比如我們以最普通的uname命令來說明,
使用我們使用whereis或者which命令可以查找命令的絕對位置
通過rpm或者dpkg命令搜索命令所屬的包信息
下載并安裝對應的源碼source包,即可得到源碼
CentOS等rpm包管理器
搜索斌下載命令所屬包
怎么查看某個命令的源代碼
比如想查看uname這個命令的源代碼
## 查看命令
which uname
## /bin/uname
##查看命令所屬的包
rpm -qf /bin/uname
##下載對應的xxx.src.rpm源碼包
yumdownloader --source coreutils-版本號
[問題1]
沒有yumdownloader 的話可以這樣子安裝
yum install yum-utils
[問題2]
如果提示No Match for argument coreutil-5.97-23.el5_4.2
說明源中可能沒有這個包,那么我們只能手動下載
注意
我們需要的是源碼包,因此下載的應該是xxx.src.rpm的包。
安裝或則解壓源碼包得到源碼
下載了源碼包以后有兩種方法可以查看到源碼包,
第一種方法
rpm -qpl coreutils-8.5-7.fc14.src.rpm | grep tar ##查詢rpm中的tar文件,源碼一般放在這里
##從rpm包中提取指定的文件
rpm2cpio coreutils-8.5-7.fc14.src.rpm | cpio -idv coreutils-8.5.tar.xz
tar xjvf coreutils-8.5.tar.xz
##到解壓出來的coreutils-8.5/src/中就能找到相關的源碼了
第二種方法:安裝源碼包
rpm -i coreutils-8.5-7.fc14.src.rpm ##安裝源碼包
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
tar Jxvf coreutils-8.5.tar.xz
cd coreutils-8.5/src/
ll uname*
安裝*.src.rpm后怎么卸載
cd /home/gatieme/rpmbuild/SOURCES
rpmbuild --rmsource --rmspec coreutils.spec
相關說明
yumdownloader
yumdownloader comes from the yum-utils package, if you don’t have that installed already.
yum install yum-utils
RPM用法
rpm {-i|--install} [install-options] PACKAGE_FILE ...
-f, --file FILE
Query package owning FILE.
-p, --package PACKAGE_FILE
Query an (uninstalled) package PACKAGE_FILE.
-l, --list
List files in package.
-qf:查找指定文件屬于哪個RPM軟件包
-qpl:列出RPM軟件包內的文件信息;
rpm2cpio
Extract cpio archive from RPM Package Manager (RPM) package.
顧名思義,rpm2cpio是將rpm包文件轉換成cpio歸檔文件
CPIO用法
cpio - copy files to and from archives
-i 抽取的意思,和"--extract"等同-d 建立目錄,和"--make-directories"等同-v 冗余信息輸出,和"--verbose"等同
rpmbuild用法
--rmsource
Remove the sources after the build
--rmspec
Remove the spec file after the build
Ubuntu等deb包
與RedHat系列的rpm包不同,Ubuntu使用的是Debian的deb包,因此搜索和安裝的方式略有不同,但是思路是一樣的
找到想看源碼的命令屬于哪個包:
dpkg -S `which cp`
coreutils: /bin/cp
下載源碼:
apt-get -d source "coreutils"
其他發行版
其實我們從上面的過程就可以看到,大多數的命令源碼都是在包coreutils中的,其他發行版直接下載即可
coreutils 是GNU下的一個軟件包,包含linux下的 ls等常用命令。這些命令的實現要依賴于shell程序。
GNU/CoreUtils 是一組類 Unix 操作系統所需的基礎軟件包。它包含三組命令,常用的命令如 cat、ls、rm。
對于其他一些非標準的包,我們可以采用同樣的方法,因為這些命令必然我們安裝的包或者應用程序所自帶的,比如git
再比如top命令等,就位于procps包中
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的linux应用程序逆向,Linux下查看并下载命令源码包(根据命令/应用程序逆向获取并且安装其所属源码包)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言二维数组对每一列排序,二维数组对每
- 下一篇: emqx配置mysql认证,emqx使用