Linux Kernelバージョン番号の後のプラス記号を除去する方法
Linux Kernelをコンパイルするとき、生成されたRPMパッケージのバージョン番号にはわけがわからずプラス記号が付いている人が少なくありません。これはLinuxを修正したからかもしれません。gitのファイル。では、Linux Kernelバージョン番号の後ろのプラス記号をどのように除去しますか?次の編集では、Linux Kernelバージョン番号の後ろにあるプラス記号を取り除く方法をご紹介します。一緒に見に行きましょう。
1 VERSION = 3
2 PATCHLEVEL = 10
3 SUBLEVEL = 28
4 EXTRAVERSION =
5 NAME = TOSSUG Baby Fish
カーネルバージョン番号生成に関連するファイルはscripts/setlocalversionで、次のスクリプトの一部があります。# scm version string if not at a tagged commit
if test “$CONFIG_LOCALVERSION_AUTO” = “y”; then
# full scm version string
res=“$res$(scm_version)”
else
# append a plus sign if the repository is not in a clean
# annotated or signed tagged state (as git describe only
# looks at signed or annotated tags - git tag -a/-s) and
# LOCALVERSION= is not specified
if test “${LOCALVERSION+set}” != “set”; then
scm=$(scm_version --short)
res=“$res${scm:++}”
fi
fi
場合
CONFIG_LOCALVERSION_AUTO
配置されておらず、LOCALVERSIONにも数値がないので、上のスクリプトによって+番号は追加されません。
実際にコードをコンパイルするときは、次のことができます。LOCALVERSION= make
また、ファイルscripts/setlocalversionには、次の文があります。
if test -d .git && head=`git rev-parse --verify --short HEAD 2》/dev/null`;
git rev-parseは、最近のcommitのidを取り出すためです。
$ git rev-parse --verify --short HEAD
e77fcc1
charles@taotao:~/code/linux-3.10.28$ git rev-parse --verify HEAD
e77fcc1e9be7a0ab373f96d5b9d58e1136c8c4b0
または、$ git log --pretty=format:‘%h’ -n 1
e77fcc1
${LOCALVERSION+set}はvariable expansion modfierです。
いくつかの形式があります。${variable:–word}variableが空でない値を設定されている場合、この式の値はvariableの値です。逆にwordの値(variableの値は変わらない)
${variable:=word}varialeがsetまたは値が空でない場合、この式の値はvariableの値です。逆にwordの値(variableの値が更新されます)
${variable:+word}variableが空でない値を設定されている場合、この式の値はvariableの値です。逆にNULLです。
${variable:offset}文字列のサブ列を取得します(variable文字列インデックスがoffsetであることから、offset値が0から計算されます)
${variable:?word}variableが空でない値を設定されている場合、この式の値はvariableの値です。そうでなければ、wordの値を印刷して、終了します。
${variable:offset:length}variableの文字列を取得します(offsetから長さlength)
以上の内容は今日編集者が皆さんに持ってきたLinux Kernelバージョン番号の後ろにプラス記号がある原因と除去方法についてです。Linux Kernelバージョン番号は使用にあまり影響がないようですが、深い原因もあるので、文中の方法でプラス記号をクリアすることができます。皆さんのお役に立てばと思います!