Usual options for udev installed in the root filesystem are: ./configure \ --prefix=/usr \ --sysconfdir=/etc \ --sbindir=/sbin \ --libdir=/usr/lib64 \ --with-rootlibdir=/lib64 \ --libexecdir=/lib/udev \ --with-selinux All options: --prefix= Usually /usr, prefix for man pages, include files. --sysconfdir= Usually /etc. --sbindir= Usually /sbin, the place for udevd and udevadm. --libexecdir= Usually /lib/udev, the udev private directory. --enable-debug Compile-in verbose debug messages. Usually not needed, it increases the size of the binaries. --disable-logging Disable all logging and compile-out all log strings. This is not recommended, as it makes it almost impossible to debug udev in the running system. --with-selinux Link against SELinux libraries to set the expected context for created files. --disable-extras Disable the build of all extras which have larger external dependencies like glib, libacl, libusb, ... The options used in a RPM spec file usually look like: %configure \ --prefix=%{_prefix} \ --sysconfdir=%{_sysconfdir} \ --sbindir=/sbin \ --libdir=%{_libdir} \ --with-rootlibdir=/%{_lib} \ --libexecdir=/lib/udev \ --with-selinux The defined location for scripts and binaries which are called from rules is /lib/udev/ on all systems and architectures. Any other location will break other packages, who rightfully expect the /lib/udev/ directory, to install their rule helper and udev rule files. It is recommended to use the /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 are required by other software that depends on the data udev collects from the devices, and should therefore be installed by default with every udev installation.