############################################################ # directory //RPMS. # default /var/local/apt-repository/vine-nosrc/RPMS.self-build %define baseuri /var/local/apt-repository %define distribution_name vine-nosrc %define component self-build # scheme [file,copy] # default file %define scheme file # vendor_id # default { } ### example {[your_id]} %define vendor_id { } # genbasedir command option # default {--flat} ### example {--flat --progress -s --default-key=KEYID} %define genbasedir_option {--flat} ### DEFAULT : NO VEDOR_ID , NO SIGNATURE ### TO SIGN AUTOMATICALLY, YOU SHOULD REWRITE CRON FILE. # cron schedule [hourly,daily,weekly,monthly] %define schedule weekly # niceness (genbasedir command in cron file) # -20(highest) 0(normal) 19(lowest) # default 1 %define niceness 1 ############################################################ %define pkg_version 1 %define pkg_release 1%{?_dist_release} Summary: local apt repository setup (%{distribution_name}:%{component}) Summary(ja): ローカルのAPTリポジトリを扱うためのパッケージ (%{distribution_name}:%{component}) Name: local-apt-repository-%{distribution_name}-%{component} Version: %{pkg_version} Release: %{pkg_release} License: GPL Group: Applications/Administration BuildRoot: %{_tmppath}/%{name}-%{version}-root BuildArch: noarch Requires: apt crontabs Packager: Takuya Kobayashi Vendor: Project Vine Distribution: Vine Linux %description This package makes local apt repository. scheme - %{scheme} baseuri - %{baseuri} distribution - %{distribution_name} component - %{component} resource list - %{_sysconfdir}/apt/sources.list.d/%{distribution_name}-%{component}.list update script - %{baseuri}/%{distribution_name}/update-%{distribution_name}-%{component}.sh cron file - %{_sysconfdir}/cron.%{schedule}/update-%{distribution_name}-%{component}.cron %description -l ja ローカルのAPTリポジトリを作成、管理するためのパッケージです。 このパッケージは scheme - %{scheme} baseuri - %{baseuri} distribution - %{distribution_name} component - %{component} resource list - %{_sysconfdir}/apt/sources.list.d/%{distribution_name}-%{component}.list update script - %{baseuri}/%{distribution_name}/update-%{distribution_name}-%{component}.sh cron file - %{_sysconfdir}/cron.%{schedule}/update-%{distribution_name}-%{component}.cron として build されています。 %{baseuri}/%{distribution_name}/RPMS.%{component} %{baseuri}/%{distribution_name}/SRPMS.%{component} にパッケージを入れて update script (%{baseuri}/%{distribution_name}/update-%{distribution_name}-%{component}.sh) を実行するとリポジトリの作成は完了し、 %{_bindir}/apt-get update を実行すると利用できるようになります。 パッケージの追加や削除の際は、update script や cron file でリポジトリの情報を更新してください。 apt_preferences, genbasedir, sources.list, vendors.list 等の man page を参照し、 必要に応じて %{baseuri}/%{distribution_name}/base/ 以下のファイルを書き換えてください。 baseuri 等を変更する場合は、Source RPM を入手し spec ファイルを書き換えてください。 %prep if [ -e %{buildroot} ] ; then [ "%{buildroot}" != "/" ] && %{__rm} -r %{buildroot} fi %build %{__mkdir_p} %{name}-%{version} # write sources.list %{__cat} << EOF > %{name}-%{version}/%{distribution_name}-%{component}.list rpm %{vendor_id} %{scheme}:%{baseuri} %{distribution_name} %{component} rpm-src %{vendor_id} %{scheme}:%{baseuri} %{distribution_name} %{component} EOF #%{__cat} %{name}-%{version}/%{distribution_name}-%{component}.list # write update script %{__cat} << EOF > %{name}-%{version}/update-%{distribution_name}-%{component}.sh #! /bin/bash %{_bindir}/genbasedir %{genbasedir_option} %{baseuri}/%{distribution_name} EOF #%{__cat} %{name}-%{version}/update-%{distribution_name}-%{component}.sh # write cron file %{__cat} << EOF > %{name}-%{version}/update-%{distribution_name}-%{component}.cron #! /bin/bash %{_sysbindir}/nice -n %{niceness} %{_bindir}/genbasedir %{genbasedir_option} %{baseuri}/%{distribution_name} EOF #%{__cat} %{name}-%{version}/update-%{distribution_name}-%{component}.cron %install # make component directories %{__mkdir_p} %{buildroot}/%{baseuri}/%{distribution_name}/RPMS.%{component} %{__mkdir_p} %{buildroot}/%{baseuri}/%{distribution_name}/SRPMS.%{component} # install sources.list %{__mkdir_p} %{buildroot}/%{_sysconfdir}/apt/sources.list.d %{__install} -m 644 %{name}-%{version}/%{distribution_name}-%{component}.list %{buildroot}/%{_sysconfdir}/apt/sources.list.d # install update script %{__install} -m 744 %{name}-%{version}/update-%{distribution_name}-%{component}.sh %{buildroot}/%{baseuri}/%{distribution_name}/ # install cron file %{__mkdir_p} %{buildroot}/%{_sysconfdir}/cron.%{schedule} %{__install} -m 744 %{name}-%{version}/update-%{distribution_name}-%{component}.cron %{buildroot}/%{_sysconfdir}/cron.%{schedule} %files %defattr (-,root,root) %dir %{baseuri}/%{distribution_name}/RPMS.%{component} %dir %{baseuri}/%{distribution_name}/SRPMS.%{component} %{baseuri}/%{distribution_name}/update-%{distribution_name}-%{component}.sh %config %{_sysconfdir}/cron.%{schedule}/update-%{distribution_name}-%{component}.cron %config %{_sysconfdir}/apt/sources.list.d/%{distribution_name}-%{component}.list %clean [ "%{buildroot}" != "/" ] && %{__rm} -r %{buildroot} %changelog * Fri Oct 03 2008 Shu KONNO 1-1vl5 - applied new versioning policy, spec in utf-8 * Tue Oct 16 2007 Takuya Kobayashi 1-0vl1 - Initial Package for Vine Linux