Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

I am building a bootable ISO to be used to install a Linux image (Oracle Linux, 5.8). This is using anaconda with a kickstart file to select the packages to be loaded. Some of these packages are failing with dependency problems in their %post section.

Eg, this is seen in /root/install.log after the installation is complete:

Installing thirdparty-tools-1.00-09.noarch
/var/tmp/rpm-tmp.97891: line 1: ln: command not found
/var/tmp/rpm-tmp.97891: line 2: ln: command not found
/var/tmp/rpm-tmp.97891: line 3: ln: command not found
/var/tmp/rpm-tmp.97891: line 4: ln: command not found
error: %post(thirdparty-tools-1.00-09.noarch) scriptlet failed, exit status 127

I'm trying to find out if it is possible to control/override the package ordering, without editing any RPMs to add dependencies. I've been looking through the anaconda / kickstart documentation (https://fedoraproject.org/wiki/Anaconda/Kickstart#Chapter_3._Package_Selection), and searching extensively elsewhere, so I think that the answer is actually 'no, you can't do this', which would be a shame.

The problem is that I am trying to include various third-party RPMs, which are not under my control and which have been digitally signed. These include some processing in a %post section. This processing requires some standard Linux commands, eg 'ln', 'touch', etc, which are supplied within the coreutils package. The third-party package does not currently include a dependency on the coreutils package, though obviously it should really. Anaconda uses its own partial ordering algorithm to choose what order to install these packages, and the third-party packages are being installed before the coreutils package. Obviously, the proper solution is to get these RPMs fixed by the third-party; however, this is likely to take too long.

I was hoping that their might be some hidden / un-documented option for the kickstart file, which could add in extra dependencies. Ideally, I'd like to be able to add something like this to the %packages section:

%packages
@admin-tools
@base
@core
@system-tools
thirdparty-tools

# We would like to add some magic command to indicate a missing dependency
thirdparty-tools dependson coreutils

So, my question is: Is it possible to control or override the package ordering without editing any RPMs to add dependencies?

[ I asked this same question on the main StackOverflow site, before I realised that this Unix StackExchange site existed, but received no answers yet; apologies to anyone who sees this twice. ]

share|improve this question

1 Answer 1

Within the %packages section, no it is not possible. Within the kickstart file, you can add installation commands to the %post section for your third party tools to ensure they are only installed after all packages and dependencies in the %packages section are installed.

share|improve this answer
    
Yes, this approach is what I was going to consider next. What's the best way to deliver these extra RPMs so that they are available to this section of code? From experimentation, it seems that the original ISO is not still mounted, so I can't just pick these packages from a directory within the ISO, unless I re-mount the ISO. Do you have any examples of something similar? –  Conor O'Neill Jul 24 '13 at 16:11
    
That will depend on your infrastructure. If you have the Oracle equiv of Satellite avail, you can use %post to register with it using activation keys, which are to subscribe new systems to child channels, one of which would contain your third party RPMs, then just yum install them. If you only have a machine that can server yum repos, you have to generate the file for that repo in /etc/yum.repos.d/, then wget and rpm --import the signing key before you can yum install. The most hackish solution (IMHO) would be to simply rpm -ihv --nosignature the RPM using the full http URL to it. –  John Jul 24 '13 at 18:01

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.