Files verteilen mit RPM Paketen
Gleich eins vorweg – das hier ist kein kompletter Guide zum RPM-Bau. Ich trage hier lediglich zusammen, was ich für mich nutze um meine kleinen Konfigs und Dotfiles aus dem /home überall hin mitnehmen zu können. Wir kratzen ein wenig an der Oberfläche – mehr nicht – wirklich =)
Wir brauchen:
- Platz
- rpm-build.x86_64
- etwas Zeit
- idealerweise einen Snapshot um schnell wieder von vorne anfangen zu können ;)
Ich habe in der kleinen VM nur meinen User, aber mache an sich alles als root…
Zum Bau der von rpbuild benötigten Folder nehmen wir einen simplen Einzeiler:
for i in BUILD RPMS SOURCES SPECS SRPMS tmp;do mkdir -p rpmbuild/${i};done
Ich habe in einem HowTo noch einen Part gefunden, in dem die tmp für rpmbuild ins Home umgelegt werden.
Dafür erstellt man eine .rpmmacros und füllt diese mit:
%_topdir /<path>/rpmbuild
%_tmppath /<path>/rpmbuild/tmp
Meine Files habe ich unter /root/rpmbuild/SOURCES/home_update abgelegt und ein *.tar.gz daraus gebaut. Das hat praktische Gründe: Ich habe meine Files alle zusammen und wenn welche dazukommen kann ich sie einfach in den Folder werfen und das *.tar.gz neu bauen.
tar cf home_update.tar.gz /root/rpmbuild/home_update/
Mein specs-File kommt in den Folder SPECS – wer hätte das gedacht…
Vim schlägt schon beim Erstellen einer *.specs-File ein gutes Layout vor, das ich ein wenig angepasst habe:
Name: home_update
Version: 1.0
Release: 1%{?dist}
Summary: update home with key & bashrc
Group: System/Base
License: none
Source: home_update.tar.gz
BuildArch: noarch
BuildRoot: %{_tmppath}/%{name}-build
Vendor: Marcel Hartmann
%description
pubkey & bashrc verteilen###############################################
%prep
%setup -n %{name}
%build
#nothing to build%install
# create directories where the files will be located
mkdir -p $RPM_BUILD_ROOT/home/mhartmann/.sshinstall -m 744 authorized_keys $RPM_BUILD_ROOT/home/mhartmann/.ssh/
install -m 700 .bashrc $RPM_BUILD_ROOT/home/mhartmann/
%post
# nothing to execute%clean
rm -rf $RPM_BUILD_ROOT
rm -rf %{_tmppath}/%{name}
rm -rf %{_topdir}/BUILD/%{name}
%files
%defattr(-,mhartmann,mhartmann)
/home/mhartmann/.bashrc
/home/mhartmann/.ssh/authorized_keys%changelog
* Mon Apr 27 2015 Marcel Hartmann
– 1.0 First release
Wichtig ist der Part in %install – dort legt ihr fest, was mit den Files aus der tar.gz passieren soll.
Ich erstelle einfach ein paar Folder und kopiere die Files an den richtigen Platz.
Die Option -m setzt die Rechte, wie von chmod gewohnt.
Mit der Zeile %defattr(-,mhartmann,mhartmann) setzt man noch die Ownership und schon passt die Sache ;)
Zum Bau des RPM Pakets dann noch den Aufruf:
[root@dev SOURCES]# rpmbuild -ba ../SPECS/home_update.spec
Jetzt liegt im Folder RPMS unter noarch das gebaute Paket =)
Das lässt sich wie gewohnt installieren, löschen, updaten und auch finden:
[root@dev noarch]# rpm -qa | grep home_update
home_update-1.0-1.el7.centos.noarch
[root@dev noarch]#