色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

如何獲取linux下命令源碼

錢瀠龍2年前11瀏覽0評論

如何獲取linux下命令源碼?

命令的源碼是一個軟件包為單元的,放在一個軟件包的源碼中。若要下載一個命令的源碼,就要把這個命令所屬的軟件包的源碼都下載下來。命令的源碼就在下載的源碼的相關文件夾內。一般是src文件夾,對應的主文件名稱為cmd.c,當中cmd為詳細的命令,如ls命令的主程序文件為ls.c。

因為在不同的Linux發行版上。源碼的獲取方法并不同樣。所以以下以Ubuntu和CentOS這兩種經常使用的Linux發行版為樣例進行說明。

1、Ubuntu中系統命令源碼的獲取方法

以32位Ubuntu14.04下,獲取ls命令的源碼為例,能夠使用例如以下的方法下載源碼:

1)使用which命令查看ls命令的位置,例如以下:

which ls # 輸出:/bin/ls

2)使用dpkg命令查詢ls命令所屬的包。例如以下:

dpkg -S /bin/ls # 輸出:coreutils: /bin/ls

3)使用apt-get命令來下載ls命令所在的包的源碼。例如以下:

apt-get source coreutils

注:

1)在使用dpkg時。若出現錯誤。能夠使用sudo命令使其以root權限運行。

2)使用apt-get source下載的源碼保存到當前文件夾下。

。此外,當我們知道了命令所屬的包后,也能夠到對應的官方站點下載。

2、CentOS中系統命令源碼的獲取方法

以32位CentOS6.6下,獲取ls命令的源碼為例,能夠使用例如以下的方法下載源碼:

1)配置源碼的源

在CentOS中,源的配置文件為:/etc/yum.repos.d/CentOS-Base.repo,改動該文件須要root權限。

打開該文件,查看該文件的內容,在本人的機子上,該文件的內容例如以下:

# CentOS-Base.repo

#

# The mirror system uses the connecting IP address of the client and the

# update status of each mirror to pick mirrors that are updated to and

# geographically close to the client. You should use this for CentOS updates

# unless you are manually picking other mirrors.

#

# If the mirrorlist= does not work for you, as a fall back you can try the

# remarked out baseurl= line instead.

#

#

[base]

name=CentOS-$releasever - Base

mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os

#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#released updates

[updates]

name=CentOS-$releasever - Updates

mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates

#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#additional packages that may be useful

[extras]

name=CentOS-$releasever - Extras

mirrorlist=http://mirrorlist.centos.org/?

release=$releasever&arch=$basearch&repo=extras

#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#additional packages that extend functionality of existing packages

[centosplus]

name=CentOS-$releasever - Plus

mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus

#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/

gpgcheck=1

enabled=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#contrib - packages by Centos Users

[contrib]

name=CentOS-$releasever - Contrib

mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib

#baseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/

gpgcheck=1

enabled=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

該文件里有兩個變量:releasever和basearch。分別表示release版本號和分支,如本人的機子上,這兩個值分別為6和i386。注意。releasever并不會細分為次級版本號。即不會是6.6之類的。

從該文件的內容能夠知道,該文件共同擁有5個節。也就是說本人的機子的軟件來源有5處,分別為base、updates、extras、centosplus和contrib。所以僅僅須要為例如以下的5處軟件源指定其源碼的源就可以。在文件的末尾加上例如以下的內容:

[base-src]

name=CentOS-$releasever - Base src

baseurl=http://vault.centos.org/6.6/os/Source/

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

[updates-src]

name=CentOS-$releasever - Updates src-centos

baseurl=http://vault.centos.org/6.6/updates/Source/

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

[extras-src]

name=CentOS-$releasever - Extras src-centos

baseurl=http://vault.centos.org/6.6/extras/Source/

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

[centosplus-src]

name=CentOS-$releasever - Plus src-centos

baseurl=http://vault.centos.org/6.6/centosplus/Source/

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

[contrib-src]

name=CentOS-$releasever - Contrib src-centos

baseurl=http://vault.centos.org/6.6/contrib/Soruce/

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

因為不同的版本號設置會有所不同,所以其設置會有所不同,方法可總結為例如以下:

(1)gpgkey與該文件里已有的節的gpgkey同樣

(2)為了確認文件的存在和情況,能夠打開站點http://vault.centos.org/查看詳細的情況,再依據詳細的情況來填寫

(3)設置baseurl時須要依據自己的系統的版本號來設置,如本人的機子為CentOS-6.6,則在設置時,相關的參數就設置為6.6。即http://vault.centos.org/后接的子路徑為6.6。

該文件的作用是為yum其及相關工作的下載提供一個源。如在使用yumdownloader(以下會講到)下載源碼時。會發生例如以下動作:

(1)下載$baseurl/repodata/repomd.xml文件。若該repomd.xml文件比系統中的新。更新系統中的對應的repomd.xml

(2)下載$baseurl/SPackages/中的對應的源碼rpm包。

2)使用which命令查看ls命令的位置,例如以下:

which ls

# 輸出:/bin/ls

3)使用rpm命令查詢ls命令所屬的包,例如以下:

rpm -qf /bin/ls

# 輸出:coreutils-8.4-37.el6.i686

4)yumdownloader是一個從RPM源下載RPM的程序,能夠使用yumdownloader命令安裝源碼。例如以下:

yumdownloader --source coreutils-8.4-37.el6.i686

注:

(1)若yumdownloader命令沒有安裝,則能夠使用此命令安裝:yum install yum-utils。

(2)下載的文件在當前文件夾下。能夠使用參數--destdir指定下載到哪一個文件夾。

5)使用yumdownloader下載到的是一個安裝包文件rpm,能夠使用例如以下的命令查詢rpm中的tar文件:

rpm -qpl coreutils-8.4-37.el6.src.rpm | grep tar

# 輸出:coreutils-8.4.tar.xz

6)使用rpm2cpio命令將rpm包文件轉換成cpio歸檔文件,再使用cpio命令,從cpio歸檔文件復制提取出一個歸檔文件。出例如以下:

rpm2cpio coreutils-8.4-37.el6.src.rpm | cpio -idv coreutils-8.4.tar.xz

# 輸出:

# coreutils-8.4.tar.xz

# 9561 blocks

cpio的man解釋為:cpio copies files into an archive

-i:與--extract等同。提取之意

-d:與--make-directories等同,當有須要時創建一個載入文件夾

-v:列出文件的處理過程

7)使用tar命令對coreutils-8.4.tar.xz壓縮包進行解壓縮,例如以下:

tar -xvf ./coreutils-8.4.tar.xz

至此,命令的源碼獲取完畢。

java url 截取,如何獲取linux下命令源碼