Maison  >  Article  >  Tutoriel système  >  Comment obtenir le code source des commandes dans le système CentOS

Comment obtenir le code source des commandes dans le système CentOS

王林
王林avant
2024-01-11 19:12:17863parcourir

Prenons comme exemple le code source de la commande ls sous CentOS6.6 32 bits. Vous pouvez utiliser la méthode suivante pour télécharger le code source :

.

1) Configurer la source du code source

Dans CentOS, le fichier de configuration source est : /etc/yum.repos.d/CentOS-Base.repo La modification de ce fichier nécessite les autorisations root.

Ouvrez le fichier et affichez le contenu du fichier Sur ma machine, le contenu du fichier est le suivant :

# 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

Il y a deux variables dans ce fichier : releasever et basearch, qui représentent respectivement la version release et la branche. Par exemple, sur ma machine, ces deux valeurs​​sont respectivement 6 et i386. Notez que la version release ne sera pas subdivisée en versions mineures, c'est-à-dire qu'elle ne sera pas 6.6 ou similaire.

D'après le contenu du fichier, on peut savoir que le fichier comporte 5 sections au total, ce qui signifie que ma machine dispose de 5 sources logicielles, à savoir base, mises à jour, extras, centosplus et contrib. Il vous suffit donc de spécifier le code source des 5 sources logicielles suivantes. Ajoutez le contenu suivant à la fin du fichier :

[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

Étant donné que les différentes versions ont des paramètres différents, leurs paramètres seront différents. La méthode peut être résumée comme suit :

(1) gpgkey est le même que le gpgkey de la section déjà dans le fichier

(2) Afin de confirmer l'existence et l'état du fichier, vous pouvez ouvrir le site http://vault.centos.org/ pour vérifier la situation spécifique, puis le remplir en fonction de la situation spécifique

(3) Lors de la configuration du baseurl, vous devez le définir en fonction de la version de votre propre système. Par exemple, ma machine est CentOS-6.6, puis lors de la configuration, les paramètres pertinents sont définis sur 6.6, c'est-à-dire http : //vault.centos.org/ Le sous-chemin suivant est 6.6.

La fonction de ce fichier est de fournir une source pour télécharger yum et les travaux associés. Par exemple, lors de l'utilisation de yumdownloader (discuté ci-dessous) pour télécharger le code source, les actions suivantes se produiront :

(1) Téléchargez le fichier $baseurl/repodata/repomd.xml Si le fichier repomd.xml est plus récent que celui du système, mettez à jour le repomd.xml correspondant dans le système

.

(2) Téléchargez le package RPM de code source correspondant dans $baseurl/SPackages/.

2) Utilisez la commande which pour afficher l'emplacement de la commande ls, comme suit :

qui est

# Sortie : /bin/ls

3) Utilisez la commande rpm pour interroger le package auquel appartient la commande ls, comme suit :

rpm -qf /bin/ls

# Sortie : coreutils-8.4-37.el6.i686

4) yumdownloader est un programme pour télécharger RPM à partir de la source RPM. Vous pouvez utiliser la commande yumdownloader pour installer le code source, comme suit :

.

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

Remarque :

(1) Si la commande yumdownloader n'est pas installée, vous pouvez utiliser cette commande pour l'installer : yum install yum-utils.

(2) Le fichier téléchargé se trouve dans le répertoire actuel. Vous pouvez utiliser le paramètre --destdir pour spécifier dans quel répertoire télécharger.

5) Utilisez yumdownloader pour télécharger un fichier de package d'installation rpm Vous pouvez utiliser la commande suivante pour interroger le fichier tar dans le rpm :

.

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

# Sortie : coreutils-8.4.tar.xz

6) Utilisez la commande rpm2cpio pour convertir le fichier du package rpm en un fichier d'archive cpio, puis utilisez la commande cpio pour copier et extraire un fichier d'archive du fichier d'archive cpio. Le résultat est le suivant : .

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

# Résultat :

# coreutils-8.4.tar.xz

# 9561 blocs

L'explication de

cpio est la suivante : cpio copie les fichiers dans une archive

-i : Identique à --extract, signifiant extraire

-d : Identique à --make-directories, crée un répertoire de chargement en cas de besoin

-v : Traitement des fichiers de liste

7) Utilisez la commande tar pour décompresser le package compressé coreutils-8.4.tar.xz, comme suit :

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

À ce stade, le code source de la commande est obtenu.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer