Showing posts with label rpm. Show all posts
Showing posts with label rpm. Show all posts

Monday, April 30, 2012

How to find the upstream website of a package in Fedora or any other rpm based linux distribution?

What is upstream in opensource?
Package maintainers in linux distributions like Fedora would build and submit rpm packages of any opensource software which they think would be useful to be included in Fedora. The people who originally created the software is called upstream.

How to see upstream website url?
The website url of the upstream software maintainer is included in the rpm spec file. The url can be seen in the output of 'rpm -qi command'. For example, to see the upstream url of vpnc rpm package.

$ rpm -qi vpnc|grep URL
URL         : http://www.unix-ag.uni-kl.de/~massar/vpnc/




Monday, March 9, 2009

How to create rpm packages with non stripped binaries in Red Hat Enterprise Linux?

Usually binaries are stripped of the debug information for making them compact. Non-stripped binaries are binaries which have debug information built into them. Non stripped binaries are generally build by passing -g option to gcc.

Rpms shipped with Red Hat Enterprise Linux provides stripped binaries. A separate debuginfo package is provided with all debugging information. Debuginfo rpms for Red Hat Enterprise Linux could be found in following url.

http://people.redhat.com/anderson/debuginfo.html

'file' command could tell if a binary is stripped or not.

# file /usr/bin/python
/usr/bin/python: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.4.0, dynamically linked (uses shared libs), stripped

Some times a non stripped binary will be useful for profiling and debugging.

Below steps could be followed to create an rpm package which provides a non stripped binary. Following is an example of building a python rpm package with non stripped binary.

1. Download the source rpm for the package from rhn.redhat.com.

2. Install the source rpm in the system with following command.

# rpm -ivh python-2.3.4-14.2.src.rpm


3. Edit /etc/rpm/macros and add following line.

%debug_package %{nil}


4. Build the rpm using rpmbuild command.

# rpmbuild -bb /usr/src/redhat/SPECS/python.spec


'-bb' option is given so that a binary package is only created. '-ba' option could build binary and source packages

Binary package will be created under /usr/src/redhat/RPMS/x86_64/

5. Now remove the current rpm with stripped binary and install the new binary rpm package win non stripped binary.

# rpm -e python --nodeps

# rpm -ivh /usr/src/redhat/RPMS/x86_64/python-2.3.4-14.2.x86_64.rpm
Preparing... ########################################### [100%]
1:python ########################################### [100%]

# file /usr/bin/python
/usr/bin/python: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.4.0, dynamically linked (uses shared libs), not stripped

6. For listing symbols from the non stripped binary 'nm' command could be used.

# nm /usr/bin/python


I used RHEL in this example because of familiarity. This should work with almost all rpm based operating system flavors.