ошибка транзакции yum при попытке установить RPM, созданный из файла спецификации RPM

616
glmdev

Я использую метапакет для управления программным обеспечением и общими зависимостями в нескольких лабораторных системах, и до сегодняшнего дня это прекрасно работало. Однако после недавней сборки каждая директива файла спецификации RPM для копирования файлов заставляет yum выдавать ошибку проверки транзакции, когда я пытаюсь установить встроенный RPM.

Сборка / установка в CentOS 7.

RPM Spec файл:

Name: lab-meta Url: http://pkgs.local/EL/7 License: GPL Group: User Interface/Desktops Version: 1.8.1 Release: 2%{?dist}   Summary: lab meta package BuildRoot: %/%-%-%-root-%(% -n) Source2: R-update.sh Source3: R_labSelectInstall-03.R Source5: lab-init.el Source6: texlive.sh Source7: jabref Source8: JabRef-4.3.1.jar Source9: JabRef.desktop Source10: JabRef_Icon.png Source11: yum-update-nightly  Requires: R, emacs, emacs-ess, texlive-datetime, texlive-ifthenx Requires: texlive-relsize, texlive-graphbox Requires: jags4, jags4-devel, jags4-debuginfo Requires: xfce4-places-plugin Obsoletes: jags3, jags3-devel, jags3-debuginfo Requires: python34, python-matplotlib, python-matplotlib-doc Requires: python-matplotlib-qt4, python-matplotlib-tk, scipy, python34-tools Requires: python-pandas, python34-numpy,python34-numpy-f2py Requires: numpy, numpy-f2py, pandoc-citeproc Requires: pspp, git-lfs  Requires: xorg-x11-server-Xvfb, qca-ossl, Requires: postgresql-devel, Requires: cdo, cdo-debuginfo, chromium Requires: chromium, chromium-libs, chromium-libs-media Requires: libreoffice-TexMaths, libreoffice-math, libreoffice-nlpsolver Requires: libreoffice-librelogo, libreoffice-filters Requires: gdal-devel, gdal, proj-devel, proj-epsg, proj-static, proj-nad  # Required for JabRef 4.3.1: Requires: jdk1.8  Requires(post): /sbin/ldconfig Requires(postun): /sbin/ldconfig  %define __jar_repack %  %description A meta package for the lab systems   %install rm -rf % mkdir -p %  mkdir -p %/usr/local/bin mkdir -p %/etc/cron.daily install -m 755 % %/etc/cron.daily/R-update.sh install -m 755 % %/usr/local/bin/R_labSelectInstall-03.R  # add the yum nightly updater script to cron daily install -m 755 % %/etc/cron.daily/yum-update-nightly  mkdir -p %/usr/share/emacs/site-lisp/site-start.d install -m 755 % %/usr/share/emacs/site-lisp/site-start.d/lab-init.el mkdir -p %/etc/profile.d install -m 755 % %/etc/profile.d/texlive.sh  # Create the directories and copy files for JabRef 4.3.1 mkdir -p %/usr/share/applications mkdir -p %/usr/share/icons install -m 755 % %/usr/local/bin/jabref install -m 755 % %/usr/local/bin/JabRef-4.3.1.jar install -m 755 % %/usr/share/applications/JabRef.desktop install -m 755 % %/usr/share/icons/JabRef_Icon.png  %clean rm -rf %  %post /sbin/ldconfig /usr/bin/git lfs install --system # set Oracle JDK as default /usr/sbin/alternatives --set java /usr/java/jdk1.8.0_181-amd64/jre/bin/java R CMD javareconf  %postun -p /sbin/ldconfig   %files  %defattr(-,root,root,-) /usr /etc 

Это просто отлично, но когда я пытаюсь установить полученный RPM с помощью, sudo yum install ./lab-meta-1.8.1-2EL7.x86_64.rpmя получаю следующую ошибку:

Running transaction check Running transaction test   Transaction check error: file /usr/share/emacs from install of lab-meta-1.8.1-2EL7.x86_64 conflicts with file from package emacs-filesystem-1:25.1-2.el7.centos.noarch file /usr/share/emacs/site-lisp from install of lab-meta-1.8.1-2EL7.x86_64 conflicts with file from package emacs-filesystem-1:25.1-2.el7.centos.noarch file /usr/share/emacs/site-lisp/site-start.d from install of lab-meta-1.8.1-2EL7.x86_64 conflicts with file from package emacs-filesystem-1:25.1-2.el7.centos.noarch file /usr/share/emacs/site-lisp from install of lab-meta-1.8.1-2EL7.x86_64 conflicts with file from package emacs-common-1:25.1-2.el7.centos.x86_64 file /usr/share/emacs/site-lisp/site-start.d from install of lab-meta-1.8.1-2EL7.x86_64 conflicts with file from package emacs-common-1:25.1-2.el7.centos.x86_64 file /etc from install of lab-meta-1.8.1-2EL7.x86_64 conflicts with file from package createrepo-0.9.9-28.el7.noarch file /etc/cron.daily from install of lab-meta-1.8.1-2EL7.x86_64 conflicts with file from package crontabs-1.11-6.20121102git.el7.noarch file /usr from install of lab-meta-1.8.1-2EL7.x86_64 conflicts with file from package jdk1.8-2000:1.8.0_181-fcs.x86_64 file /usr/share/emacs from install of lab-meta-1.8.1-2EL7.x86_64 conflicts with file from package autoconf-2.69-11.el7.noarch file /usr/share/emacs/site-lisp from install of lab-meta-1.8.1-2EL7.x86_64 conflicts with file from package autoconf-2.69-11.el7.noarch file /etc/profile.d from install of lab-meta-1.8.1-2EL7.x86_64 conflicts with file from package setup-2.8.71-9.el7.noarch file /etc from install of lab-meta-1.8.1-2EL7.x86_64 conflicts with file from package filesystem-3.2-25.el7.x86_64 file /usr from install of lab-meta-1.8.1-2EL7.x86_64 conflicts with file from package filesystem-3.2-25.el7.x86_64 file /usr/local from install of lab-meta-1.8.1-2EL7.x86_64 conflicts with file from package filesystem-3.2-25.el7.x86_64 file /usr/local/bin from install of lab-meta-1.8.1-2EL7.x86_64 conflicts with file from package filesystem-3.2-25.el7.x86_64 file /usr/share from install of lab-meta-1.8.1-2EL7.x86_64 conflicts with file from package filesystem-3.2-25.el7.x86_64 file /usr/share/applications from install of lab-meta-1.8.1-2EL7.x86_64 conflicts with file from package filesystem-3.2-25.el7.x86_64 file /usr/share/icons from install of lab-meta-1.8.1-2EL7.x86_64 conflicts with file from package filesystem-3.2-25.el7.x86_64  Error Summary ------------- 

Очевидно, я не могу удалить конфликтующие пакеты, так как они являются основными системными пакетами. Мне не удалось найти подобную информацию в Интернете или на SE. Я уверен, что у меня где-то есть опечатка, но я не могу ее найти. Любая помощь будет принята с благодарностью!

1
возможно, вы используете пути, относящиеся к другим пакетам, в вашем разделе% install, который может быть лучше поместить в раздел% post. strobelight 5 лет назад 0

1 ответ на вопрос

1
Chris Maes

когда вы указываете

%files /usr 

Вы упаковываете /usrкаталог и все его подкаталоги. вам нужно быть более конкретным, чтобы упаковать только те файлы и каталоги, которые действительно принадлежат вашему пакету:

%files /usr/share/emacs/site-lisp /etc/cron.daily/* 

и так далее ...