Easily build RPMs in controlled environments
3.9K
These images allow you to use your existing RPM build folders but build within the Linux environments.
| Distro | Arch | Extras | Image |
|---|---|---|---|
| Alma Linux 10 | amd64 | Base | jc21/rpmbuild:alma10 |
| Alma Linux 10 | amd64 | Golang | jc21/rpmbuild:alma10-golang |
| Alma Linux 10 | amd64 | Rust | jc21/rpmbuild:alma10-rust |
| Alma Linux 10 | amd64 | Haskell | jc21/rpmbuild:alma10-haskell |
| Rocky Linux 10 | amd64 | Base | jc21/rpmbuild:rocky10 |
| Rocky Linux 10 | amd64 | Golang | jc21/rpmbuild:rocky10-golang |
| Rocky Linux 10 | amd64 | Rust | jc21/rpmbuild:rocky10-rust |
| Rocky Linux 10 | amd64 | Haskell | jc21/rpmbuild:rocky10-haskell |
| Rocky Linux 9 | amd64 | Base | jc21/rpmbuild:rocky9 |
| Rocky Linux 9 | amd64 | Golang | jc21/rpmbuild:rocky9-golang |
| Rocky Linux 9 | amd64 | Rust | jc21/rpmbuild:rocky9-rust |
| Rocky Linux 9 | amd64 | Haskell | jc21/rpmbuild:rocky9-haskell |
| Rocky Linux 8 | amd64 | Base | jc21/rpmbuild:rocky8 |
| Rocky Linux 8 | amd64 | Golang | jc21/rpmbuild:rocky8-golang |
| Rocky Linux 8 | amd64 | Rust | jc21/rpmbuild:rocky8-rust |
| Rocky Linux 8 | amd64 | Haskell | jc21/rpmbuild:rocky8-haskell |
You'll need to create your standard RPM build directory structure as follows:
rpmbuild
- BUILD
- BUILDROOT
- RPMS
- SOURCES
- SPECS
- SRPMS
- tmp
Of course put your spec files in SPECS and your source files in SOURCES.
If you want to build just one spec in particular:
docker run \
--name rpmbuild-alma10 \
-v /path/to/your/rpmbuild:/home/rpmbuilder/rpmbuild \
--rm=true \
jc21/rpmbuild:alma10 \
/bin/build-spec /home/rpmbuilder/rpmbuild/SPECS/something.spec
Or if you want to build all specs in your SPECS folder:
docker run \
--name rpmbuild-alma10 \
-v /path/to/your/rpmbuild:/home/rpmbuilder/rpmbuild \
--rm=true \
jc21/rpmbuild:alma10 \
/bin/build-all
The build-spec script will go to the trouble of installing any requires that the spec file needs to build.
Built RPMS will show up in the RPMS/SRPMS folders if successful.
Here's an example of wrapping that stuff above in a script. Let's call it build.sh:
#!/bin/bash
SPEC=$1
RPMBUILDROOT=/path/to/your/rpmbuild
if [ "$1" == "" ]; then
echo "Usage: build.sh specfile.spec"
exit 1;
else
docker run \
--name rpmbuild-alma10 \
-v $RPMBUILDROOT:/home/rpmbuilder/rpmbuild \
--rm=true \
jc21/rpmbuild:alma10 \
/bin/build-spec /home/rpmbuilder/rpmbuild/SPECS/$SPEC
exit $?
fi
Then to run it:
./build.sh something.spec
Content type
Image
Digest
sha256:cb25177c7…
Size
1002.9 MB
Last updated
14 days ago
docker pull jc21/rpmbuild:alma8-rust