You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
On Arch, -Qs with multiple arguments gives results which contain both = it's an intersection
E.g. pacman -Qs maria java would match a package which has the words maria and java in any order in the pkgname or description.
rpm searches for each argument on it's own, but filters duplicates = it's an union
(it searches only package names, but let's be happy with that)
-Qs is for yum and dnf currently iplemented as rpm -qa "*${*}*"
We can follow how this is evaluated by using bahs's set -x, it evaluates to the single word '*maria java*'
As there are no packages containing a space ...
Changing it to rpm -qa *${*}* or rpm -qa "*${@}*" would evaluate to two words '*maria' 'java*'. This would match a few packages... but not mariadb-java-client-2.3.0-1.fc29.noarch
Now comes the part where I ask for help:
Transforming it to '*maria*' '*java*' will match it, though it will print all packages which are involved with either of them... a lot. (It's a union)
Transforming it to '*maria*java*' will be close. but now the order matters.
To get identical results as with archlinux, we need to transform it to '*maria*java*' '*java*maria*'
In other words, we need all permutations of $*, and could then connect them with spaces and *
How do we do that? And in bash? Some thoughts
In a loop. ${!n} would give the n'th argument
single quotes above are only for demonstration
The text was updated successfully, but these errors were encountered:
@sevu Thanks a lot for your input. I didn't notice there are some differences between pacman and yum/dnf. Supporting arch-liked feature sounds great however that requires a lot of effort in Bash: For the purpose I am not sure if Bash can help. Even if we implement the feature in any higher language, there is still some challenge: We implement the back-end feature (rpm/dnf) which is supposed to be done by the back-end instead.
Is that the union featureuseful from the point of view ofyum/dnfusers? Do they already have any option to switch fromuniontointersection`?
On Arch, -Qs with multiple arguments gives results which contain both = it's an intersection
E.g. pacman
-Qs maria java
would match a package which has the words maria and java in any order in the pkgname or description.rpm searches for each argument on it's own, but filters duplicates = it's an union
(it searches only package names, but let's be happy with that)
-Qs is for yum and dnf currently iplemented as
rpm -qa "*${*}*"
We can follow how this is evaluated by using bahs's
set -x
, it evaluates to the single word'*maria java*'
As there are no packages containing a space ...
Changing it to
rpm -qa *${*}*
orrpm -qa "*${@}*"
would evaluate to two words'*maria' 'java*'
. This would match a few packages... but not mariadb-java-client-2.3.0-1.fc29.noarchNow comes the part where I ask for help:
Transforming it to
'*maria*' '*java*'
will match it, though it will print all packages which are involved with either of them... a lot. (It's a union)Transforming it to
'*maria*java*'
will be close. but now the order matters.To get identical results as with archlinux, we need to transform it to
'*maria*java*' '*java*maria*'
In other words, we need all permutations of
$*
, and could then connect them with spaces and *How do we do that? And in bash? Some thoughts
The text was updated successfully, but these errors were encountered: