Resource references identify specific system resources using the format [resource-type]:[resource-name]. The resource type determines where the resource is located on the filesystem.
Location: Filesystem root (/[resource-name])
Used for: Root-level files and directories
Example: rootpath:boot/config
Location: /usr/[resource-name]
Used for: General files in /usr hierarchy
Example: path:local/bin/custom-tool
Location: /opt/[resource-name]
Used for: Optional software packages
Example: opt:myapp/bin/myapp
Location: /usr/share/[resource-name]
Used for: Shared data files
Example: res:myapp/themes/default.theme
Location: /etc/[resource-name]
Used for: Configuration files
Example: cfg:myapp/config.conf
Location: System PATH directories
Used for: Executable binaries
Example: bin:myapp
Location: /usr/sbin or /sbin
Used for: System administration binaries
Example: sbin:myapp-daemon
Location: System library paths
Used for: Shared libraries
Example: lib:libmyapp.so.1
Location: /usr/libexec
Used for: Library executables
Example: libexec:myapp-helper
Location: /usr/lib, /usr/lib64, /lib, or /lib64
Used for: Library resource files
Example: libres:myapp/plugins/extension.so
Location: /usr/share/info
Used for: GNU info documentation
Example: info:myapp.info
Location: /usr/share/man
Used for: Manual pages
Example: man:myapp.1
Location: /usr/share/locale
Used for: Localization files
Example: locale:fr/LC_MESSAGES/myapp.mo
Location: /usr/share/applications
Used for: Desktop application entries
Example: app:myapp.desktop
Location: /usr/include
Used for: C/C++ header files
Example: inc:myapp.h
Location: pkg-config paths
Used for: pkg-config files
Example: pc:myapp.pc
Location: /usr/share/vala/vapi or /usr/share/vala-0.56/vapi
Used for: Vala API files
Example: vapi:myapp.vapi
Location: /usr/share/gir
Used for: GObject Introspection files
Example: gir:MyApp-1.0.gir
Location: /usr/lib64/girepository-1.0, /usr/lib/girepository-1.0, /lib64/girepository-1.0, or /lib/girepository-1.0
Used for: GObject typelib files
Example: typelib:MyApp-1.0.typelib
Location: /usr/share/usm-tags/[hierarchical-path].tag
Used for: USM system tags
Example: tag:category.subcategory.feature
Resource references follow the pattern: type:name
Examples:
bin:ls - The ls executablelib:libc.so.6 - The libc shared libraryman:ls.1 - Manual page for lscfg:myapp.conf - Configuration file for myappapp:myapp.desktop - Desktop entry for myappUSM resolves resource paths in this order:
{
"provides": {
"lib:libmyapp.so": "as-expected",
"inc:myapp.h": "as-expected",
"pc:myapp.pc": "as-expected"
}
}
{
"provides": {
"bin:myapp": "as-expected",
"app:myapp.desktop": "as-expected",
"res:myapp/icons/hicolor/256x256/apps/myapp.png": "as-expected"
}
}
{
"provides": {
"bin:myapp-tool": "as-expected",
"man:myapp-tool.1": "as-expected",
"libexec:myapp-helper": "as-expected"
}
}
Resources are specified as dependencies using the same format:
{
"depends": {
"runtime": ["lib:libglib-2.0.so", "lib:libc.so.6"],
"build": ["bin:gcc", "pc:glib-2.0.pc"],
"manage": ["bin:bash"]
}
}
USM validates resource references by:
USM respects these environment variables for path customization:
USM_DESTDIR: Destination directoryUSM_PREFIX: Installation prefixUSM_LIBDIR: Library directoryUSM_BINDIR: Binary directoryUSM_INCLUDEDIR: Include directoryUSM_DATADIR: Data directoryUSM_MANDIR: Manual page directoryUSM_TAGSDIR: Tags directoryThis reference provides complete specification for all USM resource types and their usage patterns.