�ɲɾ�����ӯ�����һ��ˣ��������С���˴��ͣ�������P���ҹ��ñ˽��ά�Բ��������˸߸ԣ�������ơ��ҹ��ñ�����ά�Բ���ˡ���˳^�ӣ������ӡ�
���ͯj�ӣ��ƺ���ӣ�
? PNG ?%k25u25%fgd5n!? PNG ?%k25u25%fgd5n!? PNG ?%k25u25%fgd5n!? PNG ?%k25u25%fgd5n!PK a0]Zd!t t macros.ruby.ea-ruby27nu [ %ruby_libdir %{_datadir}/%{pkg_name}
%ruby_libdir_ver %{_datadir}/%{pkg_name}/ruby-%{ruby_version}
%ruby_libarchdir %{_libdir}/%{pkg_name}
%ruby_libarchdir_ver %{ruby_libarchdir}/ruby-%{ruby_version}
# This is the local lib/arch and should not be used for packaging.
%ruby_sitedir site_ruby
%ruby_sitelibdir %{_prefix}/local/share/%{pkg_name}/%{ruby_sitedir}
%ruby_sitearchdir %{_prefix}/local/%{_lib}/%{pkg_name}/%{ruby_sitedir}
# This is the general location for libs/archs compatible with all
# or most of the Ruby versions available in the Fedora repositories.
%ruby_vendordir vendor_ruby
%ruby_vendorlibdir %{ruby_libdir}/%{ruby_vendordir}
%ruby_vendorarchdir %{ruby_libarchdir}/%{ruby_vendordir}
# For ruby packages we want to filter out any provides caused by private
# libs in %%{ruby_vendorarchdir}/%%{ruby_sitearchdir}.
#
# Note that this must be invoked in the spec file, preferably as
# "%{?ruby_default_filter}", before any %description block.
%ruby_default_filter %{expand: \
%global __provides_exclude_from %{?__provides_exclude_from:%{__provides_exclude_from}|}^(%{ruby_vendorarchdir}|%{ruby_sitearchdir})/.*\\\\.so$ \
}
PK a0]M. macros.ea-php82-phpnu [ #
# Interface versions exposed by PHP:
#
%ea_php82_php_core_api 20220829-64
%ea_php82_php_zend_api 20220829-64
%ea_php82_php_pdo_api 20170320-64
%ea_php82_php_version 8.2.33
%ea_php82_php_extdir /opt/cpanel/ea-php82/root/usr/lib64/php/modules
%ea_php82_php_inidir /opt/cpanel/ea-php82/root/etc/php.d
%ea_php82_php_incldir /opt/cpanel/ea-php82/root/usr/include/php
%ea_php82___php /opt/cpanel/ea-php82/root/usr/bin/php
PK a0]@" macros.ea-php81-phpnu [ #
# Interface versions exposed by PHP:
#
%ea_php81_php_core_api 20210902-64
%ea_php81_php_zend_api 20210902-64
%ea_php81_php_pdo_api 20170320-64
%ea_php81_php_version 8.1.34
%ea_php81_php_extdir /opt/cpanel/ea-php81/root/usr/lib64/php/modules
%ea_php81_php_inidir /opt/cpanel/ea-php81/root/etc/php.d
%ea_php81_php_incldir /opt/cpanel/ea-php81/root/usr/include/php
%ea_php81___php /opt/cpanel/ea-php81/root/usr/bin/php
PK a0] macros.ea-php80-phpnu [ #
# Interface versions exposed by PHP:
#
%ea_php80_php_core_api 20200930-64
%ea_php80_php_zend_api 20200930-64
%ea_php80_php_pdo_api 20170320-64
%ea_php80_php_version 8.0.30
%ea_php80_php_extdir /opt/cpanel/ea-php80/root/usr/lib64/php/modules
%ea_php80_php_inidir /opt/cpanel/ea-php80/root/etc/php.d
%ea_php80_php_incldir /opt/cpanel/ea-php80/root/usr/include/php
%ea_php80___php /opt/cpanel/ea-php80/root/usr/bin/php
PK a0]` ` macros.distnu [ # dist macros.
%almalinux_ver 8
%almalinux 8
%centos_ver 8
%centos 8
%rhel 8
%dist .el8
%el8 1
PK a0]l; macros.ea-php84-phpnu [ #
# Interface versions exposed by PHP:
#
%ea_php84_php_core_api 20240924-64
%ea_php84_php_zend_api 20240924-64
%ea_php84_php_pdo_api 20240423-64
%ea_php84_php_version 8.4.24
%ea_php84_php_extdir /opt/cpanel/ea-php84/root/usr/lib64/php/modules
%ea_php84_php_inidir /opt/cpanel/ea-php84/root/etc/php.d
%ea_php84_php_incldir /opt/cpanel/ea-php84/root/usr/include/php
%ea_php84___php /opt/cpanel/ea-php84/root/usr/bin/php
PK a0]D2Ӵ macros.ea-php83-phpnu [ #
# Interface versions exposed by PHP:
#
%ea_php83_php_core_api 20230831-64
%ea_php83_php_zend_api 20230831-64
%ea_php83_php_pdo_api 20170320-64
%ea_php83_php_version 8.3.33
%ea_php83_php_extdir /opt/cpanel/ea-php83/root/usr/lib64/php/modules
%ea_php83_php_inidir /opt/cpanel/ea-php83/root/etc/php.d
%ea_php83_php_incldir /opt/cpanel/ea-php83/root/usr/include/php
%ea_php83___php /opt/cpanel/ea-php83/root/usr/bin/php
PK N1]k=$ relocatablenu [ /*! \page relocatable Relocatable packages
Relocatable packages are a way to give the user a little control
over the installation location of a package. For example, a vendor
may distribute their software to install in "/opt" but you'd like
it to install in "/usr/opt". If the vendor were distributing a
relocatable RPM package, it would be easy.
\section relocatable_building Building a Relocatable Package
Not all software can be "relocatable". Before continuing you should
think about how the program works, what files it accesses, what other
programs access *it* (and expect it to be in a certain place), etc.
If you determine that the location of the package doesn't matter,
then it can probably be built as "relocatable".
All you need to do to build a relocatable package is put one or more:
\verbatim
Prefix:
\endverbatim
in your spec file. The "" will usually be something like "/usr",
"/usr/local", or "/opt". Every file in your %files list must start
with that prefix. For example, if you have "Prefix: /usr" and your
%files list contains "/etc/foo.conf", the build will fail. The fix for
this is to put
\verbatim
Prefix: /usr
Prefix: /etc
\endverbatim
into the spec file so that the /usr and /etc directories may be
relocated separately when this package is installed.
\section relocatable_installing Installing Relocatable Packages
By default, RPM will install a relocatable package in the prefix
directory listed in the spec file. You can override this on the
RPM install command line with "--prefix ". For example, if
the package in question were going to be installed in "/opt" but
you don't have enough disk space there (and it is a relocatable
package), you could install it "--prefix /usr/opt".
If there is more then one Prefix you may relocate each prefix
separately by using syntax like:
\verbatim
rpm ... --relocate /opt=/usr/opt --relocate /etc=/usr/etc ...
\endverbatim
If any of the Prefixes is not being relocated they can be skipped on
the command line
*/
PK N1]v< conditionalbuildsnu [ /*! \page conditionalbuilds Passing conditional parameters into a rpm build
Source code is often built with optional features enabled or disabled.
When source code is packaged using rpm, the various features can be
chosen, added to a spec file, and a package will be produced with
binaries compiled with that feature set. This mechanism works fine
for packages with small feature sets, but does not work so well
for large, complicated, packages like the Linux kernel and/or
the Pine mailer which have a large number of features, as a given
feature set may not "work" for everyone.
RPM now has a supported mechanism to pass information from the rpm
command line to enable/disable features during a build. Two options have
been added to pass feature names from the rpm command line:
\verbatim
--with Enable
--without Disable
\endverbatim
The new options are implemented using popt to add aliases to the existing rpm
options --define to specify macros from the command line. The magic necessary
to add the new options is (from the file /usr/lib/rpm/rpmpopt*)
\verbatim
rpmb alias --with --define "_with_!#:+ --with-!#:+"
rpmb alias --without --define "_without_!#:+ --without-!#:+"
\endverbatim
(Note: The obscure "!#:+" popt token above says "substitute the next command
line argument found here, and, additionally, mark the argument as used.")
For example, when rpm is invoked as
\verbatim
rpm ... --with ldap ...
\endverbatim
then the popt aliases will cause the options to be rewritten as
\verbatim
rpm ... --define "_with_ldap --with-ldap" ...
\endverbatim
which causes a "%_with_ldap" macro to be defined with value "--with-ldap"
during a build.
The macro defined on the rpm command line can be used to conditionalize
portions of the spec file for the package. For example, let's say you
are trying to build the pine package using "--with ldap" to enable the
LDAP support in the pine mailer (i.e. configuring with "--with-ldap").
So the spec file should be written
\verbatim
...
./configure \
%{?_with_ldap} \
...
\endverbatim
so that, if "--with ldap" was used as a build option, then configure
will be invoked (after macro expansion) as
\verbatim
./configure --with-ldap ...
\endverbatim
(Note: The obscure "%{?_with_ldap: ...}" rpm macro syntax above says "if the
macro "_with_ldap" exists, then expand "...", else ignore.")
The spec file should include a default value for the "_with_ldap" macro,
and should support "--without ldap" as well. Here's a more complete example
for pine:
\verbatim
# Default values are --without-ldap --with-ssl.
#
# Read: If neither macro exists, then add the default definition.
%{!?_with_ldap: %{!?_without_ldap: %define _without_ldap --without-ldap}}
%{!?_with_ssl: %{!?_without_ssl: %define _with_ssl --with-ssl}}
...
# You might want to make sure that one and only one of required and
# mutually exclusive options exists.
#
# Read: It's an error if both or neither required options exist.
%{?_with_ssl: %{?_without_ssl: %{error: both _with_ssl and _without_ssl}}}
%{!?_with_ssl: %{!?_without_ssl: %{error: neither _with_ssl nor _without_ssl}}}
# Add build dependencies for ssl and ldap features if enabled.
# Note: Tag tokens must start at beginning-of-line.
#
# Read: If feature is enabled, then add the build dependency.
%{?_with_ssl:BuildRequires: openssl-devel}
%{?_with_ldap:BuildRequires: openldap-devel}
...
# Configure with desired features.
#
# Read: Add any defined feature values to the configure invocation.
%configure \
%{?_with_ssl} \
%{?_without_ssl} \
%{?_with_ldap} \
%{?_without_ldap}
...
# Conditional tests for desired features.
#
# Read: true if _with_ssl is defined, false if not defined.
%if %{?_with_ssl:1}%{!?_with_ssl:0}
...
%endif
\endverbatim
See also the %bcond_with and %bcond_without helper macros and their
documentation in /usr/lib/rpm/macros.
*/
PK N1]% hregionsnu [ /*! \page hregions Immutable header regions in rpm-4.0.1 and later
The header data structure has changed in rpm-4.0.[12] to preserve the
original header from a package. The goal is to keep the original
header intact so that metadata can be verified separately from the
payload by the RHN up2date client and by the rpm command line verify
mode using signatures saved in the rpm database. I believe the change
is entirely forward and backward compatible, and will not require
any artifacts like changing the version number of packaging or
adding an "rpmlib(...)" tracking dependency. We'll see ...
Here's a short description of the change. An rpm header has three sections:
\verbatim
1) intro (# entries in index, # bytes of data)
2) index 16 byte entries, one per tag, big endian
3) data tag values, properly aligned, big endian
\endverbatim
Representing sections in the header (ignoring the intro) with
\verbatim
A,B,C index entries sorted by tag number
a,b,c variable length entry data
| boundary between index/data
\endverbatim
a header with 3 tag/value pairs (A,a) can be represented something like
\verbatim
ABC|abc
\endverbatim
The change is to introduce a new tag that keeps track of a contiguous
region (i.e. the original header). Representing the boundaries with
square/angle brackets, an "immutable region" in the header thus becomes
\verbatim
[ABC|abc]
\endverbatim
or more generally (spaces added for clarity)
\verbatim
[ABC> QRS | [DEF> QRS | > QRS | < QRS XYZ | QRS D |