Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am looking for a way to have yum install only dependencies for a given package, something like an --prepare-for-install option so I can take a snapshot of the prepared system and test the rpm setup with different options or rebuilds of the package itself on a clean system without having to rely on the rpm uninstall and without downloading the dependencies each time.

share|improve this question
You want to not install the package? That doesn't make a whole lot of sense. What are you really trying to do? – Michael Hampton Sep 17 '12 at 16:27
Hi @Michael, the purpose of not installing the package seems clear to me from the text: preparing a system for package testing. – a1an Sep 17 '12 at 21:02
Right, that's why it doesn't make any sense. – Michael Hampton Sep 17 '12 at 21:34
Letting aside the constructiveness of discussing what makes sense to whom, how do you test the rpm you develop then? – a1an Sep 18 '12 at 7:56
up vote 6 down vote accepted

This might be really dumb but it should work.

yum deplist $PACKAGE | grep provider | awk '{print $2}' | sort | uniq | grep -v $PACKAGE | sed ':a;N;$!ba;s/\n/ /g' | xargs yum -y install
share|improve this answer
Works like a charm, who said dumb isn't good :) Would you explain the :a;N;$!ba; part of the sed command for completeness? Thanks – a1an Sep 18 '12 at 10:30
I honestly don't know, but I pulled it from here, – ablackhat Sep 18 '12 at 17:35
Ok, +1 to him also then – a1an Sep 19 '12 at 8:10
The sed expression joins the multiple lines returned by yum deplist and the intervening pipeline, transforming it into a single line of space-separated dependencies. It's not actually necessary. You can simplify the above as: yum deplist $PACKAGE | awk '/provider/ {print $2}' | sort -u | xargs yum -y install. – larsks Apr 21 '15 at 13:22
Your solution has an error. Say, if we try to install dependencies for package "mysql" and it has "mysql-common" and "init-mysql" dependencies, we will not see them installed, because they both will be filtered by 'grep -v mysql'. – Nikita Kipriyanov Jan 27 at 13:18
yum install $(repoquery --requires <package>)
share|improve this answer
Note that this doesn't account for providers. For instance, I have git18 which provides git; the above command attempts to install git as a dependency anyway. – Aaron Adams Nov 30 '13 at 17:53

Best option I found until now for my packages is to put an "exit 1" into the %pre scriptlet the first time the package is built but I'm looking for cleaner options, not requiring modification of the package itself.

share|improve this answer

Your Answer


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.