Fedoraのパッケージレビュー環境の作り方メモです。
- ローカルPC(macOS)のVirtualBoxに最新の安定版Fedoraをインストールする。
- VagrantまたはDockerでFedoraパッケージ環境を作成する。
- fedorapeople.org にレビューしたファイルとレビューのメモなどをあげる。
https://www.virtualbox.org/ からダウンロードしてインストール。
https://www.vagrantup.com/ からダウンロードしてインストールする。
Docker Desktopをインストールする。
開発版と安定版のOSイメージで確認する。
- Nightly(イメージ名は、Cloud_Base vagrant-virtualbox)
- 開発版(イメージ名は、Cloud_Base vagrant-virtualbox)
- 安定版
OSイメージファイルをVagrantのboxファイルとして登録します。以下実行例。nameオプションの引数には、自分がOSイメージを識別できる名前を指定します。
$ vagrant box add --name fedora31 https://kojipkgs.fedoraproject.org/compose/rawhide/Fedora-Rawhide-20190802.n.1/compose/Cloud/x86_64/images/Fedora-Cloud-Base-Vagrant-Rawhide-20190802.n.1.x86_64.vagrant-virtualbox.box
$ vagrant box add --name fedora30 --force https://download.fedoraproject.org/pub/fedora/linux/releases/30/Cloud/x86_64/images/Fedora-Cloud-Base-Vagrant-30-1.2.x86_64.vagrant-virtualbox.box
OS起動後にパッケージレビュー環境を構築するための準備をします。OS起動後にレビューに必要なパッケージがインストールされるように、Vagrantfileを作ります。
$script = <<SCRIPT
# VirtualBox Guest Additions
sudo dnf -y update
sudo dnf -y remove open-vm-tools
sudo dnf -y install gcc make kernel-devel kernel-headers dkms bzip2 perl
# Install rpm build tools
sudo dnf install -y gcc rpm-build rpm-devel rpmlint make python bash coreutils diffutils patch rpmdevtools emacs-nox emacs-rpm-spec-mode fedora-packager go-srpm-macros wget go-compilers-golang-compiler fedora-review
# Install k2hash build tools
sudo dnf install autoconf automake libtool nss-devel -y
# Set git parameters
git config --global user.email "hiwakaba@yahoo-corp.jp"
git config --global user.name "Hirotaka Wakabayashi"
git config --global core.editor emacs
# Goimport
go get golang.org/x/tools/cmd/goimports
if test -f "/vagrant/.emacs.d/init.el"; then
if ! test -d "~/.emacs.d" ; then
echo "mkdir -p ~/.emacs.d"
mkdir -p ~/.emacs.d
fi
echo "cp /vagrant/.emacs.d/init.el ~/.emacs.d/"
cp /vagrant/.emacs.d/init.el ~/.emacs.d/
fi
# Prepare rpmbuild tree
rpmdev-setuptree
SCRIPT
Vagrant.configure("2") do |config|
# Install the latest nightly image.
config.vm.box = "fedora31"
config.vm.synced_folder ".", "/vagrant", disabled: false
config.vm.provision "shell", inline: $script, privileged: false
config.vm.provider "virtualbox" do |v|
v.cpus = 4
v.memory = 2048
end
end
$ vagrant up
hiwkby@fedorapeople.orgの公開鍵を追加
hiwkby@fedorapeople.orgの公開鍵を.ssh/authorized_keysに登録します。
1. 追加したい公開鍵をSCPします。
$ scp -P $(vagrant ssh-config|grep Port|awk '{print $2}') ~/.ssh/id_rsa.fedora.pub vagrant@127.0.0.1:~/.ssh/authorized_keys_fedora_pub
2. .ssh/authorized_keysに登録します。
$ vagrant ssh -c "cat ~/.ssh/authorized_keys_fedora_pub | tee -a ~/.ssh/authorized_keys"
3. Vagrantfileに以下の二行を追加し、OSを再起動します。
$ vi Vagrantfile
Vagrant.configure("2") do |config|
...
config.ssh.private_key_path = "~/.ssh/id_rsa.fedora"
config.ssh.forward_agent = true
end
$ vagrant reload
4. SSHエージェントに秘密鍵をキャッシュさせます。
$ ssh-add ~/.ssh/id_rsa.fedora
Enter passphrase for /Users/hiwakaba/.ssh/id_rsa.fedora:
Identity added: /Users/hiwakaba/.ssh/id_rsa.fedora (hiwkby@fedorapeople.org)
レビューコメントで引用するファイルなどは、ホームディレクトリのpublic_htmlの下に置くと、https://hiwkby.fedorapeople.org/ で公開される。
$ vagrant ssh
$ ssh hiwkby@fedorapeople.org ls public_html
git
python-k2hr3-osnl-0.9.0-1.fc29.src.rpm
python-k2hr3-osnl-0.9.0-2.fc29.src.rpm
python-k2hr3-osnl-0.9.1-1.fc29.src.rpm
python-k2hr3-osnl-0.9.1-2.fc29.src.rpm
python-k2hr3-osnl-0.9.2-1.fc29.src.rpm
python-k2hr3-osnl.spec
Vagrantfile_python-k2hr3-osnl
誰かが作ったパッケージが正しくビルドできるのかどうかを簡単にチェックします。ここではpython-k2hr3-osnl-0.9.2-1.fc29.src.rpmを試しにビルドします。
$ vagrant ssh
$ kinit -n @FEDORAPROJECT.ORG -c FILE:armor.ccache
$ export KRB5CCNAME=/tmp/ticket <=== Dockerの場合
$ kinit -T FILE:armor.ccache hiwkby@FEDORAPROJECT.ORG <=== 多要素認証ありの場合
$ KRB5_TRACE=/dev/stdout kinit hiwkby@FEDORAPROJECT.ORG
$ echo "hiwkby" > ~/.fedora.upn
$ koji build --scratch f29 python-k2hr3-osnl-0.9.2-1.fc29.src.rpm
Uploading srpm: python-k2hr3-osnl-0.9.2-1.fc29.src.rpm
[====================================] 100% 00:00:02 358.66 KiB 128.36 KiB/sec
Created task: 36832454
Task info: https://koji.fedoraproject.org/koji/taskinfo?taskID=36832454
Watching tasks (this may be safely interrupted)...
36832454 build (f29, python-k2hr3-osnl-0.9.2-1.fc29.src.rpm): free
36832454 build (f29, python-k2hr3-osnl-0.9.2-1.fc29.src.rpm): free -> open (buildvm-armv7-12.arm.fedoraproject.org)
36832483 buildArch (python-k2hr3-osnl-0.9.2-1.fc29.src.rpm, noarch): free
36832483 buildArch (python-k2hr3-osnl-0.9.2-1.fc29.src.rpm, noarch): free -> open (buildvm-ppc64le-27.ppc.fedoraproject.org)
36832483 buildArch (python-k2hr3-osnl-0.9.2-1.fc29.src.rpm, noarch): open (buildvm-ppc64le-27.ppc.fedoraproject.org) -> closed
0 free 1 open 1 done 0 failed
36832454 build (f29, python-k2hr3-osnl-0.9.2-1.fc29.src.rpm): open (buildvm-armv7-12.arm.fedoraproject.org) -> closed
0 free 0 open 2 done 0 failed
36832454 build (f29, python-k2hr3-osnl-0.9.2-1.fc29.src.rpm) completed successfully
mockに自分を登録し、再ログインします。
$ sudo usermod -a -G mock vagrant
$ exit
$ vagrant ssh