この記事は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/PackagesとIndex 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でいいかーって感じです。
ちなみに、mockはrpmパッケージをクリーンな環境でビルドするためのツールです。意味合い的にはdebianのpbuilderに近いかも?mockはchrootの環境にsystemd-nspawnを使ってます。
ビルド手順
手順としてはこういう感じになります。最初はfedora 28の環境でパッケージをビルドして、それ以降はリビルドしたパッケージを使ってmock環境を作ってビルドしていくというブートストラップ方式です。
- mockに必要なパッケージをダウンロードしてくる
- 最初はfedora 28環境でrhel 8 betaのsrpmをビルドしてrpmパッケージとsrpmパッケージを作ります
- 1で作ったrpmパッケージでmock環境を作り、そこで1で作ったsrpmをビルドします
- 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の作成
#!/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が必要だったりしました。
rhel8のパッケージのリビルドはasで--generate-missing-build-notes=yesオプションなんて知らんって怒られるパターンがちょくちょく有るので、先にrhel8のbinutilsを作ってインストールするというのが必要なパターンがある感じ
— このコード、オシャカルトっ! (@masami256) December 22, 2018
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クローン的な物を作る遊びでした。段階を踏んで自分自身で自分をビルドしていくというブートストラップ方式はコンパイラ的な感じですね。
- 作者: 中井悦司
- 出版社/メーカー: 技術評論社
- 発売日: 2016/09/22
- メディア: Kindle版
- この商品を含むブログを見る