Archive

Archive for April, 2015

Files verteilen mit RPM Paketen

April 27th, 2015 No comments

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…

 

RedHat_RPM

 

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/.ssh

install -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]#

 

 

Categories: Linux / Unix / foo Tags: