Я пытаюсь создать 2 об/мин пакета, хотя у второго меньше операций. Я создал этот файл спецификации:
%define name @CPACK_PACKAGE_NAME@
%define version @CPACK_PACKAGE_VERSION@
%define release @CPACK_PACKAGE_RELEASE@
%define binarydir @BINARY_DIR@
%define packagedir @PACKAGE_DIR@
#component name - used for the rpm name
%{!?name:%{error:*** Name was not specified! ***}}
# passed as a parameter in the build - the release version
# e.g OverhaulRelease.MajorRelease.MinorRelease
%{!?version:%{error:*** Version was not specified! ***}}
# passed as a parameter in the build - the 5 digit build number
%{!?release:%{warn:*** Release was not specified, so Dev build ***} %define release 0}
## we need to redfine this here to avoid the pre-compilation of the python code
%define __os_install_post %{nil}
## disable RPM object stripping so the
## Qt GUI binaries don't get truncated
%define __strip /bin/true
# set up some commonly used variables
%define buildroot @CMAKE_BINARY_DIR@/_CPack_Packages/Linux/RPM/@CPACK_PACKAGE_FILE_NAME@
%define prefix %{name}
%define appdir /%{name}
%define _topdir @CMAKE_BINARY_DIR@/_CPack_Packages/Linux/RPM
%define _rpmdir @CMAKE_BINARY_DIR@/_CPack_Packages/Linux/RPM
%define _rpmfilename @[email protected]
%define _unpackaged_files_terminate_build 0
## Intro ##
Name: %{name}
Version: %{version}
Release: %{release}
Vendor: %{company}
URL: %{url}
Packager: %{company}
License: %{copyright}
# Define the other packages that this rpm depends on here
Requires: bash
Provides: %{name}
Summary: %{name} %{version}_%{release}
Group: Applications/Communications
BuildRoot: %{buildroot}
%package -n @CPACK_PACKAGE_NAME@_run
## Intro ##
#Name: %{name}
Version: %{version}
Release: %{release}
Vendor: %{company}
URL: %{url}
Packager: %{company}
License: %{copyright}
# Define the other packages that this rpm depends on here
Requires: bash
Provides: %{name}
Summary: %{name} %{version}_%{release}
Group: Applications/Communications
BuildRoot: %{buildroot}
#Icon:
%define _rpmfilename @CPACK_PACKAGE_FILE_NAME@_run.rpm
%description -n @CPACK_PACKAGE_NAME@_run
#%prep
#%build
######## clean ########
#%clean
######## pre-install ########
# Define any pre-install steps here
%pre -n @CPACK_PACKAGE_NAME@_run
######## install ########
%install -n @CPACK_PACKAGE_NAME@_run
# Make the required install directories
# there are made in the buildroot in the local repo,
# but translated when the rpm is installed - removing the buildroot
mkdir -p %{buildroot}%{opt_root}
mkdir -p %{buildroot}%{etc_root}
mkdir -p %{buildroot}%{var_root}
# Copy the required installed files to the buildroot dir to collect the
# files required for installation
# Also, create any required symbolic links here
######## post-install ########
%post -n @CPACK_PACKAGE_NAME@_run
# Set up the symbolic version directory links
# This should eventually be moved to an enable rpm,
# But for now keep it as a single rpm
/bin/ln -s %{opt_root} %{opt_link}
/bin/ln -s %{etc_root} %{etc_link}
/bin/ln -s %{var_root} %{var_link}
# Do other post install commands here, like starting the required process/services etc
######## pre-uninstall ########
%preun -n @CPACK_PACKAGE_NAME@_run
######## post-uninstall ########
%postun -n @CPACK_PACKAGE_NAME@_run
## FILES ##
# Define user attributes and permissions for files
# List the atcual files and paths as they will look on the installed server
# i.e. without the buildroot prefic
%files -n @CPACK_PACKAGE_NAME@_run
%dir %{opt_root}
%dir %{etc_root}
%dir %{var_root}
%package -n @CPACK_PACKAGE_NAME@_ena
#Name: %{name}_ena
Version: %{version}
Release: %{release}
Vendor: %{company}
URL: %{url}
Packager: %{company}
License: %{copyright}
# Define the other packages that this rpm depends on here
Requires: bash
Provides: %{name}
Summary: %{name} %{version}_%{release}
Group: Applications/Communications
BuildRoot: %{buildroot}
#Icon:
%define _rpmfilename @CPACK_PACKAGE_FILE_NAME@_ena.rpm
%define _unpackaged_files_terminate_build 0
%description -n @CPACK_PACKAGE_NAME@_ena
#%prep
#%build
######## clean ########
#%clean
######## pre-install ########
# Define any pre-install steps here
%pre -n @CPACK_PACKAGE_NAME@_ena
######## install ########
%install -n @CPACK_PACKAGE_NAME@_ena
mkdir -p %{buildroot}%{var_root}/output
cp --sparse=never %{binarydir}/stub1 %{buildroot}%{opt_root}/bin/stub1
cp --sparse=never %{binarydir}/stub2 %{buildroot}%{opt_root}/bin/stub2
######## post-install ########
%post -n @CPACK_PACKAGE_NAME@_ena
# Set up the symbolic version directory links
# This should eventually be moved to an enable rpm,
# But for now keep it as a single rpm
/bin/ln -s %{opt_root} %{opt_link}
/bin/ln -s %{etc_root} %{etc_link}
/bin/ln -s %{var_root} %{var_link}
# Do other post install commands here, like starting the required process/services etc
######## pre-uninstall ########
%preun -n @CPACK_PACKAGE_NAME@_ena
######## post-uninstall ########
%postun -n @CPACK_PACKAGE_NAME@_ena
%files -n @CPACK_PACKAGE_NAME@_ena
поэтому у меня здесь 2 вопроса: 1. здесь генерируются только 2 пакета - основной и второй, я ожидаю 3 основных и 2 подпакета 2. Во втором подпакете, если я укажу раздел% install, сборка rpm выдает ошибка во втором %install.
Извините за публикацию подробной спецификации здесь: но не могу получить точный ответ на мою проблему в нескольких словах :)
Где я ошибаюсь?
%build
,%install
и т. д. получают версии для каждого пакета. Я полагаю, что у вас есть только%package
,%description
и%files
для каждого пакета. Также я не верю (если это не изменилось со времени версии, которую я использую), что%package
/etc. принять-n
аргументов. - person Etan Reisner   schedule 13.08.2014%package
/и т.д. может принять-n
в качестве аргумента, поэтому я ошибся в этом бите. Но я по-прежнему считаю, что только эти несколько разделов дублируются для подпакетов, а не для основных. - person Etan Reisner   schedule 14.08.2014-debug
с разделенными символами. - person Etan Reisner   schedule 14.08.2014