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:
specfile that
rpmbuild didn't like.
Before making any changes to the spec file, make a copy of it. 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? rpmlint command on the spec file
and note the error(s) it shows.
You can figure out what is wrong only by knowing the
specfile syntax. This can be found at www.rpm.org. However in the interest of saving you some time I will provide these hints: Older versions of RPM required a
Copyright: line in the specfile, but modern versions have replaced that with a
License: line.
In addition, the list of RPM package
groupshas changed. You can find the current list of groups in the file
/usr/share/doc/rpm-*/GROUPS.
specfile and eliminate all the errors shown with
rpmlint.
(It is okay to ignore warnings.)
What change(s) did you make to the
specfile? (Show the output of
diff with the original and
modified versions.) pine binary RPM.
You may discover missing development tools and libraries.
These can be solved one at a time, or you could use the
groupinstall feature of yum,
to install all the tools and development libraries at once.
What (if anything) did you need to
install? LDFLAGS,
set to the name of the missing library.
For example, if the missing library is
/usr/lib/libfoo-3.5.so.1, then
set and export LDFLAGS='-lfoo'.
Once you set this correctly, you should be able to successfully
build the binary pine RPM.
What was the environment variable
setting required to successfully build the pine
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.
When you install from source, there is no
record (except in your system journal) of what files were installed.
If you didn't have an accurate system journal,
what could you do to determine what files were installed by some
source (tar-ball) installation?
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.
What are the contents of your
.rpmmacros file?
~/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!
You could create a template spec file with the command
rpmdev-newspec.
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
tag.
What is the tag you would use to mark
configuration files?
(You will probably need to do a bit of searching in the tutorials
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. What change(s) did you make, if any?
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 various libraries and certificate
directories (certs) has changed from where
the pine spec file (and the pine build
script) expects them.
By using various commands (rpm,
yum, and
locate, etc.), and examining build output for
error messages, you can learn the
new locations and libraries needed.
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, and/or define various environment variables,
so the build can 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 provides 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 provides /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.