Rpm

From Attie's Wiki
Jump to: navigation, search

Contents

Manual Management

Install

rpm [--nodeps] -i <rpmfile>

Uninstall

rpm -e <rpmpackage>

Extract without Installing

rpm2cpio myrpmfile.rpm | cpio -idmv

List installed packages

rpm -qa

List files inside RPM

rpm -qpl ${RPM_FILE}

Building an RPM package

Create the following directory structure:

mkdir -p ~/rpmbuild/SOURCES ~/rpmbuildrpm/SPECS

Create a tar file containing the source code, named like so: <packagename>-<version>.tgz:

tar -cavf ~/rpmbuild/SOURCES/mylib-1.0.1.tgz --transform='s#^#mylib-1.0.1/#' *.c *.h makefile

Create a *.spec file using the following template, and store it in ~/rpmbuild/SPECS/mylib.spec: This is helpful for the %prep section macros.

Name: mylib
Summary: Test library
%define version 1.0.1
Release: 1
Source: mylib-%{version}.tgz
 
Version: %{version}
License: LGPLv3
#BuildRequires: make, gcc, binutils, coreutils, gzip
Group: System/Libraries
 
BuildRoot: /ver/tmp/${name}-buildroot
 
%description
Test library
 
%prep
%setup -q
 
%build
make configure
make
 
%install
rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT/usr/include
mkdir -p $RPM_BUILD_ROOT/usr/lib
SYS_ROOT=$RPM_BUILD_ROOT make install
 
%clean
rm -rf $RPM_BUILD_ROOT
 
%files
/usr/lib/libmy.a
/usr/lib/libmy.a.%{version}
/usr/lib/libmy.so
/usr/lib/libmy.so.%{version}
/usr/lib/libmy.so.%{version}.dbg
/usr/include/my.h
 
%changelog
* Wed May 30 2012 Attie Grande <attie@attie.co.uk>
- created RPM build infrastructure

Build the RPM:

cd ~/rpmbuild
rpmbuild -ba SPECS/mylib.spec

Convert *.rpm to *.deb

$ sudo apt-get install alien
$ sudo alien -k mylib-1.0.1-1.x86_64.rpm
$ ls
mylib-1.0.1-1.x86_64.rpm mylib_1.0.1-1_amd64.deb

And install...

sudo dpkg -i mylib_10.1-1_amd64.deb
Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox