RHEL系はSPECファイルを使って容易にパッケージを作れるけど、ubuntu系向きのdebファイルを作ってみる
まずはソースの準備から
root@ubuntu20:~# grep VERSION /etc/os-release
VERSION="20.04.6 LTS (Focal Fossa)"
VERSION_ID="20.04"
VERSION_CODENAME=focal
root@ubuntu20:~# git clone https://github.com/SchedMD/slurm.git
root@ubuntu20:~# cd slurm
root@ubuntu20:~/slurm# git tag |tail -n 3
slurm-25-11-4-1
slurm-25-11-5-1
start
root@ubuntu20:~/slurm# git checkout slurm-25-11-5-1
root@ubuntu20:~/slurm# git branch
* (HEAD detached at slurm-25-11-5-1)
master
root@ubuntu20:~/slurm#ただ単純に「https://github.com/SchedMD/slurm/releases」をみて最新版のソースを取得でも構わない「wget https://github.com/SchedMD/slurm/releases/download/slurm-25-11-5-1/slurm-25.11.5.tar.bz2」
slurmは23.11.0から deb作成に向けてのDebianパッケージビルド用ファイルが「slurm-25.11.5/debian/」にあり、それを利用します。
debianフォルダの中はこんな感じで、controlファイルに構築に必要なパッケージ情報、rulesがconfigureやdeb作成の事らが書いている. 他のslurm-smd-client、slurm-smd-sackd、slurm-smd-slurmctldらがパッケージ名になるそうで含まれるファイルらが記載されている.
root@ubuntu20:~/slurm# ls -CF debian/
changelog slurm-smd-doc.doc-base slurm-smd-sackd.install slurm-smd-slurmd.install
compat slurm-smd-doc.docs slurm-smd-sackd.lintian-overrides slurm-smd-slurmd.lintian-overrides
control slurm-smd-libnss-slurm.install slurm-smd-sackd.manpages slurm-smd-slurmd.manpages
copyright slurm-smd-libpam-slurm-adopt.install slurm-smd-slurmctld.dirs slurm-smd-slurmd.slurmd.default
not-installed slurm-smd-libpam-slurm-adopt.lintian-overrides slurm-smd-slurmctld.install slurm-smd-slurmrestd.install
rules* slurm-smd-libpmi0.install slurm-smd-slurmctld.lintian-overrides slurm-smd-slurmrestd.lintian-overrides
slurm-smd-client.bash-completion slurm-smd-libpmi0.lintian-overrides slurm-smd-slurmctld.manpages slurm-smd-slurmrestd.manpages
slurm-smd-client.dirs slurm-smd-libpmi2-0.install slurm-smd-slurmctld.slurmctld.default slurm-smd-slurmrestd.slurmrestd.default
slurm-smd-client.install slurm-smd-libpmi2-0.lintian-overrides slurm-smd-slurmdbd.dirs slurm-smd-sview.install
slurm-smd-client.links slurm-smd-libslurm-perl.install slurm-smd-slurmdbd.install slurm-smd-sview.lintian-overrides
slurm-smd-client.lintian-overrides slurm-smd-libslurm-perl.manpages slurm-smd-slurmdbd.lintian-overrides slurm-smd-sview.manpages
slurm-smd-client.manpages slurm-smd.lintian-overrides slurm-smd-slurmdbd.manpages slurm-smd-torque.install
slurm-smd-dev.dirs slurm-smd.manpages slurm-smd-slurmdbd.slurmdbd.default source/
slurm-smd.dirs slurm-smd-openlava.install slurm-smd-slurmd.dirs
root@ubuntu20:~/slurm#開発環境の準備とDebianパッケージ(.deb)を作ってくれるツールを入れます。あと最低限 cudaライブラリのcuda-nvml-devel
root@ubuntu20:~# apt install build-essential devscripts equivs -y
root@ubuntu20:~# bash /Public/cuda/cuda_13.0.3_580.126.20_linux.run
[CUDA Toolkit 13.0] -> [CUDA Libraries 13.0] -> [CUDA Development 13.0] -> [cuda-nvml-dev] のみ有効次に展開したソースコードの中で「mk-build-deps -i debian/control」と実行して「debian/control」に書かれた依存関係を満たさせます
root@ubuntu20:~# cd slurm
root@ubuntu20:~/slurm# apt update
root@ubuntu20:~/slurm# mk-build-deps -i debian/control次はdebファイルの作成になるのですが、slurm/rpmで施した設定をdebにも持たせたい.
その際は「debian/rules」の中のconfigure実行行を弄ればいいようで、[[slurm/rpm]での「rpmbuild/BUILD/slurm-25.11.5/config.log」を参照する。
こんな感じ
./configure --build=x86_64-redhat-linux-gnu --host=x86_64-redhat-linux-gnu --program-prefix= --disable-dependency-tracking \
--prefix=/opt/slurm --exec-prefix=/opt/slurm --bindir=/opt/slurm/bin --sbindir=/opt/slurm/sbin --sysconfdir=/opt/slurm/etc \
--datadir=/opt/slurm/share --includedir=/opt/slurm/include --libdir=/opt/slurm/lib64 --libexecdir=/opt/slurm/libexec \
--localstatedir=/var --sharedstatedir=/var/lib --mandir=/opt/slurm/share/man --infodir=/opt/slurm/share/info --with-systemdsystemunitdir=/usr/lib/systemd/system \
--enable-pkgconfig --with-pmix=/usr --with-freeipmi=/usr --with-hwloc --with-jwt=/usr --with-nvml=/usr/local/cuda-13.0これをubuntu上で真似るために多少弄ります
「--with-pmix=/usr」->「--with-pmix」
あと、debian/controlに書かれているインストール先は /usr から開始されている。っでこれを/optに代えたいのだが、結構大変みたいで
そのまま /usr を拠点に展開させるようにしました。
「debian/rules」を修正して. 「dh_auto_configure」の前は「タブ」で埋めること
|
そしてbuildへ
root@ubuntu20:~/slurm# debuild -b -uc -us
:
root@ubuntu20:~/slurm#完成すると下記ファイルが得られる
root@ubuntu20:~# ls -l *.deb
-rw-r--r-- 1 root root 2937708 4月 25 08:51 slurm-smd_25.11.5-1_amd64.deb
-rw-r--r-- 1 root root 723104 4月 25 08:51 slurm-smd-client_25.11.5-1_amd64.deb
-rw-r--r-- 1 root root 8091864 4月 25 08:51 slurm-smd-dev_25.11.5-1_amd64.deb
-rw-r--r-- 1 root root 1923956 4月 25 08:51 slurm-smd-doc_25.11.5-1_all.deb
-rw-r--r-- 1 root root 6796 4月 25 08:51 slurm-smd-libnss-slurm_25.11.5-1_amd64.deb
-rw-r--r-- 1 root root 10664 4月 25 08:51 slurm-smd-libpam-slurm-adopt_25.11.5-1_amd64.deb
-rw-r--r-- 1 root root 11528 4月 25 08:51 slurm-smd-libpmi0_25.11.5-1_amd64.deb
-rw-r--r-- 1 root root 14372 4月 25 08:51 slurm-smd-libpmi2-0_25.11.5-1_amd64.deb
-rw-r--r-- 1 root root 134292 4月 25 08:51 slurm-smd-libslurm-perl_25.11.5-1_amd64.deb
-rw-r--r-- 1 root root 7324 4月 25 08:51 slurm-smd-openlava_25.11.5-1_all.deb
-rw-r--r-- 1 root root 13764 4月 25 08:51 slurm-smd-sackd_25.11.5-1_amd64.deb
-rw-r--r-- 1 root root 496884 4月 25 08:51 slurm-smd-slurmctld_25.11.5-1_amd64.deb
-rw-r--r-- 1 root root 230924 4月 25 08:51 slurm-smd-slurmd_25.11.5-1_amd64.deb
-rw-r--r-- 1 root root 46484 4月 25 08:51 slurm-smd-slurmdbd_25.11.5-1_amd64.deb
-rw-r--r-- 1 root root 36064 4月 25 08:51 slurm-smd-slurmrestd_25.11.5-1_amd64.deb
-rw-r--r-- 1 root root 103600 4月 25 08:51 slurm-smd-sview_25.11.5-1_amd64.deb
-rw-r--r-- 1 root root 27084 4月 25 08:51 slurm-smd-torque_25.11.5-1_all.deb
root@ubuntu20:~#