fedoraのsystem-upgradeが失敗して復旧させたメモ

この記事はLinuxのカレンダー | Advent Calendar 2022 - Qiitaの8日目の記事です。

会社にあるfedora 36のPCをfedora 37にアップグレードしようと思ってリモートからdnf system-upgradeでアップグレードしかけといたら何かしらの原因でアップグレードに失敗してて、それを復旧させるのに時間くらいかかったので防備録的に🥲

今回起きてた現象

root causeは何かしらの理由でdnf system-upgradeが失敗してたことなんだけど、その理由はもはやわからないのでこれによって発生してた現象のみを書くと次の3点でした。

  1. dnf・rpmコマンドでパッケージのインストールをしようとするときにsegvする(ファイルのdownloadなどは大丈夫だった)。
  2. fc36とfc37が中途半端に混在
  3. selinuxのラベルがおかしくなってた

復旧の流れ

  • リモートから接続できなかったのでまずは物理出社
  • 出社してPCを見てみたら電源が落ちてた
  • まずは電源オン
  • ログインできるし、ログイン画面もFedora 37のgnomeな感じだし、/etc/os-releaseとか/etc/fedora-releaseファイルもfedora 37になってる
  • ひとまずdistro-syncしてみる?と思って実行してみたらrpmファイルのインストールするときにsegvする
  • dnfのrepolistとかは使えるんだけど、インストール処理がだめっぽい
  • rpmはどうよ?と思ったけど、これも同様
  • この環境だけで復帰させるの無理じゃん😭
  • 会社にあるfedoraのライブCDを探したらfedora 32のCDがあったのでこれ使うかー
  • このPCはboot順番変更のメニュー出せるタイプなのかUEFI BIOSで起動順変える必要あるのかとか、どのキー押すのかまったく覚えてない😨
  • しょうがないので、ESC、F11、F12あたりを連打してUEFI BIOSに入れたのでDVDドライブから起動させる
  • ライブ環境が立ち上がったらディスク上にあるLVM領域の/を/mntにマウント
  • ライブCD(fedora 32)のdnfを使って/mntにマウントした環境をアップデートかけよう
  • dnfのオプションには--installroot=/mntと--releasever=37をつける
  • /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-37-x86_64がないと言われるけどfedora 32なんだからそれもそうだね
  • /mnt/etcのほうにもなかった
  • feodra 36のノートPCのほうにはこのファイルはあるけどどうやってファイルを受け渡すか?
  • ノートPCのほうで/etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-37-x86_64を~/tmpとかにコピー
  • python -m http.server 8000で簡易的にhttpサーバを立ち上げてライブCDからcurlでファイルダウンロード
  • ダウンロードしたファイルは/etc/pki/rpm-gpg/と/mnt/etc/pki/rpm-gpgの両方に置いた
  • RPM-GPG-KEY-fedora-37-x86_64の問題は解決できたけど、一部のパッケージで検証に失敗する
  • dnfのオプションに--nogpgcheck追加
  • これで/mnt/環境にdnf updateをかけてみる
  • 成功したので/mntにchrootで入ってみる
  • docker-ce-stableとかの3rdパーティのリポジトリは無効にしてfedora.repoとfedora-updatesだけ有効にする
  • chrootで/mntに入ってdnf・rpmコマンドを試したらsegvしなくなってる!が、まだ問題はあった
  • repolistを確認するとリポジトリがfc36を見ている
  • releasever変数が36とされてるようだ
  • dnfのオプションで--releasever=37を付けても良かったんだけど、なんとなくsedでreleasever変数を37に置き換えた
  • distro-syncを試すとsystemdとかgnome-shellが依存関係の問題で削除されるとか言われてエラーになる
  • 元の環境であったdnf・rpmがsegvする問題はなくなったけど、system-upgradeが途中でエラーになったことでfc36とfc37が中途半端に混ざった状態っぽい
  • まあ、dnfは使えるようになったのでライブCD環境を終了して普通に起動してログイン
  • 起動したらyum.repo.dのほうは先ほどと同じ感じでfc37を見るように強制
  • rpm -qaでsystemdのパッケージを確認するとfc36とfc37の両方のパッケージが存在してる
  • dnfだと削除できないのでrpm -eでfc36・fc37が混在してるものはfc36のパッケージを削除
  • 全部消したところでdnfのdistro-sync
  • 成功したのでdnf update --refreshでさらに新しいパッケージへの更新もできた
  • yum.repo.dの3rdパーティのリポジトリも有効にしてupdateかけたり
  • カーネルはfc37版はインストール済みと言われるんだけど/bootにはfc36版しかない
  • カーネルもインストール状況が中途半端になってる感じだけど新しいバージョンがでればそれがインストールされて解決できるのでは?
  • という感じで、これはこのままにしておく
  • リモートからこのPCに入るためにはsshログインできる必要あるけど、ログインできないじゃん😭
  • クライアント側でこんなエラーメッセージが表示される
ssh client loop send disconnect

sshの-vオプションをつけるとさらにこんなメッセージが

openssh pledge filesystem full
  • dfでディスクの使用量見たけど全然余裕あるな
  • inode?と思ったけどこちらも問題なし
  • 検索するとアクセス権限の問題でもこのエラーメッセージは出るらしい
  • journalctlでログを見てみる
  • こんなログがでてるし、まさしくこれが原因でしょ
sshd_selinux_copy_context: setcon failed with permission denided
  • system-upgradeが途中で終わったことでselinuxのラベリングも中途半端になってるんじゃ
  • 今見えてる問題はsshdだけど他にもあるかもしれない
  • ラベリングし直すかということでファイルを作って再起動
touch /.autorelabel
  • ラベリングが終わってシステムが立ち上がったらsshログインしてみる
  • ログイン成功キタ━(゚∀゚)━!
  • virsh、dockerも動くか確認
  • これらもok
  • これでひとまず復旧完了として良いでしょということで復旧作業終了🥲

所感

このレベルの壊れ具合でも復旧させることができるトラブルシューティング能力はあるんだなって思ったけども、めんどくさいから勘弁してほしい。あとはやっぱライブメディアはあると便利。というかなかったら復旧できなかった。今回は再インストール無しに復旧させたけど、fedora 37のライブメディアがあったらクリーンインストールして再セットアップしたかもしれない。そっちのほうが確実だし。家なら最新のfedoraライブメディアは常にあるけど、会社にあったのがfedora 32だったので32をインストールしてから34 -> 36 -> 37という感じにアップデートさせるのも面倒だったというのもある🥲

同じ状況になる人はまずいないと思うけど、個々の現象に関してはこんな対応方法もあるということで防備録でした。

家に帰ったら自分からのクリスマスプレゼントがamazonさんから届いてた🍪

マイペースなOSSコントリビュート生活 fedora編

この記事はLinux Advent Calendar 2020の17日目の記事です。

OSSのコントリビュート方法はpatchを書いたりドキュメントを翻訳したり、バグレポートしたりと色々な方法がありますね。fedoraでテストというとリリース前のベータ版のテスト、パッケージがアップデートされた際のテスト(QA:Updates Testing - Fedora Project Wiki)、テストイベントのTest Days(QA/Test Days - Fedora Project Wiki)などがあります。

updates-testing

このなかで手軽なものとしてはupdates testingがあります。fedoranはパッケージがアップデートされる場合、最初にupdates-testingリポジトリに更新されたパッケージが入ります。その後、基本的には以下のルールに則ってパッケージがupdateリポジトリに入るか更新がリジェクトされるかのいずれかになります。

By default, test updates with karma of 3 are automatically sent out as full official updates, while test updates with karma of -3 are automatically withdrawn from the testing repository. 

テストした人が実際にパッケージを使ってみて問題なかった・修正されたと書かれているバグが直ってたなんてことを確認したりしてみて結果をフィードバックします。これはコマンドラインのアプリでも出来ますし、bodhiと呼ばれるWebインターフェースもあります。

bodhi.fedoraproject.org

bodhiのパッケージの画面ではこのような感じでチェック項目があります。これはkernel-5.9.14-200.fc33のときのものです。バグフィックスに関しては自分の環境だと再現できないとかあると思うのでそういう場合はグレーの👍を選択します。問題が合ったときは👎を選択し、特に問題なかったら緑の👍を選択する感じです。

f:id:masami256:20201227232230p:plain

テストの内容はカーネルの例のように指定されている場合もありますし、無い場合もあります。基本的には指定されたテストケース以外のことについては実際に使ってみてOKかどうかってところでみんなやってると思います。全部のアップデートをテストしようとか気張らずに自分がよく使ってるものだけでも簡単にやろうくらい気軽な感じでできます😊 セキュリティアップデートもupdates-testingリポジトリに最初に入るので更新して使ってみた結果のフィードバックをするのって割と大事かななんて思います。

Test Days(Test Week)

こちらはカーネルGnomeなんかの主要なパッケージのメジャーバージョンが上がるような時に行われることが多いです。カーネルですとfedoraはリリース後にもカーネルのメジャーバージョンは上がりますのでイベントに参加して自分の環境で問題ないか確認しておくのは良いかもしれません。Test Daysではiosイメージ、リリースしているfedoraのバージョン用のrpmファイルが用意されますのでお好きな方法を選択できます。カーネルだとテスト内容はupdates-testingと一緒です。こちらも割と手軽ですが通常のupdates-testingではなく専用のイベントが用意されるのでシステム的にインパクトの大きな変更が入るということなので場合によっては自分の環境だと問題があるってこともあると思います。まあ、そういうのを見つけるためのイベントなわけですが😃

カーネルのTest Weekで自分が実際にバグに当たってupstreamに報告とパッチを投げたり・テストしたり、fedoraで修正されたことをupdates-testingで確認したときのログが↓ですので興味がある人は読んでみてください🙋 kernhack.hatenablog.com


fedoraに限らず使ってみて結果をフィードバック(特にバグレポート)するというのは重要な貢献だと思いますので、OSSに貢献したいけど何をすれば良いか🤔と考えている人は新しいバージョンを使ってみて結果をフィードバックするというのも検討してみてはいかがでしょうか👍

OSSライセンスの教科書

OSSライセンスの教科書

Fedora Kernel test week参加記録

FedoraではkernelのテストイベントとかGnome 3.34 Test DayI18N Test Day などのテストイベントがちょくちょくあります。 今回はKernel 5.3 Test Weekの備忘録です。ちなみに、この手のイベントはfedora MAGAZINEで紹介されることがあります。

今回の参加結果の最終成果はこちらです。

github.com

参加ε≡≡ヘ( ´Д`)ノ

今回のtest weekは開催時期が9月末から10月の最初の週でちょうどfedora 31のリリースが近かったころです。当時のfedora 29と30はカーネルは5.2系が使われていて、fedora 31が5.3系って感じでした。メインラインは5.4のrc1が出てた辺りです。それでfedora 31もそろそろ出るし、ベータとかrcのテストも参加してなかったし、メインラインのカーネルも最近使ってないなーなんてことでテストに参加しとくかーって感じで参加したわけです。

バグ発見/(^o^)\

テストに使うカーネルrpmをデスクトップ環境のfedora 30マシンにインストールして再起動すると、本来GDMのログイン画面がでるところでスクリーンがブリンクし続ける状態でした。一応メインラインのカーネル(5.4-rc1)も試してみたけど結果は同じでした。ここまでで5.3〜で症状が出るらしいってことは確定。というわけでここまでの内容で一旦bugzillaにバグレポートしました。

1758831 – GDM login screen doesn't show up on kernel 5.3.2

その後ですが、じゃあ、fedora 31ならどうよ?と思ってテスト用にビルドされたライブデスクトップのisoイメージを使ってみたところこちらも同様の現象。ただブートメニューからTroubleshooting" -> "Start kernel in basic graphic mode"を選ぶと問題なし。間違いなくGPU関連のバグですねって感じです。この情報もbugzillaに追記しました。

debug🐝

一応ここまででバグを見つけた人として一応のことはしたのですが、自分のPCで新しいカーネルが使えないのは最高に困るのでここからはbisectして原因を探りました。バグに当たっている人がテスト時点では自分くらいしかいなかったし、他のディストリビューションを見てもArch Linuxで同じような現象の人が1人くらいいたかなーって感じでした。そうするとバグは機種依存っぽいし自分でデバッグしたほうが良さげだったんですね。

ということでbisectを開始したわけですがバグが実機じゃないと再現できないのでダラダラやりつつ土曜日の朝から夕方まで使った気がします。そして、first bad commitは36a0f92020dc8794d3aa69b7fb4c5d2bf99b0099というのがわかりました。ちなみにこのpatchは一連のシリーズの中の一つなのと、このコミット以降でリファクタリングされていてファイルのパスやヘルパー関数が追加されています。さて、差分ですがpatchだけ見るとわかりにくいので自分の環境で動かなくなった原因のsanitize_aux_ch()より主要部分のbefore/afterを示すとこうなります。

before

       const struct ddi_vbt_port_info *info =
        &dev_priv->vbt.ddi_port_info[port];

    for (p = PORT_A; p < I915_MAX_PORTS; p++) {
        struct ddi_vbt_port_info *i = &dev_priv->vbt.ddi_port_info[p];

        if (p == port || !i->present ||
            info->alternate_aux_channel != i->alternate_aux_channel)
            continue;

        i->supports_dp = false;
        i->alternate_aux_channel = 0;
    }

after

        struct ddi_vbt_port_info *info = &dev_priv->vbt.ddi_port_info[port];

    for (p = PORT_A; p < I915_MAX_PORTS; p++) {
        struct ddi_vbt_port_info *i = &dev_priv->vbt.ddi_port_info[p];

        if (p == port || !i->present ||
            info->alternate_aux_channel != i->alternate_aux_channel)
            continue;

        info->supports_dp = false;
        info->alternate_aux_channel = 0;
    }

大きな違いはfor文中のif文でcontinueしなかった場合に使用している変数です。変更前は配列のp番目の要素をiにセットしてその変数の構造体のデータに値を設定していますが、変更後の方は最初にinfoに設定した値をそのまま使っていてp番目の要素に対する変更は行っていません。そんなわけで、変更前と同様の挙動にしたらどう?と思って作ったのが以下の修正です。

diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
index efb39f350b19..c886dae82aa7 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.c
+++ b/drivers/gpu/drm/i915/display/intel_bios.c
@@ -1313,6 +1313,8 @@ static void sanitize_aux_ch(struct drm_i915_private *dev_priv,
 
        p = get_port_by_aux_ch(dev_priv, info->alternate_aux_channel);
        if (p != PORT_NONE) {
+               info = &dev_priv->vbt.ddi_port_info[p];
+
                DRM_DEBUG_KMS("port %c trying to use the same AUX CH (0x%x) as port %c, "
                              "disabling port %c DP support\n",
                              port_name(port), info->alternate_aux_channel,
@@ -1330,6 +1332,7 @@ static void sanitize_aux_ch(struct drm_i915_private *dev_priv,
                info->supports_dp = false;
                info->alternate_aux_channel = 0;
        }
+
 }
 
 static const u8 cnp_ddc_pin_map[] = {

このpatchをstableの5.3.2に当てたところちゃんと動くようになりましたワーイヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノワーイ これでとりあえず自分の環境では新しいカーネルでもなんとか動くようになったわけですが、ローカルパッチを当て続けるとかあり得ないですね。なので次はupstreamへの報告となります。

36a0f92020dc8794d3aa69b7fb4c5d2bf99b0099を見るとsanitize_ddc_pin()も同じような変更が入ってるのですが、こちらは自分の環境では影響出てなかったです。GPUわからん😨

freedesktop.orgのbugzillaに苦戦😭

upstreamにバグ報告と言っても報告先として考えられるのはlkml、サブシステムのメーリングリストkernelのbugzilla、またはそれ以外とあります。GPU(i915)のバグ報告先をさがしたところ↓が見つかりました。ここにレポートの仕方が書かれていたのでまずはそれに従います。drm-tipツリーをcloneしてきてこのツリーの最新コードを試したり。。

How to report bugs | 01.org

バグのレポートはfreedesktop.orgのbugzillaを使うということだったのでアカウントを作りました。そしていざレポートってところで色々書いてsubmitボタンを押すと空白ページになるだけでバグが登録できません😨 たまたまバグったのかな?と思ってもう一度試してもダメ、じゃあ時間を置いてと思って次の日に試してもダメ。。。バグ報告したいのにバグ報告できないというバグにハマったわけです\(^o^)/オワタ こんなのわからんよと思ってbugzillaについて聞けるところはないかな?と探したところircで聞けるというのがわかったのでircクライアントをインストールし、freenodeにある#freedesktopに入って状況説明したところ中の人がログを確認したりデバッグを手伝ってくれました。このときのバグレポートはfedoraと同じ感じで書いていたのでタイトルにloginという単語が入っていたのですが、これがバグの原因というのがわかりました。だいたい2時間位色々と試したんじゃないかな。。 ちなみにLoginだと大丈夫で小文字のloginという文字列がバグレポートの新規作成時に入っているとダメという状況でした。既存のバグレポートの編集時だと大丈夫という謎。 それはともかく、手伝ってくれた方には感謝しかありません👃

upstreamへの報告

なんだかんだで無事に報告できました。タイトルについてるbisectedというのはbisect結果を貼ったあとに変更されました。ちゃんと見てくれてますね( ̄ー ̄)bグッ!

111966 – [bisected] GDM Login screen doesn't show up on kernel 5.3 or later

まず普通にバグの報告したあとでbisectの結果やquick hackなパッチをレポートしました。その後、同じような現象の人が現れ、この方も自分が作ったパッチでバグが直ったという報告をしてくれました👃 その後のちゃんとしたパッチの作成までは結構速く進み、コミット36a0f92020dc8794d3aa69b7fb4c5d2bf99b0099の設定方法だとダメな機種があるということでコメント等適切に直したパッチが作成されました。自分ともう一人の方はこのパッチをテストして動くのを確認しました。

drm/i915: Favor last VBT child device with conflicting AUX ch/DDC pin · torvalds/linux@0336ab5 · GitHub

修正方法は自分がやった方法と同じなので自分のパッチも暫定修正とはいえ正しい修正方法にたどり着けててエライって感じです😃

サブシステムへの取り込み -> mainlineへの取り込み -> stable treeへの取り込み待ち

修正パッチがサブシステムのメーリングリストに投げられたのであとは次の3個の待ちとなります。とくに自分がすることはありません。

  1. サブシステムのtreeへの取り込み
  2. mainlineへの取り込み
  3. stable treeへの取り込み

3のときに Patch "drm/i915: Favor last VBT child device with conflicting AUX ch/DDC pin" has been added to the 5.3-stable tree ってメールが届いて5.3.8(5.3.7はすでにリリースされてたので次は5.3.8のときだった)にパッチが入るんだなーってのがわかりました。

freedesktop.orgのbugzillaは1か2のタイミングでcloseされたと思います。

fedoraへの取り込み待ち

新しいstable releaseが出れば fedoraカーネルが最新のstable releaseに追従したときにfedoraカーネルでもバグが直ります。なのでこちらも待ちです(-_-)zzz fedoraのパッケージは最初updates-testingというリポジトリにアップロードされます。そこで人間がテストするか一定期間経てばupdatesリポジトリにパッケージが入ります。で、fedoraカーネル5.3.8のパッケージがアップロードされたので早速テストして結果を書きました。

https://bodhi.fedoraproject.org/updates/FEDORA-2019-0e85bbd15b

あと、fedoraのbugzillaのほうにも5.3.8のカーネルパッケージで直ったという報告を書いておきました。で、こちらもクローズとなりました。

終わり

というわけでkernel test weekへの参加とバグ発見、bisectとローカルパッチの作成、upstreamへの報告とupstreamへの協力、fedoraでの修正確認ということを最近しました( ´ー`)フゥー... 今回一番難しかったのはbugzillaでバグ報告できない問題でしたね。自分の環境で動かせられないし/(^o^)\

超例解Linuxカーネルプログラミング~最先端Linuxカーネルの修正コードから学ぶソフトウェア品質~

超例解Linuxカーネルプログラミング~最先端Linuxカーネルの修正コードから学ぶソフトウェア品質~

meta-fedoraなんてものを作り始めた(*ノω・*)テヘ

meta-fedora

はじめに

もし、meta-fedoraと聞いてピンときた場合はその感は当たりですw

主に組み込み向けのLinuxディストリビューションを作るためのものとしてyocto projectがありますね。yoctoプロジェクトのリファレンスディストリビューションとしてpokyがあります。そして、pokyのカスタムレイヤーでDebianのソースパッケージを利用するmeta-debianがあります。

ここで、例えばfedoraとかでもできるんじゃないだろうか?ということでyoctoの勉強も兼ねて作り出したのがmeta-fedoraです。今日の時点ではbusyboxをpokyからmeta-fedoraに置き換えが出来た程度です。busyboxfedoraのsrc.rpmにはパッチが無かったのでfedora用のパッチを当てるdo_fedora_patchタスクは作ったけど特に処理がない状態です。

イデアはもちろんmeta-debianから来てます。なので、基本的な動作もmeta-debianと同じ感じになるようにしました。ソースパッケージに関する情報はrecipes-fedora/sources/*.incファイルに書きます。

fedoraもaarch64版はあるし行けるんじゃね?みたいなところですね。

.incファイル

src.rpmファイルに関する情報を書きます。このファイルは後述するfedora-source.bbclassが作成します。パッケージを追加する場合は空のファイルを作成します。touch recipes-fedora/sources/<source package name>.inc という感じです。

内容はこんな感じです。

# This file is generated by fedora-source.bbclass

LICENSE = "GPLv2"
FPV = "1.28.33.fc30"
FPV_EPOCH = "1"
REPACK_PV = "3.fc30"
PV = "1.28.3"

FEDORA_SRC_URI = " \
    ${FEDORA_MIRROR}/pub/linux/Fedora/fedora/linux/releases/${DISTRO_VERSION}/Everything/source/tree/Packages/b/busybox-1.28.3-3.fc30.src.rpm;name=busybox-1.28.3-3.fc30.src.rpm \
"

SRC_URI[busybox-1.28.3-3.fc30.src.rpm.sha256sum] = "cb03d63ee3867d406786a0e118540900f8bd9d047637501a271e82755291d23f"

ソースパッケージに関する情報はsha256sum-primary.xmlというファイルに書かれているんですが、パッケージのライセンスもこのファイルから取得できるのでライセンス情報も一緒に書いてます。

classes

fedora-source.bbclass

ソースパッケージの情報をrecipes-fedora/sources/*.incに書くためのクラスです。

まずFedoraのミラーサーバからrepomd.xmlを取得します。この時に読み込むファイルは2つ有って、release時のパッケージ情報があるreleasesディレクトリ以下のファイルと、パッケージの更新版が置かれるupdatesディレクトリ以下のファイルの2つがあります。

これらを読んでprimary.xmlファイルのパスを取得します。

次にprimary.xmlを読みます。このときはreleases -> updatesの順番で読んでsrc.rpmファイルのデータを組み立てて行きます。データはパッケージ名をキーとした連想配列で作っていて、同名のパッケージは後から出てきたほうで上書きしてます。なので最初にリリース時点でのファイルを読んで、次に更新版パッケージのファイルを読んでます。2つのファイルのデータをマージするなら、こうしたほうが単純で楽というのがでかいですね。

その次はrecipes-fedora/sourcesディレクトリ以下に有る.incファイルを調べます。ここで見つかったincファイルに対してprimary.xmlで読んだデータを書き込みます。

このクラスは次のように設定していて、レシピのパース時に実行されます。

fedora_source_eventhandler[eventmask] = "bb.event.ParseStarted"

inheritはディストリビューションの設定ファイルのほうで次のようにしています。

INHERIT += "fedora-source"

最低限の機能はできてますが、meta-debianのようにDEBIAN_SOURCE_ENABLEDなどの環境変数を使ったダウンロードの制御はまだありません。

fedora-package.bbclass

こちらはレシピの中でinheritして使うものです。このファイルではunpackの処理を行ったり、fedoraのパッチを当てるなどの処理を行います。 1つハマってとりあえずのハックでしのいだのがあって、bitbakeのunpackタスクはrpmファイルにも対応しています。rpmファイルの展開はrpm2cpioコマンドではなくてrpm2.cpio.shが使われます。ただ、このファイルだとfedora30のsrc.rpmを展開しようとするとエラーになってしまったので(CentOS7のsrc.rpmは大丈夫でした)、同名のファイルを作って、PATHを通してpokyのrpm2cpio.shではなくて自前のrpm2cpio.shが呼ばれるようにしました。自前のrpm2cpio.shはrpmファイルの展開にホストのrpm2cpioコマンドを利用します。そのため、ディストリビューションの設定ファイルに次の設定を追加しました。

HOSTTOOLS += "rpm2cpio"

動作環境

x86-64とaarch64で動作します。

x86-64

[    5.603340] Run /sbin/init as init process
[    5.610576] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
INIT: version 2.88 booting
Starting udev
[    6.165200] udevd[116]: starting version 3.2.7
[    6.226804] udevd[116]: specified group 'kvm' unknown
[    6.290799] udevd[117]: starting eudev-3.2.7
[    6.484025] udevd[117]: specified group 'kvm' unknown
[    7.985039] uvesafb: SeaBIOS Developers, SeaBIOS VBE Adapter, Rev. 1, OEM: SeaBIOS VBE(C) 2011, VBE v3.0
[    8.079341] uvesafb: no monitor limits have been set, default refresh rate will be used
[    8.082405] uvesafb: scrolling: redraw
[    8.111438] Console: switching to colour frame buffer device 80x30
[    8.115704] uvesafb: framebuffer at 0xfd000000, mapped to 0x00000000076c66c4, using 16384k, total 16384k
[    8.116032] uvesafb: fb0: VESA VGA frame buffer device
[    8.200808] EXT4-fs (vda): re-mounted. Opts: (null)
INIT: Entering runlevel: 5
Configuring network interfaces... ip: RTNETLINK answers: File exists
Starting syslogd/klogd: done

Fedy 30 qemux86-64 /dev/ttyS0

qemux86-64 login: root
root@qemux86-64:~# strings /bin/busybox | grep "1.28"
syslogd started: BusyBox v1.28.3
BusyBox v1.28.3 (2019-06-02 13:34:16 UTC)
udhcp 1.28.3
started, v1.28.3
fsck (busybox 1.28.3)
root@qemux86-64:~#

aarch64

[    2.756128] Freeing unused kernel memory: 1024K
[    2.764907] Run /sbin/init as init process
INIT: version 2.88 booting
[    2.883961] usb 1-2: new high-speed USB device number 3 using xhci_hcd
[    3.041754] input: QEMU QEMU USB Keyboard as /devices/platform/4010000000.pcie/pci0000:00/0000:00:02.0/usb1/1-2/1-2:1.0/0003:0627:0001.0002/input/input1
[    3.100694] hid-generic 0003:0627:0001.0002: input: USB HID v1.11 Keyboard [QEMU QEMU USB Keyboard] on usb-0000:00:02.0-2/input0
Starting udev
[    3.240365] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[    3.406764] udevd[106]: starting version 3.2.7
[    3.436698] udevd[106]: specified group 'kvm' unknown
[    3.467389] udevd[107]: starting eudev-3.2.7
[    3.621474] udevd[107]: specified group 'kvm' unknown
[    4.426004] EXT4-fs (vda): re-mounted. Opts: (null)
INIT: Entering runlevel: 5
Configuring network interfaces... ip: RTNETLINK answers: File exists
Starting syslogd/klogd: done

Fedy 30 qemuarm64 /dev/ttyAMA0

qemuarm64 login: root
INIT: Id "hvc0" respawning too fast: disabled for 5 minutes
root@qemuarm64:~# uname -a
Linux qemuarm64 5.0.7-yocto-standard #1 SMP PREEMPT Sun Jun 2 14:47:16 UTC 2019 aarch64 GNU/Linux
root@qemuarm64:~# strings /bin/busybox | grep "1.28"
udhcp 1.28.3
started, v1.28.3
syslogd started: BusyBox v1.28.3
fsck (busybox 1.28.3)
1.28.3
BusyBox v1.28.3 (2019-06-02 14:54:32 UTC)
root@qemuarm64:~#

開発環境

pokyのブランチはwarriorを使ってます。ホストのディストリビューションfedora 30ですが、ビルドにはfedora 28のdockerイメージを使ってます。マニュアルをよくよく見たらyocto 2.7だとfedora 29もサポートしていた。

meta-fedoraで使用するfedoraのソースはfedora 30のsrc.rpmを使っています。

todo

まだfedora用パッチを当てるロジックがないので追加しないとダメっす。あとはcore-image-minimalに入るパッケージをfedora化していったり、initシステムはsystemdに切り替えようとか。。。 fedoraはsysvinitのパッケージはもう無いのでcore-image-minimalを完全にfedoraのソースに置き換えるにはinitシステムをsystemdに変えるしかないんですよね。

fedora 30からgrubの仕様が変わったのでφ(..)メモメモ

Fedora 30でChanges/BootLoaderSpecByDefaultというプロポーザルがあって、Fedora 30βでは実際にこの仕様になってます。カーネルを弄る人にはちょっと影響があるかなって感じです。

仕様

The Boot Loader Specificationに書かれています

どんな風になったか

boot時のgrubの画面は変化はありません。

f:id:masami256:20190409201409p:plain
grub

変わったのはエントリーの書き方です。今まではgrub.cfgにエントリーを追加していたわけですが、カーネルのエントリー部分が独立した感じです。

root@kerntest:/home/masami# ls /boot/loader/entries/
9575947ef933448ea2005318c989c813-0-rescue.conf                     9575947ef933448ea2005318c989c813-5.0.6-200.fc29.x86_64+debug.conf
9575947ef933448ea2005318c989c813-5.0.5-200.fc29.x86_64.conf        9575947ef933448ea2005318c989c813-5.0.6-300.fc30.x86_64.conf
9575947ef933448ea2005318c989c813-5.0.5-200.fc29.x86_64+debug.conf  9575947ef933448ea2005318c989c813-5.0.6-300.fc30.x86_64+debug.conf
9575947ef933448ea2005318c989c813-5.0.6-200.fc29.x86_64.conf        9575947ef933448ea2005318c989c813-5.1.0-rc4-test+.conf

たとえば、9575947ef933448ea2005318c989c813-5.1.0-rc4-test+.confはこんなファイルです。

title Fedora (5.1.0-rc4-test+) 30 (Thirty)
version 5.1.0-rc4-test+
linux /boot/vmlinuz-5.1.0-rc4-test+
initrd /boot/initramfs-5.1.0-rc4-test+.img
options $kernelopts
id fedora-20190408151310-5.1.0-rc4-test+
grub_users $grub_users
grub_arg --unrestricted
grub_class kernel-

uefiとnon uefi

従来はuefi環境なら/boot/efi/EFI/fedora/grub.cfg、biosなら/boot/grub2/grub.cfgが使われていましたが、BLSでは/boot/loader/entries/にあるファイルを読むことになります。

uefiな環境でも/boot/loader/entriesにファイルが置かれ、

masami@saga:~$ file /sys/firmware/efi/
/sys/firmware/efi/: directory
masami@saga:~$ sudo ls /boot/loader/entries
6ae2390b6ece4d5c86324fadb81d220d-0-rescue.conf                     6ae2390b6ece4d5c86324fadb81d220d-5.0.5-200.fc29.x86_64+debug.conf
6ae2390b6ece4d5c86324fadb81d220d-5.0.4-200.fc29.x86_64.conf        6ae2390b6ece4d5c86324fadb81d220d-5.0.6-300.fc30.x86_64.conf
6ae2390b6ece4d5c86324fadb81d220d-5.0.4-200.fc29.x86_64+debug.conf  6ae2390b6ece4d5c86324fadb81d220d-5.0.6-300.fc30.x86_64+debug.conf
6ae2390b6ece4d5c86324fadb81d220d-5.0.5-200.fc29.x86_64.conf        6ae2390b6ece4d5c86324fadb81d220d-5.1.0-rc4-test+.conf

non uefiな環境でも/boot/loader/entriesにファイルが置かれます。

root@kerntest:/boot/loader/entries# file /sys/firmware/efi                                                                                                                                   
/sys/firmware/efi: cannot open `/sys/firmware/efi' (No such file or directory)
root@kerntest:/boot/loader/entries# ls /boot/loader/entries/
9575947ef933448ea2005318c989c813-0-rescue.conf                     9575947ef933448ea2005318c989c813-5.0.6-200.fc29.x86_64+debug.conf
9575947ef933448ea2005318c989c813-5.0.5-200.fc29.x86_64.conf        9575947ef933448ea2005318c989c813-5.0.6-300.fc30.x86_64.conf
9575947ef933448ea2005318c989c813-5.0.5-200.fc29.x86_64+debug.conf  9575947ef933448ea2005318c989c813-5.0.6-300.fc30.x86_64+debug.conf
9575947ef933448ea2005318c989c813-5.0.6-200.fc29.x86_64.conf        9575947ef933448ea2005318c989c813-5.1.0-rc4-test+.conf

カーネルのmake install

make modules_install -> make installしますよね。この場合、以下のような流れで処理が走ります。

arch/x86/boot/install.sh 
     -> /sbin/installkernel 
         -> /usr/libexec/installkernel/installkernel-bls 
             -> /bin/kernel-install

make_installの挙動

/sbin/installkernelやusr/libexec/installkernel/installkernel-bls 、それに/bin/kernelinstallはfedora 29でもありますが、f29ではBLSには対応していないのでgrub.cfgにエントリを書く方式が使われます。ちなみに、f29には/usr/libexec/installkernel/installkernel-blsと/usr/libexec/installkernel/installkernelの2つがあります(if文の判定的に-blsのほうは使われない)が、f30では-blsの方しかありません。

これらのコマンドが含まれているパッケージは以下の表のようになります。

コマンド コマンドを提供しているパッケージ
/sbin/installkernel grubby
/usr/libexec/installkernel/installkernel-bls grubby
/bin/kernel-install systemd-udev

パッケージ

カーネルの登録

/bin/kernel-installコマンドでできますが、これは/boot/loader/entriesにファイルを作るだけです。make installするのではなくて、コマンド打っていく場合はこんな感じになります。make moduels_installは済んでいるとして、まずはdracutでinitramfsをつくり、

root@kerntest:/home/masami/linux-kernel (ktest)# dracut /boot/initramfs-5.1.0-rc4-test+.img 5.1.0-rc4-test+                                                                                  

/sbin/installkernelでカーネルを/bootにインストールします。

root@kerntest:/home/masami/linux-kernel (ktest)# /sbin/installkernel 5.1.0-rc4-test+ ./arch/x86/boot/bzImage ./System.map 

そうすると、/bin/kernel-installが内部で呼ばれるのでファイルができてます。

root@kerntest:/home/masami/linux-kernel (ktest)# cat /boot/loader/entries/9575947ef933448ea2005318c989c813-5.1.0-rc4-test+.conf
title Fedora (5.1.0-rc4-test+) 30 (Thirty)
version 5.1.0-rc4-test+
linux /boot/vmlinuz-5.1.0-rc4-test+
initrd /boot/initramfs-5.1.0-rc4-test+.img
options $kernelopts
id fedora-20190409141515-5.1.0-rc4-test+
grub_users $grub_users
grub_arg --unrestricted
grub_class kernel-

もしkernel-installを自分で実行するならこうなります。

root@kerntest:/home/masami/linux-kernel (ktest)# kernel-install add 5.1.0-rc4-test+ /boot/vmlinuz-5.1.0-rc4-test+ 

カーネルの削除

/bootにインストールしたカーネルとinitramfs、/boot/loader/entiresのファイルを消したい場合もkernel-installコマンドで出来ます。removeオプションにカーネルの話バージョンを渡せばokです

root@kerntest:/home/masami/linux-kernel (ktest)# kernel-install remove 5.1.0-rc4-test+

カーネルコマンドラインオプション

特定のエントリーに対してオプションを足したり、全部に足したりしたいですよね。Setting kernel command line arguments with Fedora 30 - Fedora Magazineが参考になります。

grubのメニューへの登録・削除

ブート時に/boot/loader/entriesにあるファイルを見てくれるので、ファイルを置けばメニューに追加され、消せばメニューから消えるという楽な仕様です。

grubの設定を確認したい

grubbyの出番です。

全部見たい場合はgrubby --info=ALLでみれます。エントリのindex番号もこれでわかります。

root@kerntest:/home/masami/linux-kernel (ktest)# grubby --info=ALL                                                                                                                            
index=0                                                                                                                                                                                       
kernel="/boot/vmlinuz-5.1.0-rc4-test+"                                                                                                                                                        
args="ro rhgb quiet nokaslr console=ttyS0,115200"                                                                                                                                             
root="UUID=620d1324-eba7-4beb-aab5-dd9975f25690"                                                                                                                                              
initrd="/boot/initramfs-5.1.0-rc4-test+.img"                                                                                                                                                  
title="Fedora (5.1.0-rc4-test+) 30 (Thirty)"                                                                                                                                                  
id="9575947ef933448ea2005318c989c813-5.1.0-rc4-test+"                                                                                                                                         
index=1                                                                                                                                                                                       
kernel="/boot/vmlinuz-5.0.6-300.fc30.x86_64+debug"

その他はgrubby --helpすれば良いと思います。

RHEL 8 betaのsrpmをリビルドしてmockでshellでログインできるところまで作る

この記事はLinux Advent Calendarの13日目です。

いんとろ

Powering IT’s future while preserving the present: Introducing Red Hat Enterprise Linux 8 Beta キタ━━━━(゚∀゚)━━━━!!って感じですよね。

srpmも公開されています。Index of /redhat/rhel/rhel-8-beta/baseos/source/PackagesIndex of /redhat/rhel/rhel-8-beta/appstream/source/Packagesにあります。BaseOSとかAppstreamとは?といくところはIntroducing Application Streams in RHEL 8 - RHD Blogとかを参照してもらえればokかと思います。

今回はrhel8以外の環境でrhel8のsrpmをリビルドしてrhelクローン的なものを作って遊ぼうではないかというところになります。

ビルド環境

ホストはfedora 29でビルド環境としてはmockのfedora 28にしました。RHEL 8はfedora 28ベースらしい(8.0 BETA RELEASE NOTES)のでfedora 28でいいかーって感じです。

ちなみに、mockrpmパッケージをクリーンな環境でビルドするためのツールです。意味合い的にはdebianpbuilderに近いかも?mockはchrootの環境にsystemd-nspawnを使ってます。

ビルド手順

手順としてはこういう感じになります。最初はfedora 28の環境でパッケージをビルドして、それ以降はリビルドしたパッケージを使ってmock環境を作ってビルドしていくというブートストラップ方式です。

  1. mockに必要なパッケージをダウンロードしてくる
  2. 最初はfedora 28環境でrhel 8 betaのsrpmをビルドしてrpmパッケージとsrpmパッケージを作ります
  3. 1で作ったrpmパッケージでmock環境を作り、そこで1で作ったsrpmをビルドします
  4. 2で作ったrpmパッケージで2で作ったsrpmをリビルド

今回は2の途中までしか出来てません。

パッケージのビルド

stage 0

パッケージの確認

最初に最低限のビルド環境を作る必要があるので、この環境に必要なパッケージのsrpmをダウンロードします。必要なパッケージが何か調べる方法ですがmockを使いました。fedora 29に入ってるmockパッケージだとmock環境としてrhel 8 betaの環境があります。なので、この環境を作ってその時にインストールされるパッケージを確認しました。

masami@saga:~/codes/rhel_rebuild/stage0$ ls /etc/mock/
./                    default.cfg@         fedora-27-aarch64.cfg  fedora-28-ppc64.cfg    fedora-29-x86_64.cfg        fedora-rawhide-i386.cfg     mageia-cauldron-aarch64.cfg      rhelbeta-8-aarch64.cfg
../                   default.cfg.rpmnew@  fedora-27-armhfp.cfg   fedora-28-ppc64le.cfg  fedora-30-aarch64.cfg@      fedora-rawhide-ppc64.cfg    mageia-cauldron-armv7hl.cfg      rhelbeta-8-ppc64le.cfg
custom-1-aarch64.cfg  eol/                 fedora-27-i386.cfg     fedora-28-s390x.cfg    fedora-30-armhfp.cfg@       fedora-rawhide-ppc64le.cfg  mageia-cauldron-i586.cfg         rhelbeta-8-s390x.cfg
custom-1-armhfp.cfg   epel-6-i386.cfg      fedora-27-ppc64.cfg    fedora-28-x86_64.cfg   fedora-30-i386.cfg@         fedora-rawhide-s390x.cfg    mageia-cauldron-x86_64.cfg       rhelbeta-8-x86_64.cfg
custom-1-i386.cfg     epel-6-ppc64.cfg     fedora-27-ppc64le.cfg  fedora-29-aarch64.cfg  fedora-30-ppc64.cfg@        fedora-rawhide-x86_64.cfg   opensuse-leap-15.0-x86_64.cfg    site-defaults.cfg
custom-1-ppc64.cfg    epel-6-x86_64.cfg    fedora-27-s390x.cfg    fedora-29-armhfp.cfg   fedora-30-ppc64le.cfg@      logging.ini                 opensuse-tumbleweed-aarch64.cfg
custom-1-ppc64le.cfg  epel-7-aarch64.cfg   fedora-27-x86_64.cfg   fedora-29-i386.cfg     fedora-30-s390x.cfg@        mageia-6-armv5tl.cfg        opensuse-tumbleweed-i586.cfg
custom-1-s390.cfg     epel-7-ppc64.cfg     fedora-28-aarch64.cfg  fedora-29-ppc64.cfg    fedora-30-x86_64.cfg@       mageia-6-armv7hl.cfg        opensuse-tumbleweed-ppc64.cfg
custom-1-s390x.cfg    epel-7-ppc64le.cfg   fedora-28-armhfp.cfg   fedora-29-ppc64le.cfg  fedora-rawhide-aarch64.cfg  mageia-6-i586.cfg           opensuse-tumbleweed-ppc64le.cfg
custom-1-x86_64.cfg   epel-7-x86_64.cfg    fedora-28-i386.cfg     fedora-29-s390x.cfg    fedora-rawhide-armhfp.cfg   mageia-6-x86_64.cfg         opensuse-tumbleweed-x86_64.cfg

インストールされたパッケージ数は160パッケージほどでした。そして個々のrpmパッケージがそのsrpmパッケージから調べると123個ほどでした。

srpmのダウンロード

ということで、ここで必要なのはsrpmパッケージをダウンロードしてビルドするための準備をします。ダウンロードは以下のスクリプトで行いました。

#!/bin/bash

urls=$(cat ./rpm_list.txt)

rm -fr srpms
mkdir -p srpms/{baseos,appstream}

cd srpms

for url in $urls;
do
    name=$(basename $url)
    dl_dir="baseos"

    echo $url | grep appstream >/dev/null 2>&1
    if [ $? -eq 0 ]; then
       dl_dir="appstream"
    fi

    savefile="$dl_dir/$name"

    echo "[-]Download $name to $dl_dir"
    curl -L -o $savefile $url
done

rpm_list.txtは以下のようにsrpmパッケージのリンクを1行ずつ書いてるだけです。

http://downloads.redhat.com/redhat/rhel/rhel-8-beta/baseos/source/Packages/acl-2.2.53-1.el8.src.rpm
http://downloads.redhat.com/redhat/rhel/rhel-8-beta/baseos/source/Packages/attr-2.4.48-3.el8.src.rpm

そして次のスクリプトでダウンロードしたsrpmパッケージを展開して、個々のsrpmパッケージに含まれるファイルをgitで管理するようにしてます。

#!/bin/bash

pkgrepo="../pkgrepo"

rm -fr $pkgrepo
mkdir -p $pkgrepo/{baseos,appstream}

topdir=$(pwd)

setup_dir() {
    path=$1

    dir="srpms/$path"
    srpms=$(ls $dir)

    for srpm in $srpms;
    do
        spec=$(rpm -ql $dir/$srpm | grep '.spec$')
        name="${spec%.*}"
        echo $name

        pushd . >/dev/null 2>&1

        cd $pkgrepo/$path
        mkdir $name

        cd $name
        git init
        rpm2cpio ../../../stage0/srpms/$path/$srpm | cpio -iv
        git add .
        git commit -m "initial commit"

        popd >/dev/null 2>&1
    done

}

setup_dir "baseos"
setup_dir "appstream"

ここはmockとpackageのgitリポジトリとリビルド - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモのおまけで紹介したことをやってます。

ここまでで各srpmパッケージについてspecとかパッチなんかをgitで管理できるようになりました。

stage 1

ビルド環境設定

次はパッケージをfedora 28のmock環境でビルドしていきます。最初にsrpmを作って次にrpmを作る流れです。この時にmockに渡すconfigファイルを自前で用意します。と言っても/etc/mockにあるfedora 28のファイルを名前を変えてコピーするだけなのでなくても良いんですが。それとmacros.distファイルを使います。これはそのままビルドするとディストリビューション名がfc28とかになってしまうのでこれを変更するためです。 macros.distはこんな感じです。

# dist macros.

%foobar              8
%dist                %{?distprefix}.fb8
%fb8                1

srpmの作成

srpmのリビルドはこんなスクリプトで行います。

#!/bin/bash

pkg_gitrepo="../pkg_gitrepo"
mockcfg="./foobar.cfg"
macrofile="./macros.dist"

pkgkind=("baseos" "appstream")

resultdir_root="./srpms"

if [ -d $resultdir_root ]; then
    rm -fr $resultdir_root
fi

mkdir -p $resultdir_root/{baseos,appstream}

for kind in ${pkgkind[@]};
do
    packages=$(echo $pkg_gitrepo/$kind/*)

    for pkgdir in ${packages[@]};
    do
        name=$(basename $pkgdir)
        resultdir="$resultdir_root/$kind/"

        echo "[-]$(date) Create $name srpm"
        mock -r $mockcfg --resultdir=$resultdir --macro-file=$macrofile --buildsrpm --spec $pkgdir/${name}.spec --sources $pkgdir >/dev/null 2>&1
        if [ $? -eq 0 ]; then
            echo "[-]$(date) Success build $name srpm"
        else
            echo "[*]$(date) Fail build $name srpm"
        fi
        echo "[-]$(date) End $name srpm"
    done
done

find srpms/ -name "*.log" | xargs rm -f

echo "[-]$(date) Done."

rpmパッケージの作成

そして作成したsrpmをビルドします。

#!/bin/bash

pkg_gitrepo="../pkg_gitrepo"
mockcfg="./foobar.cfg"
macrofile="./macros.dist"

pkgkind=("baseos" "appstream")

srpmsdir="./srpms"
resultdir_root="./rpms"

if [ -d $resultdir_root ]; then
    rm -fr $resultdir_root
fi

mkdir -p $resultdir_root/{baseos,appstream}

echo "[-]$(date) build start"

for kind in ${pkgkind[@]};
do
    packages=$(echo $srpmsdir/$kind/*)

    for pkg in ${packages[@]};
    do
        srcrpm=$(basename $pkg)

        spec=$(rpm -ql $pkg | grep '.spec$')
        pkgname="${spec%.*}"

        echo "[-]$(date) Build $pkgname start"

        resultdir="$resultdir_root/$kind/$pkgname"
        mkdir -p $resultdir

        mock -r $mockcfg --resultdir=$resultdir --macro-file=$macrofile --nocheck --rebuild $pkg >/dev/null 2>&1
        ls $resultdir/*.rpm >/dev/null 2>&1
        if [ $? -eq 0 ]; then
            echo "[-]$(date) Rebuild $pkgname success"
        else
            echo "[*]$(date) Rebuild $pkgname failed"
        fi
        echo "[-]$(date) Build $pkgname end"
    done
done

echo "[-]$(date) End"

これでビルドに成功したパッケージはヽ(=´▽`=)ノという感じで、失敗したものは原因を調べてspecファイルを修正するなどの作業が必要です。まあ。specファイルの修正があるのでgit管理できるようにしたんですね(ノω・)テヘ 単純にビルド成功させるためとしては5、6個のパッケージのspecファイルを修正したのと、いくつかのパッケージはrhel 8 betaのbinutilsが必要だったりしました。

binutilsの方はmockでビルドする前に--installオプションでリビルドしたbinutilsをインストールしてから--nocleanオプションを付けて事前に環境を綺麗にしないでビルドさせるようにしてパッケージのビルドを行いました。

こんな感じで全部のパッケージをビルドしました。

dnfのリポジトリ作成

createrepoコマンドでサクッと作りました。作り方としては、BaseOSとAppstreamは分ける必要が有るので分けてます。ディレクトリ構成としてはこんな感じにしました。repodata/はPackagesやsourcesの中に有る形です。

pkgrepo_for_stage2     ----    baseos    ----    x86_64    ----    Packages
                                     |                       |---     sources
                                     |---    appstream    ----      x86_64    ----    Packages
                                                                  |---       source

stage 2

mockの設定ファイル

stage 1で作ったパッケージを使った環境でmockを使えるようにします。ここでもやっとmock用の設定ファイルをちゃんと使うようになります。foobar.cfgとして以下のようにしました。パッケージグループは作ってないのでパッケージはベタに書いてます(´・ω・`)

config_opts['root'] = 'foobar8'
config_opts['target_arch'] = 'x86_64'
config_opts['legal_host_arches'] = ('x86_64',)
#config_opts['chroot_setup_cmd'] = 'install @buildsys-build'
config_opts['chroot_setup_cmd'] = 'install bash bzip2 coreutils cpio diffutils findutils gawk grep gzip info make patch redhat-release sed shadow-utils tar unzip util-linux which xz rpm binutils glibc-devel libgomp isl libmpc cpp'
config_opts['dist'] = 'fb8'  # only useful for --resultdir variable subst
config_opts['extra_chroot_dirs'] = [ '/run/lock', ]
config_opts['releasever'] = 'fb'
config_opts['package_manager'] = 'dnf'

config_opts['yum.conf'] = """
[main]
keepcache=1
debuglevel=2
reposdir=/dev/null
logfile=/var/log/yum.log
retries=20
obsoletes=1
gpgcheck=0
assumeyes=1
syslog_ident=mock
syslog_device=
install_weak_deps=0
metadata_expire=0
mdpolicy=group:primary
best=1

# repos

[foobar-base]
name=Foobar BaseOS
baseurl=file:///home/masami/rhel_rebuild/pkgrepo_for_stage2/baseos/x86_64/Packages
enabled=1
gpgcheck=0

[foobar-appstream]
name=Foobar Appstream
baseurl=file:///home/masami/rhel_rebuild/pkgrepo_for_stage2/appstream/x86_64/Packages
enabled=1
gpgcheck=0

[foobar-base-source]
name=Foobar BaseOS source
baseurl=file:///home/masami/rhel_rebuild/pkgrepo_for_stage2/baseos/source
enabled=0

[foobar-base-source]
name=Foobar BaseOS source
baseurl=file:///home/masami/rhel_rebuild/pkgrepo_for_stage2/appstream/source
enabled=0

mock環境にログイン

これを使ってmock環境にログインすることができます。

masami@rhel-build:~/rhel_rebuild/stage2$ mock -r ./foobar.cfg --shell /bin/bash
INFO: mock.py version 1.4.13 starting (python version = 3.7.1)...
Start: init plugins
INFO: selinux disabled
Finish: init plugins
Start: run
Start: chroot init
INFO: calling preinit hooks
INFO: enabled root cache
INFO: enabled dnf cache
Start: cleaning dnf metadata
Finish: cleaning dnf metadata
INFO: enabled HW Info plugin
Start: dnf install
Foobar Appstream                                                                                                                                                                    18 kB/s |  36 kB     00:02
Foobar BaseOS                                                                                                                                                                      491 kB/s | 1.0 MB     00:02
Dependencies resolved.
===================================================================================================================================================================================================================
 Package                                             Arch                                   Version                                                         Repository                                        Size
===================================================================================================================================================================================================================
Installing:
 isl                                                 x86_64                                 0.16.1-6.fb8                                                    foobar-appstream                                 841 k
 libmpc                                              x86_64                                 1.0.2-9.fb8                                                     foobar-appstream                                  57 k
 bash                                                x86_64                                 4.4.19-6.fb8                                                    foobar-base                                      1.5 M
 binutils                                            x86_64                                 2.30-49.fb8                                                     foobar-base                                      5.6 M
 bzip2                                               x86_64                                 1.0.6-26.fb8                                                    foobar-base                                       59 k
 coreutils                                           x86_64                                 8.30-4.fb8                                                      foobar-base                                      1.2 M
 cpio                                                x86_64                                 2.12-8.fb8                                                      foobar-base                                      264 k
 cpp                                                 x86_64                                 8.2.1-3.3.fb8                                                   foobar-base                                       10 M
 diffutils                                           x86_64                                 3.6-5.fb8                                                       foobar-base                                      358 k
 findutils                                           x86_64                                 1:4.6.0-19.fb8                                                  foobar-base                                      526 k
 gawk                                                x86_64                                 4.2.1-1.fb8                                                     foobar-base                                      1.1 M
 glibc-devel                                         x86_64                                 2.28-18.fb8                                                     foobar-base                                      1.0 M
 grep                                                x86_64                                 3.1-6.fb8                                                       foobar-base                                      272 k
 gzip                                                x86_64                                 1.9-4.fb8                                                       foobar-base                                      164 k
 info                                                x86_64                                 6.5-4.fb8                                                       foobar-base                                      197 k
 libgomp                                             x86_64                                 8.2.1-3.3.fb8                                                   foobar-base                                      187 k
 make                                                x86_64                                 1:4.2.1-9.fb8                                                   foobar-base                                      496 k
 patch                                               x86_64                                 2.7.6-7.fb8                                                     foobar-base                                      136 k
 redhat-release                                      x86_64                                 8.0-0.34.fb8                                                    foobar-base                                       44 k
 rpm                                                 x86_64                                 4.14.2-4.fb8                                                    foobar-base                                      534 k
 sed                                                 x86_64                                 4.5-1.fb8                                                       foobar-base                                      296 k
 shadow-utils                                        x86_64                                 2:4.6-4.fb8                                                     foobar-base                                      1.2 M
 tar                                                 x86_64                                 2:1.30-4.fb8                                                    foobar-base                                      837 k
 unzip                                               x86_64                                 6.0-38.fb8                                                      foobar-base                                      190 k
 util-linux                                          x86_64                                 2.32.1-6.fb8                                                    foobar-base                                      2.5 M
 which                                               x86_64                                 2.21-10.fb8                                                     foobar-base                                       47 k
 xz                                                  x86_64                                 5.2.4-2.fb8                                                     foobar-base                                      151 k
Installing dependencies:
 audit-libs                                          x86_64                                 3.0-0.5.20180831git0047a6c.fb8                                  foobar-base                                      114 k
 basesystem                                          noarch                                 11-5.fb8                                                        foobar-base                                      9.3 k
 bzip2-libs                                          x86_64                                 1.0.6-26.fb8                                                    foobar-base                                       47 k
 ca-certificates                                     noarch                                 2018.2.24-6.fb8                                                 foobar-base                                      393 k
 chkconfig                                           x86_64                                 1.11-1.fb8                                                      foobar-base                                      188 k
 coreutils-common                                    x86_64                                 8.30-4.fb8                                                      foobar-base                                      2.0 M
 cracklib                                            x86_64                                 2.9.6-14.fb8                                                    foobar-base                                       92 k
 crypto-policies                                     noarch                                 20181026-1.gitcc78cb7.fb8                                       foobar-base                                       48 k
 curl                                                x86_64                                 7.61.1-5.fb8                                                    foobar-base                                      350 k
 elfutils-libelf                                     x86_64                                 0.174-1.fb8                                                     foobar-base                                      208 k
 expat                                               x86_64                                 2.2.5-3.fb8                                                     foobar-base                                      109 k
 filesystem                                          x86_64                                 3.8-2.fb8                                                       foobar-base                                      1.1 M
 glibc                                               x86_64                                 2.28-18.fb8                                                     foobar-base                                      3.7 M
 glibc-all-langpacks                                 x86_64                                 2.28-18.fb8                                                     foobar-base                                       25 M
 glibc-common                                        x86_64                                 2.28-18.fb8                                                     foobar-base                                      796 k
 glibc-headers                                       x86_64                                 2.28-18.fb8                                                     foobar-base                                      460 k
 gmp                                                 x86_64                                 1:6.1.2-8.fb8                                                   foobar-base                                      318 k
 kernel-headers                                      x86_64                                 4.18.0-32.fb8                                                   foobar-base                                      1.3 M
 keyutils-libs                                       x86_64                                 1.5.10-6.fb8                                                    foobar-base                                       32 k
 krb5-libs                                           x86_64                                 1.16.1-19.fb8                                                   foobar-base                                      842 k
 libacl                                              x86_64                                 2.2.53-1.fb8                                                    foobar-base                                       34 k
 libarchive                                          x86_64                                 3.3.2-3.fb8                                                     foobar-base                                      356 k
 libattr                                             x86_64                                 2.4.48-3.fb8                                                    foobar-base                                       26 k
 libblkid                                            x86_64                                 2.32.1-6.fb8                                                    foobar-base                                      211 k
 libcap                                              x86_64                                 2.25-9.fb8                                                      foobar-base                                       55 k
 libcap-ng                                           x86_64                                 0.7.9-3.fb8                                                     foobar-base                                       32 k
 libcom_err                                          x86_64                                 1.44.3-1.fb8                                                    foobar-base                                       47 k
 libcurl-minimal                                     x86_64                                 7.61.1-5.fb8                                                    foobar-base                                      279 k
 libdb                                               x86_64                                 5.3.28-33.fb8                                                   foobar-base                                      757 k
 libdb-utils                                         x86_64                                 5.3.28-33.fb8                                                   foobar-base                                      147 k
 libfdisk                                            x86_64                                 2.32.1-6.fb8                                                    foobar-base                                      246 k
 libffi                                              x86_64                                 3.1-17.fb8                                                      foobar-base                                       35 k
 libgcc                                              x86_64                                 8.2.1-3.3.fb8                                                   foobar-base                                       75 k
 libgcrypt                                           x86_64                                 1.8.3-2.fb8                                                     foobar-base                                      457 k
 libgpg-error                                        x86_64                                 1.31-1.fb8                                                      foobar-base                                      240 k
 libmetalink                                         x86_64                                 0.1.3-7.fb8                                                     foobar-base                                       31 k
 libmount                                            x86_64                                 2.32.1-6.fb8                                                    foobar-base                                      228 k
 libnghttp2                                          x86_64                                 1.33.0-1.fb8                                                    foobar-base                                       76 k
 libnsl2                                             x86_64                                 1.2.0-2.20180605git4a062cf.fb8                                  foobar-base                                       56 k
 libpkgconf                                          x86_64                                 1.4.2-1.fb8                                                     foobar-base                                       33 k
 libpwquality                                        x86_64                                 1.4.0-8.fb8                                                     foobar-base                                      101 k
 libselinux                                          x86_64                                 2.8-5.fb8                                                       foobar-base                                      177 k
 libsemanage                                         x86_64                                 2.8-3.1.fb8                                                     foobar-base                                      160 k
 libsepol                                            x86_64                                 2.8-1.fb8                                                       foobar-base                                      337 k
 libsigsegv                                          x86_64                                 2.11-5.fb8                                                      foobar-base                                       29 k
 libsmartcols                                        x86_64                                 2.32.1-6.fb8                                                    foobar-base                                      171 k
 libstdc++                                           x86_64                                 8.2.1-3.3.fb8                                                   foobar-base                                      446 k
 libtasn1                                            x86_64                                 4.13-3.fb8                                                      foobar-base                                       75 k
 libtirpc                                            x86_64                                 1.1.4-3.fb8                                                     foobar-base                                      111 k
 libutempter                                         x86_64                                 1.1.6-14.fb8                                                    foobar-base                                       30 k
 libuuid                                             x86_64                                 2.32.1-6.fb8                                                    foobar-base                                       91 k
 libverto                                            x86_64                                 0.3.0-5.fb8                                                     foobar-base                                       23 k
 libxcrypt                                           x86_64                                 4.1.1-4.fb8                                                     foobar-base                                       72 k
 libxcrypt-devel                                     x86_64                                 4.1.1-4.fb8                                                     foobar-base                                       24 k
 libxml2                                             x86_64                                 2.9.7-5.fb8                                                     foobar-base                                      694 k
 lua-libs                                            x86_64                                 5.3.4-10.fb8                                                    foobar-base                                      117 k
 lz4-libs                                            x86_64                                 1.8.1.2-4.fb8                                                   foobar-base                                       54 k
 mpfr                                                x86_64                                 3.1.6-1.fb8                                                     foobar-base                                      220 k
 ncurses                                             x86_64                                 6.1-5.20180224.fb8                                              foobar-base                                      377 k
 ncurses-base                                        noarch                                 6.1-5.20180224.fb8                                              foobar-base                                       79 k
 ncurses-libs                                        x86_64                                 6.1-5.20180224.fb8                                              foobar-base                                      333 k
 openssl-libs                                        x86_64                                 1:1.1.1-6.fb8                                                   foobar-base                                      1.4 M
 p11-kit                                             x86_64                                 0.23.14-2.fb8                                                   foobar-base                                      270 k
 p11-kit-trust                                       x86_64                                 0.23.14-2.fb8                                                   foobar-base                                      137 k
 pam                                                 x86_64                                 1.3.1-3.fb8                                                     foobar-base                                      741 k
 pcre                                                x86_64                                 8.42-4.fb8                                                      foobar-base                                      207 k
 pcre2                                               x86_64                                 10.31-11.fb8                                                    foobar-base                                      237 k
 pkgconf                                             x86_64                                 1.4.2-1.fb8                                                     foobar-base                                       37 k
 pkgconf-m4                                          noarch                                 1.4.2-1.fb8                                                     foobar-base                                       16 k
 pkgconf-pkg-config                                  x86_64                                 1.4.2-1.fb8                                                     foobar-base                                       14 k
 popt                                                x86_64                                 1.16-14.fb8                                                     foobar-base                                       60 k
 readline                                            x86_64                                 7.0-10.fb8                                                      foobar-base                                      198 k
 rpm-libs                                            x86_64                                 4.14.2-4.fb8                                                    foobar-base                                      331 k
 rpm-plugin-selinux                                  x86_64                                 4.14.2-4.fb8                                                    foobar-base                                       69 k
 setup                                               noarch                                 2.12.2-1.fb8                                                    foobar-base                                      179 k
 systemd-libs                                        x86_64                                 239-8.fb8                                                       foobar-base                                      524 k
 tzdata                                              noarch                                 2018e-2.fb8                                                     foobar-base                                      458 k
 xz-libs                                             x86_64                                 5.2.4-2.fb8                                                     foobar-base                                       93 k
 zlib                                                x86_64                                 1.2.11-10.fb8                                                   foobar-base                                      100 k

Transaction Summary
===================================================================================================================================================================================================================
Install  106 Packages

Total size: 79 M
Installed size: 378 M
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Running scriptlet: filesystem-3.8-2.fb8.x86_64                                                                                                                                                               1/1
  Preparing        :                                                                                                                                                                                           1/1
  Installing       : libgcc-8.2.1-3.3.fb8.x86_64                                                                                                                                                             1/106
  Running scriptlet: libgcc-8.2.1-3.3.fb8.x86_64                                                                                                                                                             1/106
  Installing       : tzdata-2018e-2.fb8.noarch                                                                                                                                                               2/106
  Installing       : redhat-release-8.0-0.34.fb8.x86_64                                                                                                                                                      3/106
  Installing       : setup-2.12.2-1.fb8.noarch                                                                                                                                                               4/106
  Running scriptlet: setup-2.12.2-1.fb8.noarch                                                                                                                                                               4/106
warning: /etc/hosts created as /etc/hosts.rpmnew

  Installing       : filesystem-3.8-2.fb8.x86_64                                                                                                                                                             5/106
  Installing       : basesystem-11-5.fb8.noarch                                                                                                                                                              6/106
  Installing       : pkgconf-m4-1.4.2-1.fb8.noarch                                                                                                                                                           7/106
  Installing       : ncurses-base-6.1-5.20180224.fb8.noarch                                                                                                                                                  8/106
  Installing       : pcre2-10.31-11.fb8.x86_64                                                                                                                                                               9/106
  Installing       : libselinux-2.8-5.fb8.x86_64                                                                                                                                                            10/106
  Installing       : ncurses-libs-6.1-5.20180224.fb8.x86_64                                                                                                                                                 11/106
  Installing       : glibc-all-langpacks-2.28-18.fb8.x86_64                                                                                                                                                 12/106
  Installing       : glibc-common-2.28-18.fb8.x86_64                                                                                                                                                        13/106
  Running scriptlet: glibc-2.28-18.fb8.x86_64                                                                                                                                                               14/106
  Installing       : glibc-2.28-18.fb8.x86_64                                                                                                                                                               14/106
  Running scriptlet: glibc-2.28-18.fb8.x86_64                                                                                                                                                               14/106
  Installing       : bash-4.4.19-6.fb8.x86_64                                                                                                                                                               15/106
  Running scriptlet: bash-4.4.19-6.fb8.x86_64                                                                                                                                                               15/106
  Installing       : libsepol-2.8-1.fb8.x86_64                                                                                                                                                              16/106
  Running scriptlet: libsepol-2.8-1.fb8.x86_64                                                                                                                                                              16/106
  Installing       : zlib-1.2.11-10.fb8.x86_64                                                                                                                                                              17/106
  Installing       : info-6.5-4.fb8.x86_64                                                                                                                                                                  18/106
  Installing       : bzip2-libs-1.0.6-26.fb8.x86_64                                                                                                                                                         19/106
  Installing       : xz-libs-5.2.4-2.fb8.x86_64                                                                                                                                                             20/106
  Installing       : gmp-1:6.1.2-8.fb8.x86_64                                                                                                                                                               21/106
  Running scriptlet: gmp-1:6.1.2-8.fb8.x86_64                                                                                                                                                               21/106
  Installing       : libcap-2.25-9.fb8.x86_64                                                                                                                                                               22/106
  Installing       : libdb-5.3.28-33.fb8.x86_64                                                                                                                                                             23/106
  Running scriptlet: libdb-5.3.28-33.fb8.x86_64                                                                                                                                                             23/106
  Installing       : libattr-2.4.48-3.fb8.x86_64                                                                                                                                                            24/106
  Installing       : libacl-2.2.53-1.fb8.x86_64                                                                                                                                                             25/106
  Installing       : sed-4.5-1.fb8.x86_64                                                                                                                                                                   26/106
  Running scriptlet: sed-4.5-1.fb8.x86_64                                                                                                                                                                   26/106
  Installing       : libuuid-2.32.1-6.fb8.x86_64                                                                                                                                                            27/106
  Running scriptlet: libuuid-2.32.1-6.fb8.x86_64                                                                                                                                                            27/106
  Installing       : libxcrypt-4.1.1-4.fb8.x86_64                                                                                                                                                           28/106
  Installing       : popt-1.16-14.fb8.x86_64                                                                                                                                                                29/106
  Installing       : mpfr-3.1.6-1.fb8.x86_64                                                                                                                                                                30/106
  Running scriptlet: mpfr-3.1.6-1.fb8.x86_64                                                                                                                                                                30/106
  Installing       : elfutils-libelf-0.174-1.fb8.x86_64                                                                                                                                                     31/106
  Installing       : libcom_err-1.44.3-1.fb8.x86_64                                                                                                                                                         32/106
  Running scriptlet: libcom_err-1.44.3-1.fb8.x86_64                                                                                                                                                         32/106
  Installing       : lua-libs-5.3.4-10.fb8.x86_64                                                                                                                                                           33/106
  Installing       : chkconfig-1.11-1.fb8.x86_64                                                                                                                                                            34/106
  Installing       : libcap-ng-0.7.9-3.fb8.x86_64                                                                                                                                                           35/106
  Installing       : audit-libs-3.0-0.5.20180831git0047a6c.fb8.x86_64                                                                                                                                       36/106
  Running scriptlet: audit-libs-3.0-0.5.20180831git0047a6c.fb8.x86_64                                                                                                                                       36/106
  Installing       : libffi-3.1-17.fb8.x86_64                                                                                                                                                               37/106
  Installing       : p11-kit-0.23.14-2.fb8.x86_64                                                                                                                                                           38/106
  Running scriptlet: p11-kit-0.23.14-2.fb8.x86_64                                                                                                                                                           38/106
  Installing       : lz4-libs-1.8.1.2-4.fb8.x86_64                                                                                                                                                          39/106
  Installing       : libsemanage-2.8-3.1.fb8.x86_64                                                                                                                                                         40/106
  Installing       : libmpc-1.0.2-9.fb8.x86_64                                                                                                                                                              41/106
  Running scriptlet: libmpc-1.0.2-9.fb8.x86_64                                                                                                                                                              41/106
  Installing       : libdb-utils-5.3.28-33.fb8.x86_64                                                                                                                                                       42/106
  Installing       : libxml2-2.9.7-5.fb8.x86_64                                                                                                                                                             43/106
  Installing       : coreutils-common-8.30-4.fb8.x86_64                                                                                                                                                     44/106
  Running scriptlet: coreutils-common-8.30-4.fb8.x86_64                                                                                                                                                     44/106
  Installing       : readline-7.0-10.fb8.x86_64                                                                                                                                                             45/106
  Running scriptlet: readline-7.0-10.fb8.x86_64                                                                                                                                                             45/106
  Installing       : expat-2.2.5-3.fb8.x86_64                                                                                                                                                               46/106
  Installing       : libmetalink-0.1.3-7.fb8.x86_64                                                                                                                                                         47/106
  Installing       : keyutils-libs-1.5.10-6.fb8.x86_64                                                                                                                                                      48/106
  Installing       : libgpg-error-1.31-1.fb8.x86_64                                                                                                                                                         49/106
  Installing       : libgcrypt-1.8.3-2.fb8.x86_64                                                                                                                                                           50/106
  Running scriptlet: libgcrypt-1.8.3-2.fb8.x86_64                                                                                                                                                           50/106
  Installing       : libnghttp2-1.33.0-1.fb8.x86_64                                                                                                                                                         51/106
  Installing       : libpkgconf-1.4.2-1.fb8.x86_64                                                                                                                                                          52/106
  Installing       : pkgconf-1.4.2-1.fb8.x86_64                                                                                                                                                             53/106
  Installing       : pkgconf-pkg-config-1.4.2-1.fb8.x86_64                                                                                                                                                  54/106
  Installing       : libsigsegv-2.11-5.fb8.x86_64                                                                                                                                                           55/106
  Installing       : gawk-4.2.1-1.fb8.x86_64                                                                                                                                                                56/106
  Installing       : libsmartcols-2.32.1-6.fb8.x86_64                                                                                                                                                       57/106
  Running scriptlet: libsmartcols-2.32.1-6.fb8.x86_64                                                                                                                                                       57/106
  Installing       : libstdc++-8.2.1-3.3.fb8.x86_64                                                                                                                                                         58/106
  Running scriptlet: libstdc++-8.2.1-3.3.fb8.x86_64                                                                                                                                                         58/106
  Installing       : libtasn1-4.13-3.fb8.x86_64                                                                                                                                                             59/106
  Running scriptlet: libtasn1-4.13-3.fb8.x86_64                                                                                                                                                             59/106
  Installing       : p11-kit-trust-0.23.14-2.fb8.x86_64                                                                                                                                                     60/106
  Running scriptlet: p11-kit-trust-0.23.14-2.fb8.x86_64                                                                                                                                                     60/106
  Installing       : libverto-0.3.0-5.fb8.x86_64                                                                                                                                                            61/106
  Installing       : ncurses-6.1-5.20180224.fb8.x86_64                                                                                                                                                      62/106
  Installing       : pcre-8.42-4.fb8.x86_64                                                                                                                                                                 63/106
  Installing       : grep-3.1-6.fb8.x86_64                                                                                                                                                                  64/106
  Running scriptlet: grep-3.1-6.fb8.x86_64                                                                                                                                                                  64/106
  Installing       : openssl-libs-1:1.1.1-6.fb8.x86_64                                                                                                                                                      65/106
  Running scriptlet: openssl-libs-1:1.1.1-6.fb8.x86_64                                                                                                                                                      65/106
  Installing       : coreutils-8.30-4.fb8.x86_64                                                                                                                                                            66/106
  Installing       : crypto-policies-20181026-1.gitcc78cb7.fb8.noarch                                                                                                                                       67/106
  Running scriptlet: crypto-policies-20181026-1.gitcc78cb7.fb8.noarch                                                                                                                                       67/106
  Running scriptlet: ca-certificates-2018.2.24-6.fb8.noarch                                                                                                                                                 68/106
  Installing       : ca-certificates-2018.2.24-6.fb8.noarch                                                                                                                                                 68/106
  Running scriptlet: ca-certificates-2018.2.24-6.fb8.noarch                                                                                                                                                 68/106
  Installing       : libblkid-2.32.1-6.fb8.x86_64                                                                                                                                                           69/106
  Running scriptlet: libblkid-2.32.1-6.fb8.x86_64                                                                                                                                                           69/106
  Installing       : libmount-2.32.1-6.fb8.x86_64                                                                                                                                                           70/106
  Running scriptlet: libmount-2.32.1-6.fb8.x86_64                                                                                                                                                           70/106
  Installing       : krb5-libs-1.16.1-19.fb8.x86_64                                                                                                                                                         71/106
  Installing       : libtirpc-1.1.4-3.fb8.x86_64                                                                                                                                                            72/106
  Running scriptlet: libtirpc-1.1.4-3.fb8.x86_64                                                                                                                                                            72/106
  Installing       : libnsl2-1.2.0-2.20180605git4a062cf.fb8.x86_64                                                                                                                                          73/106
  Running scriptlet: libnsl2-1.2.0-2.20180605git4a062cf.fb8.x86_64                                                                                                                                          73/106
  Installing       : libcurl-minimal-7.61.1-5.fb8.x86_64                                                                                                                                                    74/106
  Installing       : curl-7.61.1-5.fb8.x86_64                                                                                                                                                               75/106
  Installing       : systemd-libs-239-8.fb8.x86_64                                                                                                                                                          76/106
  Running scriptlet: systemd-libs-239-8.fb8.x86_64                                                                                                                                                          76/106
  Installing       : libfdisk-2.32.1-6.fb8.x86_64                                                                                                                                                           77/106
  Running scriptlet: libfdisk-2.32.1-6.fb8.x86_64                                                                                                                                                           77/106
  Installing       : gzip-1.9-4.fb8.x86_64                                                                                                                                                                  78/106
  Running scriptlet: gzip-1.9-4.fb8.x86_64                                                                                                                                                                  78/106
  Installing       : cracklib-2.9.6-14.fb8.x86_64                                                                                                                                                           79/106
  Installing       : libpwquality-1.4.0-8.fb8.x86_64                                                                                                                                                        80/106
  Installing       : pam-1.3.1-3.fb8.x86_64                                                                                                                                                                 81/106
  Running scriptlet: pam-1.3.1-3.fb8.x86_64                                                                                                                                                                 81/106
  Installing       : shadow-utils-2:4.6-4.fb8.x86_64                                                                                                                                                        82/106
  Running scriptlet: libutempter-1.1.6-14.fb8.x86_64                                                                                                                                                        83/106
  Installing       : libutempter-1.1.6-14.fb8.x86_64                                                                                                                                                        83/106
  Installing       : libarchive-3.3.2-3.fb8.x86_64                                                                                                                                                          84/106
  Installing       : rpm-4.14.2-4.fb8.x86_64                                                                                                                                                                85/106
  Installing       : rpm-libs-4.14.2-4.fb8.x86_64                                                                                                                                                           86/106
  Running scriptlet: rpm-libs-4.14.2-4.fb8.x86_64                                                                                                                                                           86/106
  Installing       : rpm-plugin-selinux-4.14.2-4.fb8.x86_64                                                                                                                                                 87/106
  Installing       : kernel-headers-4.18.0-32.fb8.x86_64                                                                                                                                                    88/106
  Running scriptlet: glibc-headers-2.28-18.fb8.x86_64                                                                                                                                                       89/106
  Installing       : glibc-headers-2.28-18.fb8.x86_64                                                                                                                                                       89/106
  Installing       : libxcrypt-devel-4.1.1-4.fb8.x86_64                                                                                                                                                     90/106
  Installing       : glibc-devel-2.28-18.fb8.x86_64                                                                                                                                                         91/106
  Running scriptlet: glibc-devel-2.28-18.fb8.x86_64                                                                                                                                                         91/106
  Installing       : util-linux-2.32.1-6.fb8.x86_64                                                                                                                                                         92/106
  Running scriptlet: util-linux-2.32.1-6.fb8.x86_64                                                                                                                                                         92/106
  Installing       : binutils-2.30-49.fb8.x86_64                                                                                                                                                            93/106
  Running scriptlet: binutils-2.30-49.fb8.x86_64                                                                                                                                                            93/106
  Installing       : xz-5.2.4-2.fb8.x86_64                                                                                                                                                                  94/106
  Installing       : cpp-8.2.1-3.3.fb8.x86_64                                                                                                                                                               95/106
  Running scriptlet: cpp-8.2.1-3.3.fb8.x86_64                                                                                                                                                               95/106
  Installing       : tar-2:1.30-4.fb8.x86_64                                                                                                                                                                96/106
  Running scriptlet: tar-2:1.30-4.fb8.x86_64                                                                                                                                                                96/106
  Installing       : patch-2.7.6-7.fb8.x86_64                                                                                                                                                               97/106
  Installing       : isl-0.16.1-6.fb8.x86_64                                                                                                                                                                98/106
  Running scriptlet: isl-0.16.1-6.fb8.x86_64                                                                                                                                                                98/106
  Installing       : bzip2-1.0.6-26.fb8.x86_64                                                                                                                                                              99/106
  Installing       : unzip-6.0-38.fb8.x86_64                                                                                                                                                               100/106
  Installing       : diffutils-3.6-5.fb8.x86_64                                                                                                                                                            101/106
  Running scriptlet: diffutils-3.6-5.fb8.x86_64                                                                                                                                                            101/106
  Installing       : findutils-1:4.6.0-19.fb8.x86_64                                                                                                                                                       102/106
  Running scriptlet: findutils-1:4.6.0-19.fb8.x86_64                                                                                                                                                       102/106
  Installing       : libgomp-8.2.1-3.3.fb8.x86_64                                                                                                                                                          103/106
  Running scriptlet: libgomp-8.2.1-3.3.fb8.x86_64                                                                                                                                                          103/106
  Installing       : make-1:4.2.1-9.fb8.x86_64                                                                                                                                                             104/106
  Running scriptlet: make-1:4.2.1-9.fb8.x86_64                                                                                                                                                             104/106
  Installing       : cpio-2.12-8.fb8.x86_64                                                                                                                                                                105/106
  Installing       : which-2.21-10.fb8.x86_64                                                                                                                                                              106/106
  Running scriptlet: filesystem-3.8-2.fb8.x86_64                                                                                                                                                           106/106
  Running scriptlet: glibc-all-langpacks-2.28-18.fb8.x86_64                                                                                                                                                106/106
  Running scriptlet: glibc-common-2.28-18.fb8.x86_64                                                                                                                                                       106/106
  Running scriptlet: info-6.5-4.fb8.x86_64                                                                                                                                                                 106/106
  Verifying        : isl-0.16.1-6.fb8.x86_64                                                                                                                                                                 1/106
  Verifying        : libmpc-1.0.2-9.fb8.x86_64                                                                                                                                                               2/106
  Verifying        : audit-libs-3.0-0.5.20180831git0047a6c.fb8.x86_64                                                                                                                                        3/106
  Verifying        : basesystem-11-5.fb8.noarch                                                                                                                                                              4/106
  Verifying        : bash-4.4.19-6.fb8.x86_64                                                                                                                                                                5/106
  Verifying        : binutils-2.30-49.fb8.x86_64                                                                                                                                                             6/106
  Verifying        : bzip2-1.0.6-26.fb8.x86_64                                                                                                                                                               7/106
  Verifying        : bzip2-libs-1.0.6-26.fb8.x86_64                                                                                                                                                          8/106
  Verifying        : ca-certificates-2018.2.24-6.fb8.noarch                                                                                                                                                  9/106
  Verifying        : chkconfig-1.11-1.fb8.x86_64                                                                                                                                                            10/106
  Verifying        : coreutils-8.30-4.fb8.x86_64                                                                                                                                                            11/106
  Verifying        : coreutils-common-8.30-4.fb8.x86_64                                                                                                                                                     12/106
  Verifying        : cpio-2.12-8.fb8.x86_64                                                                                                                                                                 13/106
  Verifying        : cpp-8.2.1-3.3.fb8.x86_64                                                                                                                                                               14/106
  Verifying        : cracklib-2.9.6-14.fb8.x86_64                                                                                                                                                           15/106
  Verifying        : crypto-policies-20181026-1.gitcc78cb7.fb8.noarch                                                                                                                                       16/106
  Verifying        : curl-7.61.1-5.fb8.x86_64                                                                                                                                                               17/106
  Verifying        : diffutils-3.6-5.fb8.x86_64                                                                                                                                                             18/106
  Verifying        : elfutils-libelf-0.174-1.fb8.x86_64                                                                                                                                                     19/106
  Verifying        : expat-2.2.5-3.fb8.x86_64                                                                                                                                                               20/106
  Verifying        : filesystem-3.8-2.fb8.x86_64                                                                                                                                                            21/106
  Verifying        : findutils-1:4.6.0-19.fb8.x86_64                                                                                                                                                        22/106
  Verifying        : gawk-4.2.1-1.fb8.x86_64                                                                                                                                                                23/106
  Verifying        : glibc-2.28-18.fb8.x86_64                                                                                                                                                               24/106
  Verifying        : glibc-all-langpacks-2.28-18.fb8.x86_64                                                                                                                                                 25/106
  Verifying        : glibc-common-2.28-18.fb8.x86_64                                                                                                                                                        26/106
  Verifying        : glibc-devel-2.28-18.fb8.x86_64                                                                                                                                                         27/106
  Verifying        : glibc-headers-2.28-18.fb8.x86_64                                                                                                                                                       28/106
  Verifying        : gmp-1:6.1.2-8.fb8.x86_64                                                                                                                                                               29/106
  Verifying        : grep-3.1-6.fb8.x86_64                                                                                                                                                                  30/106
  Verifying        : gzip-1.9-4.fb8.x86_64                                                                                                                                                                  31/106
  Verifying        : info-6.5-4.fb8.x86_64                                                                                                                                                                  32/106
  Verifying        : kernel-headers-4.18.0-32.fb8.x86_64                                                                                                                                                    33/106
  Verifying        : keyutils-libs-1.5.10-6.fb8.x86_64                                                                                                                                                      34/106
  Verifying        : krb5-libs-1.16.1-19.fb8.x86_64                                                                                                                                                         35/106
  Verifying        : libacl-2.2.53-1.fb8.x86_64                                                                                                                                                             36/106
  Verifying        : libarchive-3.3.2-3.fb8.x86_64                                                                                                                                                          37/106
  Verifying        : libattr-2.4.48-3.fb8.x86_64                                                                                                                                                            38/106
  Verifying        : libblkid-2.32.1-6.fb8.x86_64                                                                                                                                                           39/106
  Verifying        : libcap-2.25-9.fb8.x86_64                                                                                                                                                               40/106
  Verifying        : libcap-ng-0.7.9-3.fb8.x86_64                                                                                                                                                           41/106
  Verifying        : libcom_err-1.44.3-1.fb8.x86_64                                                                                                                                                         42/106
  Verifying        : libcurl-minimal-7.61.1-5.fb8.x86_64                                                                                                                                                    43/106
  Verifying        : libdb-5.3.28-33.fb8.x86_64                                                                                                                                                             44/106
  Verifying        : libdb-utils-5.3.28-33.fb8.x86_64                                                                                                                                                       45/106
  Verifying        : libfdisk-2.32.1-6.fb8.x86_64                                                                                                                                                           46/106
  Verifying        : libffi-3.1-17.fb8.x86_64                                                                                                                                                               47/106
  Verifying        : libgcc-8.2.1-3.3.fb8.x86_64                                                                                                                                                            48/106
  Verifying        : libgcrypt-1.8.3-2.fb8.x86_64                                                                                                                                                           49/106
  Verifying        : libgomp-8.2.1-3.3.fb8.x86_64                                                                                                                                                           50/106
  Verifying        : libgpg-error-1.31-1.fb8.x86_64                                                                                                                                                         51/106
  Verifying        : libmetalink-0.1.3-7.fb8.x86_64                                                                                                                                                         52/106
  Verifying        : libmount-2.32.1-6.fb8.x86_64                                                                                                                                                           53/106
  Verifying        : libnghttp2-1.33.0-1.fb8.x86_64                                                                                                                                                         54/106
  Verifying        : libnsl2-1.2.0-2.20180605git4a062cf.fb8.x86_64                                                                                                                                          55/106
  Verifying        : libpkgconf-1.4.2-1.fb8.x86_64                                                                                                                                                          56/106
  Verifying        : libpwquality-1.4.0-8.fb8.x86_64                                                                                                                                                        57/106
  Verifying        : libselinux-2.8-5.fb8.x86_64                                                                                                                                                            58/106
  Verifying        : libsemanage-2.8-3.1.fb8.x86_64                                                                                                                                                         59/106
  Verifying        : libsepol-2.8-1.fb8.x86_64                                                                                                                                                              60/106
  Verifying        : libsigsegv-2.11-5.fb8.x86_64                                                                                                                                                           61/106
  Verifying        : libsmartcols-2.32.1-6.fb8.x86_64                                                                                                                                                       62/106
  Verifying        : libstdc++-8.2.1-3.3.fb8.x86_64                                                                                                                                                         63/106
  Verifying        : libtasn1-4.13-3.fb8.x86_64                                                                                                                                                             64/106
  Verifying        : libtirpc-1.1.4-3.fb8.x86_64                                                                                                                                                            65/106
  Verifying        : libutempter-1.1.6-14.fb8.x86_64                                                                                                                                                        66/106
  Verifying        : libuuid-2.32.1-6.fb8.x86_64                                                                                                                                                            67/106
  Verifying        : libverto-0.3.0-5.fb8.x86_64                                                                                                                                                            68/106
  Verifying        : libxcrypt-4.1.1-4.fb8.x86_64                                                                                                                                                           69/106
  Verifying        : libxcrypt-devel-4.1.1-4.fb8.x86_64                                                                                                                                                     70/106
  Verifying        : libxml2-2.9.7-5.fb8.x86_64                                                                                                                                                             71/106
  Verifying        : lua-libs-5.3.4-10.fb8.x86_64                                                                                                                                                           72/106
  Verifying        : lz4-libs-1.8.1.2-4.fb8.x86_64                                                                                                                                                          73/106
  Verifying        : make-1:4.2.1-9.fb8.x86_64                                                                                                                                                              74/106
  Verifying        : mpfr-3.1.6-1.fb8.x86_64                                                                                                                                                                75/106
  Verifying        : ncurses-6.1-5.20180224.fb8.x86_64                                                                                                                                                      76/106
  Verifying        : ncurses-base-6.1-5.20180224.fb8.noarch                                                                                                                                                 77/106
  Verifying        : ncurses-libs-6.1-5.20180224.fb8.x86_64                                                                                                                                                 78/106
  Verifying        : openssl-libs-1:1.1.1-6.fb8.x86_64                                                                                                                                                      79/106
  Verifying        : p11-kit-0.23.14-2.fb8.x86_64                                                                                                                                                           80/106
  Verifying        : p11-kit-trust-0.23.14-2.fb8.x86_64                                                                                                                                                     81/106
  Verifying        : pam-1.3.1-3.fb8.x86_64                                                                                                                                                                 82/106
  Verifying        : patch-2.7.6-7.fb8.x86_64                                                                                                                                                               83/106
  Verifying        : pcre-8.42-4.fb8.x86_64                                                                                                                                                                 84/106
  Verifying        : pcre2-10.31-11.fb8.x86_64                                                                                                                                                              85/106
  Verifying        : pkgconf-1.4.2-1.fb8.x86_64                                                                                                                                                             86/106
  Verifying        : pkgconf-m4-1.4.2-1.fb8.noarch                                                                                                                                                          87/106
  Verifying        : pkgconf-pkg-config-1.4.2-1.fb8.x86_64                                                                                                                                                  88/106
  Verifying        : popt-1.16-14.fb8.x86_64                                                                                                                                                                89/106
  Verifying        : readline-7.0-10.fb8.x86_64                                                                                                                                                             90/106
  Verifying        : redhat-release-8.0-0.34.fb8.x86_64                                                                                                                                                     91/106
  Verifying        : rpm-4.14.2-4.fb8.x86_64                                                                                                                                                                92/106
  Verifying        : rpm-libs-4.14.2-4.fb8.x86_64                                                                                                                                                           93/106
  Verifying        : rpm-plugin-selinux-4.14.2-4.fb8.x86_64                                                                                                                                                 94/106
  Verifying        : sed-4.5-1.fb8.x86_64                                                                                                                                                                   95/106
  Verifying        : setup-2.12.2-1.fb8.noarch                                                                                                                                                              96/106
  Verifying        : shadow-utils-2:4.6-4.fb8.x86_64                                                                                                                                                        97/106
  Verifying        : systemd-libs-239-8.fb8.x86_64                                                                                                                                                          98/106
  Verifying        : tar-2:1.30-4.fb8.x86_64                                                                                                                                                                99/106
  Verifying        : tzdata-2018e-2.fb8.noarch                                                                                                                                                             100/106
  Verifying        : unzip-6.0-38.fb8.x86_64                                                                                                                                                               101/106
  Verifying        : util-linux-2.32.1-6.fb8.x86_64                                                                                                                                                        102/106
  Verifying        : which-2.21-10.fb8.x86_64                                                                                                                                                              103/106
  Verifying        : xz-5.2.4-2.fb8.x86_64                                                                                                                                                                 104/106
  Verifying        : xz-libs-5.2.4-2.fb8.x86_64                                                                                                                                                            105/106
  Verifying        : zlib-1.2.11-10.fb8.x86_64                                                                                                                                                             106/106

Installed:
  isl-0.16.1-6.fb8.x86_64                      libmpc-1.0.2-9.fb8.x86_64                           bash-4.4.19-6.fb8.x86_64                               binutils-2.30-49.fb8.x86_64
  bzip2-1.0.6-26.fb8.x86_64                    coreutils-8.30-4.fb8.x86_64                         cpio-2.12-8.fb8.x86_64                                 cpp-8.2.1-3.3.fb8.x86_64
  diffutils-3.6-5.fb8.x86_64                   findutils-1:4.6.0-19.fb8.x86_64                     gawk-4.2.1-1.fb8.x86_64                                glibc-devel-2.28-18.fb8.x86_64
  grep-3.1-6.fb8.x86_64                        gzip-1.9-4.fb8.x86_64                               info-6.5-4.fb8.x86_64                                  libgomp-8.2.1-3.3.fb8.x86_64
  make-1:4.2.1-9.fb8.x86_64                    patch-2.7.6-7.fb8.x86_64                            redhat-release-8.0-0.34.fb8.x86_64                     rpm-4.14.2-4.fb8.x86_64
  sed-4.5-1.fb8.x86_64                         shadow-utils-2:4.6-4.fb8.x86_64                     tar-2:1.30-4.fb8.x86_64                                unzip-6.0-38.fb8.x86_64
  util-linux-2.32.1-6.fb8.x86_64               which-2.21-10.fb8.x86_64                            xz-5.2.4-2.fb8.x86_64                                  audit-libs-3.0-0.5.20180831git0047a6c.fb8.x86_64
  basesystem-11-5.fb8.noarch                   bzip2-libs-1.0.6-26.fb8.x86_64                      ca-certificates-2018.2.24-6.fb8.noarch                 chkconfig-1.11-1.fb8.x86_64
  coreutils-common-8.30-4.fb8.x86_64           cracklib-2.9.6-14.fb8.x86_64                        crypto-policies-20181026-1.gitcc78cb7.fb8.noarch       curl-7.61.1-5.fb8.x86_64
  elfutils-libelf-0.174-1.fb8.x86_64           expat-2.2.5-3.fb8.x86_64                            filesystem-3.8-2.fb8.x86_64                            glibc-2.28-18.fb8.x86_64
  glibc-all-langpacks-2.28-18.fb8.x86_64       glibc-common-2.28-18.fb8.x86_64                     glibc-headers-2.28-18.fb8.x86_64                       gmp-1:6.1.2-8.fb8.x86_64
  kernel-headers-4.18.0-32.fb8.x86_64          keyutils-libs-1.5.10-6.fb8.x86_64                   krb5-libs-1.16.1-19.fb8.x86_64                         libacl-2.2.53-1.fb8.x86_64
  libarchive-3.3.2-3.fb8.x86_64                libattr-2.4.48-3.fb8.x86_64                         libblkid-2.32.1-6.fb8.x86_64                           libcap-2.25-9.fb8.x86_64
  libcap-ng-0.7.9-3.fb8.x86_64                 libcom_err-1.44.3-1.fb8.x86_64                      libcurl-minimal-7.61.1-5.fb8.x86_64                    libdb-5.3.28-33.fb8.x86_64
  libdb-utils-5.3.28-33.fb8.x86_64             libfdisk-2.32.1-6.fb8.x86_64                        libffi-3.1-17.fb8.x86_64                               libgcc-8.2.1-3.3.fb8.x86_64
  libgcrypt-1.8.3-2.fb8.x86_64                 libgpg-error-1.31-1.fb8.x86_64                      libmetalink-0.1.3-7.fb8.x86_64                         libmount-2.32.1-6.fb8.x86_64
  libnghttp2-1.33.0-1.fb8.x86_64               libnsl2-1.2.0-2.20180605git4a062cf.fb8.x86_64       libpkgconf-1.4.2-1.fb8.x86_64                          libpwquality-1.4.0-8.fb8.x86_64
  libselinux-2.8-5.fb8.x86_64                  libsemanage-2.8-3.1.fb8.x86_64                      libsepol-2.8-1.fb8.x86_64                              libsigsegv-2.11-5.fb8.x86_64
  libsmartcols-2.32.1-6.fb8.x86_64             libstdc++-8.2.1-3.3.fb8.x86_64                      libtasn1-4.13-3.fb8.x86_64                             libtirpc-1.1.4-3.fb8.x86_64
  libutempter-1.1.6-14.fb8.x86_64              libuuid-2.32.1-6.fb8.x86_64                         libverto-0.3.0-5.fb8.x86_64                            libxcrypt-4.1.1-4.fb8.x86_64
  libxcrypt-devel-4.1.1-4.fb8.x86_64           libxml2-2.9.7-5.fb8.x86_64                          lua-libs-5.3.4-10.fb8.x86_64                           lz4-libs-1.8.1.2-4.fb8.x86_64
  mpfr-3.1.6-1.fb8.x86_64                      ncurses-6.1-5.20180224.fb8.x86_64                   ncurses-base-6.1-5.20180224.fb8.noarch                 ncurses-libs-6.1-5.20180224.fb8.x86_64
  openssl-libs-1:1.1.1-6.fb8.x86_64            p11-kit-0.23.14-2.fb8.x86_64                        p11-kit-trust-0.23.14-2.fb8.x86_64                     pam-1.3.1-3.fb8.x86_64
  pcre-8.42-4.fb8.x86_64                       pcre2-10.31-11.fb8.x86_64                           pkgconf-1.4.2-1.fb8.x86_64                             pkgconf-m4-1.4.2-1.fb8.noarch
  pkgconf-pkg-config-1.4.2-1.fb8.x86_64        popt-1.16-14.fb8.x86_64                             readline-7.0-10.fb8.x86_64                             rpm-libs-4.14.2-4.fb8.x86_64
  rpm-plugin-selinux-4.14.2-4.fb8.x86_64       setup-2.12.2-1.fb8.noarch                           systemd-libs-239-8.fb8.x86_64                          tzdata-2018e-2.fb8.noarch
  xz-libs-5.2.4-2.fb8.x86_64                   zlib-1.2.11-10.fb8.x86_64

Complete!
Finish: dnf install
Start: creating root cache
Finish: creating root cache
Finish: chroot init
INFO: Installed packages:
Start: shell
[root@990c9a5364794a4788e69f8b4eb784ff /]#

ビルド環境としてのmock

ちょっと依存関係の解決が必要でまだ解決してないので綺麗なビルド環境としては使えません(´・ω・`) 

Error: 
 Problem: conflicting requests
  - nothing provides libgcc_s.so.1 needed by gcc-8.2.1-3.3.fb8.x86_64
ERROR: Command failed: 
 # /usr/bin/dnf --installroot /var/lib/mock/foobar8/root/ --releasever fb --disableplugin=local --setopt=deltarpm=False install bash bzip2 coreutils cpio diffutils findutils gawk grep gzip info make patch redhat-release sed shadow-utils tar unzip util-linux which xz rpm binutils glibc-devel libgomp isl libmpc cpp gcc
Foobar Appstream                                                                                                                                                                   3.0 kB/s | 3.0 kB     00:01    
Foobar BaseOS                                                                                                                                                                      3.0 kB/s | 3.0 kB     00:01    
Error: 
 Problem: conflicting requests
  - nothing provides libgcc_s.so.1 needed by gcc-8.2.1-3.3.fb8.x86_64

まとめ

RHELクローン的な物を作る遊びでした。段階を踏んで自分自身で自分をビルドしていくというブートストラップ方式はコンパイラ的な感じですね。

mockとpackageのgitリポジトリとリビルド

この記事はLinux Advent Calendarの19日目です。

概要

今回はsrpmをダウンロードしてきて何かをするのではなくて、パッケージのgitリポジトリからcloneしてきてビルドするときのメモです。パッケージのビルド方法としてはfedpkgを使うかmockを使うかの2通りがあります。両者の方法を見ていきましょう。

fedpkgの場合

masterブランチとかf29と言ったディストリビューションのバージョンのブランチをそのまま使わずに、ローカルにブランチを作って作業するとしましょう。こんな感じですね。

masami@saga:~/fedora-bash (master=)$ git checkout -b f29 origin/f29
Branch 'f29' set up to track remote branch 'f29' from 'origin'.
Switched to a new branch 'f29'
masami@saga:~/fedora-bash (f29=)$ git checkout -b build-test
Switched to a new branch 'build-test'

この場合、fedpkgで普通にmockbuildをするとエラーになります。これはローカルのブランチがリモートにも有ることを期待しているためです。で、--releaseオプションを使えと言われます。

masami@saga:~/fedora-bash (build-test)$ fedpkg mockbuild
Downloading bash-4.4.tar.gz
######################################################################## 100.0%
Could not execute mockbuild: Unable to find remote branch.  Use --release

--releaseオプションはmockbuildオプションのオプションではなくて、fedpkgのオプションです。ということでこのようにするとresults_bash/というディレクトリが出来て、その下にrpmパッケージが置かれます。

masami@saga:~/fedora-bash (build-test)$ fedpkg --release f29 mockbuild
warning: Macro expanded in comment on line 16: %{version}.tar.gz



warning: Macro expanded in comment on line 16: %{version}.tar.gz

Wrote: /home/masami/fedora-bash/bash-4.4.23-5.fc29.src.rpm
INFO: mock.py version 1.4.13 starting (python version = 3.7.1)...
Start: init plugins
〜略〜

mockの場合

mockを使う場合は一旦srpmを作ってからビルドします。specとpatch諸々が有るディレクトリを指定し、srpmパッケージをresultdirオプションで指定した場所に作ります。

masami@saga:~/fedora-bash (build-test %)$ mock -r /etc/mock/fedora-29-x86_64.cfg --buildsrpm --spec ./bash.spec --sources=. --resultdir=.
INFO: mock.py version 1.4.13 starting (python version = 3.7.1)...
Start: init plugins
INFO: selinux disabled
Finish: init plugins
〜略〜

そしてsrpmファイルをビルドしてrpmパッケージを作ります。

masami@saga:~/fedora-bash (build-test %)$ mock -r /etc/mock/fedora-29-x86_64.cfg --rebuild ./bash-4.4.23-5.fc29.src.rpm
INFO: mock.py version 1.4.13 starting (python version = 3.7.1)...
Start: init plugins
〜略〜

おまけ srpmを展開してgitリポジトリと同じ構造で扱う

rpmコマンドで~/rpmbuildにファイルを展開するのではなくてrpm2cpioとcpioで展開すればgitリポジトリと同じ構造で.specやpatch等を取り出せます。あとはmockの場合の方法でビルドできます。

masami@saga:~/tmp/bash$ rpm2cpio ~/fedora-bash/bash-4.4.23-5.fc29.src.rpm | cpio -iv
bash-2.02-security.patch
bash-2.03-paths.patch
bash-2.03-profile.patch
〜略〜
dot-bash_profile
dot-bashrc
18621 blocks
masami@saga:~/tmp/bash$ ls
./                            bash-3.2-ssh_source_bash.patch     bash-4.3-noecho.patch                 bash-4.4-patch-16.patch  bash-4.4-patch-4.patch                 bash-setlocale.patch
../                           bash-4.0-nobits.patch              bash-4.4-assignment-error.patch       bash-4.4-patch-17.patch  bash-4.4-patch-5.patch                 bash.spec
bash-2.02-security.patch      bash-4.1-broken_pipe.patch         bash-4.4-case-in-command-subst.patch  bash-4.4-patch-18.patch  bash-4.4-patch-6.patch                 bash-tty-tests.patch
bash-2.03-paths.patch         bash-4.1-defer-sigchld-trap.patch  bash-4.4-coverity.patch               bash-4.4-patch-19.patch  bash-4.4-patch-7.patch                 dot-bash_logout
bash-2.03-profile.patch       bash-4.1-examples.patch            bash-4.4-no-loadable-builtins.patch   bash-4.4-patch-1.patch   bash-4.4-patch-8.patch                 dot-bash_profile
bash-2.05a-interpreter.patch  bash-4.2-coverity.patch            bash-4.4-patch-10.patch               bash-4.4-patch-20.patch  bash-4.4-patch-9.patch                 dot-bashrc
bash-2.05b-debuginfo.patch    bash-4.2-manpage_trap.patch        bash-4.4-patch-11.patch               bash-4.4-patch-21.patch  bash-4.4.tar.gz
bash-2.05b-manso.patch        bash-4.2-rc2-logout.patch          bash-4.4-patch-12.patch               bash-4.4-patch-22.patch  bash-4.4-unset-nonblock-stdin.patch
bash-2.05b-pgrp_sync.patch    bash-4.2-size_type.patch           bash-4.4-patch-13.patch               bash-4.4-patch-23.patch  bash-4.5-test-modification-time.patch
bash-2.05b-xcc.patch          bash-4.3-man-ulimit.patch          bash-4.4-patch-14.patch               bash-4.4-patch-2.patch   bash-infotags.patch
bash-3.2-audit.patch          bash-4.3-memleak-lc_all.patch      bash-4.4-patch-15.patch               bash-4.4-patch-3.patch   bash-requires.patch

まとめ

mockやfedpkgを使う利点は~/rpmbuildを使わないのでファイルがゴチャゴチャにならずにすみます😃