Skip to content

Instantly share code, notes, and snippets.

@hiwakaba
Last active June 26, 2022 10:51
Show Gist options
  • Save hiwakaba/361a6d37c3f94a3f60bdce76ea97d76d to your computer and use it in GitHub Desktop.
Save hiwakaba/361a6d37c3f94a3f60bdce76ea97d76d to your computer and use it in GitHub Desktop.

Fedoraのパッケージレビュー環境のメモ

Fedoraのパッケージレビュー環境の作り方メモです。

前提

  • ローカルPC(macOS)のVirtualBoxに最新の安定版Fedoraをインストールする。
  • VagrantまたはDockerでFedoraパッケージ環境を作成する。
  • fedorapeople.org にレビューしたファイルとレビューのメモなどをあげる。

VirtualBox

https://www.virtualbox.org/ からダウンロードしてインストール。

Vagrant

https://www.vagrantup.com/ からダウンロードしてインストールする。

Docker

Docker Desktopをインストールする。

OSイメージURLの確認

開発版と安定版のOSイメージで確認する。

VagrantにOSイメージの登録

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

OS起動

$ 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)

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

rpmパッケージビルドテスト

誰かが作ったパッケージが正しくビルドできるのかどうかを簡単にチェックします。ここでは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

fedora-reviewの設定

mockに自分を登録し、再ログインします。

$ sudo usermod -a -G mock vagrant
$ exit
$ vagrant ssh

参考

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment