LoginSignup
5
9

More than 3 years have passed since last update.

【RHEL, CentOS, Fedora】Linux コマンドのソースコード取得方法

Last updated at Posted at 2018-12-02

■ はじめに

本稿では、RHEL、CentOS、Fedora といった RedHat 系 Linux のコマンドに紐づくソースコードを取得するための方法を記載しています。

一例として、dmesg のパッケージである util-linux のソースコードを取得します。

■ 検証環境

[root@hst ~]# uname -r
4.18.11-200.fc28.x86_64

[root@hst ~]# cat /etc/fedora-release 
Fedora release 28 (Twenty Eight)

上記のとおり、検証環境は Fedora ですが、以降の手順は RHEL や CentOS でも使えるはずです。ただし、RHEL, CentOS, Fedora(21以前)の標準のパッケージマネージャは dnf ではなく yum なので、その点は注意です(具体的なコマンドは併せて載せています)。

■ ソースコードの取得方法

主な流れは次のとおりです。

  • 確認したいコマンドのパッケージ名を確認
  • 確認したパッケージのソースパッケージをダウンロード
  • ソースパッケージからソースファイルを抽出

※ソースパッケージには、ビルドに必要なファイルなどソースファイル以外も含まれています。

1. 事前準備

はじめに必要なコマンドのパッケージをインストールします。

// Fedora(22以降)の場合
[root@hst ~]# dnf install rpmdevtools

// RHEL, CentOS, Fedora(21以前)の場合
[root@hst ~]# yum install rpmdevtools yum-utils

次に実装を確認したいコマンドのパッケージ名を確認します(本稿では dmesg コマンドが対象)。

[root@hst ~]# rpm -qf $(which --skip-alias dmesg)
util-linux-2.32-2.fc28.x86_64

※ .fc28.x86_64 はご使用の環境により変化します。

作業用のディレクトリを作成します(適宜)。以降は、ここで作業するものとします。

[root@hst ~]# mkdir work && cd work

2. 手順

事前準備で確認したパッケージのソースパッケージをダウンロードします。

// Fedora(22以降)の場合
[root@hst work]# dnf download --source util-linux-2.32-2.fc28.x86_64

// RHEL, CentOS, Fedora(21以前)の場合
[root@hst work]# yumdownloader --source util-linux-x.xx-x.xxx

カレントディレクトリに src.rpm ファイルがダウンロードされます。

[root@hst work]# ls
util-linux-2.32-2.fc28.src.rpm

ダウンロードしたソースパッケージからソースファイル群を抽出します。

[root@hst work]# rpmdev-extract util-linux-2.32-2.fc28.src.rpm

カレントディレクトリに util-linux-2.32-2.fc28.src というディレクトリが生成されますので、その中にある tar ファイルを解凍します。

[root@hst work]# cd util-linux-2.32-2.fc28.src
[root@hst util-linux-2.32-2.fc28.src]# tar xvf util-linux-2.32.tar.xz

解凍すると、ディレクトリ(util-linux-2.32)の中にソースファイルが展開されます。

[root@hst util-linux-2.32-2.fc28.src]# ls -l util-linux-2.32
total 2488
-rw-r--r--. 1 hp-spectre13 hp-spectre13   93787 Mar 21  2018 ABOUT-NLS
-rw-rw-r--. 1 hp-spectre13 hp-spectre13   66331 Mar 21  2018 aclocal.m4
-rw-rw-r--. 1 hp-spectre13 hp-spectre13   29121 Mar 21  2018 AUTHORS
-rwxrwxr-x. 1 hp-spectre13 hp-spectre13    3569 Sep 18  2017 autogen.sh
...
(snip)
...
drwxrwxr-x. 2 hp-spectre13 hp-spectre13    4096 Mar 21  2018 tools

最後に dmesg のソースファイルがどこにあるのか探してみます。

[root@hst util-linux-2.32-2.fc28.src]# find util-linux-2.32/ -name "dmesg*"
util-linux-2.32/tests/expected/dmesg
util-linux-2.32/tests/ts/dmesg
util-linux-2.32/bash-completion/dmesg
util-linux-2.32/sys-utils/dmesg.1
util-linux-2.32/sys-utils/dmesg.c ★

C言語のソースファイルが見つかりました(dmesg.c)。

以上です。

5
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
9