In this project you will download and install a source code RPM package. Next you will download and install a (standard) tar-ball. You will then build binary packages from both and install them.
The version of the package used (version 4.64)
won't install by default on a vanilla
Fedora system.
You will have to trouble-shoot the install to make this work!
Answer the following questions and perform the following tasks:
pine
from a source RPM: pine
MUA (email program).
What is the home URL for
pine?
(Hint: pine is maintained by
the University of Washington.)
pine for Fedora,
locate a source RPM from the
home website of pine and download it.
What is the version of
pine you downloaded?
Note that pine
is a discontinued project.
The replacement for pine is alpine
but for this
project you must use pine
and not alpine
!
rpmbuild command on your
system, use what you have learned to locate the package for it
and install that.
(You may need to install packages if you need to use some
command that isn't currently installed on your system.)
Once installed you need to create a build environment in your
home directory (your non-root login).
You do this by running the command
rpmdev-setuptree.
What files and directories were created
in your home directory? rpm -U command.
This will create a source tar-ball and a specfile under
~/rpmbuild/).
What is the exact command you used for
this?
What files were installed?
(List the complete pathnames.)
rpmbuild -bb spec-file.
For the current version of the pine source
RPM (version 4.64) this won't work on Fedora!
Now troubleshoot the problems and fix them:
groupinstall feature of yum. specfile that
rpmbuild didn't like.
specfile and commenting out the offending line. Do this by pre-pending (adding to the front of the line) the
# character, which is the start of comment
character. rpmbuild command again.
What is the error this time? specfile syntax. This can be found at www.rpm.org. However in the interest of saving you some time I will provide this hint: Older versions of RPM required a
Copyright: line in the specfile, but modern versions have replaced that with a
License: line.
What change(s) did you make to the
specfile?
specfile the
pine
source should build.
However you may find a warning about how OpenSSL
can't be found.
You can continue the build anyway, or (if time permits) attempt
to modify the spec file to eliminate the error.
(See the hints section below.)
The result is a binary RPM. pine.
What is the exact command(s)
used?
Check to see if the install worked, by running pine,
pico, and viewing the man pages. pine and Alpine use MBOX
format.
However there is an available patch to pine and for
alpine to enable support Maildirformat as well. Locate this patch on the Internet, download, and apply it to either the
pine source or the alpine
source (your choice), and then rebuild.
Where did you locate the patch?
What commands did you use to apply the patch? tar.
What is the exact command you used?
hello-1.0 and
read the various installation documentation provided.
What files did you (or should you) look at
before installing?
hello and
reading the hello(1) man page.
What files were installed (and where)?
What would you have needed to do to have the files install under
/opt/ instead?
Makefile generated usually has
targets to clean up the files while leaving the configuration
files.
What make command can you
use to delete the build files but not the configuration files?
hello-1.0/).
As root, delete all other files installed.
specfile required. Sadly for you this is not the case here, so you will need to create a spec file.
~/.rpmmacros to contain information that is
needed by the rpmbuild tool.
Here is a copy of the one I use:
%_topdir /home/wpollock/rpmbuild %packager Wayne Pollock <pollock@acm.org> %__arch_install_post /usr/lib/rpm/check-rpaths /usr/lib/rpm/check-buildroot %_smp_mflags -j3 %_signature gpg %_gpg_name 779190A0
(Only the first three lines are needed, the last three are some optional settings I use to speed the compiles and to sign the resulting packages using my GPG key.) Be sure to edit this file, changing the information to your own name and home directory. You should delete the last two lines unless you have a published GPG key others can use to verify your package.
~/rpmbuild/SOURCES/hello-1.0.tgz.
cd into the ~/rpmbuild/SPECS directory and
create a spec file here, named hello-1.0.spec.
This is the hard part!
An interesting feature of vim is that when you create
a file of name-version.specit will create a template you can easily edit. Try this now and look through the result.
Name: hello
Version: 1.0
Release: 1%{?dist}
Summary: Gnu hello
Group: Applications/System
License: GPL
URL: http://www.gnu.org/software/hello/
Source: hello-1.0.tgz
Prefix: /usr/local
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
%description
Gnu hello is a sample project showing the Gnu build tool-chain.
%prep
%setup -q
%build
%configure
make %{?_smp_mflags}
%install
rm -rf $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root)
%doc %{_mandir}/man1/hello.1.gz
%{_bindir}/hello
The parts that need to be filled in are: Name, Version, Summary,
URL (which is optional), and Source.
Then you need to add a description (can be multiple lines) after the
line.
The last part you would need to edit is the list of files to be
installed by this package (the lines following the
%description
line).
These are the ones created when you did the %defattr(-,root,root)make install
step previously.
Note how documentation is marked with
.
What is the tag you would use to mark
configuration files?
(You will probably need to do a bit of searching to find this.)
%doc
rpmbuild command.
What is the exact command you used?
If this failed to work, you can use the rpmlint
command on your spec file to see what might be the problem.
(You may need to install an additional package for this tool.)
RPM package.
Where did the system put the resulting
RPM?
What is the exact name of the created package?
You should be able to query your package.
Use the rpm command to list the package information,
and the list of files provided by this package.
(Note you will need to add the -p option
in addition to the normal query options, to specify an
un-installed .rpm file to query.)
What (two) commands did you use?
rpm -Uvh.
If you have SE Linux set to enforcingthis may not work. Troubleshoot the problem.
root
except when required. pine stopped some time
ago.
(The new version is called
Alpine.)
Since then the OpenSSL has split into two packages,
and the default locations for libraries and the certificates
directories (certs) has changed from where
the pine spec file expects them.
By using various RPM commands you can learn the
new locations, and by reading the unpacked documentation
with the source (in the ../BUILD directory),
you can learn how to modify the build command
in the spec file to find the new locations. specfiles.
rpmdevtools package includes several tools
that can be very helpful in diagnosing RPM errors.
See the man pages for these, especially rpmlint.
(On some systems rpmlint may be provided by a different
package that you should install.)
/usr/include, and libraries in /usr/lib
or /lib),
but this doesn't happen when you install from source!
You must manually make sure the required development tools and
software is installed.
The easy way to do this, is to install everything, including all
development packages (usually
name-devel).
Otherwise you will get command not foundwhen
make tries to build and install software.
If that happens go and install the missing tool packages.
(Use yum whatprovides name
to find the package name.)
not foundmessages for included
headerfiles and/or DLLs. (Missing header files will cause a cascade of error messages, so pay attention to the first one which says what is missing!) Here's an example of failing to install the PAM development package when building some software that needs PAM:
osdep.c:71:31: error: security/pam_appl.h: No such file or directory
To solve this sort of problem, first search your system to see
if the file is there but possibly in a different location.
(Note the default location for header files is
.)
If not, use:
/usr/include/
yum whatprovides /usr/include/security/pam_appl.h
to get the package name (
in this case)
and install it, or else find the source for that and install
it.
When you restart the compile, it will either work or report
something else is missing, in which case you repeat the process
to install that.
pam-devel
Answers to the above questions and the relevant system journal entries. You can send as email to (preferred). If email is a problem for some reason, you may turn in a hard-copy. In this case the pages should be readable, dated, and stapled together. Your name should appear on the first page.
Please see your syllabus for more information about submitting projects.