text:
(→Quick test with rpmlint)
m (→Creating RPMs from the spec file)
|Line 736:
|Line 736:
You might find [http://rust.sourceforge.net/ RUST] useful (GPL), though it does not create SPEC files of suitable quality for Fedora packages. [http://kitenet.net/~joey/code/alien/ Alien] converts between package formats. It won't produce clean SRPMS, but converting an existing package might provide helpful information.
You might find [http://rust.sourceforge.net/ RUST] useful (GPL), though it does not create SPEC files of suitable quality for Fedora packages. [http://kitenet.net/~joey/code/alien/ Alien] converts between package formats. It won't produce clean SRPMS, but converting an existing package might provide helpful information.
== Testing RPMs you've built (including rpmlint) ==
== Testing RPMs you've built (including rpmlint) ==
Revision as of 04:20, 25 February 2013
- 1 关于本指南
- 2 前期准备
- 4 做好准备打包一个特殊程序
- 5 新建一个 .spec 文件
- 6 SPEC file overview
- 7 SPEC file sections explained
- 7.1 %prep section
- 7.2 %build section
- 7.3 %check section
- 7.4 %install section
- 7.5 %files section
- 7.6 Scriptlets
- 7.7 Macros
- 7.8 Other tags
- 7.9 Subpackages
- 7.10 Conditionals
- 7.11 Application Specific Guidelines
- 7.12 Miscellaneous hints
- 8 Building the binary package
- 9 Mock and Koji
- 10 Helpful tools
- 11 Testing RPMs you've built (including rpmlint)
- 12 Helpful tools
- 13 相关规定
- 14 维护软件包
- 15 更多信息
本指南讲述了如何为 Fedora 制作 RPM 包,特别是如何写 .spec 配置文件。不像其它文档,本文档会解释 Fedora 中特殊领域的打包(会有链接指向 Fedora 的特殊打包规定)。并且由于本文档通过 wiki 更新,因此会尽可能的保持最新。除了 Fedora,绝大部分内容也会适用其他基于 RPM 机制的发行版。如果您等不及了,您可以先看看如何创建一个 GNU Hello World 软件包,这是一个创建 RPM 包的简短总结(但是没有很详细的信息)。
注意,本指南并不是 Fedora 官方的打包规定(官方规定:打包规定 和 软件包命名规定)。不过本指南与前两者100%兼容。
如果您计划为 Fedora 的官方源创建一个 RPM 包,请按照 如何成为 Fedora 软件包仓库维护人员 页面的步骤一步步来。
在您为 Fedora 创建 RPM 包之前,您需要安装一些必须的开发组件并且设置好即将使用的账户:
# yum install @development-tools # yum install fedora-packager
makerpm的用户,添加至 'mock' 用户组,设置好密码并通过该用户登录:
# /usr/sbin/useradd makerpm # usermod -a -G mock makerpm # passwd makerpm
一旦登录了 makerpm 用户,您可以使用一下命令在这个用户的家目录下创建一个标准的打包工作目录结构:
$ rpmdev-setuptree
rpmdev-setuptree 程序新建一个位置是
~/rpmbuild 的目录。在 "rpmbuild" 目录下是一些预设好的子目录(比如
rpmdev-setuptree 也会创建一个位置是
~/.rpmmacros 的文件。它是一个保存有关设置的文件。
wget 或者
curl 获取软件源代码的时候就会自动保存。
wget 来获取源代码,确保在
~/.wgetrc 文件加入一行
timestamping = on 。类似的,如果您使用
curl ,确保
~/.curlrc 文件包含 "-R"。
.spec 的文本文档,里面包含被打包软件的全部信息。然后您对这个文本文档在系统中执行
rpmbuild 命令,经过这一步,系统会按照步骤生成最终的 RPM 包。
.tar.gz 结尾的文件, 放入
~/rpmbuild/SOURCES 目录下。您应该把
.spec 文件放入
~/rpmbuild/SPECS 目录下,并且把它命名为 "软件包名字.spec" 。当然, 软件包名字 就是最终 RPM 包的名字。为了创建所有软件包(包括预编译好的包(Binary RPM)和源代码包(SRPM)),您需要把终端切换至
~/rpmbuild/SPECS 目录然后执行:
$ rpmbuild -ba NAME.spec
rpmbuild 会自动读取
.spec 文件并尝试按照其中所设定的步骤完成构建。(以下表格中,以
% 开头的短语都是宏,每一个宏起到的作用已经详细列出):
%_sourcedir 目录的源代码和 patch 。随后会解压源代码至
%_builddir 下的子目录并应用所有 patch。
%_builddir 构建目录下的全部文件。本步类似于 "
./configure && make" 命令。
|本步检查软件是否正常运行。本步类似于 "
make test" 命令。不过很多软件包都不需要这步。
%_builddir 构建目录下的文件并把它们写入至
%_buildrootdir 最终安装目录。这些文件就是用户安装 RPM 后最终得到的文件。请注意一个奇怪的地方: 最终安装目录 不是 构建目录 !本步类似于 "
make install" 命令。
%_buildrootdir 最终安装目录下的文件,以便最终在
%_rpmdir 目录下创建 RPM 包。在该目录下,针对不同架构制作的 RPM 包会分子目录放置,同时一个叫做 "noarch" 的目录放置针对所有架构均适用的 RPM 包。所有 RPM 就是用户最终安装的 RPM 包。
.src.rpm作为后缀名)。然后这些 SRPM 会被放在
%_srcrpmdir 目录下。SRPM 包通常被用于审核和升级软件包。
rpmbuild 中对上面表格中的每个宏代码有相应的目录对应:
|Spec 文件目录
|RPM 包配置(.spec) 文件存放的目录
|存放源代码包(比如 .tar包) 和所有 patch 的目录
|%install 阶段最终安装的文件
如果某一阶段失败,请查看输出以了解失败的 原因,然后请按照问题修改
.spec 文件。
如果想为 Fedora 源打包一个程序,您必须使用源代码来打包,且包含 patch 以及打包简介。不可以使用预编译好的代码来进行打包。将源代码(通常是一个 .tar.gz 文件) 放入"
~/rpmbuild/SOURCES" 目录(注意用户)。
您只许打包允许您打包的软件。请查看 Packaging:Guidelines#Legal、Licensing:Main 和 Packaging:LicensingGuidelines。 通常情况下,您只可以打包使用开源许可证(比如GNU GPL、GNU LGPL、BSD-new、MIT/X或者Apache 2.0 许可证)发放的开源软件(OSS)。 请仔细检查许可证是否名副其实,同时软件整体是否均基于开源协议发放。(比如抽查源代码开头的注释、README 文件等等)。 如果软件有外部组件被捆绑,请确保这些组件也是开源软件。这步十分重要。
尽可能利用一切已有的信息!很明显,请您不要打包一些已经存在于源里面的程序!为了防止您犯这种错误,请查阅 Fedora 软件包数据库。同时建议查阅 正在被审核的软件包和 已停止使用的软件包列表。
如果以上都没有即将被您打包的程序的信息,请使用 Google 以 "您想打包的程序名 Fedora rpm" 或者类似的关键字进行搜索,您可以直接访问 Fedora 软件仓库 Git 源 来查看已存在于 Fedora 源中的 .spec 文件(以及 patch)。您还可以通过
yum-utils 工具包的一个工具,
yumdownloader,来获取源代码 RPM 包(SRPM):
$ yum -y install yum-utils $ yumdownloader --source 您想要获得的源代码包的名字
或者您可以通过浏览 Fedora 镜像列表 的 HTTP 或者 FTP 页面以获取 SRPM 包。在 releases/29/Everything/source/SRPMS 目录内 (请把"29"换成您想要的 Fedora 版本),然后下载即可。通常源代码包以 .src.rpm 为后缀名。
~/rpmbuild 目录下:
$ rpm -ivh 源代码包名字.src.rpm
rpm2cpio 把源代码包解压到任意目录:
$ mkdir 源代码包名字_src_rpm $ cd 源代码包名字E_src_rpm $ rpm2cpio ../源代码包名字.src.rpm | cpio -i
使用这些已经存在的信息有助于您更快打包。RPM Find 和 PKGS.org 将帮助您找到针对非 Fedora 的 RPM 包。您可以尝试安装它们。如果失败,请查看相应的源代码包(不是
.deb) 结尾的 Ubuntu 或 Debian软件包(源代码包通常是标准的 tar 文件比并且内部包含一个叫做 "
debian/" 的子目录)。如果您在 FreeBSD ports 仓库 找到想要的文件, 请下载 ports 的源代码包 并查看是否包含相关信息。有些时候这些操作没什么实际帮助,因为不同的系统有不同的规定。
新建一个 .spec 文件
现在您需要新建一个 ".spec" 文件,并让它位于
~/rpmbuild/SPECS 目录下。您应该把它命名为 "
程序名.spec"。程序名根据原始软件包命名或通用命名来填写即可。但是,软件包命名规定 是您必须要遵守的。
如果您第一次新建 .spec 文件,vim 或 emacs 会自动生成好一个模板:
$ cd ~/rpmbuild/SPECS $ vim 程序名.spec
Name: Version: Release: 1%{?dist} Summary: Group: License: URL: Source0: BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: Requires: %description %prep %setup -q %build %configure make %{?_smp_mflags} %install rm -rf %{buildroot} make install DESTDIR=%{buildroot} %clean rm -rf %{buildroot} %files %defattr(-,root,root,-) %doc %changelog
You can use
$RPM_BUILD_ROOT instead of
%{buildroot}. Both are acceptable, but just be consistent.
You may also use the
rpmdev-newspec command to create a SPEC file for you.
rpmdev-newspec NAME-OF-NEW-PACKAGE can create an initial SPEC file for a new package, tailored to various types of packages. It will guess what kind of template to use based on the package name, or you can specify a particular template. See
/etc/rpmdevtools/spectemplate-*.spec for available templates, and see
rpmdev-newspec --help for more information. For example, to create a new SPEC file for a python module:
cd ~/rpmbuild/SPECS rpmdev-newspec python-antigravity vi python-antigravity.spec
Here's a simple example showing a Fedora 16 SPEC file for the
eject program:
Summary: A program that ejects removable media using software control Name: eject Version: 2.1.5 Release: 21%{?dist} License: GPLv2+ Group: System Environment/Base Source: %{name}-%{version}.tar.gz Patch1: eject-2.1.1-verbose.patch Patch2: eject-timeout.patch Patch3: eject-2.1.5-opendevice.patch Patch4: eject-2.1.5-spaces.patch Patch5: eject-2.1.5-lock.patch Patch6: eject-2.1.5-umount.patch URL: http://www.pobox.com/~tranter ExcludeArch: s390 s390x BuildRequires: gettext BuildRequires: libtool %description The eject program allows the user to eject removable media (typically CD-ROMs, floppy disks or Iomega Jaz or Zip disks) using software control. Eject can also control some multi-disk CD changers and even some devices' auto-eject features. Install eject if you'd like to eject removable media using software control. %prep %setup -q -n %{name} %patch1 -p1 %patch2 -p1 %patch3 -p1 %patch4 -p1 %patch5 -p1 %patch6 -p1 %build %configure make %{?_smp_mflags} %install make DESTDIR=%{buildroot} install install -m 755 -d %{buildroot}/%{_sbindir} ln -s ../bin/eject %{buildroot}/%{_sbindir} %find_lang %{name} %files -f %{name}.lang %doc README TODO COPYING ChangeLog %{_bindir}/* %{_sbindir}/* %{_mandir}/man1/* %changelog * Tue Feb 08 2011 Fedora Release Engineering <email@example.com> - 2.1.5-21 - Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild * Fri Jul 02 2010 Kamil Dudka <email@example.com> 2.1.5-20 - handle multi-partition devices with spaces in mount points properly (#608502)
SPEC file overview
Other useful guides:
- RPM Guide describes how to write a SPEC file.
- The IBM series "Packaging software with RPM" Part 1, Part 2, and Part 3.
- Maximum RPM has the most complete information, but is dated.
You will need to follow the Fedora guidelines: Package Naming Guidelines, Packaging guidelines, and Package review guidelines.
Insert comments with a leading "
#" character, but avoid macros (beginning with
%) that are potentially multiline (as they are expanded first). If commenting out a line, double the percent signs (
%%). Also avoid inline comments on the same line as a script command.
The major tags are listed below. Note that the macros
%{version} and
%{release} can be used to refer to the Name, Version and Release tags respectively. When you change the tag, the macros automatically update to use the new value.
- Name: The (base) name of the package, which should match the SPEC file name. It must follow the Package Naming Guidelines and generally be lowercase.
- Version: The upstream version number. See Version tag section of the packaging guidelines. If the version contains tags that are non-numeric (contains tags that are not numbers), you may need to include the additional non-numeric characters in the Release tag. If upstream uses full dates to distinguish versions, consider using version numbers of the form
- Release: The initial value should normally be
1%{?dist}. Increment the number every time you release a new package for the same version of software. When a new upstream version is released, change the Version tag to match and reset the Release number to
1. See Release tag section of the packaging guidelines. The optional Dist tag might be useful.
- Summary: A brief, one-line summary of the package. Use American English. Do not end in a period.
- Group: This needs to be a pre-existing group, like "Applications/Engineering"; run "
less /usr/share/doc/rpm-*/GROUPS" to see the complete list. Use the group "Documentation" for any sub-packages (e.g.
kernel-doc) containing documentation. Note: This tag is deprecated since Fedora 17. See [File Reference Preamble]
- License: The license, which must be an open source software license. Do not use the old Copyright tag. Use a standard abbreviation (e.g. "
GPLv2+") and be specific (e.g. use "
GPLv2+" for GPL version 2 or greater instead of just "
GPL" or "
GPLv2" where it's true). See Licensing and the Licensing Guidelines. You can list multiple licenses by combining them with "
and" and "
or" (e.g. "
GPLv2 and BSD").
- URL: The full URL for more information about the program (e.g. the project website). Note: This is not where the original source code came from which is meant for the Source0 tag below.
- Source0: The full URL for the compressed archive containing the (original) pristine source code, as upstream released it. "
Source" is synonymous with "
Source0". If you give a full URL (and you should), its basename will be used when looking in the
SOURCESdirectory. If possible, embed
%{version}, so that changes to either will go to the right place. Preserve timestamps when downloading source files. If there is more than one source, name them
Source2and so on. If you're adding whole new files in addition to the pristine sources, list them as sources after the pristine sources. A copy of each of these sources will be included in any SRPM you create, unless you specifically direct otherwise. See Source URL for more information on special cases (e.g. revision control).
- Patch0: The name of the first patch to apply to the source code. If you need to patch the files after they've been uncompressed, you should edit the files and save their differences as a "patch" file in your
~/rpmbuild/SOURCESdirectory. Patches should make only one logical change each, so it's quite possible to have multiple patch files.
- BuildArch: If you're packaging files that are architecture-independent (e.g. shell scripts, data files), then add "
BuildArch: noarch". The architecture for the binary RPM will then be "
- BuildRoot: This is where files will be "installed" during the %install process (after the %build process). This is now redundant in Fedora and is only needed for EPEL5. By default, the build root is placed in "
- BuildRequires: A comma-separated list of packages required for building (compiling) the program. This field can be (and is commonly) repeated on multiple lines. These dependencies are not automatically determined, so you need to include everything needed to build the program. Some common packages can be omitted, such as
gcc. You can specify a minimum version if necessary (e.g. "
ocaml >= 3.08"). If you need the file
/EGGS, determine the package that owns it by running "
rpm -qf /EGGS". If you need the program
EGGS, determine the package that owns it by running "
rpm -qf". Keep dependencies to a minimum (e.g. use
which EGGS
sedinstead of
perlif you don't really need perl's abilities), but beware that some applications permanently disable functions if the associated dependency is not present; in those cases you may need to include the additional packages. The
auto-buildrequirespackage may be helpful.
- Requires: A comma-separate list of packages that are required when the program is installed. Note that the BuildRequires tag lists what is required to build the binary RPM, while the Requires tag lists what is required when installing/running the program; a package may be in one list or in both. In many cases,
rpmbuildautomatically detects dependencies so the Requires tag is not always necessary. However, you may wish to highlight some specific packages as being required, or they may not be automatically detected.
- %description: A longer, multi-line description of the program. Use American English. All lines must be 80 characters or less. Blank lines indicate a new paragraph. Some graphical user interface installation programs will reformat paragraphs; lines that start with whitespace will be treated as preformatted text and displayed as is, normally with a fixed-width font. See RPM Guide.
- %prep: Script commands to "prepare" the program (e.g. to uncompress it) so that it will be ready for building. Typically this is just "
%setup -q"; a common variation is "
%setup -q -n NAME" if the source file unpacks into
NAME. See the %prep section below for more.
- %build: Script commands to "build" the program (e.g. to compile it) and get it ready for installing. The program should come with instructions on how to do this. See the %build section below for more.
- %check: Script commands to "test" the program. This is run between the %build and %install procedures, so place it there if you have this section. Often it simply contains "
make test" or "
make check". This is separated from %build so that people can skip the self-test if they desire.
- %install: Script commands to "install" the program. The commands should copy the files from the
%{_builddir}into the buildroot directory,
%{buildroot}. See the %install section below for more.
- %clean: Instructions to clean out the build root. Note that this section is now redundant in Fedora and is only necessary for EPEL. Typically this contains only:
rm -rf %{buildroot}
- %files: The list of files that will be installed. See the %files section below for more.
- %changelog: Changes in the package. Use the format example above.
- ExcludeArch: If the package does not successfully compile, build or work on a particular architecture, list those architectures under this tag.
- You can add sections so that code will run when packages are installed or removed on the real system (as opposed to just running the %install script, which only does a pseudo-install to the build root). These are called "scriptlets", and they are usually used to update the running system with information from the package. See the "Scriptlets" section below for more.
RPM also supports the creation of several packages (called subpackages) from a single SPEC file, such as
name-libs and
name-devel packages.
Do not use these tags:
- Packager
- Vendor
- Copyright
Do not create a "relocatable" package; they don't add value in Fedora and make things more complicated.
SPEC file sections explained
%prep section
The %prep section describes how to unpack the compressed packages so that they can be built. Typically, this includes the "
%setup" and "
%patch" commands with reference to the Source0 (and Source1 etc.) lines. See the Maximum RPM section on %setup and %patch for more details.
The %{patches} and %{sources} macros are available since RPM 4.4.2 and are useful if you have a large list of patches or sources:
for p in %{patches}; do ... done
However, keep in mind that using these will make your SPEC incompatible with RPMS used in RHEL and other RPM-based dirstributions.
%prep section: %setup command
The "
%setup" command unpacks a source package. Switches include:
-q: Suppress unecessary output. This is commonly used.
-nname : If the Source tarball unpacks into a directory whose name is not the RPM name, this switch can be used to specify the correct directory name. For example, if the tarball unpacks into the directory FOO, use "
%setup -q -n FOO".
-cname : If the Source tarball unpacks into multiple directories instead of a single directory, this switch can be used to create a directory named name and then unpack into it.
There are more %spec options if you are unpacking multiple files, which is primarily useful if you are creating subpackages (see below). The key ones are:
-a number
| Only unpack the Source directive of the given number after changing directory (e.g. "
–a 0" for Source0).
-b number
| Only unpack the Source directive of the given number before changing directory (e.g. "
–b 0" for Source0).
|Do not delete the directory before unpacking.
|Disable the automatic unpacking of the archives.
%prep section: %patch commands
The "
%patch0" command applies Patch0 (and %patch1 applies Patch1 etc.). Patches are the normal method of making necessary changes to the source code for packaging. The usual "
-pNUMBER" option applies, which passes that argument onto the program
Patch file names often look like "
telnet-0.17-env.patch", which is the format
%{name} - %{version} - REASON.patch" (though sometimes version is omitted). Patch files are typically the result of "
diff -u"; if you do this from the subdirectory of
~/rpmbuild/BUILD then you won't have to specify a
-p level later.
This is a typical procedure for creating a patch for a single file:
cp foo/bar foo/bar.orig vim foo/bar diff -u foo/bar.orig foo/bar > ~/rpmbuild/SOURCES/PKGNAME.REASON.patch
If editing many files, one easy method is to copy the whole subdirectory underneath
BUILD and then do subdirectory diffs. After you have changed directory to "
~rpmbuild/BUILD/NAME", do the following:
cp -pr ./ ../PACKAGENAME.orig/ ... many edits ... diff -u ../PACKAGENAME.orig . > ~/rpmbuild/SOURCES/NAME.REASON.patch
If you edit many files in one patch, you can also copy the original files using some consistent ending such as "
.orig" before editing them. Then, you can use "
gendiff" (in the
rpm-build package) to create a patch with the differences.
Try to ensure that your patch match the context exactly. The default "fuzz" value is "
0", requiring matches to be exact. You can work around this by adding "
%global _default_patch_fuzz 2" to revert to the value found in older versions of RPM in Fedora, but it is generally recommended to avoid doing this.
As explained in Packaging/PatchUpstreamStatus, all patches should have a comment above them in the SPEC file about their upstream status. This should document the upstream bug/email that includes it (including the date). If it is unique to Fedora, you should mention why it is unique. The Fedora Project tries not to deviate from upstream; see PackageMaintainers/WhyUpstream for the importance of this.
%prep section: Unmodified files
Sometimes, one or more of the Source files do not need to be uncompressed. You can "prep" those into the build directory like this (where
SOURCE1 refers to the relevant Source file):
cp -p %SOURCE1 .
%build section
The "%build" section is sometimes complicated; here you configure and compile/build the files to be installed.
Many programs follow the GNU
configure approach (or some variation). By default, they will install to a prefix of "
/usr/local", which is reasonable for unpackaged files. However, since you are packaging it, change the prefix to "
/usr". Libraries should be installed to either
/usr/lib or
/usr/lib64 depending on the architecture.
Since GNU
configure is so common, the macro "
%configure" can be used to automatically invoke the correct options (e.g. change the prefix to
/usr). Some variation of this often works:
%configure make %{?_smp_mflags}
To override makefile variables, pass them as parameters to
make %{?_smp_mflags} CFLAGS="%{optflags}" BINDIR=%{_bindir}
More more information, see "GNU autoconf, automake, and libtool" and "Open Source Development Tools: An Introduction to Make, Configure, Automake, Autoconf" by Stefan Hundhammer.
Some programs use
cmake. See Packaging/cmake.
%check section
If self-tests are available, it is generally a good idea to include them. They should be placed in the %check section (which immediately follows the %build section) instead of within the %build section itself, so that they can be easily skipped when necessary.
Often, this section contains:
make test
%install section
This section involves script commands to "install" the program, copying the relevant files from
%{_builddir} to
%{buildroot} (which usually means from
~/rpmbuild/BUILD to
~/rpmbuild/BUILDROOT) and creating directories inside
%{buildroot} as necessary.
Some of the terminology can be misleading:
- The "build directory", also known as
%{_builddir}is not the same as the "build root", also known as
%{buildroot}. Compilation occurs in the former directory, while files to be packaged are copied from the former to the latter.
- During the %build section, the current directory will start at
%{buildsubdir}, which is the subdirectory within
%{_builddir}that was created during %prep stage. This is usually something like
- The %install section is not run when the binary RPM package is installed by the end-user, but is only run when creating a package.
Normally, some variation of "
make install" is performed here:
%install rm -rf %{buildroot} make DESTDIR=%{buildroot} install
Removal of
%{buildroot} is no longer necessary, except for EPEL 5.
Ideally you should use
DESTDIR=%{buildroot} if the program supports it, as it redirects file installations to the specified directory and is exactly what we want to happen during the %install section.
If the program does not support
DESTDIR (and only if), you can workaround it in one of several (inferior) ways:
- Patch the makefile so that is supports
DESTDIR. Create directories inside
DESTDIRwhere necessary and submit the patch upstream.
- Use the "
%makeinstall" macro. This method might work, but can lead to subtle failures. It expands to something like "
make prefix=%{buildroot}%{_prefix} bindir=%{buildroot}%{_bindir} ... install", which can result in some programs failing to work properly. Create directories inside
%{buildroot}where necessary.
- Consider using the
auto-destdirpackage. This requires "
BuildRequires: auto-destdir", and changing "
make install" to "
make-redir DESTDIR=%{buildroot} install". This only works well if the installation uses only certain common commands to install files, like
- Perform the installation by hand. This would involve creating the necessary directories under
%{buildroot}and copying files from
%{buildroot}. Be especially careful with updates, which often contain new or changed filenames. An example of this procedure:
%install rm -rf %{buildroot} mkdir -p %{buildroot}%{_bindir}/ cp -p mycommand %{buildroot}%{_bindir}/
As noted in Packaging:Guidelines#Timestamps, try to preserve timestamps if the makefile lets you override commands:
make INSTALL="install -p" CP="cp -p" DESTDIR=%{buildroot} install
%files section
This section declares which files and directories are owned by the package, and thus which files and directories will be placed into the binary RPM.
%files basics
%defattr set the default file permissions, and is often found at the start of the
%files section. Note that this is no longer necessary unless the permissions need to be altered. The format of this is:
%defattr(<file permissions>, <user>, <group>, <directory permissions>)
The fourth parameter is often omitted. Usually one uses
%defattr(-,root,root,-), where "
-" uses the default permissions.
You should then list all the files and directories to be owned by the package. Use macros for directory names where possible, which can be viewed at Packaging:RPMMacros (e.g. use
%{_bindir}/mycommand instead of
/usr/bin/mycommand). If the pattern begins with a "
/" (or when expanded from the macro) then it is taken from the
%{buildroot} directory. Otherwise, the file is presumed to be in the current directory (e.g. inside
%{_builddir}, such as documentation files that you wish to include). If your package only installs a single file
/usr/sbin/mycommand, then the
%files section can simply be:
%files %{_sbindir}/mycommand
To make your package less sensitive to upstream changes, declare all files within a directory to be owned by the package with a pattern match:
To include a single directory:
Note that
%{_bindir}/* does not claim that this package owns the
/usr/bin directory, but only the files contained within. If you list a directory, then you are claiming that the package owns that directory and all files and subdirectories contained within. Thus, do not list
%{_bindir} and be careful of directories that may be shared with other packages.
An error will occur if:
- a pattern match does not match any file or directory
- a file or directory is listed or matched more than once
- a file or directory in the
%{buildroot}has not been listed
It is also possible to exclude files from a previous match by using the
%exclude glob. This can be useful for including almost all of the files included by a different pattern match, but note that it will also fail if it does not match anything.
%files prefixes
You may need to add one or more prefixes to lines in the
%files section; seperate them with a space. See Max RPM section on %files directives.
Usually, "
%doc" is used to list documentation files within
%{_builddir} that were not copied to
%{buildroot}. A
README and
INSTALL file is usually included. They will be placed in the directory
/usr/share/doc/%{name}-%{version}, whose ownership does not need to be declared.
Note: If specifying a
%doc entry, then you can't copy files into the documentation directory during the
%install section. If, for example, you want an "examples" subdirectory within the documentation directory, don't use
%doc, but instead create the directories and copy files over manually into
%{buildroot}%{_defaultdocdir}/%{name}-%{version} during the %install section. They will be correctly marked as documentation. Make sure you include
%{_defaultdocdir}/%{name}-%{version}/ as an entry in the %files section.
Configuration files should be placed in
/etc and are normally specified like this (which makes sure user changes aren't overwritten on update):
%config(noreplace) %{_sysconfdir}/foo.conf
If the update uses a non-backwards-compatible configuration format, then specify them like this:
%config %{_sysconfdir}/foo.conf
%attr(mode, user, group)" can be used for finer control over permissions, where a "
-" means use the default:
%attr(0644, root, root) FOO.BAR
If a file is in particular natural language, use
%lang to note that:
%lang(de) %{_datadir}/locale/de/LC_MESSAGES/tcsh*
Programs using Locale files should follow the recommended method of handling i18n files:
- find the filenames in the
%find_lang ${name}
- add the required build dependencies:
BuildRequires: gettext
- use the found filenames:
%files -f ${name}.lang
These prefixes are not valid in Fedora:
%license and
%files and Filesystem Hierarchy Standard (FHS)
You should follow the Filesystem Hierarchy Standard (FHS). Executables go in
/usr/bin, global configuration files go in
/etc, libraries go into
/usr/lib (or
/usr/lib64) and so on. There is one exception: executables that should not normally be executed directly by users or administrators should go in a subdirectory of
/usr/libexec, which is referred to as
Do not install files into
/opt or
Unfortunately, many programs do not follow the FHS by default. In particular, architecture-independent libraries get placed in
/usr/lib instead of
/usr/share. The former is for architecture-dependent libraries, while the latter is for architecture-independent libraries, which means that systems with different CPU architectures can share
/usr/share. There are many exceptions in Fedora (such as Python and Perl), but Fedora applies this rule more strictly than some distributions.
rpmlint will generally complain if you put anything other than ELF files into
%files example
Here's a simple example of a %files section:
%files %doc README LICENSE %{_bindir}/* %{_sbindir}/* %{_datadir}/%{name}/ %config(noreplace) %{_sysconfdir}/*.conf
Finding duplicates
You can list any duplicates of two binary packages by doing:
cd ~/rpmbuild/RPMS/ARCH # Substitute "ARCH" for your architecture rpm -qlp PACKAGE1.*.rpm | sort > ,1 rpm -qlp PACKAGE2.*.rpm | sort > ,2 comm -12 ,1 ,2
When an end-user installs the RPM, you may want some commands to be run. This can be achieved through scriptlets. See Packaging/ScriptletSnippets.
Scriptlets can be run:
- before (
%pre) or after (
%post) a package is installed
- before (
%preun) or after (
%postun) a package is uninstalled
- at the start (
%pretrans) or end (
%posttrans) of a transaction
For example, every binary RPM package that stores shared library files in any of the dynamic linker's default paths, must call
ldconfig in
%post and
%postun. If the package has multiple subpackages with libraries, each subpackage should also perform the same actions.
%post -p /sbin/ldconfig %postun -p /sbin/ldconfig
If only running a single command, then the "
-p" option runs the adjacent command without invoking the shell. However, for several commands, omit this option and include the shell commands beneath.
If you run any programs within the scriptlets, then you must specify any requirements in the form "
Requires(CONTEXT)" (e.g.
%preun, and
%postun provide the argument
$1, which is the number of packages of this name which will be left on the system when the action completes. Don't compare for equality with
2, but instead check if they are greater than or equal to
2. For
%pretrans and
$1 is always
For example, if the package installs an info manual, then the info manual index must be updated with
install-info from the
info package. Firstly, there is no guarantee that the
info package will be available unless we explicitly declare it as required, and secondly, we don't want to fail completely if
install-info fails:
Requires(post): info Requires(preun): info ... %post /sbin/install-info %{_infodir}/%{name}.info %{_infodir}/dir || : %preun if [ $1 = 0 ] ; then /sbin/install-info --delete %{_infodir}/%{name}.info %{_infodir}/dir || : fi
There is one other glitch related to installing info manuals. The
install-info command will update the info directory, so we should delete the useless empty directory from the %{buildroot} during the
%install section:
rm -f %{buildroot}%{_infodir}/dir
Another scriptlet-like abilility are "triggers", which can be run for your package when other packages are installed or uninstalled. See RPM Triggers.
Macros are text in the format
%{string}. Typical macros:
|Typical Expansion
|Binary directory: where executables are usually stored.
| Build directory: files are compiled within a subdirectory of the build directory. See
| Build root: where files are "installed" during the
%install stage, which copies files from a subdirectory of
%{_builddir} to a subdirectory of
%{buildroot}. (Historically,
%{buildroot} was in "/var/tmp/".)
| Build subdirectory: a subdirectory within
%{_builddir} where files are compiled during the
%build stage. It is set after
|Share directory.
|Default documentation directory.
| Distribution+version short name (e.g. "
| Number of fedora release (e.g. "
|Name of package, set by Name: tag
|Version of package, set by Version: tag
Learn more about macros by looking in
/etc/rpm/* and
/usr/lib/rpm, especially
/usr/lib/rpm/macros. Also use
rpm --showrc to show values that RPM will use for macros (altered by
rpmrc and macro configuration files).
You can set your own macro values using %global, but be sure to define them before you use them. (Macro definitions can also refer to other macros.) For example:
%global date 2012-02-08
Use the "
-E" option of
rpmbuild to find the value of a macro in a SPEC file:
rpmbuild -E '%{_bindir}' myfile.spec
Also see Packaging/RPMMacros and RPM Guide chapter 9.
In addition to Requires and BuildRequires tags, you can also use these for controlling dependencies:
- Provides: list virtual package names that this package provides. For example, there might be a package "
foo" that demands a particular functionality "bar" from another program. If there are several packages that can satisfy that demand, those packages can specify "
Provides: bar" and the "
foo" package can specify "
Requires: bar". You could also use the "alternatives" system, but avoid if multiple users on the same system might want different default, as these settings are system-wide. Use "
rpm -q --provides PACKAGENAME" to see what a given package provides. Some examples of virtual packages in Fedora:
- MTA: Used for mail transport agents, such as sendmail.
- tex(latex): Used for latex
- Obsoletes: remove another named package(s) when this package is installed. Use when the package name changes or when it totally replaces a different package.
- Conflicts: state what other packages cannot be installed simultaneously to this one. Avoid this if you can. See Packaging/Conflicts.
- BuildConflicts: state what packages cannot be installed when building this package. Avoid this if you can.
To manage different architectures, there are two tags:
- ExcludeArch: to exclude an architecture on which the package doesn't build. For example:
ExcludeArch: ppc
- ExclusiveArch: to include only the specified architecture. Avoid this unless absolutely correct.
Valid architectures are listed at Architectures.
A SPEC file can define several binary package. In other words, one SRPM with one SPEC file can result in several RPMS. Note that there is still only one creation (%prep, %build, %install etc.) process.
name-doc and
name-devel subpackages are common for documentation and development files respectively.
Use the
%package directive to start defining a subpackage:
%package subpackage_name
After each
%package directive, list the tags for the subpackage. This should at least include the Summary and Group tags, as well as the
%description subpackage_name and
%files subpackage_name directives:
Anything not specified by the subpackage will be inherited from its parent.
By default, if the package name is "
foo" and the subpackage name is "
bar", then the resulting subpackage will be "
foo-bar". You can override it with the "
-n" option (but you'll need to use it in all other directives too if you specify it here):
%package -n new_subpackage_name
See the RPM Guide section on subpackages for more information.
You can insert conditional statements, for example to test if you are creating a binary for a certain architecture:
%ifarch ARCHITECTURE_NAME
the negated version with:
%ifnarch ARCHITECTURE_NAME
or the more general conditional:
%if TRUE_OR_FALSE
There is an optional "
%else" section; all of these are closed with "
Application Specific Guidelines
There are many application-specific guidelines that can help you (e.g., for specific programming languages, applications, libraries, and build systems). Many of them are listed as part of the Application Specific Guidelines of Packaging/Guidelines. Examples of application-specific guidelines are those for:
Failing that, some other ways of finding application-specific help are:
- The 'SEARCH' command on Fedoraproject.org.
- PackagingDrafts
- A Special Interest Group (SIG)
- Wiki pages prefixed with 'Packaging'
Miscellaneous hints
Packaging/FrequentlyMadeMistakes has information on frequently-made mistakes. There are also some recommendations and controversial tricks on PackageMaintainers/Packaging Tricks.
Try to write your SPEC files so that it is likely to work when a new release is made upstream, without any changes aside from bumping the version number and refreshing the source files. For example, if it contains *.txt files with execute bits, instead of doing
chmod a-x Filename1.txt Filename2.txt Filename3.txt
consider doing this, which will handle new filenames that use the same file naming convention:
chmod a-x *.txt
If you want to see lots of examples of scriptlets, you can show all the scriptlets on installed programs using:
rpm -qa --queryformat "\n\nPACKAGE: %{name}\n" --scripts | less
Don't try to interact with the user; RPM is designed to support batch installs. If an application needs to show a EULA, that needs to be part of its initial execution, not its installation.
You might not want to start services, because in a big install that could slow things down. If you install an init or systemd script, consider using
chkconfig or
systemctl to arrange for the service to be started/stopped on the next reboot. Before uninstalling, you should normally try to stop its services if they are running.
Uninstalling should reverse most changes made during installation, but don't remove any user-created files.
Normally, if there are binary executables, then debugging symbols are stripped from the normal binary packages and placed into a
name-debug subpackage. If this shouldn't happen, you can disable the stripping and creation of this subpackage by putting this at the top of your SPEC:
%global _enable_debug_package 0 %global debug_package %{nil} %global __os_install_post /usr/lib/rpm/brp-compress %{nil}
To prevent stripping you may also need to do this in the
%install section:
export DONT_STRIP=1
A way to check for the version of Fedora in a SPEC file for conditional builds is:
%if 0%{?fedora} <= <version>
? causes the macro to evaluate to evaluate to blank if
%fedora is not defined. This causes the end result to be the
0 (which is a number and thus fine), while not interfering with the result if there is actually a value for
%fedora. (Note that this trick does not work in Koji "scratch" builds, where
%fedora is set during the creation of a SRPM.)
GUI programs must have a desktop entry so that people can invoke it from the graphical desktop menu. For
.desktop files, see Fedora packaging guidelines for desktop files and desktop entry spec. For icons within
/usr/share/icons, see icon theme spec.
Building the binary package
Test with rpmlint
To catch many common errors early, run
rpmlint on your SPEC file before trying to build anything from it:
$ rpmlint program.spec
If the reported error doesn't make sense, run it again with the "
-i" option for longer messages.
Aim to have no errors, but sometimes
rpmlint reports false positives. The Fedora packaging guidelines
explains which ones to ignore.
Create binary RPMS from the SPEC file
Once you've created your SPEC file, build the SRPM and binary RPMS by running this:
$ rpmbuild -ba program.spec
If successful, RPMS will be created within
~/rpmbuild/RPMS and SRPMS will be created within
If it fails, go to the appropriate directory and see what is left over. To help debug, you can skip earlier stages that succeeded with the "
--short-circuit option. For example, to restart at the
%install stage (skipping earlier stages), do this:
$ rpmbuild -bi --short-circuit program.spec
If you just want to create an SRPM (which does not run the
%prep or
%build or other stages), run this:
rpmbuild -bs program.spec
Testing binary RPMS with rpmlint
rpmlint can be run on SPEC files, RPMS and SRPMS to check for errors. You need to eliminate or justify warnings before posting a package. If you are in the SPECS directory, do this:
$ rpmlint NAME.spec ../RPMS/*/NAME*.rpm ../SRPMS/NAME*.rpm
Enter the
~/rpmbuild/RPMS directory and into the architecture subdirectory. You will find some binary RPMS. Quickly see their files and permissions (to check whether they are correct) by doing:
$ rpmls *.rpm
If they look fine, install them as root:
# rpm -ivp package1.rpm package2.rpm package3.rpm ...
Test the programs in a few different ways to see if everything works correctly. If it is a GUI tool, make sure it shows up in the desktop menu, otherwise the
.desktop entry is wrong.
Uninstall packages later by doing:
# rpm -e package1 package2 package3
Mock and Koji
Mock is a powerful tool that uses the SRPM you have created to build binary packages within a nearly empty environment. This can reveal if you have accurate build dependencies. If it fails, then you forgot to list something in BuildRequires. See Using Mock to test package builds. Once your account is a member of the "
mock" group, you can run commands like this to do local testing:
$ mock -r fedora-9-i386 rebuild path_to_source_RPM
You can use Koji (which uses
mock) to do builds on many different systems, some of which you may not have. PackageMaintainers/Join and PackageMaintainers/UsingKoji have more information about Koji. Once it's set up, you can test your SRPM on a variety of platforms by running commands like:
$ koji build --scratch dist-f9 path_to_source_RPM
dist-f9 with any later release of Fedora, but don't use
dist-rawhide. Remember, the values of
%fc9 and so on will not be correct for a scratch build, so this won't work if your SPEC file does something different based on those values.
Your Koji builds can only depend on packages that are actually in the TARGET distribution repository. Thus, you can't use Koji to build for released distributions if your package depends on other new packages that Bodhi hasn't released yet. If you need to build against a package that is not yet a stable released update, you can file a ticket with rel-eng at: https://fedorahosted.org/rel-eng/newticket and request that that package be added as a buildroot override.
Helpful tools
rpmdevtools package has a number of helpful tools; "
rpm -qil rpmdevtools" will show you what it installs.
rpmdev-bumpspec: bump the release tag in the spec file and add a changelog comment with the right date and version format:
rpmdev-bumpspec --comment=COMMENT --userstring=NAME+EMAIL_STRING SPECFILES
yum-utils package also has some useful tools:
yumdownloader: download the SRPM of the package by running:
yumdownloader --source PACKAGENAME
auto-buildrequires package has a pair of nice tools for helping to figure out the proper BuildRequires entries. After installing this package, replace "
rpmbuild" with "
auto-br-rpmbuild" and you'll see an automatically generated BuildRequires list.
You might find RUST useful (GPL), though it does not create SPEC files of suitable quality for Fedora packages. Alien converts between package formats. It won't produce clean SRPMS, but converting an existing package might provide helpful information.
Testing RPMs you've built (including rpmlint)
Run rpmlint on the .spec files, generated binary RPM, and generated source RPM. Rpmlint works on .spec files, binary RPMs, and source RPMs, finding different things in each. You need to eliminate or justify rpmlint warnings before posting a package. If you are in the SPECS directory, do this:
$ rpmlint NAME.spec ../RPMS/*/NAME*.rpm ../SRPMS/NAME*.rpm
Normally rpmbuild will build a binary RPM with debugging information - this will handle that.
If you "cd" to the "~/rpmbuild/RPMS" directory, and then cd to the architecture subdirectory, you'll find some binary rpms. You can quickly see their files and their permissions by using rpmls (check to see that they are what you expect):
$ rpmls *.rpm
If those look okay, you can become root and try to install them:
# rpm -ivp XYZ1.rpm XYZ2.rpm XYZ3.rpm ...
Then, you can test them out. Use it a few different ways and see if it works correctly. If it's a GUI tool, make sure it shows up in the menu (if it doesn't, something is wrong with your .desktop entry).
You can uninstall packages later using:
# rpm -e XYZ1 XYZ2 XYZ3
If that works, you can use Mock to do a more rigorous test that you have accurate build dependencies. Basically, mock will create a nearly-empty environment and try to rebuild the package; if it fails, then you forgot to list something in a "BuildRequires:" statement. See Using Mock to test package builds for more information about how to use Mock; once your account is a member of the "mock" group, you can run commands like this to do local testing:
$ mock -r fedora-9-i386 rebuild path_to_source_RPM
If a mock build fails, or the resulting program doesn't work correctly, then you almost certainly have one or more missing BuildRequires packages.
Once Mock works on your system, you can use Koji (which uses Mock) to do builds on many different systems, some of which you may not have. PackageMaintainers/Join and PackageMaintainers/UsingKoji have more information about Koji. Once it's set up, you can test your source RPM on a variety of platforms by running commands like:
$ koji build --scratch dist-f9 path_to_source_RPM
You can replace dist-f9 with dist-f8, dist-f10, etc., to try other releases. Don't use "dist-rawhide", that's not really rawhide. Remember, the values of %fedora, %fc9, etc., will not be correct for a scratch build, so this won't work if your spec file does something different based on those values.
Your koji builds can only depend on packages that are actually in the TARGET distribution repository. Thus, you can't use koji to build for released distributions if your package depends on other new packages that Bodhi hasn't released yet. You can use koji to build for rawhide (the next unreleased version), even if it depends on other new packages, as long as the other packages were built in the CVS "devel" section as described below. If you need to build against a package that is not yet a stable released update, you can file a ticket with rel-eng at: https://fedorahosted.org/rel-eng/newticket and request that that package be added as a buildroot override.
Helpful tools
The "rpmdevtools" package has a number of helpful tools; "rpm -qil rpmdevtools" will show you what it installs. One particularly useful tool is rpmdev-bumpspec, which has this form:
rpmdev-bumpspec --comment=COMMENT --userstring=NAME+EMAIL_STRING SPECFILES
rpmdev-bumpspec will bump the release tag in the spec file(s), and add a changelog comment with the right datetime and version format. COMMENT should typically start with "- ".
Similarly, "yum-utils" has a number of yum-specific tools. "yumdownloader" is especially helpful; you can download the source RPM of a package by simply running "yumdownloader --source PACKAGENAME". You can then use "rpm -U SOURCEPACKAGENAME" to install the source files. E.G., "yumdownloader --source glib; rpm -Uvh glib*.src.rpm".
The auto-buildrequires package has a pair of nice tools for helping to figure out the proper BuildRequires entries. After installing this package, replace "rpmbuild" with "auto-br-rpmbuild" and you'll see an automatically-generated buildrequires list.
You might find RUST useful (GPL). It is "a drag & drop RPM creation GUI and a 'sandboxing' toolkit that allows you to do software installations within a chrooted environment and automatically generate RPMs from arbitrary source code, without ever seeing a spec file." If you're creating spec files, it can help you determine the %files. Note, however, that it does not create .spec files, nor does it create packages of adequate quality for the Fedora repository; it is primarily a tool for making quick-and-dirty binary RPM packages. (Note: it is no longer at "rusthq.com".)
Alien converts between package formats. It won't produce clean source RPMs, but converting an existing package might provide helpful information.
- 如何成为 Fedora 软件包仓库维护人员 - 描述成为 packager 的流程。
- 打包规定
- 软件包命名规定
- 软件包许可协议规定
- Dist 标签使用指南
- 软件包审核规定
这里也有许多针对特殊环境打包的规定(Java 程序,OCaml 程序,GNOME 程序等等);您也可以从 SIGs 获取许多有价值的帮助。软件包维护人员 分类是所有部分的总结页面。
除了这些,还有许多非官方的指南帮助,比如 打包规定草稿,今后需要制定的打包规定。
还有其它地方也可供参考,比如 SuSE 的打包规定, Debian 的打包规定,但是 每个发行版都有不一样的地方,所以不要直接生搬硬套。
请注意所有 spec 文件必须是有关开源的软件,就像FPCA 声明所描述的一样。
一旦您的软件包被批准放入官方软件源,您需要维护或者协助维护它。 请见 Package update HOWTO 和 Package update guidelines 以便了解更多。 如果您为多个不同的 Fedora 版本维护软件包,有空一定要为之前的 Fedora 版本也制作一个。
Encourage the upstream developers to use standard source code release conventions. Using standard conventions makes packaging much easier. For more information, see:
- Releasing Free/Libre/Open Source Software (FLOSS) for Source Installation (a quick summary)
- GNU Coding Standards release process
- Software Release Practice HOWTO
- Filesystem Hierarchy Standard (FHS)
- Packaging Unix software
软件包维护人员 页面加入了许多有用页面的链接,您不妨去看看。如何升级您维护的软件包 页面描述了如何升级您维护的在 Fedora 源里面的软件包。
- 如何在 Fedora 系统中制作RPM包——很简单的贯通介绍
- 使用 RPM 为软件打包(developerWorks): 第一章, 第二章, and 第三章
- Fedora Classroom had a IRC session on packaging and you can refer to the logs at https://fedoraproject.org/wiki/Building_RPM_packages_%2820090405%29
- Fedora 打包者手册
- 当 Sally 遇见 Eddie------一个较详细的 RPM 故事
- Maximum RPM Book——一个内容虽然最丰富,可惜早已过时的 RPM 教程 (由 Red Hat 公司撰写)
- Developer's guide, section on building RPMs
- Creating RPMS slides from Guru Labs
- The fight, my first attempt to make a readable rpm package building introduction.
- RPM Tutorial (Fullhart)
- Cambridge RPM tutorial is a presentation on creating basic RPMs
- 由 Donnie Barnes 撰写的 RPM 指南
- 由 DawsonRPM 撰写的 RPM 指南
- SuSE 构建向导SuSE 系统的 RPM 打包教程,不是针对 Fedora 的但是可以参考;Cross-distribution package HOWTO 倒是有很多针对不同发行版制作 RPM 包的指导。
- Mandriva RPM 指南 (alt) Mandriva 系统的 RPM 打包指南。注意: 在 Fedora 中, 万万不可重新压缩软件源代码,正如 Mandriva 官方提示,这样会导致软件无法完成自身校验。
- Creating Your Own Linux RPM's - The Initial Software Build is another brief intro, but it makes the point that "The process of building RPM's is much simpler than creating packages for Solaris... Fewer steps, and the ability to add all of your software information into one specification file, makes for a much tighter (and easier to modify or reproduce) software packaging system."
- All you need to know about RPM (more about installing packages than creating them)
- rpm.org的维基页面 也含有大量对您有用的信息,比如 已知的一些有关 RPM 机制的问题。
注意: rpm5.org 也有一些文档,但是请不要过度依赖这个网站的内容。这个网站是由 Jeff Johnson 维护的一个 RPM 5.x 版本的网站。事实上RPM 5.x 版本并不适用于 Fedora 系统!和 Novell/SuSE 系统一样,Fedora 采用的 RPM 安装器基于 rpm.org 维护的版本。 在 lwn.net 有一个关于这两者的简短区别介绍。


text:
FedEx Freight Advance Notice®
Sign up now so you'll know when to expect the unexpected.
Sometimes things just happen. That's why we offer FedEx Freight Advance Notice*. It's a free web-based service that notifies you immediately on the rare occasion when a FedEx Freight Priority® shipment is off schedule, allowing you to make the necessary adjustments to keep your business up to speed and give you a competitive advantage
With FedEx Freight Advance Notice you can:
- Receive account- or shipment-level updates for your FedEx Freight Priority Canada, U.S., and Mexico shipments.
- Learn the reason for the delay and receive a revised estimated delivery date when available.
- Better manage inventory replenishment, resources and labor.
How to sign up:
- Click on the button below to go to the log in page.
- If you are a current My Account user, enter your user ID and password.
- If you are not a current FedEx Freight® My Account user, register today.
- Then, simply sign up for FedEx Freight Advance Notice.
To learn more contact your account executive today or call FedEx Freight Customer Service at 1.800.GoFedEx
*All services are subject to the terms and conditions of the FXF 100 Series Rules Tariff.

subset: commoncrawl


text:
"The trucking industry is experiencing the highest prolonged fuel prices in history." -Bill Graves, president and CEO, American Trucking Associations
It's been a grim first quarter for 2008, to say the least, as we wait for publicly traded trucking companies to start releasing their earnings reports so we can see what tales the numbers tell.
The indications are it could be a rocky first quarter for most. United Parcel Service, for example, indicated that it lowered its first quarter earnings expectations to around 86 or 87 cents per diluted share from a previously anticipated range of 94 to 98 cents a share.
(Fuel prices and low package volume are hurting UPS.)
At UPS's investor conference on March 12, Kurt Kuehn, the company's chief financial officer, said high fuel prices and lower volume trends experienced in February through March are the chief culprits. "The U.S. economy has continued to weaken, causing a reduction in domestic package volume and a shift away from premium products," he said. "Significantly increased fuel costs in the quarter also contributed to the lower-than-expected results."
"Significantly increased fuel prices," by the way, is the polite way of saying we are in the sort of record-setting territory no one ever wants to be in. According to the Oil Price Information Service (OPIS), retail and wholesale fuel prices shattered all previous records last month, and products used in the transportation sector began April with numbers up as much as 238% from five years ago.
(Fuel has long been ultra-pricey for truckers.)
The wallet-killing fallout from OPIS' Transportation Fuel Index (TFI) includes some traumatic statistics:
· Americans spent about $247.7-million more each day on gasoline in March 2008 than they did in March 2007 - and OPIS estimates that the increase from five years ago is now $626-million per diem.
· Wholesale diesel prices ended March at an all time high of $3.288 a gallon, with the average retail diesel price at $4.019 per gallon. The largest increases - nearly 50 cents per gallon - occurred in northeastern states, but every region saw price advances of at least 41.8 cents per gallon.
· The average nationwide price for wholesale jet fuel in March 2008 was $3.172 per gallon, up 42.4 cents a gallon from February 2008 and up an incredible $2.235 a gallon from March 2003 - an increase of 238.7%. (Is it any wonder Aloha and ATA Airlines disappeared in the blink of an eye?)
Regional retail gasoline increases on a month-to-month basis ranged from 13.6% in New England to 26.4% in western states. Wholesale gasoline prices were up some 33.1% in the month, suggesting that the up-trend in pump prices will persist into early April.
The longer term view produces some eye-opening comparisons, according to OPIS: wholesale gasoline prices are up $1.691 gallon from March 2003; and wholesale diesel prices have advanced by well over $2.00 a gallon in every region in the country.
(Truckers large and small alike are feeling the pain at the pump.)
"For some motor carriers, however, fuel is beginning to surpass labor as their largest expense," said Bill Graves, president and CEO of industry trade group American trucking Associations late last month. "This ultimately will increase the cost of everything delivered by truck."
The ATA wants the federal government to help bring down the price of diesel fuel in a number of ways, including:
· Release oil from the Strategic Petroleum Reserve
· Establish a national diesel fuel standard
· Allow environmentally responsible exploration of oil-rich areas in the U.S. that are now off-limits
· Require speed limiters set for 68 mph or lower on all new trucks
· Set a national maximum speed limit of 65 mph
· Suspend the collection of the 12% federal excise tax on motor carriers' purchase of auxiliary power units (APUs), which cut the consumption of fuels in idling truck engines
· Require states to grant a weight exemption for APUs
"The signs are troubling. We are concerned about fuel's direct impact on our industry and also its effects on the nation's economy," said Graves. "The industry is doing its part to conserve fuel, but we need help."
(Sadly, we may see a lot more of these unfortunate signs before the year is out.)
He noted that the trucking industry is on pace to spend $135 billion on diesel fuel this year, $22 billion more than in 2007 and up $83 billion in annual expenditures compared to 2003.
Those are some pretty grim numbers indeed. Now we must wait and see how they've impacted trucking's bottom line over the course of the first quarter.


text:
Michael Haneke drags "Schindler's List", "Downfall"
THR: OK, if you were going to show Osama bin Laden, to what extent do you humanize a guy like that? There was a very good German film, Downfall, about the last days of Hitler, and it was an extraordinary human portrait. The danger is whitewashing what he's done.
Michael Haneke: I have to say that I argued with Downfall writer-producer Bernd Eichinger about the film. I found it both repulsive and dumb. When you're dealing with a figure of such a deep historical context, what are you doing with him? You're creating melodrama. You're trying to move your spectators, but what emotions are you calling on? Your responsibility entails enabling your audience to remain independent and free of manipulation. The question is, how seriously do I take my viewer and to what extent do I provide him with the opportunity of creating his own opinion? Am I trying to force my opinion on the spectator?
THR: Would you make a film about Hitler?
Haneke: No. It's impossible for me, turning this into entertainment. That's why I have problems with Steven Spielberg's film about the concentration camps [Schindler's List]. The mere idea of trying to create suspense out of the question of whether the showerhead gas is going to come is unspeakable. For me, the only film about the Holocaust that is responsible is Alain Resnais' Night and Fog. Resnais asks the spectator: What do you think about this? What does this mean to you?
Chris Terrio: I'm very interested in what Michael said about the suspense of the shower in Schindler's List because in a sense it's the same in Argo. I'm not sure about the ethical implications of taking real people's lives and trying to make it a nail-biter.
You can also watch the (NSFW) scene mentioned from "Schindler's List", followed by "Night and Fog", in full, below:
THR, The PLaylist


text:
New domestic and international posters for Bryan Singer's Jack the Giant Slayer have come online and can be viewed below. Opening in 3D, 2D and IMAX 3D on March 1, the action adventure stars Nicholas Hoult, Eleanor Tomlinson, Stanley Tucci, Ian McShane, Bill Nighy and Ewan McGregor.
Jack the Giant Slayer tells the story of an ancient war that is reignited when a young farmhand unwittingly opens a gateway between our world and a fearsome race of giants. Unleashed on the Earth for the first time in centuries, the giants strive to reclaim the land they once lost, forcing the young man, Jack, into the battle of his life to stop them. Fighting for a kingdom, its people, and the love of a brave princess, he comes face to face with the unstoppable warriors he thought only existed in legendand gets the chance to become a legend himself.


text:
128 new Presets for the Creamware Pro-12 ASB synthesizer. Poly Synths, Lead and Bass, Pads, Percussives and Special Sound Effects. A perfect addition for all music producers who are looking for the really useful sounds. Created by Klaus P. Rausch considering the SCI Prophet 5 strength as well as the new features provided by the Pro-12 ASB. Available as Preset bank file for the Pro-12 sound management software. An orginal SCI Prophet 5 owner´s manual PDF with many additional graphical Patch charts and user tipps is included.
Audio Track demo clip, click here:
Purchase directly from the developer
Copyright Klaus P. Rausch -Back In Time Records- Sound Research & Development. All rights reserved.
All prices incl. tax (MwSt.)
Shopsystem u. Shopsoftware von store-systems.de


text: News from Mayo Clinic Print 2019Mayo Clinic Minute: How the immune system can make getting an organ transplant trickier Jan. 31, 2019, 08:00 a.m. CDT2018Infographic: Transplant 101 Nov. 07, 2018, 03:30 p.m. CDTLiver transplant, weight-loss surgery combination benefits obese patients in long term Oct. 02, 2018, 05:00 p.m. CDTResearch to address the shortage of donor livers: Mayo Clinic Radio Health Minute Sept. 11, 2018, 05:35 p.m. CDTInfographic: Liver transplant saves lives June 13, 2018, 02:00 p.m. CDTTransplanted livers help body defend against organ rejection, Mayo Clinic study finds April 18, 2018, 04:00 p.m. CDT2017Infographic: One liver, two lives Sept. 20, 2017, 10:00 p.m. CDT Request an Appointment at Mayo Clinic Costs & insuranceVolumes and outcomes Jan. 17, 2018 Share on: FacebookTwitter References Scientific Registry of Transplant Recipients. http://www.srtr.org/default.aspx. April 11, 2016. U.S. News & World Report. U.S. News Best Hospitals 2015-16. http://health.usnews.com/best-hospitals/rankings. Accessed Feb. 22, 2016. Barbara Woodward Lips Patient Education Center. Liver transplant. Rochester, Minn.: Mayo Foundation for Medical Education and Research; 2013. Eggebraaten KR (expert opinion). Mayo Clinic, Rochester, Minn. May 23, 2016. Barbara DW, et al. The perioperative management of patients undergoing combined heart-liver transplantation. Transplantation. 2015;99:139. Bulatao IG, et al. Avoiding stay in the intensive care unit after liver transplantation: A score to assign location of care. American Journal of Transplantation. 2014;14:2088. Heimbach JK (expert opinion). Mayo Clinic, Rochester, Minn. June 28, 2016. Stulak JM, et al. Combined heart and abdominal organ transplantation: Excellent outcomes gained from a unique experience. Journal of Heart and Lung Transplantation. 2014;33:S278. Ibrahim SH (expert opinion). Mayo Clinic, Rochester, Minn. June 14, 2016. Glorioso JM, et al. Pivotal preclinical trial of the spheroid reservoir bioartificial liver. Journal of Hepatology. 2015;63:388. Heimbach JK, et al. Combined liver transplantation and gastric sleeve resection for patients with medically complicated obesity and end-stage liver disease. American Journal of Transplantation. 2013;13:363. Murad SD, et al. Long-term clinical and radiological follow up of living liver donors. Liver Transplantation. In press. Accessed May 11, 2016. Murad SD, et al. Predictors of pretransplant dropout and posttransplant recurrence in patients with perihilar cholangiocarcinoma. Hepatology. 2012;56:973. Barbara Woodward Lips Patient Education Center. About your child's liver transplant. Rochester, Minn.: Mayo Foundation for Medical Education and Research; 2009. Rizvi S, et al. Primary sclerosing cholangitis as a premalignant biliary tract disease: Surveillance and management. Clinical Gastroenterology and Hepatology. 2015;13:2152. Taner T, et al. Decreased chronic cellular and antibody-mediated injury in the kidney following simultaneous liver-kidney transplantation. Kidney International. 2016;89:909. Watt KD, et al. A practical guide to the management of HCV infection following liver transplantation. American Journal of Transplantation. 2009;9:1707. Rosen CB, et al. Liver transplantation for cholangiocarcinoma. Transplant International. 2010;23:692. Raichlin E, et al. Combined heart and liver transplantation: A single-center experience. Transplantation. 2009;88:219. Nagourney E. 'Domino' transplants: Rare and risky. The New York Times. http://www.nytimes.com/2000/05/02/health/domino-transplants-rare-and-risky.html. Accessed May 12, 2016. Kitchens WH. Domino liver transplantation: Indications, techniques, and outcomes. Transplantation Reviews. 2011;25:167. Yu Y, et al. Cell therapies for liver diseases. Liver Transplantation. 2012;18:9. Croome KP, et al. The use of donation after cardiac death allografts does not increase recurrence of hepatocellular carcinoma. American Journal of Transplantation. 2015;15:2704. De Assuncao TM, et al. Development and characterization of human-induced pluripotent stem cell-derived cholangiocytes. Laboratory Investigation. 2015;95:684. Riggin EA. Allscripts EPSi. Mayo Clinic, Rochester, Minn. Feb. 15, 2016. Brown AY. Allscripts EPSi. Mayo Clinic, Rochester, Minn. March 22, 2016. Cook AJ. Allscripts EPSi. Mayo Clinic, Rochester, Minn. May 2, 2014. Krowka MJ, et al. International Liver Transplant Society practice guidelines: Diagnosis and management of hepatopulmonary syndrome and portopulmonary hypertension. Transplantation. 2016;100:1440. Patel K, et al. FibroSURE and FibroScan in relation to treatment response in chronic hepatitis C virus. World Journal of Gastroenterology. 2011;17:4581. Singh S, et al. Magnetic resonance elastography for staging liver fibrosis in non-alcoholic fatty liver disease: A diagnostic accuracy systematic review and individual participant data pooled analysis. European Radiology. 2016;26:1431. Han L, et al. Extracorporeal liver support and liver transplant for patients with acute-on-chronic liver failure. Seminars in Liver Disease. 2016;36:153. https://www.thieme-connect.de/products/ejournals/html/10.1055/s-0036-1583197. Accessed June 29, 2016. Gallagher C. Transplant genomics enters collaboration with Mayo Clinic (news release). Mayo Clinic, Rochester, Minn. June 27, 2016. Heilman RL (expert opinion). Mayo Clinic, Phoenix/Scottsdale, Ariz. June 24, 2016. Mayo Clinic in Rochester, Minn., has been recognized as the best Gastroenterology & GI Surgery hospital in the nation for 2018-2019 by U.S. News & World Report. Learn more about this top honor SectionsRequest an appointmentOverviewConditions treatedDoctorsDoctors by location and specialtyExpertise & rankingsLocations, travel & lodgingClinical trialsResearchThe Mayo Clinic experience & patient storiesCosts & insuranceNews from Mayo ClinicVolumes and outcomesEligibilityResources for physicians ORG-20193491 Departments & Centers Medical Departments & Centers Liver Transplant Program


text:
Faith in the Future Classic TV Show
The sequel to the hit comedy Second Thoughts. Faith and Bill have split up, both children have left home and even the dog has been off-loaded. Faith is footloose and fancy free, that is until daughter Hannah decides to move back in.
Faith in the Future Fan Tributes8 Suzanne from Texas: I LOVED this show! I loved Jools and each character! I was lucky enough to buy the entire show's seasons on dvd from raretv.com when they were up and running. I watch them again and again. If I find them available again I will post. Theme song is "The World is What You Make It" by Paul Brady...
7 Sheryl from Colorado, USA: I loved it when Hannah laced Faith's cereal with hormones! This is a fantastic show. Why can't we get it on DVD?
6 lynda maine from edinburgh scotland: I could never follow Faith in the Future. They have never mentioned her son. The dog has just disappeared. I did not like the follow up series. I think that they should have dropped the whole idea of a new of a follow up series.
5 alan fairclough from doncaster: I would like to know what the theme tune is called and if I could purchase it it says on the credits the music is by paul grady but I cannot get any more info.
4 Ronnie from Liverpool: To Christopher Dunkerley of Stockport: the theme from Faith in The Future is sung by Paul Brady and is called The World is What You Make it
3 CHRISTOPHER DUNKERLEY from STOCKPORT: could you please tell me who sings the music for Faith in the future
2 freddie from elgin: no particuler episode they were all great i loved julia swahila she was so kool linda bellingham was excelllant as faith but jool,s undying love for julias character & his endless clumsiness made me laugh bring it back please
1 Dot Bechard from Vermont, USA: This is such a great show. Very realistic, very witty and funny. Great actors, great writing. I watched it on PBS and was bitterly disappointed when it ended. If I had to choose a favorite episode, I think it would be when Jools moved in with Paul.
Faith in the Future
Genre: Sitcom
Year: 1995-96
Lynda Bellingham as Faith Grayshot
Julia Sawalha as Hannah
Jeff Rawle as Paul
Charlie Creed-Miles as Jules (series one)
Simon Pegg as Jules (series two)
Robert Swann as Gareth
Julia Sawalha won a RTS Television Award in 1994 for Press Gang.
If you know of a web site for Faith in the Future, or run a fan site, tell us about it here.
Click here for more Faith in the Future Memorabilia at Amazon.
NEWSLETTER Sign up to receive our monthly newsletter filled with the latest classic television news. Sign up here.


text:
For our list of 106 Jerseyans with the most juice, we went to the experts — The Star-Ledger reporters and Inside Jersey writers who cover and best know the state's movers and power brokers.
We have divided the list into an array of categories that touch on all facets of Jersey life — from politics to literature to technology and celebrity — profiling the most influential Jerseyans in each area. The lists will be released all week. It's a select group that we call the 100+ Club.
The schedule is as follows: On Monday, State Politics/Local Politics and Labor/Activism; On Tuesday, Law/Philanthropy and Business/Real Estate; On Wednesday, Technology/Health Care and Literature/Power Couples; On Thursday, Sports/Education and Arts/ Science; On Friday, Entertainment/Music and Food/Celebrity.
Read them each day and don't forget to take our informal polls at the end of each post.


text:
There's never been a better time
to apply to Otterbein University.
Apply online today!
In Case of Emergency
Dial 9-1-1
Call (24 hours)
p/ (614) 823-1222
e/ email@example.com
f/ (614) 823-1999
194 West Main St.
Westerville, OH 43081
Office Hours
Mon.-Fri. 8:30 a.m.-5:00 p.m.
Otterbein University, 1 South Grove Street, Westerville, OH 43081 614.890.3000
Otterbein University is a private, non-profit, United Methodist affiliated, regionally-accredited institution.
© 2019 Otterbein University. Otterbein University is an affirmative-action, equal-opportunity employer


text:
Anyone who drives a Jeep Cherokee is used to a little noise. Years of on and off road abuse tends to loosen things up a bit. But the loose dash pad, sagging door hinges, and vibrating interior trim in your beater Cherokee probably aren't as harmonized as the ones on Julian Smith's. This enterprising young saxophonist and few friends managed to turn his aging ride into a beat machine.
[media id=2]


text:
We've spent all day today poring over iPads, and we've decided that the best choice for most folks is the 32GB Verizon LTE. Here's why:
While 32GB won't be right for everyone, it's a nice balance of enough space for some movies, music, and giant retina apps without being unnecessarily massive (and expensive). As for Verizon LTE, the logic goes that 4G is probably the most game-changing new feature. I know, I know, you thought it was the retina display. We did too, until we saw it in person—it's definitely better, but it's not, er, resolutionary.
As for why Verizon, it's the faster of the two networks, as shown yet again by our speed test. Plus, Red's giving out free tethering with any data plan.


text:
If Fairview Church of Clay County, Tennessee is your church, tell us more! Click here and email a detailed description of all the great things your church has to offer and we'll include it here.
Written by: Tennessee Church Directory Author
- Bullards Gap Church Directory
- Celina Church Directory
- Clementsville Church Directory
- Maple Grove Church Directory
- New Hope Church Directory
- Union Hill Church Directory
- Whitleyville Church Directory
- Arcot Church of Christ
- Ashburns Creek Church of Christ (historical)
- Beech Bethany Church
- Brimstone Church
- Butlers Landing Church of Christ
- Cave Springs Church
- Dry Fork Church (historical)
- Fox Springs Church of Christ (historical)
- Free Hills Church of Christ
- Indian Graves Baptist Church (historical)
- Macedonia Church
- Mill Creek Chapel (historical)
- Neely Crossroads Church of Christ
- New Hope Church
- New Salem Church (historical)
- Oak Grove Baptist Church (historical)
- Oak Grove Church of Christ
- Pine Branch Church
- Pleasant Grove Church of Christ (historical)
- Pleasant Hill Church
- Poor Branch Church of Christ (historical)
- Rock Springs Church
- Saint Johns Church (historical)
- Shanky Branch Church of God


text:
Hotel Meeting Rooms use in the Evenings
Most of our hotels are happy for groups to make use of their facilities for evening catch-ups or quizzes.
Sorrento Bowling
The Sorrento bowling alley is within easy walking distance from the centre and provides a good option to entertain your group.
The Sorrento Musical 'Tarentella' Show
The Sorrento Musical takes its cue from the "Tarantella", a typical dance of the southern regions. This is a popular show with tourists which takes you through Sorrento's history.
Please contact our expert team at FHT today for prices and full details of this trip.
Call us to find out more about Sorrento/Bay of Naples trips on:
01279 658221
Or email us
One of our expert guides can accompany you when you visit the Geographical sites. The guides are highly experienced and know the sites extremely well. We recommended their services for Pompeii, Herculaneum, the Phlegraean Fields and Capri. Half and Full day options are available. A site guide is automatically included when visiting Vesuvius.
Please contact our expert team at FHT travel for prices and full details about ou read more ...
Less well known and smaller than Pompeii but better preserved due to the way it was impacted by the Vesuvius eruption of 79AD. Less falling ash and rather increasing levels of superheated pyroclastic material filled the town, meaning less damage to the buildings from above. Consequently the detail on display in this wealthier town is of an excellent standard. The discovery in recent years of some 300 skeletons along the s read more ...
A visit to this famous volcano is not to be missed! The mountain itself was once 3000m high rather than the 1281m of today. Its violent outburst in AD 79 not only drowned Pompeii in pumice and pushed the coastline back several kilometres but also destroyed much of the mountain top, creating a huge caldera and two new peaks.
Your coach will take you over 1000m up before meeting your guide for a 30-minute walk to the crater rim where t read more ...
A visit to Pompeii allows students to see, hear and learn about the famous eruption in 79AD which buried, and consequently preserved this famous town. Exploring the site and free map, enables students to consider the town planning of the site and see some of the Roman Architecture and frescos still visible. Wander the original streets with their shops and houses, visit the amphitheatre and the forum area and examine the preserved human c read more ...
Take a ferry or Hydrofoil from the easily reached port of Sorrento to this beautiful island. On arrival we highly recommend Geography groups take a laser boat ride (1 hr) on a lap of the island to see up close the dramatic coastal features such as the Natural Arch and the Faraglione landforms. After a quick exploration of the port area, you can take the funicular up to Capri take a stroll down Via Camerelle, the street famous for it read more ...
The Amalfi Coast is a UNESCO World Heritage site, and once you have driven along the idyllic winds of the cliffs, through picture postcard scenery its easy to see why. You'll have photo stops en route as well as a couple of hours to explore Amalfi.
Once at the end of the route there are options for your groups including continuing on to visit the famous Vanullo Mozzerlla Buffalo farm, or perhaps the Petrosa Caves. The tow read more ...
Making pasta in Gragnano is an ancient form of art that involves history, culture, patience, secrets and traditions. Students can see the production process during a 30 minute guided tour of the factory before receiving a small reminder of their visit.
Please contact our expert team at FHT today for prices and full details of this visit that can form part of your next educational study trip to Italy.
Meet the owners of this family farm, hear about the farms history and enjoy a fascinating demonstration of how both mozzarella and ricotta are made, before tasting sample of the two. You can also extend your stay and enjoy home-made pizzas from the wood-burning oven. This is a great extra little trip that will give your students an insight to Italian hospitality and way of life.
Please contact our expert team at FHT today for prices read more ...
Hotel Meeting Rooms use in the Evenings
Most of our hotels are happy for groups to make use of their facilities for evening catch-ups or quizzes.
Sorrento Bowling
The Sorrento bowling alley is within easy walking distance from the centre and provides a good option to entertain your group.
The Sorrento Musical 'Tarentella' Show
The Sorrento Musical takes its cue from the "Tarantella", a typical dance read more ...
Sorrento Lemon Farm Visit
Enjoy a 45 minutes walk-through this beautiful garden that has been around for several generations. Benches line the paths so that visitors can relax among the trees. It's very peaceful inside.
The grove owners grow orange trees, too. At the end of the walk is a store that sells various home made goods.
Mozzarella Farm Visit in Sorrento
Meet the owners of this family farm, hear about t read more ...
We have carefully selected our accommodation in the Bay of Naples. Sorrento is very popular with groups and we have central hotels as well as nearby coastal options within easy reach for those wanting to stay in a quieter area. We highly recommend groups stay on a Half Board basis.
3* Superior central Sorrento
3* Standard central Sorrento
3* in Coastal Towns within easy reach of Sorrento
For more information regarding read more ...
Tour Day 1
Flight to Naples.
Transfer to your accommodation for check in.
Evening meal and free time for local orientation.
Tour Day 2
Full Day
A ful read more ...
Your Name:
Your Subject:
Establishment Name:
Telephone No:
Email Adress:
Preferred Travel Dates:
Student Numbers:
Staff Numbers:
Course Level:
--Select Course Level--
6th Form
Further Education
Higher Education
Where did you hear about FHT?
Where did you hear about us?*
Brochure Received
Email Received
Web Search
Word of Mouth
Previous Customer
Additional trip information
We'd like to keep you informed by email about our future offers, products and useful information in educational travel. Please tick this box to let us know that you are happy for us to do this. We may also pass your information on to other companies in our travel group, Anglia Tours and WST.
You may choose to unsubscribe at any time by contacting us directly on email@example.com or selecting unsubscribe in our marketing material.
view full story »
Fantastic service, just what I needed when making decisions on the tour and costs. Provision of excellent advise and willing to adapt to changing student numbers.
-- Sidmouth College, Barcelona, November 2017
See all
E: firstname.lastname@example.com
Educational trips for student groups
Sixth Form and College Trips
University Trips
Student Group Trips & Study Tours
Study Trips & Group Study Tours
Booking Conditions
Cookie Policy
Privacy Policy
A bespoke website by Prominent Media


text:
Charles Conti Skater Profile
Sponsors: OutLook Skateboards, Burley Wheels, Burley Bearings
Hometown: Longwood FL, Stance: ?, Age: , Status: Pro
Last Update: Wednesday, March 18, 2009 Submit an Update
No mugshot history found for Charles Conti
Charles Conti Comments
Other Skater Links
- Full Skater Database - 6000+ skater profiles.
- Skateboarders on Instagram - browse your favorite pros and ams on Instagram.
- Skate News and Videos - daily skate news and videos from around the web.
- Media Coverage - we log all major magazine coverage by skater and photographer.
- Skate Photographers - we log all major magazine coverage by skater and photographer.
- Contest Results - over a decade's worth of contest history.


text:
Jump to content
* Required Information
Between 3 and 26 characters
Between 3 and 32 characters
Send me news and information
I've read and agree to the Terms of Use
Community Terms & Rules
Please take a moment to review these rules detailed below. If you agree with them and wish to proceed with the registration, simply click the "Register" button below. To cancel this registration, simply hit the 'back' button on your browser.
Please remember that we are not responsible for any messages posted. We do not vouch for or warrant the accuracy, completeness or usefulness of any message, and are not responsible for the contents of any message.
The messages express the views of the author of the message, not necessarily the views of this bulletin board. Any user who feels that a posted message is objectionable is encouraged to contact us immediately by email. We have the ability to remove objectionable messages and we will make every effort to do so, within a reasonable time frame, if we determine that removal is necessary.
You agree, through your use of this service, that you will not use this bulletin board to post any material which is knowingly false and/or defamatory, inaccurate, abusive, vulgar, hateful, harassing, obscene, profane, sexually oriented, threatening, invasive of a person's privacy, or otherwise violative of any law.
You agree not to post any copyrighted material unless the copyright is owned by you or by this bulletin board (including photos).
You agree to abide by the community guidelines.
You agree that you are solely responsible for any personal information you choose to post in your profile, on the message boards, or in personal messages. You understand that there are personal privacy and security risks you take by posting personal information in this community and agree not hold BabyNameGenie.com, its owners or associates responsible for any damages resulting from posting personal information.
We require community members to be 13 years of age or older. You agree that you meet this requirement.
Community Forum Software by IP.BoardLicensed to: BabyNameGenie.com


text:
A Story of the Alabama Farmers Federation
Created by farmers, led by farmers and dedicated to serving farmers, the Alabama Farmers Federation promotes the economic, social and educational interests of Alabamians.
A Story of Heritage
Alabama's rich farming history is more than just soil, plants and animals. The farmers who earn their living from the earth have carved a big part of that history, and when the Alabama Farmers Federation was formed in 1921, it became the unified voice of those men and women.
Federation leaders founded Alfa Insurance in 1946 to provide fire protection for rural residents. Alfa has grown into a top-rated insurance company with over a million policies in force.
With just 75,000 members in 1960, the Alabama Farmers Federation has grown to become the state's largest farm organization and with more than 360,000 members. The Federation's "one voice" delivers a powerful message, at the Statehouse in Montgomery and on Capitol Hill in Washington.
A Story of Unity
Alabama Farmers Federation members are organized through 67 independent county Farmers Federations. Each county elects delegates to represent them at the Federation's annual meeting where the organization's policies and positions on state and national issues are developed. This grassroots leadership is what sets the Alabama Farmers Federation apart from other organizations.
The Federation implements programs and develops future leaders through its Young Farmers and Women's Leadership divisions as well as 17 commodity committees. The Young Farmers Program and Women's Leadership Division encourage and motivate members to be active in politics, their community and consumer education activities.
Farmers representing every commodity produced in Alabama serve on committees that set priorities for research and develop educational programs for producers. In some cases, these committees administer producer-funded checkoff programs.
A Story of Purpose
With organizations in every Alabama county, the Farmers Federation is an integral part of the communities it serves. Many farmers are schoolteachers, small business owners, ministers, parents and community leaders. Together, they provide the food, clothing, shelter and energy for a growing world. And farmers work hard to protect our environment and preserve our state's abundant natural resources.
As the voice of Alabama agriculture, the Farmers Federation works with government officials at the state and national levels to increase profitability for farmers. It also works to protect and enhance the standard of living for rural residents.
Federation members oppose unfair taxes and work to preserve crucial farm programs that are important to our nation's economic future and our national security.
A Story of Vision
As the world's population explodes, the demand for safe, affordable and abundant food continues to increase as well. Farmers meet those challenges by utilizing the latest technology and drawing on centuries of wisdom from farmers before them.
Thanks to advanced technology, one farmer can currently feed 155 people. In 1960, one farmer fed 46 people.
From our members who rely on us to protect their rural lifestyle and their rights to farm, to those who depend on these hardworking men and women to produce the food and fiber, the Alabama Farmers Federation will continue to rely on its wholesome principles to meet the challenges that lay ahead.
Help Us Tell Your Story
For just pennies a day, membership dues of the Alabama Farmers Federation provide numerous benefits, not the least of which is Alfa Insurance (available to qualifying members.)
Other benefits include discounts at hotels, savings on travel services, long-term care, stroke detection, mobile phone service, hearing aids, home security, vision insurance, identify theft, prescription drugs, mortgage services, log homes, automobile purchases, medical services, tires and rental cars.
A full list of member benefits are available on the Alfa Farmers Web site under the Member Benefits link.


text:
Thursday, July 20, 2006
Infor's support for Lilly Visual customers
A source inside Infor contacted me regarding a post I wrote earlier this month on open source ERP gaining adherents. His issue is not so much with the main point regarding the growing attraction of open source ERP. Rather, he believes that the eWeek article I referenced misrepresents the experience of Lilly Visual customers since Lilly was acquired last year by Infor.
He writes,The idea that customers are leaving VISUAL software in droves is absolutely inaccurate. In our fourth quarter in the U.S. alone we sold 50+ new sites of VISUAL. It was an all-time best quarter for us at Infor in general. We still support our VISUAL customers as always through our affiliate channel. That has not changed one bit. The core organizational structure in Hampton, the former headquarters of Lilly, is still intact.I have not had any recent first hand contact with Visual customers to check their experience with Infor's support since acquiring Lilly Software. I've noted in the past that Visual had built out some nice functionality for lean manufacturing and constraint-based scheduling. I would love to hear first hand reports from customers of Infor's continued support and enhancements to the product.
The eWeek article references the opinion of one customer leaving VISUAL. It should also be noted that we came out with release 6.51 in January, and 6.5.2 is coming out September 1st. So those who say that there have been no core enhancements have not looked at the two previous releases. We also continue to add integration for point solutions from other products in the Infor line.
If you're a Visual customer, feel free to email me or add a comment directly to this post.
Related posts
Open source ERP gaining adherents
Infor aquires Lilly Software: vendor consolidation continuesby Frank Scavo, 7/20/2006 10:50:00 AM | permalink | e-mail this!
Read/post comments! (0)
Friday, July 14, 2006
Made2Manage marks sixth acquisition with bid for Intuitive
Made2Manage is adding to its portfolio of discrete ERP systems with its acquisition of Intuitive Manufacturing Systems, announced today. The deal is the sixth for M2M since it went private in August 2003.
Although Intuitive is an old name in small and mid-size ERP, it has been rewritten recently and claims to be now 95% based on Microsoft's .NET framework. It has been on a small acquisition binge of its own, having acquired SupplyWorks, a supply chain management vendor, in March, and Relevant, a specialist in aerospace, engineer-to-order, and MRO businesses, which Intuitive picked up in April.
I'm generally skeptical about the value of a vendor rollup to customers of the target vendor. Too often the new parent either scales back enhancements to improve profitability of the maintenance stream or puts customers on a migration path to some successor system. Made2Manage gets a pass, though, in my opinion. They appear to be running each of these acquisitions as a separate organization, for the most part, but introducing some economies of scale and best practices in sales and support processes.
One source of mine, inside Intuitive, is quite positive about the deal, and I don't think he's spinning me on it.
There's more in the press release on M2M's website.
Related posts
Making money in software with a niche-industry strategyby Frank Scavo, 7/14/2006 12:58:00 PM | permalink | e-mail this!
Read/post comments! (0)
Wednesday, July 12, 2006
Open source ERP gaining adherents
Open source ERP systems--thus far a small slice of the market--are becoming more attractive in light of the rapid vendor consolidation of commercial ERP packages.
At least that's what this eWeek article claims.The director of operations at Marena Group, a manufacturer for post-surgical garments, [John] Rogelstad had a Lilly Software Associates ERP system in place, but after Lilly was acquired by Infor Global Solutions, he found a dramatic decrease in support. With several big IT initiatives in the pipeline, Marena started to feel uneasy with Infor as a partner. "We felt like since Infor acquired Lilly, they were getting very bureaucratic and disorganized. Our sense was they were more interested in acquisitions than working on their core product or developing a new core," said Rogelstad in Lawrenceville, Ga.Rogelstad chose OpenMFG, a quasi-open-source system, as a replacement for Infor's Lilly.
The article also highlights implementations of another open source ERP system, Compiere, at Pertronix, in San Dimas, CA, and at e-BuckMail.com, in Hudson, WI.
Although open source applications, especially enterprise systems such as ERP, are not as widely implemented as open source infrastructure software, such as Linux and Apache, the trend does seem to be increasing. Clients used to point to the assurance that commercial software vendors stood behind their products, promising support and investment in R&D. But with the acceleration of vendor consolidation and the sunsetting of products, those assurances aren't what they used to be.
The continuity of support for open source systems, which depend on a network of interested parties, starts to look like a more attractive model.
Related posts
Why organizations choose open source softwareby Frank Scavo, 7/12/2006 08:55:00 AM | permalink | e-mail this!
Read/post comments! (4)
Friday, July 07, 2006
IT budgets as percent of revenue at highest level since 1997
After six months of work at Computer Economics, we've now released our 17th annual IT spending and staffing study, and the findings are quite interesting.
We found that median corporate IT spending across all industry sectors in the U.S. and Canada has now reached 2% of sales, the highest level this metric has shown since 1997, during the build-up to Y2K, when it hit 2.2%.The 2% ratio this year is an increase from 1.7% in 2005, as shown in Figure 1.
So what are companies spending all this money on? Our study finds IT staff is not at the top of the list. Although there are more companies adding IT staff than cutting headcount, the median increase in IT staff this year is only 2.0%, about half the rate of the increase in IT spending.
The study found that IT spending growth is strongest in business services, where it shows a 9.7% increase over last year, followed by healthcare, pharmaceuticals and medical devices, retail, and banking and finance organizations. Weakest growth, though still positive, is seen in the process manufacturing, utilities/energy, and wholesale distribution sectors.The Computer Economics IT Spending, Staffing, and Technology Trends study, now in its 17th year of publication, provides dozens of additional ratios and other metrics for the composite sample, by organization size, and by industry sector. Statistics include benchmarks for IT operational budgets, IT capital budgets, IT staffing, technology adoption rates, ROI and TCO, and outsourcing utilization.
The study is available for purchase from the Computer Economics website.
A FREE 34 page executive summary is available upon request.by Frank Scavo, 7/07/2006 11:50:00 AM | permalink | e-mail this!
Read/post comments! (0)


text:
Hello Ann ! Another fun trip! Tell Charlie I said Hello , I will send you some photos and I really like your new avitar !
Bob aka ...Ken
Was a pleasure to meet you Ann
Brent & Nat
I'm back from Hedo II & our 6th Annual Group Trip Adventure & Rendezvous and I'll be uploading both my trip report & many photos soon with a few here but the majority in my personal Yahoo! and Flickr Hedo Groups & pages. Thanks everyone for making the trip so special.
That is nice! it would be amazing with you there
hello how are you?
Thanks Anne, leave it with me I am looking for June or July and have to arrange leave from work before I confirm. Wil get back to you.
Sounds like you'll be there after us. We'll make sure we save some drinks and sunshine for you!
I think so. We're currently looking at a June 17 arrival, but haven't actually booked it yet.
Hi there, Thanks for the note.
We have met by the way, long time ago at HIII.
Hope your group has as much fun as we do at HII now as well.
Hi Ann, yes most of us seem to be going again. And looks like we will be all crossing over into your week too.Looking forward to seeing you again and it is going to be another great June ! I will be sending you an invite to the Yahoo June group in a couple of days. Feel free to have your group join in too !
Registered User


text:
Date: 01/22/2013
Writer: Samuel Horstman, (575) 646-3082, firstname.lastname@example.com
New Mexico State University will celebrate Black History Month with a number of events scheduled throughout the month of February.
"Black History Month is a time of reflection of the past, present and future; it reminds us of equality," said Festus Addo-Yobo, director of NMSU Black Programs. "If we stop talking about Black History Month then our history is lost."
The NMSU series of events celebrating Black History Month include guest speakers, food and dance competitions, an art exhibition and more. All events during celebration will be free and open to the general public.
The celebration is presented by NMSU Black Programs and is co-sponsored by the College of Arts and Sciences, College of Education, College of Engineering, College of Business, ASNMSU and the Black Student Council.
The first event to kick off the Black History Month Celebration is Inkorporated: An Art Exhibition. The exhibition will be held from 6-9 p.m. on Feb. 1 at the Corbett Center Art Gallery and will feature artwork from NMSU students that showcase the togetherness of the Black culture in Las Cruces and NMSU.
"Race is the Place," an hour-long movie that explores racism and its continued survival in the country, will be shown at 7 p.m. on Feb. 6 at the Corbett Center Auditorium. Following the movie a panel of NMSU instructors will discuss different issues of race.
Politically Incorrect, a night of improvisation and comedy games, will be held from 7-10 p.m. on Feb. 8 at the Corbett Center Aggie Underground. Participants will be placed into teams and given scenarios to act out.
Molefi Kete Asante, a professor at Temple University in Philadelphia, will speak on the achievements of the nation, Malcolm X, Martin Luther King and the elections of Barak Obama at 7 p.m. on Feb. 13 at the Corbett Center Auditorium.
Dress to Impress Dance, a social event to bring the campus community together, will be at 7 p.m. on Feb. 15 at the Corbett Center Underground.
Open Mic Night, a night where students will be able to showcase their music, singing and poetry will take place at 7 p.m. on Feb. 18 at the Corbett Center Auditorium. Step X Step, a dancing competition, will take place at 7 p.m. on Feb. 22 at the Corbett Center Ballrooms. The Next Wing Master, a hot wing eating contest, will take place at 6 p.m. on Feb. 27 at the Corbett Center Aggie Underground.
Closing out the celebration is the Ancestor Appreciation Dinner at 7 p.m. on Feb. 28 at the Corbett Center Ballrooms. Jamal Martin, a professor at the University of New Mexico, will be the keynote speaker and will discuss student leadership and the importance of student involvement in activism and community service.
For more information or to sign up for events contact Black Programs at 575-646-4208 or firstname.lastname@example.com.
© 2013 New Mexico State University Board of Regents
NMSU - All About Discovery!