RBM_REMOTE(7)

πŸ“¦
version 0.4^20241205gitc6a4095 Β· 2 versions
, in fedora 43

πŸ’– RBM_REMOTE(7) β€” rbm remote build πŸ’–

okay bestie, so this is the page for rbm_remote, aka "rbm remote build", from the rbm man pages. this is the one where we take your build and yeet it somewhere else. let's go ✨


🌸 NAME 🌸

rbm_remote β€” rbm remote build 🫢


✨ DESCRIPTION ✨

ngl, sometimes it's just better to run the build of your package on an external server, or a VM, or a chroot. like, picture this: you're on an rpm based distribution and you wanna build a Debian package. you can't do that locally, bestie. that's not the vibe.

so to do that, you define the remote_exec option. that's the whole trick. πŸ’…

here are the options that configure the remote execution of the build, no cap:

  • remote_exec β€” the template of a command used to execute a command on a remote host. the command that's about to be executed lives in the option exec_cmd. and the option exec_as_root tells you whether the script should run as a normal user or as root β€” some commands, like the pre and post scripts, need to be run as root. the name of the command we're running is sitting in the option exec_name. πŸ‘‘
  • remote_mktemp β€” the template of a command that creates a temporary directory. if it's undefined, mktemp -d -p /var/tmp gets used. default queen behavior. πŸŽ€
  • remote_put β€” the template of a command used to put a file on a remote host. the source file is in the put_src option and the destination directory is in the put_dst option. the default is to use tar together with the remote_exec option. πŸ“¦
  • remote_get β€” the template of a command used to fetch a file from a remote host. the source directory is in the get_src option, and the destination directory is in the get_dst option. the default is to use tar together with the remote_exec option. 🧲
  • remote_start β€” the template of a command that starts the remote host before we can even access it. lowkey so useful, like if you need to start a VM, or fetch a container. if access to an input file is needed, the remote_srcdir option points to a temporary directory containing the input files. and get this β€” the input files are hard links to their original location if it's on the same filesystem, and link_input_files has not been set to 0. πŸ”₯
  • remote_finish β€” the template of a command that stops the remote host after we're done building. iconic for shutting down a VM or removing a temporary container. bye bestie πŸ‘‹

and a lil extra: the remote_* options can access the build_id option, which is a unique identifier of the current build. so every build gets its own lil name tag. 🏷️


🧚 REMOTE BUILD WITH ROOTLESS CONTAINERS 🧚

rbm ships a rbmcontainer script which lets you create rootless containers β€” that is, creating some Linux namespaces without requiring root privileges. main character energy honestly. ✨

it requires the newuidmap and newgidmap commands. on Debian systems that means installing the uidmap package. go install it, bestie, it's required. 🫢

some predefined remote_* options for using containers are available, and you enable them by setting container/use_container to true.

when the use of containers is enabled, the input_files of your build should include a chroot tarball with a filename starting with container-image_. when starting a build, this chroot tarball gets extracted to a temporary directory, and the build script is run chrooted inside that directory. so cozy in there. 🏠

here are the options you can use:

  • container/disable_network/script_name β€” disable the use of network when running script_name (replace it with the name of the script, obviously πŸ’…). by default, network is disabled in the build script and enabled in all other scripts.
  • container/global_disable β€” when this option is set, container/use_container and containers are not used. periodt. 🚫

🐳 REMOTE BUILD WITH DOCKER 🐳

some predefined remote_* templates for running builds in docker are available. to enable building in docker, set the remote_docker option to 1. the following options will then be used, bestie:

  • docker_image β€” the name of the docker image you want to use. πŸ–ΌοΈ
  • docker_save_image β€” by default the docker image used during the build is removed when it's finished. if you wanna keep it (valid, honestly), you define an image name in this option. πŸ’Ύ
  • docker_opts β€” if you wanna add some docker command line options, define them here. useful for instance if you don't want to use the default docker instance. πŸ› οΈ
  • docker_user β€” the user that should be used to run the build inside the container. if that user doesn't exist, it will be created automatically. the default is rbm. πŸ‘‘

for example, if you wanna build your software on Fedora 20 using docker, you can do this:

remote_docker: 1
docker_image: fedora:20

🌈 REMOTE BUILD WITH SSH 🌈

some predefined remote_* templates are available and can be enabled by setting the remote_ssh option to 1. for instance you can add the following lines to your configuration:

ssh_host: some_hostname
remote_ssh: 1

the following options will be used:

  • ssh_host β€” the hostname where to connect. it can also contain a username. πŸ–₯️
  • ssh_port β€” optionally you can set a port using this option. you could also do it by editing your .ssh/config file. either way slays. πŸ”Œ
  • ssh_options β€” optionally you can set some ssh options, for the exec command. βš™οΈ

πŸŽ€ BUILD IN A CHROOT πŸŽ€

you can use the remote_chroot option if you wanna build in a chroot. this option requires that you have sudo access to the chroot command β€” so heads up, you need the access, no way around it. πŸ”

the following options will be used:

  • chroot_path β€” the path to the chroot directory. πŸ“
  • chroot_user β€” the user in the chroot which should run the build. πŸ™‹

example:

chroot_path: /chroots/debian-wheezy
chroot_user: build
steps:
  deb:
    remote_chroot: 1

πŸ‘€ SEE ALSO πŸ‘€

rbm(1), rbm_config(7)


πŸ’œ okay that's the whole page, bestie! every option, every default, every path β€” all of it, untouched. facts don't change just because the vibe is immaculate. ✨

this has been the RBM_REMOTE(7) page, from the rbm project πŸ’– β€” version dated 07/25/2025, and yeah, the footer says RBM_REMOTE(7) again because it loves a lil mirror moment. πŸͺž mwah, go build something cute. πŸ’…πŸŒΈπŸ¦‹

πŸ“¦ where this page comes from