简体   繁体   中英

How to re-build a RPM (rpmrebuild) in non-interactive mode?

I need to re-build an RPM using rpmrebuild where I need to modify the Requires: lines in a spec file.

Commands:

rpmrebuild --edit-spec --notest-install --package <rpm-name>
Do you want to continue ? (y/N) y
result: <updated-rpm-name>

Changes in spec file:

Old Spec file generated by rpmbuild -ba <spec-file> :

Requires: python(abi) = 3.8

Once I run rpmrebuild, it opens vi editor, where I need to modify the spec file like this:

### Comment out this line
# Requires: python(abi) = 3.8 

### Add this line
Requires: rh-python38

Issue

How can I do run this in non-interactive mode? In other words, I just want to run rpmrebuild without opening the file and just specify the changes in command line itself. Something like:

rpmrebuild --replace-requires --old-requires=python(abi)=3.8 --new-requires=rh-python38 <rpm-name>

I see plugins for rpmrebuild: https://www.mankier.com/1/rpmrebuild#--change-spec-requires

But I am not sure how can I use it here. Please let me know.

I figured out the solution:

We can use sed command to replace and pass it to --change-spec-requires as follows:

rpmrebuild --change-spec-requires='sed "s/Requires:.*python(abi) = 3.8/Requires: rh-python38/g"' --notest-install --package <rpm-name>

This example helped me:

batch change of version tag

rpmrebuild --change-spec-preamble='sed -e "s/^Version:.*/Version: YourVersion/"' YourPackage

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM