Rpm

From Attie's Wiki
(Difference between revisions)
Jump to: navigation, search
m
m (List installed packages)
 
(12 intermediate revisions by one user not shown)
Line 1: Line 1:
 +
==Manual Management==
 +
===Install===
 +
<source lang="bash">
 +
rpm [--nodeps] -i <rpmfile>
 +
</source>
 +
 +
===Uninstall===
 +
<source lang="bash">
 +
rpm -e <rpmpackage>
 +
</source>
 +
 +
===Extract without Installing===
 +
<source lang="bash">
 +
rpm2cpio myrpmfile.rpm | cpio -idmv
 +
</source>
 +
 +
===List installed packages===
 +
<source lang="bash">
 +
rpm -qa
 +
</source>
 +
 +
===List files inside RPM===
 +
<source lang="bash">
 +
rpm -qpl ${RPM_FILE}
 +
</source>
 +
 
==Building an RPM package==
 
==Building an RPM package==
 
Create the following directory structure:
 
Create the following directory structure:
Line 5: Line 31:
 
</source>
 
</source>
  
Create a tar file containing the source code, named like so: <code>&lt;packagename&gt;-&lt;version&gt;.tgz</code>
+
Create a tar file containing the source code, named like so: <code>&lt;packagename&gt;-&lt;version&gt;.tgz</code>:
 
<source lang="bash">
 
<source lang="bash">
tar -cavf ~/rpmbuild/SOURCES/mylib-1.0.1.tgz --transform='#^#mylib-1.0.1/#s' *.c *.h makefile
+
tar -cavf ~/rpmbuild/SOURCES/mylib-1.0.1.tgz --transform='s#^#mylib-1.0.1/#' *.c *.h makefile
 
</source>
 
</source>
  
Create a *.spec file using the following template:
+
Create a *.spec file using the following template, and store it in <code>~/rpmbuild/SPECS/mylib.spec</code>:
 +
[http://www.rpm.org/max-rpm/s1-rpm-inside-macros.html This] is helpful for the <code>%prep</code> section macros.
 
<source lang="text">
 
<source lang="text">
Summary: C library to aid the use of Digi XBee radios in API mode
+
Name: mylib
Name: libxbee3
+
Summary: Test library
Version: 3.0.6
+
%define version 1.0.1
 
Release: 1
 
Release: 1
License: LGPL
+
Source: mylib-%{version}.tgz
#BuildRequires: make, gcc, binutils, coreutils, gzip, man2html
+
 
 +
Version: %{version}
 +
License: LGPLv3
 +
#BuildRequires: make, gcc, binutils, coreutils, gzip
 
Group: System/Libraries
 
Group: System/Libraries
Source: libxbee3-3.0.6.tgz
 
  
 
BuildRoot: /ver/tmp/${name}-buildroot
 
BuildRoot: /ver/tmp/${name}-buildroot
  
 
%description
 
%description
C library to aid the use of Digi XBee radios in API mode
+
Test library
  
 
%prep
 
%prep
Line 37: Line 66:
 
mkdir -p $RPM_BUILD_ROOT/usr/include
 
mkdir -p $RPM_BUILD_ROOT/usr/include
 
mkdir -p $RPM_BUILD_ROOT/usr/lib
 
mkdir -p $RPM_BUILD_ROOT/usr/lib
mkdir -p $RPM_BUILD_ROOT/usr/share/man/man3
+
SYS_ROOT=$RPM_BUILD_ROOT make install
sudo SYS_ROOT=$RPM_BUILD_ROOT make install
+
  
 
%clean
 
%clean
Line 44: Line 72:
  
 
%files
 
%files
/usr/lib/libxbee.a
+
/usr/lib/libmy.a
/usr/lib/libxbee.a.3.0.6
+
/usr/lib/libmy.a.%{version}
/usr/lib/libxbee.so
+
/usr/lib/libmy.so
/usr/lib/libxbee.so.3.0.6
+
/usr/lib/libmy.so.%{version}
/usr/lib/libxbee.so.3.0.6.dbg
+
/usr/lib/libmy.so.%{version}.dbg
/usr/share/man/man3/libxbee_revision.3.gz
+
/usr/include/my.h
/usr/share/man/man3/xbee_pktDataGet.3.gz
+
/usr/share/man/man3/xbee_conSleepGet.3.gz
+
/usr/share/man/man3/xbee_conInfoGet.3.gz
+
/usr/share/man/man3/libxbee.3.gz
+
/usr/share/man/man3/xbee_logLevelGet.3.gz
+
/usr/share/man/man3/xbee_conPurge.3.gz
+
/usr/share/man/man3/xbee_conCallbackGet.3.gz
+
/usr/share/man/man3/xbee_log.3.gz
+
/usr/share/man/man3/xbee_conNew.3.gz
+
/usr/share/man/man3/xbee_pkt.3.gz
+
/usr/share/man/man3/xbee_errorToStr.3.gz
+
/usr/share/man/man3/xbee_modeGetList.3.gz
+
/usr/share/man/man3/xbee_netStart.3.gz
+
/usr/share/man/man3/xbee_attachEOFCallback.3.gz
+
/usr/share/man/man3/xbee_conRx.3.gz
+
/usr/share/man/man3/xbee_conDataGet.3.gz
+
/usr/share/man/man3/xbee_pktValidate.3.gz
+
/usr/share/man/man3/xbee_setup.3.gz
+
/usr/share/man/man3/xbee_conSettings.3.gz
+
/usr/share/man/man3/xbee_conGetTypes.3.gz
+
/usr/share/man/man3/xbee_conTx.3.gz
+
/usr/share/man/man3/xbee_conAddress.3.gz
+
/usr/include/xbee.h
+
  
 
%changelog
 
%changelog
 
* Wed May 30 2012 Attie Grande <attie@attie.co.uk>
 
* Wed May 30 2012 Attie Grande <attie@attie.co.uk>
 
- created RPM build infrastructure
 
- created RPM build infrastructure
 +
</source>
 +
 +
Build the RPM:
 +
<source lang="bash">
 +
cd ~/rpmbuild
 +
rpmbuild -ba SPECS/mylib.spec
 +
</source>
 +
 +
==Convert *.rpm to *.deb==
 +
<source lang="bash">
 +
$ 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
 +
</source>
 +
 +
And install...
 +
<source lang="bash">
 +
sudo dpkg -i mylib_10.1-1_amd64.deb
 
</source>
 
</source>

Latest revision as of 11:58, 13 May 2014

Contents

[edit] Manual Management

[edit] Install

rpm [--nodeps] -i <rpmfile>

[edit] Uninstall

rpm -e <rpmpackage>

[edit] Extract without Installing

rpm2cpio myrpmfile.rpm | cpio -idmv

[edit] List installed packages

rpm -qa

[edit] List files inside RPM

rpm -qpl ${RPM_FILE}

[edit] 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

[edit] 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