Redhat

Building a RPM package

  • Install rpmbuild
  • Setup environment
mkdir ~/rpmbuild
cd ~/rpmbuild
mkdir BUILD  BUILDROOT  RPMS  SOURCES  SPECS  SRPMS
  • Put the source archive in the SOURCES directory (e.g. myprogram-0.1.tgz)
  • Make a spec file in SPECS (e.g. myprogram.spec)
Name:           myprogram
Version:        0.1
Release:        1
Summary:        A short description

Group:          System Environment/Libraries
License:        GPL
URL:            https://some.url.net
Packager:       Your name <you@somewhere.net>

Requires:       some_other_package>=1.2.3, another_package

Source:         %name-%version.tgz

%description
Some longer description of this software package

%prep
%setup

%build
./configure --prefix=%{buildroot}
make

%install
rm -rf %{buildroot}
make install
  • Build the package
rpmbuild -bb SPECS/myprogram.spec
  • rpmbuild will complain that there are files that are not packaged. Put those into the %files section of the spec file
%files
/path/to/file1
/path/to/file2
  • Rebuild the package
  • The RPM should now be available in the RPM subdir
  • Only install dont recompile
rpmbuild -bi --short-circuit SPECS/myprogram.spec
  • Dont want to package all installable files?
%define _unpackaged_files_terminate_build 0

List contents of uninstalled rpm

rpm -qlp <rpm_file>

Unpack rpm without installing

mkdir bla
cd bla
rpm2cpio ../ethjudge-backend-libs-1.4-4.el7.noarch.rpm | cpio -idvm

Check checksum of files in a rpm

  • Installed rpm
rpm -Vv <rpm_file>
  • Uninstalled rpm
rpm -V -p <rpm_file>

Exclude a package from update

  • Edit /etc/yum.conf
exclude=some_pkg*

Get all versions of a package and their repos

yum list <pkgname> --showduplicates

Downgrade a package

yum downgrade <pkgname>

Remove package with all dependencies

  • Edit /etc/yum.conf
clean_requirements_on_remove=1

Examine installation history

yum history list [package]
yum history info <id>

Revert an update

yum history list
yum undo <id>

Service Configuration

  • List all available services and their status
chkconfig --list
  • Turn service on boot on or off
chkconfig <service> [on|off]
  • Start or stop a service
service <service> [start|stop]

Firewall Config

  • Prefered tool is system-config-firewall
  • or lokkit
lokkit -p 80:tcp
lokkit -s http
  • Script can be found under /etc/sysconfig/iptables but will be overwritten by the commands above

Bridged interface

  • /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
BOOTPROTO=dhcp
ONBOOT=yes
DELAY=0
  • /etc/sysconfig/network-scripts/ifcfg-eth0
BRIDGE=br0

Kickstart

  • The kickstart file used to setup the system can be found in /root/anaconda-ks.cfg

Gnome-Keyring

  • To reset Gnome-Keyring passwords run
rm ~/.gnome2/keyrings/*

Setting up a chroot environment

mkdir -p /data/redhat/var/cache/yum/x64_64/\$releaseserver
cp /etc/yum.repos.d/redhat.repo /data/redhat/var/cache/yum/x64_64/\$releaseserver
yum --disablerepo=* --enablerepo=redhat --disableplugin=* --installroot=/data/redhat install bash