The options used used usually look like: %configure \ --prefix=/usr \ --sysconfdir=/etc \ --bindir=/usr/bin \ --libdir=/usr/lib64 \ --libexecdir=/usr/lib/udev \ --with-systemdsystemunitdir=/usr/lib/systemd/system \ --with-selinux The options used in a RPM spec file look like: %configure \ --prefix=%{_prefix} \ --sysconfdir=%{_sysconfdir} \ --bindir=%{_bindir} \ --libdir=%{_libdir} \ --libexecdir=%{_prefix}/lib/udev \ --with-systemdsystemunitdir=%{_prefix}/lib/systemd/system \ --with-selinux The options to install udev in the rootfs instead of /usr, and udevadm in /sbin: --bindir=/sbin --libexecdir=/lib/udev --with-systemdsystemunitdir=/lib/systemd/system --with-rootlibdir=/lib64 Some tools expect udevadm in 'sbin'. A symlink to udevadm in 'bin' needs to be manually created if needed. The defined location for scripts and binaries which are called from rules is /usr/lib/udev/ on all systems and architectures. Any other location will break other packages, who rightfully expect the /usr/lib/udev/ directory, to install their rule helper and udev rule files. It is possible to use the /usr/lib/udev/devices/ directory to place device nodes, directories and symlinks, which are copied to /dev/ at every bootup. That way, nodes for devices which can not be detected automatically, or are activated on-demand by opening the pre-existing device node, will be available. Default udev rules and persistent device naming rules may be required by other software that depends on the data udev collects from the devices.