Difference between revisions of "Freeside:1.7:Documentation:InstallingUsingRPM"
Line 1: | Line 1: | ||
− | + | =Introduction= | |
+ | |||
==Warning!== | ==Warning!== | ||
The RPM installation of Freeside is experimental! The instructions below may be incomplete or incorrect and are subject to change. You should only attempt to use the RPM installation if you are prepared to work around omissions and inaccuracies, and can recover data in the event of a loss. | The RPM installation of Freeside is experimental! The instructions below may be incomplete or incorrect and are subject to change. You should only attempt to use the RPM installation if you are prepared to work around omissions and inaccuracies, and can recover data in the event of a loss. | ||
− | == | + | ==Information== |
RPM is a build-once, install-many package manager for system management. Originally for RedHat, it is now used on a wide range of Linux distros including Fedora, SUSE, etc. Well-structured RPMs include dependency information that RPM can use to warn you that additional components are required. Tools such as yum and apt-get (RPM version) can use this dependency information to download additional components from a repository and include them in the installation. This has the potential to make installing Freeside almost as easy as installing a Windows program. | RPM is a build-once, install-many package manager for system management. Originally for RedHat, it is now used on a wide range of Linux distros including Fedora, SUSE, etc. Well-structured RPMs include dependency information that RPM can use to warn you that additional components are required. Tools such as yum and apt-get (RPM version) can use this dependency information to download additional components from a repository and include them in the installation. This has the potential to make installing Freeside almost as easy as installing a Windows program. | ||
Installing the RPM version of Freeside may not be a good idea if you plan to do development on Freeside as the RPMs may not include all the files supplied in the tarball. | Installing the RPM version of Freeside may not be a good idea if you plan to do development on Freeside as the RPMs may not include all the files supplied in the tarball. | ||
− | + | =Installation= | |
− | + | ==Installation using RPM== | |
Installation is much easier if you have a repository that works with a tool such as [[#yum|yum]] or [[#apt|apt-get]]. If you only have rpm and wish to use that, enter: | Installation is much easier if you have a repository that works with a tool such as [[#yum|yum]] or [[#apt|apt-get]]. If you only have rpm and wish to use that, enter: | ||
<pre> | <pre> | ||
Line 23: | Line 24: | ||
The command should result in some warnings about unsatisfied dependencies. Find the corresponding RPMs and add them to the list on the command line. Keep doing this until the command results in no warnings, then issue the command one last time without the --test to actually install all the RPMs. | The command should result in some warnings about unsatisfied dependencies. Find the corresponding RPMs and add them to the list on the command line. Keep doing this until the command results in no warnings, then issue the command one last time without the --test to actually install all the RPMs. | ||
Installing the freeside RPM will install the '''[[#freeside-install|freeside-install]]''' command line utility that you can use to finish the installation. | Installing the freeside RPM will install the '''[[#freeside-install|freeside-install]]''' command line utility that you can use to finish the installation. | ||
− | + | ==Installing using yum== | |
* First, find a repository containing all the required RPMs. If no such repository exists, you can [[#repository|create your own]]. | * First, find a repository containing all the required RPMs. If no such repository exists, you can [[#repository|create your own]]. | ||
* Next, add the repository to your /etc/yum.repo.d directory or /etc/yum.conf file. | * Next, add the repository to your /etc/yum.repo.d directory or /etc/yum.conf file. | ||
Line 44: | Line 45: | ||
This installs the conflicting RPM from yum's cache for the "freeside" repository. | This installs the conflicting RPM from yum's cache for the "freeside" repository. | ||
You can then retry installing from yum. | You can then retry installing from yum. | ||
− | + | ==Installing using APT== | |
* First, find a repository containing all the required RPMs. If no such repository exists, you can [[#repository|create your own]]. | * First, find a repository containing all the required RPMs. If no such repository exists, you can [[#repository|create your own]]. | ||
* Next, add the repository to your /etc/apt.conf file. | * Next, add the repository to your /etc/apt.conf file. | ||
Line 50: | Line 51: | ||
<pre>apt-get install freeside freeside-mason freeside-postgresql perl-Business-OnlinePayment-AuthorizeNet</pre> | <pre>apt-get install freeside freeside-mason freeside-postgresql perl-Business-OnlinePayment-AuthorizeNet</pre> | ||
At this point all the required components should be installed and the freeside user account created. You can now complete the installation with [[#freeside-install|freeside-install]]. | At this point all the required components should be installed and the freeside user account created. You can now complete the installation with [[#freeside-install|freeside-install]]. | ||
− | + | =Finalizing the installation= | |
RPM does little more than installing files and creating users. To allow automated installation and upgrading, well-structured RPMs may not interact with the user. Since part of the Freeside installation is interactive, at some future date a command line utility called '''freeside-install''' will be included in the RPM to help you complete the installation. | RPM does little more than installing files and creating users. To allow automated installation and upgrading, well-structured RPMs may not interact with the user. Since part of the Freeside installation is interactive, at some future date a command line utility called '''freeside-install''' will be included in the RPM to help you complete the installation. | ||
For the moment, just work through the standard install, ignoring the steps which are done by the RPM, i.e. installing files and creating the freeside user. The RPM does not do any steps that require entry of a password, or which have to be done after a password is specified. | For the moment, just work through the standard install, ignoring the steps which are done by the RPM, i.e. installing files and creating the freeside user. The RPM does not do any steps that require entry of a password, or which have to be done after a password is specified. | ||
Line 58: | Line 59: | ||
* All the final steps to create the first Freeside user, setup the database, populate the message catalog, and start freeside-queued must be done by hand. | * All the final steps to create the first Freeside user, setup the database, populate the message catalog, and start freeside-queued must be done by hand. | ||
* As with the usual install, you need to do initial administration after completing the install. | * As with the usual install, you need to do initial administration after completing the install. | ||
− | + | =Creating your own repository with Freeside RPMs= | |
If you can't find an APT/yum repository for your operating system, you can create your own. | If you can't find an APT/yum repository for your operating system, you can create your own. | ||
− | + | ==Create a build environment matching your target== | |
If your target is CentOS 4.x or similar, be aware that the standard mod_perl is 1.99. You should install an updated httpd, mod_perl, mod_ssl, etc. from the CentOS Plus repository, which also includes an updated PostgreSQL. | If your target is CentOS 4.x or similar, be aware that the standard mod_perl is 1.99. You should install an updated httpd, mod_perl, mod_ssl, etc. from the CentOS Plus repository, which also includes an updated PostgreSQL. | ||
<pre> | <pre> | ||
yum --enablerepo=centosplus httpd mod_perl mod_ssl postgresql | yum --enablerepo=centosplus httpd mod_perl mod_ssl postgresql | ||
</pre> | </pre> | ||
− | + | ==Set up your development environment for building RPMs as non-root== | |
You should always build RPMs as a non-root user. | You should always build RPMs as a non-root user. | ||
* First, create an account to build RPMs: | * First, create an account to build RPMs: | ||
Line 87: | Line 88: | ||
useradd freeside | useradd freeside | ||
</pre> | </pre> | ||
− | + | ==Create the Freeside RPMs== | |
* First, get the Freeside source code as a tarball | * First, get the Freeside source code as a tarball | ||
<pre> | <pre> | ||
Line 107: | Line 108: | ||
rpmbuild -ba freeside.spec | rpmbuild -ba freeside.spec | ||
</pre> | </pre> | ||
− | + | ===About freeside-mason.deps.inc=== | |
RPM attempts to automatically determine which other pieces of software, including Perl modules, the RPM it is building is dependent on. Unfortunately, it doesn't scan Freeside's handler.pl file. The current work-around for this is creating a file freeside-mason.deps.inc in the same folder as the RPM specfile. If you believe the file is out of date, say because you modified handler.pl for a custom RPM, you can regenerate it with: | RPM attempts to automatically determine which other pieces of software, including Perl modules, the RPM it is building is dependent on. Unfortunately, it doesn't scan Freeside's handler.pl file. The current work-around for this is creating a file freeside-mason.deps.inc in the same folder as the RPM specfile. If you believe the file is out of date, say because you modified handler.pl for a custom RPM, you can regenerate it with: | ||
<pre> | <pre> | ||
Line 116: | Line 117: | ||
</pre> | </pre> | ||
Note that this one-liner scans the copy of handler.pl in the RPM build directory. It also strips out references to RT. | Note that this one-liner scans the copy of handler.pl in the RPM build directory. It also strips out references to RT. | ||
− | + | ==Build the RPMs for required Perl modules== | |
Freeside uses many Perl modules, not all of which are available as RPMs. The simplest way of generating all the required RPMs is to use Ovid, which is available from CPAN, as Ovid works recursively to build RPMs of modules that the current module depends on. Ovid also can build RPM sets from Perl bundle files. | Freeside uses many Perl modules, not all of which are available as RPMs. The simplest way of generating all the required RPMs is to use Ovid, which is available from CPAN, as Ovid works recursively to build RPMs of modules that the current module depends on. Ovid also can build RPM sets from Perl bundle files. | ||
The steps below let you build all required Perl modules as RPMs. An alternate approach is to find a repository that contains most of these modules as RPMs and build the remainder using Ovid, cpan2rpm, or cpanflute2. | The steps below let you build all required Perl modules as RPMs. An alternate approach is to find a repository that contains most of these modules as RPMs and build the remainder using Ovid, cpan2rpm, or cpanflute2. | ||
Line 239: | Line 240: | ||
*** Next, create the HTML::Mason specfile and hand-edit it to insert all these dependencies. (There is no perl-Bundle-HTML-Mason RPM, so you have to list all the dependencies individually.) | *** Next, create the HTML::Mason specfile and hand-edit it to insert all these dependencies. (There is no perl-Bundle-HTML-Mason RPM, so you have to list all the dependencies individually.) | ||
*** Finally, rebuild the HTML::Mason RPM using rpmbuild. Be aware that Ovid will overwrite your customized specfile if it thinks it needs to build HTML::Mason again. | *** Finally, rebuild the HTML::Mason RPM using rpmbuild. Be aware that Ovid will overwrite your customized specfile if it thinks it needs to build HTML::Mason again. | ||
− | + | ==Create the repository== | |
* Copy all generated RPMs into your web server space: | * Copy all generated RPMs into your web server space: | ||
<pre> | <pre> | ||
Line 268: | Line 269: | ||
Once this file is installed in /etc/yum.repos.d, you can proceed to [[#yum|install Freeside from the repository]]. | Once this file is installed in /etc/yum.repos.d, you can proceed to [[#yum|install Freeside from the repository]]. | ||
− | + | =Upgrading= | |
− | + | ||
+ | ==Introduction== | ||
If you have an existing Freeside installation that was installed from the tarball, following the instructions for installing or upgrading from RPM '''''may''''' result in an operational system where the RPMs have overwritten most or all of the files installed from the tarball or CPAN. | If you have an existing Freeside installation that was installed from the tarball, following the instructions for installing or upgrading from RPM '''''may''''' result in an operational system where the RPMs have overwritten most or all of the files installed from the tarball or CPAN. | ||
− | + | ==Upgrading using RPM== | |
When there's a new version of Freeside available as RPM, just download the new RPMs and upgrade them:<pre> | When there's a new version of Freeside available as RPM, just download the new RPMs and upgrade them:<pre> | ||
rpm -Uvh --test freeside-1.7.3-1.noarch.rpm freeside-mason-1.7.3-1.noarch.rpm freeside-postgresql-1.7.3-1.noarch.rpm | rpm -Uvh --test freeside-1.7.3-1.noarch.rpm freeside-mason-1.7.3-1.noarch.rpm freeside-postgresql-1.7.3-1.noarch.rpm | ||
</pre> | </pre> | ||
− | + | ==Upgrading using a repository== | |
If you installed the RPM version of Freeside from a repository, and a new version is available on the repository, then you can install the new files on your system using the package manager: | If you installed the RPM version of Freeside from a repository, and a new version is available on the repository, then you can install the new files on your system using the package manager: | ||
<pre>yum update</pre> | <pre>yum update</pre> | ||
Line 281: | Line 283: | ||
<pre>apt-get update</pre> | <pre>apt-get update</pre> | ||
To avoid unplanned upgrades, you may wish to mark the repository containing Freeside as disabled, or remove it from your yum or apt configuration files. | To avoid unplanned upgrades, you may wish to mark the repository containing Freeside as disabled, or remove it from your yum or apt configuration files. | ||
− | + | ==Finalizing the upgrade using freeside-install== | |
This will not perform any database upgrades, so you should refer to the tarball upgrade documentation and do any database changes by hand. (A future version of [[#freeside-install|freeside-install]] may be able to perform the database changes needed in an upgrade.) | This will not perform any database upgrades, so you should refer to the tarball upgrade documentation and do any database changes by hand. (A future version of [[#freeside-install|freeside-install]] may be able to perform the database changes needed in an upgrade.) |
Revision as of 09:58, 20 November 2007
Contents
Introduction
Warning!
The RPM installation of Freeside is experimental! The instructions below may be incomplete or incorrect and are subject to change. You should only attempt to use the RPM installation if you are prepared to work around omissions and inaccuracies, and can recover data in the event of a loss.
Information
RPM is a build-once, install-many package manager for system management. Originally for RedHat, it is now used on a wide range of Linux distros including Fedora, SUSE, etc. Well-structured RPMs include dependency information that RPM can use to warn you that additional components are required. Tools such as yum and apt-get (RPM version) can use this dependency information to download additional components from a repository and include them in the installation. This has the potential to make installing Freeside almost as easy as installing a Windows program. Installing the RPM version of Freeside may not be a good idea if you plan to do development on Freeside as the RPMs may not include all the files supplied in the tarball.
Installation
Installation using RPM
Installation is much easier if you have a repository that works with a tool such as yum or apt-get. If you only have rpm and wish to use that, enter:
rpm -Uvh --test freeside-1.7.3-1.noarch.rpm \ freeside-mason-1.7.3-1.noarch.rpm \ freeside-postgresql-1.7.3-1.noarch.rpm \ perl-Business-OnlinePayment-AuthorizeNet-3.17-1.i386.rpm
Where:
- 1.7.3-1 is the version of Freeside and the release of the RPM. Change this if necessary.
- postgresql is the database you wish to use as the Freeside back-end. Replace freeside-postgresql with freeside-mysql if you wish to use MySQL. See the main installation document for which databases are supported.
- Replace AuthorizeNet with the name of the credit card processor you wish to use for real-time transactions. Also replace 3.17-1.i386 with the current version, release, and architecture of the corresponding Business::OnlinePayment RPM.
The command should result in some warnings about unsatisfied dependencies. Find the corresponding RPMs and add them to the list on the command line. Keep doing this until the command results in no warnings, then issue the command one last time without the --test to actually install all the RPMs. Installing the freeside RPM will install the freeside-install command line utility that you can use to finish the installation.
Installing using yum
- First, find a repository containing all the required RPMs. If no such repository exists, you can create your own.
- Next, add the repository to your /etc/yum.repo.d directory or /etc/yum.conf file.
- Finally, install the required components by issuing the command:
yum install freeside freeside-mason freeside-postgresql perl-Business-OnlinePayment-AuthorizeNet
with these changes:
- Replace posgresql with mysql if you wish to use MySQL instead of PostgreSQL for the main Freeside database.
- Replace AuthorizeNet with the name of the Business::OnlinePaymet module for the credit card gateway you wish to use.
- Add the RPM name of any additional Business::OnlinePayment gateways you wish to install.
At this point all the required components should be installed and the freeside user account created. You can now complete the installation with freeside-install.
- If you are using a repository that is normally disabled, use
yum --enablerepo=freeside install ...
where freeside is the name of the repository.
If you get an error such as:
Transaction Check Error: file /usr/share/man/man3/File::Temp.3pm.gz from install of perl-File-Temp-0.18-1 conflicts with file from package perl-5.8.8-4.el4s1
then you're using an operating system with a badly packaged Perl. You will have to force the installation of the RPM which conflicts with the Perl, using something like:
rpm -Uvh --force /var/cache/yum/freeside/packages/perl-File-Temp-0.18-1.x86_64.rpm
This installs the conflicting RPM from yum's cache for the "freeside" repository. You can then retry installing from yum.
Installing using APT
- First, find a repository containing all the required RPMs. If no such repository exists, you can create your own.
- Next, add the repository to your /etc/apt.conf file.
- Finally, install the required components by issuing the command:
apt-get install freeside freeside-mason freeside-postgresql perl-Business-OnlinePayment-AuthorizeNet
At this point all the required components should be installed and the freeside user account created. You can now complete the installation with freeside-install.
Finalizing the installation
RPM does little more than installing files and creating users. To allow automated installation and upgrading, well-structured RPMs may not interact with the user. Since part of the Freeside installation is interactive, at some future date a command line utility called freeside-install will be included in the RPM to help you complete the installation. For the moment, just work through the standard install, ignoring the steps which are done by the RPM, i.e. installing files and creating the freeside user. The RPM does not do any steps that require entry of a password, or which have to be done after a password is specified.
- You can skip straight to "Allow the freeside user full access to the freeside database," but be aware that if there are errors in the RPM dependencies, then some of the prerequisites may not be installed.
- Then "Add the freeside database to your database engine:"
- Apache configuration is reduced to editing your httpd.conf file as specified in the last bullet point. (This will be automated in a later Freeside RPM.) You'll also have to modify httpd.conf to implement web interface security.
- All the final steps to create the first Freeside user, setup the database, populate the message catalog, and start freeside-queued must be done by hand.
- As with the usual install, you need to do initial administration after completing the install.
Creating your own repository with Freeside RPMs
If you can't find an APT/yum repository for your operating system, you can create your own.
Create a build environment matching your target
If your target is CentOS 4.x or similar, be aware that the standard mod_perl is 1.99. You should install an updated httpd, mod_perl, mod_ssl, etc. from the CentOS Plus repository, which also includes an updated PostgreSQL.
yum --enablerepo=centosplus httpd mod_perl mod_ssl postgresql
Set up your development environment for building RPMs as non-root
You should always build RPMs as a non-root user.
- First, create an account to build RPMs:
useradd bob
- Next, create or import a GPG key with which to sign the RPMs. (Signing is optional but recommended.)
- Next, create a .rpmmacros file in that user's home directory:
su bob vi ~/.rpmmacros %_topdir /home/bob/redhat %_signature gpg %_gpg_path /home/bob/.gnupg %_gpg_name Yourname Here
- Finally, create a set of directories for RPM to use:
su bob mkdir ~/redhat/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
To build Freeside RPMs as a non-root user, your build system must have a freeside user:
useradd freeside
Create the Freeside RPMs
- First, get the Freeside source code as a tarball
cd ~/redhat/SOURCES wget http://www.sisd.com/freeside/freeside-1.7.3.tar.gz
(Ideally you could build the RPMs at this point using a tarbuild: rpmbuild -ta freeside.tar.gz. This doesn't work yet.) You can also get tarballs from CVS using ViewVC.
- Next, untar the tarball and change directory to the folder containing the RPM specfile:
mkdir ~/work cd ~/work tar zxvf ~/redhat/SOURCES/freeside-1.7.3.tar.gz cd freeside-1.7.3/install/rpm
- If you are building modified RPMs, copy your patches and supplemental files to ~/redhat/SOURCES and edit the specfile to make use of them.
- Next, build the RPMs:
rpmbuild -ba freeside.spec
About freeside-mason.deps.inc
RPM attempts to automatically determine which other pieces of software, including Perl modules, the RPM it is building is dependent on. Unfortunately, it doesn't scan Freeside's handler.pl file. The current work-around for this is creating a file freeside-mason.deps.inc in the same folder as the RPM specfile. If you believe the file is out of date, say because you modified handler.pl for a custom RPM, you can regenerate it with:
/usr/lib/rpm/perldeps.pl -requires ../BUILD/freeside-1.7.3/htetc/handler.pl \ | grep -v -E '^perl\((lib|strict|vars|RT)\)$' \ | grep -v -E '^perl\(RT::' \ | sort | uniq -u | awk '{ printf "Requires: %s\n", $1;}' > freeside-mason.deps.inc
Note that this one-liner scans the copy of handler.pl in the RPM build directory. It also strips out references to RT.
Build the RPMs for required Perl modules
Freeside uses many Perl modules, not all of which are available as RPMs. The simplest way of generating all the required RPMs is to use Ovid, which is available from CPAN, as Ovid works recursively to build RPMs of modules that the current module depends on. Ovid also can build RPM sets from Perl bundle files. The steps below let you build all required Perl modules as RPMs. An alternate approach is to find a repository that contains most of these modules as RPMs and build the remainder using Ovid, cpan2rpm, or cpanflute2.
- If you have not used CPAN as the build user yet, configure CPAN:
su bob cpan # And answer all the prompts
- Install Ovid:
cpan install Ovid quit rpm -Uvh ~/redhat/RPMs/i386/ovid-0.12-1.i386.rpm
or
wget http://search.cpan.org/CPAN/authors/id/G/GY/GYEPI/Ovid-0.12.tar.gz rpmbuild -ta Ovid-0.12.tar.gz rpm -Uvh ~/redhat/RPMs/i386/ovid-0.12-1.i386.rpm
- If you are using Ovid version 0.12, apply this patch to enable support for building Perl modules that use Module::Build instead of ExtUtils::MakeMaker:
--- Package.pm.orig 2007-05-25 09:54:14.000000000 -0400 +++ Package.pm 2007-07-07 15:35:20.000000000 -0400 @@ -165,6 +165,7 @@ push @out, $self->provreq($n); } + return join("\n", map { "Provides: $_"; } @out) if scalar(@out) > 5; return join('', 'Provides: ', join ' ', @out); } @@ -376,10 +377,15 @@ %install -make PREFIX=%{_prefix} \ - DESTDIR=%{buildroot} \ - INSTALLDIRS=@installdirs@ \ - install +if [ -f Build.PL -a -f Build ] ; then + ./Build destdir=%{buildroot} \ + install +else + make PREFIX=%{_prefix} \ + DESTDIR=%{buildroot} \ + INSTALLDIRS=@installdirs@ \ + install +fi [ -x /usr/lib/rpm/brp-compress ] && /usr/lib/rpm/brp-compress
This is applied in /usr/lib/perl5/site_perl/5.*/Ovid:
/bin/su - cd /usr/lib/perl5/site_perl/5.*/Ovid patch < Ovid.diff
- Create bundle files for each of the Freeside RPMs:
mkdir ~/.cpan/Bundle install/rpm/rpm2Bundle ~/redhat/RPMS/noarch/freeside-1.7.3-1.noarch.rpm > ~/.cpan/Bundle/freeside.pm install/rpm/rpm2Bundle ~/redhat/RPMS/noarch/freeside-mason-1.7.3-1.noarch.rpm > ~/.cpan/Bundle/freeside-mason.pm install/rpm/rpm2Bundle ~/redhat/RPMS/noarch/freeside-postgresql-1.7.3-1.noarch.rpm > ~/.cpan/Bundle/freeside-postgresql.pm
- Some of the modules Ovid will attempt to build use Module::Build instead of ExtUtils::MakeMaker. Ensure Module::Build is installed, for example by trying to find its files:
locate Module/Build
- Install Module::Build if it's not already installed (you can build it with Ovid if it is not available prebuilt):
yum install perl-Module-Build
- Install any prerequisites needed to build some of the modules
- GD requires header files for JPEG, PNG, and Freetype.
yum install libjpeg-devel libpng-devel freetype-devel
- The DBD::Pg build process also needs to know the version of PostgreSQL the module is being built for. The easiest way to do this may be to install the postgresql-devel RPM on your build machine.
- Use Ovid to create RPMs for the main Freeside dependencies:
ovid --skip-perl-rpm-modules --packager='Yourname Here <youraddy@example.com>' \ Bundle::freeside Bundle::freeside-mason Bundle::freeside-postgresql
- Fix up RPMs that did not build. cpan2rpm and cpanflute2 are useful when Ovid doesn't work.
- Newer versions of DBD::Pg may require a newer version of DBI to be installed on the build computer:
ovid --skip-perl-rpm-modules --packager='Yourname Here <youraddy@example.com>' DBI # Build DBI /bin/su - # Get root to install the RPM rpm -Uvh ~bob/redhat/RPMS/i386/perl-DBI-1.601-1.i386.rpm exit ovid --skip-perl-rpm-modules --packager='Yourname Here <youraddy@example.com>' DBD::Pg # Try a rebuild of DBD::Pg
- Chart has inaccurate RPM "provides" information. This can be fixed by using Ovid to produce a specfile and then commenting out the lines that turn off AutoProvides. Be aware that Ovid may overwrite changes when run again.
ovid --skip-perl-rpm-modules --packager='Yourname Here <youraddy@example.com>' --nobuild Chart vi ~/redhat/SPECS/perl-Chart.spec rpmbuild -ba ~/redhat/SPECS/perl-Chart.spec
- Ovid 0.12 has a bug where the version number passed to rpmbuild is incorrect for Perl modules with a trailing digit. This affects IPC::Run3 and Crypt::PasswdMD5. One workaround is to have Ovid create the specfile and hand-edit it before running rpmbuild yourself to build the RPMs:
ovid --skip-perl-rpm-modules --packager='Yourname Here <youraddy@example.com>' --nobuild IPC::Run3 Crypt::PasswdMD5 cd ~/redhat/SPECS mv perl-IPC-Run.spec perl-IPC-Run3.spec mv perl-Crypt-PasswdMD.spec perl-Crypt-PasswdMD5.spec vi perl-IPC-Run3.spec # Append '3' to Run where necessary vi perl-Crypt-PasswdMD5.spec # Append '5' to MD where necessary rpmbuild -ba perl-IPC-Run3.spec rpmbuild -ba perl-Crypt-PasswdMD5.spec
- Use Ovid to create RPMs for all the Freeside dependencies you require:
ovid --skip-perl-rpm-modules --packager='Yourname Here <youraddy@example.com>' Business::OnlinePayment::AuthorizeNet
- Fix up RPMs that have inadequate dependency information. One approach is to use Ovid to generate a specfile for the RPM, hand-edit the specfile, and then build the RPM using rpmbuild.
- The perl-GD RPM doesn't list 'gd' as one of the dependencies.
- The HTML::Mason RPM is troublesome as a lot of the dependencies are listed in the Bundle::HTML::Mason file inside the HTML::Mason tarball. Ovid does not build all these dependencies automatically, or add them to the dependency list of the HTML::Mason RPM.
- First, build all the dependencies:
ovid --skip-perl-rpm-modules --packager='Yourname Here <youraddy@example.com>' Bundle::HTML::Mason
- Next, create the HTML::Mason specfile and hand-edit it to insert all these dependencies. (There is no perl-Bundle-HTML-Mason RPM, so you have to list all the dependencies individually.)
- Finally, rebuild the HTML::Mason RPM using rpmbuild. Be aware that Ovid will overwrite your customized specfile if it thinks it needs to build HTML::Mason again.
Create the repository
- Copy all generated RPMs into your web server space:
mkdir /var/www/html/fedora/7/ cp ~/redhat/RPMS/*/*.rpm /var/www/html/fedora/7
- Remove any files that are present on any other repositories you intend to use. (This is left as an exercise for the reader.)
- Sign all the RPMs with your GPG key:
cd /var/www/html/fedora/7 rpm --addsign *.rpm
- Download any programs needed to build the repository. For newer, XML-based versions of yum, you'll need createrepo. If it's in a yum repository, this can be as simple as:
yum install createrepo
. On distros using older versions of yum (e.g. FC2 and earlier), you'll need to use yum-arch instead of createrepo to generate the repository metadata. yum-arch should be installed as part of the yum RPM, so there's no need to install another RPM. - Create the repository:
createrepo /var/www/html/fedora/7
- Make sure the web server is started
At this point your web server is acting as a yum repository with a URL of http://localhost/fedora/7/
- Create a file defining the repository in /etc/yum.repos.d/freeside.repo, or put it up on your web server so it can be downloaded to machines that Freeside will be installed on.
#Packages used in Freeside [freeside] name=Freeside-$releasever #mirrorlist=http://localhost/mirrors/fedora/$releasever/$basearch baseurl=http://localhost/fedora/$releasever/ gpgcheck=1 enabled=0 gpgkey=http://localhost/RPM-GPG-KEY-yourname
Once this file is installed in /etc/yum.repos.d, you can proceed to install Freeside from the repository.
Upgrading
Introduction
If you have an existing Freeside installation that was installed from the tarball, following the instructions for installing or upgrading from RPM may result in an operational system where the RPMs have overwritten most or all of the files installed from the tarball or CPAN.
Upgrading using RPM
When there's a new version of Freeside available as RPM, just download the new RPMs and upgrade them:rpm -Uvh --test freeside-1.7.3-1.noarch.rpm freeside-mason-1.7.3-1.noarch.rpm freeside-postgresql-1.7.3-1.noarch.rpm
Upgrading using a repository
If you installed the RPM version of Freeside from a repository, and a new version is available on the repository, then you can install the new files on your system using the package manager:
yum update
or:
apt-get update
To avoid unplanned upgrades, you may wish to mark the repository containing Freeside as disabled, or remove it from your yum or apt configuration files.
Finalizing the upgrade using freeside-install
This will not perform any database upgrades, so you should refer to the tarball upgrade documentation and do any database changes by hand. (A future version of freeside-install may be able to perform the database changes needed in an upgrade.)