# CommandSection

title: DESCRIPTION
content:
`<b>remind</b>` is a highly flexible and powerful command-line utility for managing reminders and generating calendars. It reads a plain text configuration file (typically `~/.reminders` or `/etc/reminders`) containing sophisticated reminder specifications. Unlike simpler reminder tools, `<b>remind</b>` offers a full-featured programming language within its configuration, allowing for complex date calculations, conditional reminders, and custom output formats.<br><br>It can be used to display upcoming events, generate various calendar views (daily, weekly, monthly, PostScript), and even execute commands (like playing a sound or sending a notification) when a reminder is due. Its strength lies in its ability to handle recurring events, floating holidays, and other intricate date logic with precision, making it an indispensable tool for users who prefer text-based configuration and robust automation.


title: CAVEATS
content:
`<b>remind</b>`'s power comes with a learning curve; its configuration file uses a unique, powerful scripting language that can be complex to master for intricate reminders. While highly effective in a terminal environment, integrating `<b>remind</b>` with modern graphical desktop notifications often requires additional scripting or wrappers (e.g., using `notify-send` in a `RUN` command). Timezone handling can sometimes be tricky for reminders spanning different timezones or during daylight saving time transitions if not carefully configured within the reminder file.


title: REMINDER FILE FORMAT
content:
`<b>remind</b>` reads its configuration from a plain text file, typically named <I>.reminders</I> in your home directory. Each line in this file can define a reminder, a variable, or a command. A basic reminder definition includes a date specification (e.g., <I>REM 1 Jan "New Year's Day"</I>), followed by the message. More complex definitions involve repetition rules (e.g., <I>REM Sat 1 "Weekly chore"</I>), exclusion rules, and intricate date expressions using its built-in language. The file can also contain `INCLUDE` directives to pull in other reminder files.


title: VARIABLES AND EXPRESSIONS
content:
`<b>remind</b>` features a powerful internal programming language, allowing users to define variables (<I>SET variable=value</I>), use conditional logic (<I>IF/ENDIF</I>), and perform date arithmetic. This enables the creation of highly dynamic reminders, such as those that adjust based on the day of the week, month, or other calendar events. Expressions can be used within date specifications and reminder messages, allowing for personalized and context-aware notifications.


title: ADVANCED FEATURES (RUN, MSG)
content:
Beyond simple text output, `<b>remind</b>` supports advanced actions. The <I>RUN</I> command allows `<b>remind</b>` to execute an arbitrary shell command when a reminder is due. This is commonly used to play sound files, send desktop notifications (<I>RUN notify-send "Reminder!" "%s"</I>), or trigger other scripts. The <I>MSG</I> keyword can be used to explicitly define the reminder message, allowing for complex formatting and variable substitution. These features transform `<b>remind</b>` from a mere calendar into a potent automation tool.


title: HISTORY
content:
The `<b>remind</b>` program was originally written by David E. Hayes and has been a staple in Unix-like environments for decades, first released in the early 1990s. Its design reflects the Unix philosophy of powerful, text-based tools. It has undergone continuous development and improvements, maintaining its robust core while adapting to new system capabilities. Its enduring popularity stems from its unparalleled flexibility in defining complex recurring events and its ability to integrate with other system tools, often being invoked by `<b>cron</b>` to provide automated notifications.


title: SYNOPSIS
content:
<I>For `gdalinfo`:</I><br><b>gdalinfo</b> [-<i>json</i>] [-<i>mm</i>] [-<i>stats</i>] [-<i>hist</i>] [-<i>nogcp</i>] [-<i>nomd</i>] [-<i>noct</i>] [-<i>nofs</i>] [-<i>ns</i>] [-<i>na</i>] [-<i>checksum</i>] [-<i>ib</i>] [-<i>lic</i>] [-<i>oo 'NAME=VALUE'</i>] [-<i>mdd domain|all</i>] [-<i>limitedopen</i>] [-<i>sd subdataset</i>] [-<i>proj_pci_cite</i>] [-<i>listmdd</i>] [-<i>noobj</i>] &lt;<i>datasetname</i>>


title: PARAMETERS
content:
<b>-json</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output dataset information in JSON format.<br><br><b>-mm</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Report approximate minimum and maximum pixel values for each band.<br><br><b>-stats</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Compute and report full band statistics (min, max, mean, std dev).<br><br><b>-hist</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Compute and report histograms for each band.<br><br><b>-nogcp</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not report Ground Control Points (GCPs).<br><br><b>-nomd</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not report metadata.<br><br><b>-noct</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not report color table.<br><br><b>-nofs</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not report file list.<br><br><b>-ns</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not report subdatasets.<br><br><b>-na</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not report attribute table.<br><br><b>-checksum</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Compute and report a checksum for each band.<br><br><b>-ib</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Report metadata for each image band.<br><br><b>-lic</b><br>&nbsp;&nbsp;&nbsp;&nbsp;List all GDAL drivers capable of opening the dataset.<br><br><b>-oo 'NAME=VALUE'</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set an open option (e.g., specific driver parameters) for the dataset driver.<br><br><b>-mdd domain|all</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Report metadata for a specific domain or all available domains.<br><br><b>-sd subdataset</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Report information only for a specified subdataset by its index.<br><br><b>-limitedopen</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Attempt a faster but potentially less detailed dataset open.<br><br><b>-proj_pci_cite</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force PCI citation output for projection information.<br><br><b>-listmdd</b><br>&nbsp;&nbsp;&nbsp;&nbsp;List all metadata domains available for the dataset.<br><br><b>-noobj</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not output OBJ_DATA metadata domain.<br><br><b><datasetname></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to the GDAL dataset (e.g., GeoTIFF file, ESRI Shapefile) to analyze.<br><br>


title: DESCRIPTION
content:
The command <b>gdalsummary</b> is <b>not a recognized standard utility</b> within the official GDAL (Geospatial Data Abstraction Library) software suite. It is highly probable that the user intends to utilize <b>gdalinfo</b>, which serves as the primary command-line tool for retrieving comprehensive metadata, statistics, and structural information about various geospatial raster and vector datasets supported by GDAL.<br><br>The <b>gdalinfo</b> command provides a detailed summary of a dataset's properties. This includes its driver format, dimensions, coordinate system (projection), geotransform (pixel-to-georeference transformation), a list of georeferenced control points (GCPs), band properties (such as data type, color interpretation, NoData value, statistics like min/max, mean, standard deviation, and histogram), metadata domains, and subdataset information. It is an indispensable tool for understanding the characteristics of geospatial files prior to processing them with other GDAL utilities. Users frequently employ <b>gdalinfo</b> to inspect file integrity, verify projection definitions, or quickly ascertain data ranges and types.<br><br>If 'gdalsummary' refers to a custom script or wrapper, its functionality would most likely mimic or leverage <b>gdalinfo</b> to extract and present a concise overview of geospatial data attributes.


title: CAVEATS
content:
<b>gdalsummary</b> is <b>not a standard GDAL utility</b> and attempting to execute it directly will likely result in a "command not found" error. Users seeking to summarize geospatial dataset information should instead employ the <b>gdalinfo</b> command, which provides comprehensive metadata and statistical summaries for both raster and vector data. It is conceivable that 'gdalsummary' might refer to a custom shell script, an alias, or a specific internal function within a larger geospatial processing workflow unique to a particular system or project.


title: <I>WHY 'GDALSUMMARY' MIGHT BE SOUGHT</I>
content:
The name 'gdalsummary' intuitively suggests a utility focused on providing quick, high-level overviews or concise statistics of geospatial data. While <b>gdalinfo</b> offers exhaustive details, its output can sometimes be lengthy and verbose. A hypothetical 'gdalsummary' might aim for a more streamlined report, perhaps focusing solely on key statistics such as extents, resolution, band counts, and basic min/max values, without requiring multiple flags or extensive parsing. Such a tool, if it existed as a separate utility, could be invaluable for rapid data assessment or for integration into automated scripting workflows where only essential summary metrics are required.


title: HISTORY
content:
Not applicable, as <b>gdalsummary</b> is not a standard, officially documented command within the GDAL project. The GDAL project itself boasts a rich history dating back to 1998, with <b>gdalinfo</b> being one of its foundational utilities for dataset introspection, continuously developed and improved over time.


title: SYNOPSIS
content:
<b>gdbserver</b> [<I>options</I>] <I>COMM</I> <I>PROGRAM</I> [<I>ARGUMENTS</I>...]<br><b>gdbserver</b> [<I>options</I>] <I>COMM</I> --attach <I>PID</I>


title: PARAMETERS
content:
<b><b><I>COMM</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The communication method and address for GDB to connect. This can be `<i>HOST</i>:<i>PORT</i>` (e.g., `localhost:1234`, `:1234` for any interface) for TCP/IP, or a device path (e.g., `/dev/ttyS0`) for serial communication.<br><br><b><b><I>PROGRAM</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The executable program to be debugged. This program will be launched by <i>gdbserver</i>.<br><br><b><b><I>ARGUMENTS</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Arguments passed directly to the <i>PROGRAM</i> being debugged.<br><br><b><b>--attach <I>PID</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Attach to an already running process specified by its Process ID (<i>PID</i>) instead of launching a new program.<br><br><b><b>--debug</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose debugging output from <i>gdbserver</i> itself, useful for troubleshooting connection issues.<br><br><b><b>--once</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Configures <i>gdbserver</i> to exit immediately after the first GDB client disconnects. Useful for single-shot debugging sessions.<br><br><b><b>--multi</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Configures <i>gdbserver</i> to remain active and listen for new GDB client connections even after an existing client disconnects. Allows multiple debugging sessions without restarting <i>gdbserver</i>.<br><br><b><b>--wrapper <I>COMMAND</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a wrapper command to execute the target <i>PROGRAM</i>. For example, `<i>COMMAND</i>` could be `valgrind`.<br><br><b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message with command-line options and exits.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays <i>gdbserver</i>'s version information and exits.<br><br>


title: DESCRIPTION
content:
<i>gdbserver</i> is a crucial utility within the GNU Debugger (GDB) ecosystem, acting as a remote target stub. It enables debugging of programs running on a different system or process than where the primary GDB instance is located.<br><br>The tool starts the target program under its control (or attaches to an already running one) and then listens for incoming connections from a GDB client. Upon connection, <i>gdbserver</i> communicates with GDB using the GDB Remote Serial Protocol, translating debugging requests (like setting breakpoints, stepping, reading/writing memory, inspecting registers) into actions on the target system. This makes it indispensable for scenarios such as debugging embedded systems, cross-platform development, or analyzing processes in isolated environments where directly running GDB is not feasible or desired.


title: CAVEATS
content:
When using <i>gdbserver</i>, security is paramount. Since it provides full control over the target process, it should only be deployed in trusted environments or secured networks. Unrestricted network access to the <i>gdbserver</i> port can pose a significant security risk. Furthermore, <i>gdbserver</i> needs appropriate permissions to operate, especially when attaching to system processes or debugging programs owned by other users. The version and architecture of <i>gdbserver</i> should ideally match the target system and the debugged program for optimal compatibility.


title: GDB REMOTE SERIAL PROTOCOL
content:
<i>gdbserver</i> communicates with the GDB client using the GDB Remote Serial Protocol. This standard text-based protocol allows GDB to send commands and receive data from the remote target, facilitating all aspects of the debugging process, from setting breakpoints to inspecting memory and registers.


title: TYPICAL WORKFLOW
content:
A common debugging workflow involves starting <i>gdbserver</i> on the target machine (e.g., `gdbserver :1234 my_app`). Then, on the development machine, launch GDB and connect to the remote target using `target remote <I>target_ip</I>:1234`. Once connected, GDB operates as if debugging a local process, providing a seamless debugging experience.


title: CROSS-ARCHITECTURE DEBUGGING
content:
One of <i>gdbserver</i>'s most powerful applications is in cross-architecture debugging. It allows developers to debug programs compiled for a different CPU architecture (e.g., ARM) from a development machine running a different architecture (e.g., x86_64) by having the appropriate <i>gdbserver</i> binary on the target system.


title: HISTORY
content:
<i>gdbserver</i> is an integral part of the GNU Debugger (GDB) project, specifically designed to address the challenges of debugging programs on remote or embedded targets. Its development enabled GDB to extend its powerful debugging capabilities beyond local execution, becoming a cornerstone for cross-development and low-level system debugging. The GDB Remote Serial Protocol, upon which <i>gdbserver</i> relies, has been a robust and stable part of the GDB architecture for many years, facilitating broad compatibility across various target platforms and host environments.


title: DESCRIPTION
content:
<i><b>diffmk</b></i> is a specialized command designed to highlight differences between two text files in a format suitable for typesetting systems like <i>nroff</i> and <i>troff</i>.<br><br>Unlike the standard <i>diff</i> command, which produces a diff format (e.g., unified, context), <i><b>diffmk</b></i> generates a third file where changes are visually indicated on a line-by-line basis. Specifically, lines that have been modified between the <i>old_file</i> and <i>new_file</i> are marked with a vertical bar (<b>|</b>) at the beginning, while lines that were present in <i>old_file</i> but deleted in <i>new_file</i> are marked with an asterisk (<b>*</b>). Lines that are common to both files or newly added lines in <i>new_file</i> are typically presented without special marking or might be inserted directly.<br><br>Its primary application is in documentation generation, where it helps authors track and display changes in printed or formatted documents, making it easier for readers to identify revisions. The command employs an algorithm to find the longest common subsequence of lines, ensuring a reasonable alignment of changes. This makes <i><b>diffmk</b></i> particularly useful for generating revision marks in technical manuals or legal documents processed by <i>nroff</i> or <i>troff</i>.


title: CAVEATS
content:
<ul><li><i><b>diffmk</b></i> is specifically tailored for <i>nroff</i>/<i>troff</i> output. Its marking conventions (<b>|</b> and <b>*</b>) are intended to be interpreted by these typesetting systems. Using its output directly in other contexts might not be meaningful without further processing.</li><li>It primarily marks <i>changed</i> and <i>deleted</i> lines from the perspective of the <i>old_file</i> compared to the <i>new_file</i>. The treatment of <i>added</i> lines might vary or require understanding how <i>nroff</i>/<i>troff</i> handles them in the <i>marked_file</i>.</li><li>The algorithm used is based on finding the longest common subsequence, which is generally effective but might not always produce the 'human-readable' diff that <i>diff -u</i> or <i>git diff</i> might offer for source code. Its focus is on line-level changes for document revision.</li><li>The command is quite old and might be considered a legacy tool, often found in environments still relying on <i>groff</i> or <i>troff</i> for document preparation.</li></ul>


title: PURPOSE OF MARKING
content:
When <i><b>diffmk</b></i> generates the <i>marked_file</i>, the <b>|</b> and <b>*</b> characters are placed at the beginning of lines. These characters are not just visual indicators; they are often interpreted by <i>nroff</i> or <i>troff</i> macro packages to apply specific formatting (e.g., bolding, italicizing, or using different margins) to the changed or deleted text within the final formatted document. This allows for automated visual differentiation of revisions in printed output.


title: INPUT AND OUTPUT FILES
content:
The <i>old_file</i> represents the original version of the document, and <i>new_file</i> is the revised version. The <i>marked_file</i> is the generated output that combines content from both, with the specific difference markers. It's crucial that these files are text-based for <i><b>diffmk</b></i> to operate correctly.


title: HISTORY
content:
<i><b>diffmk</b></i> is a venerable Unix utility, originating from Bell Labs, alongside other text processing tools like <i>nroff</i> and <i>troff</i>. It was designed specifically to integrate with these typesetting systems for document revision control.<br><br>Its purpose emerged from the need to easily highlight changes in technical documentation and manuals, which were extensively prepared using <i>troff</i> in the early Unix era. As part of the <i>troff</i> ecosystem, its development paralleled the evolution of professional document formatting on Unix systems. While <i>diff</i> evolved to serve a broader range of file comparison needs (especially for source code), <i><b>diffmk</b></i> remained focused on the specialized task of generating revision marks for formatted output, reflecting a specific design philosophy for document management within the Unix environment.


title: SYNOPSIS
content:
<b>abigen</b> <i>--abi &lt;file&gt;</i> <i>--pkg &lt;package_name&gt;</i> <i>--type &lt;struct_name&gt;</i> [<i>--out &lt;output_file&gt;</i>] [<i>--bin &lt;bytecode_file&gt;</i>] [<i>--factory</i>] [<i>--sol &lt;solidity_file&gt;</i>] [<i>options...</i>]


title: PARAMETERS
content:
<b>--abi <file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to the Ethereum contract ABI JSON file. Use '-' for standard input.<br><br><b>--bin <file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to the Ethereum contract bytecode file. Use '-' for standard input.<br><br><b>--out <file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to the output Go source file. Use '-' for standard output.<br><br><b>--pkg <name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the Go package name for the generated code. Defaults to 'main'.<br><br><b>--type <name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the name of the generated Go struct that represents the contract. Defaults to 'Contract'.<br><br><b>--alias <old_name>=<new_name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Assigns an alias to a specific method, event, or error. Can be used multiple times.<br><br><b>--events</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the generation of event bindings, even if no topics are available.<br><br><b>--only-abi</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates only the ABI constant, without any contract code.<br><br><b>--sol <file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to a Solidity contract source file. If provided, `abigen` will compile it using `solc` (if available in PATH) to extract ABI and bytecode.<br><br><b>--factory</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates a contract factory interface, which provides a convenient way to deploy new contract instances.<br><br><b>--backend <type></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the backend for the contract bindings. Options include 'bind', 'ethclient', 'simulator', 'rpc'. Defaults to 'bind'.<br><br><b>--help, -h</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays help information for the abigen command.<br><br>


title: DESCRIPTION
content:
The <b>abigen</b> command is a crucial tool within the <I>Go Ethereum (geth)</I> ecosystem, designed to facilitate the interaction between Go applications and Ethereum smart contracts.<br><br>It takes a smart contract's <I>Application Binary Interface (ABI)</I> definition, and optionally its bytecode, to generate type-safe Go bindings. These bindings appear as a Go package containing a struct that represents the contract, along with methods for calling contract functions, deploying new instances, and subscribing to contract events.<br><br>By abstracting away the low-level <I>Ethereum RPC</I> calls and ABI encoding/decoding, <b>abigen</b> significantly simplifies decentralized application (dApp) development in Go. Developers can write Go code that interacts with contracts using familiar Go types and function calls, ensuring compile-time safety and reducing potential runtime errors associated with manual ABI manipulation. This makes Go an effective language for building backends, command-line tools, and services that interface with the Ethereum blockchain.


title: CAVEATS
content:
<b>abigen</b> requires a correctly formatted <I>ABI JSON</I> file as input. Errors in the ABI definition can lead to incorrect or non-compilable Go bindings.<br><br>When using the <I>--sol</I> flag, the <I>solc</I> (Solidity compiler) executable must be installed and accessible in the system's PATH. If <I>solc</I> is not found or fails to compile, <I>abigen</I> will not be able to generate bindings.<br><br>The generated Go code can sometimes be verbose, especially for contracts with many functions and events. While readable, it's generally not intended for manual modification.<br><br>Users must have a working <I>Go</I> development environment installed to compile and use the generated Go bindings.


title: BASIC USAGE EXAMPLE
content:
To generate Go bindings for a Solidity contract named <I>MyContract.sol</I>:<br><br>First, compile the Solidity contract (if not using <I>--sol</I>):<br><code>solc --abi MyContract.sol -o .<br>solc --bin MyContract.sol -o .</code><br><br>Then, use <b>abigen</b>:<br><code>abigen --abi MyContract.abi --bin MyContract.bin --pkg mycontract --type MyContract --out mycontract.go</code><br><br>Alternatively, using the <I>--sol</I> flag directly:<br><code>abigen --sol MyContract.sol --pkg mycontract --type MyContract --out mycontract.go</code><br><br>This will create a <I>mycontract.go</I> file containing the Go interface for interacting with <I>MyContract</I>.


title: GENERATED CODE STRUCTURE
content:
The output Go file typically contains:<br><ul><li>A Go <I>struct</I> (e.g., <I>MyContract</I>) representing the deployed contract instance.</li><li>Methods on this struct for calling contract functions (e.g., <I>CallMyFunction</I>), including read-only calls and state-changing transactions.</li><li>Methods for deploying new contract instances (e.g., <I>DeployMyContract</I>).</li><li>Methods for subscribing to and filtering contract events (e.g., <I>WatchMyEvent</I>, <I>FilterMyEvent</I>).</li><li>Constants for the contract's <I>ABI</I> and <I>bytecode</I>.</li></ul>


title: HISTORY
content:
The <b>abigen</b> tool is an integral part of the <I>Go Ethereum</I> client, commonly known as <I>geth</I>, which is the official Go implementation of the Ethereum protocol. It was developed to support the growing need for robust and type-safe interactions between Go applications and Ethereum smart contracts.<br><br>Its development closely tracked the evolution of the Go Ethereum ecosystem, becoming a standard utility for Go developers building on Ethereum. As smart contract development matured, <b>abigen</b> adapted to support new Solidity features and improved developer workflows, cementing its role as a fundamental tool for Go-based dApp backend and tooling development.


title: SYNOPSIS
content:
<b>adcli</b> [<i>GLOBAL_OPTIONS</i>] <i>COMMAND</i> [<i>COMMAND_OPTIONS</i>]<br><br>Common usage for joining a domain:<br><b>adcli join</b> [<i>OPTIONS</i>] <i>DOMAIN_NAME</i>


title: PARAMETERS
content:
<b>join</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The primary command to join a Linux system to an Active Directory domain.<br><br><b>--domain=<domain_name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the Active Directory domain to join. Can often be inferred if not provided.<br><br><b>--login-user=<username></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The Active Directory user with sufficient permissions to create computer objects (e.g., Administrator).<br><br><b>--login-password=<password></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The password for the <i>--login-user</i>. It's generally recommended to let <b>adcli</b> prompt for the password securely.<br><br><b>--computer-ou=<OU_path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the organizational unit (OU) where the computer account should be created (e.g., <i>OU=Servers,DC=example,DC=com</i>).<br><br><b>--host-name=<hostname></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the hostname that will be used for the computer object in Active Directory. Defaults to the system's hostname.<br><br><b>--krb5-config=<path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a custom path to the Kerberos configuration file (<i>krb5.conf</i>).<br><br><b>--kerberos-keytab=<path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a custom path for the Kerberos keytab file to store service principal names (SPNs).<br><br><b>--force</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces joining the domain even if a computer account with the same name already exists in Active Directory.<br><br><b>--only-machine-account</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Only creates the machine account in Active Directory and generates the keytab, skipping other local system configurations.<br><br><b>--verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, showing more details about the operations being performed.<br><br><b>--debug</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables extensive debug logging, providing detailed output highly useful for troubleshooting issues.<br><br><b>--server=<server_name_or_ip></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a particular domain controller to connect to for the join operation.<br><br><b>--enabling-dns</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Configures the system to perform dynamic DNS updates when enabled.<br><br><b>--os-name=<string></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the <i>OperatingSystem</i> attribute on the computer object in Active Directory.<br><br><b>--os-version=<string></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the <i>OperatingSystemVersion</i> attribute on the computer object.<br><br>


title: DESCRIPTION
content:
<b>adcli</b> is a command-line utility for managing Active Directory domain membership for Linux systems. It provides a robust and modern way to integrate Linux clients into an Active Directory environment, often working in conjunction with SSSD (System Security Services Daemon) for authentication and identity management. <b>adcli</b> can perform various tasks, including joining a machine to a domain, updating machine account information, creating DNS records, and configuring Kerberos. Unlike some older tools, <b>adcli</b> focuses on direct communication with Active Directory servers using standard protocols, making it a preferred choice for reliable and secure integration in enterprise settings. Its primary use case is to establish a trust relationship, create a computer object in AD, and configure the local system for Kerberos authentication, enabling users to log in with their AD credentials.


title: CAVEATS
content:
<b>DNS Resolution:</b> Proper DNS configuration is critical. The Linux host must be able to resolve Active Directory domain controllers and SRV records for the domain.<br><b>Time Synchronization:</b> The client machine's time must be closely synchronized with the Active Directory domain controllers (ideally via NTP) to prevent Kerberos authentication issues.<br><b>Network Connectivity:</b> Firewall rules must allow communication to AD ports (e.g., 389 LDAP, 88 Kerberos, 445 SMB, 53 DNS).<br><b>Permissions:</b> The <i>--login-user</i> must have sufficient permissions to create computer objects within the specified OU in Active Directory. If no OU is specified, permissions are needed in the default 'Computers' container.<br><b>Existing Machine Accounts:</b> If a machine account with the same name already exists in AD, <b>adcli</b> might fail or require the <i>--force</i> option, which could lead to conflicts if not handled carefully.


title: INTEGRATION WITH REALM
content:
While <b>adcli</b> can be used directly, it is often called by the <b>realm</b> command (e.g., <i>realm join</i>) which provides a higher-level, more automated workflow for configuring system services like SSSD and Kerberos after joining the domain. Using <b>realm</b> is generally recommended for a complete setup.


title: MACHINE ACCOUNT MANAGEMENT
content:
Beyond joining, <b>adcli</b> can also be used to update existing machine accounts in Active Directory, for example, to modify attributes or renew the machine password. The <i>adcli update</i> subcommand is used for this purpose, allowing maintenance of the AD computer object from the Linux client.


title: HISTORY
content:
<b>adcli</b> emerged as a modern, standalone command-line tool primarily developed for Red Hat Enterprise Linux and its derivatives to facilitate Active Directory integration. It was designed to provide a more direct and streamlined approach compared to older Samba-based <i>net ads join</i> utilities, especially for systems using <i>systemd</i> and <i>sssd</i>. Its development aimed at improving reliability, security, and ease of integration with contemporary Linux identity management frameworks. It became a core component for tools like <i>realm</i> to handle the underlying AD joining process, solidifying its role in enterprise Linux environments.


title: SYNOPSIS
content:
<I>bcftools</I> <I>command</I> [<I>options</I>] [<I>arguments</I>]<br><br>General options:<br><I>bcftools</I> [-?] [-h] [--version] [-l] [-v] [<I>options</I>]<br><br><I>bcftools</I> <I>command</I> --help<br><br>Note: <I>bcftools</I> is a collection of subcommands; each subcommand has its own specific set of options and arguments.


title: PARAMETERS
content:
<b>call</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs variant calling using a consensus model from alignment data.<br><br><b>view</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Views, filters, and converts VCF/BCF files between formats or applies basic filters.<br><br><b>filter</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filters sites and samples using a flexible expression language based on annotations or genotypes.<br><br><b>merge</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Merges multiple VCF/BCF files that contain variants from the same samples but potentially different regions.<br><br><b>concat</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Concatenates multiple VCF/BCF files from different regions or chromosomes, assuming sorted inputs.<br><br><b>query</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Extracts fields from VCF/BCF files into a tabular format, similar to 'awk'.<br><br><b>stats</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Calculates and displays various statistics from VCF/BCF files, useful for quality control.<br><br><b>norm</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Normalizes indels and splits multi-allelic sites into separate bi-allelic records.<br><br><b>index</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Creates or checks a VCF/BCF index (CSI or TBI) for fast random access.<br><br><b>annotate</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds, removes, or modifies annotations within VCF/BCF files based on external sources or expressions.<br><br><b>gtcheck</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Checks sample identity or relatedness between VCFs and BAMs.<br><br><b>consensus</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates a consensus sequence from a VCF/BCF file and a reference genome.<br><br><b>mpileup</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates genotype likelihoods from alignment files (BAM/CRAM) for variant calling.<br><br><b>sort</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sorts VCF/BCF files by coordinate.<br><br><b>regions</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Manipulates and processes genomic regions or intervals for other commands.<br><br>


title: DESCRIPTION
content:
<I>bcftools</I> is a suite of utilities for working with VCF (Variant Call Format) and BCF (Binary Call Format) files, which are standard formats for storing genomic variations. Developed as part of the SAMtools project, <I>bcftools</I> provides a comprehensive set of functions for manipulating, filtering, merging, calling, and analyzing variant data. It's an indispensable tool in genomics for tasks ranging from basic file inspection and reformatting to complex variant calling and population genetics analysis. Its integration with SAMtools and HTSlib libraries ensures efficient handling of large genomic datasets. Key functionalities include viewing and converting file formats, filtering variants based on various criteria, merging multiple VCFs, performing genotype likelihood-based variant calling, and calculating statistics.


title: CAVEATS
content:
<I>bcftools</I> can be complex due to its many subcommands and their specific options. Users should be mindful of input file formats (VCF/BCF) and ensure proper indexing for efficient processing of large datasets, especially when using region-based operations. Memory usage can be significant for extensive filtering or very large VCF/BCF files. Incorrect usage of filter expressions can inadvertently remove desired variants. The `call` subcommand's parameters often require careful tuning depending on the sequencing technology and dataset characteristics.


title: FILE FORMATS
content:
<I>bcftools</I> primarily works with VCF (Variant Call Format) and BCF (Binary Call Format) files. BCF is a highly compressed, binary equivalent of VCF, offering significant advantages in terms of file size and parsing speed, particularly crucial for large-scale genomic datasets. <I>bcftools</I> can seamlessly convert between these two formats, usually favoring BCF for internal processing efficiency.


title: INDEXING
content:
For efficient random access to specific genomic regions or samples, BCF/VCF files must be indexed. <I>bcftools</I> supports `CSI` (Coordinate-sorted index) or `TBI` (Tabix index) formats, which can be created using the `bcftools index` subcommand. Operations targeting specific regions (e.g., using the `-r` or `-R` options) are highly dependent on the presence of a valid and up-to-date index for optimal performance.


title: EXPRESSION LANGUAGE
content:
Many <I>bcftools</I> subcommands, such as `filter` and `view`, utilize a powerful and flexible expression language. This allows users to select or exclude variants based on various criteria derived from annotations (INFO fields), genotype information (FORMAT fields), or other VCF fields. This robust filtering capability is essential for quality control and selecting specific subsets of variants for downstream analysis.


title: HISTORY
content:
<I>bcftools</I> originated as part of the <I>samtools</I> project, initially developed by Heng Li. It started as the variant calling and processing functionalities within `samtools`, evolving from features like `pileup` and `call`. As the scope and complexity of variant data analysis grew, it was separated into its own dedicated suite of tools for VCF and BCF files. This allowed for more focused development and optimization for variant manipulation, while remaining tightly integrated with the core <I>HTSlib</I> library. It continues to be actively developed and maintained by the HTSlib community.


title: PARAMETERS
content:
<b>-nodekey <file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the file containing the node's private key. If not provided, a temporary key will be generated and stored in the data directory.<br><br><b>-nodekeyhex <hex></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the node's private key directly in hexadecimal format. This option overrides <B>-nodekey</B>.<br><br><b>-addr <ip:port></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the listening address (IP and UDP port) for the discovery service. Default is <I>:[30301]</I>.<br><br><b>-nat <ext_ip:port> | <any></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables NAT traversal. <I>ext_ip:port</I> specifies the external IP and port, or <I>any</I> for automatic detection of the external address.<br><br><b>-verbosity <level></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the logging verbosity level (0=silent, 1=error, 2=warn, 3=info, 4=debug, 5=trace). Default is <I>3</I> (info).<br><br><b>-maxpeers <num></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the maximum number of peers the discovery node will attempt to track or communicate with.<br><br><b>-writeaddress</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Writes the node's <B>enode URL</B> to a file named <I>enode</I> within the data directory.<br><br><b>-datadir <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the data directory for the node. Used to store the node key if <B>-nodekey</B> is not specified.<br><br><b>-timeout <duration></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets a timeout for various discovery protocol operations, e.g., <I>30s</I>.<br><br><b>-version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the <I>bootnode</I> version and exits.<br><br><b>-help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the help message and exits.<br><br>


title: DESCRIPTION
content:
The <I>bootnode</I> command provides a standalone implementation of the Ethereum P2P network discovery protocol. Its primary purpose is to act as a bootstrap node, helping other Ethereum clients (like <I>Geth</I>) find initial peers on the network. <br><br>Unlike a full Ethereum client, <I>bootnode</I> does not process transactions, mine blocks, or store blockchain data. Instead, it listens on a UDP port for discovery requests and responds with information about other known peers. This mechanism is crucial for the initial peer discovery phase, allowing new or restarting nodes to quickly connect to the network without needing a hardcoded list of all possible peers. <br><br>It is an essential component, especially when setting up private Ethereum networks, where a dedicated discovery service ensures that all participating nodes can easily find and connect to each other. <I>bootnode</I> is part of the <I>go-ethereum</I> client suite.


title: CAVEATS
content:
<b>No Blockchain State:</b> <I>bootnode</I> does not maintain any blockchain data, validate transactions, or mine blocks. It is purely for peer discovery.<br><br><b>Security of Node Key:</b> The node's private key (specified via <B>-nodekey</B> or <B>-nodekeyhex</B>) is sensitive and should be protected. If lost or compromised, the node's identity on the network may be affected.<br><br><b>Network Configuration:</b> For successful operation, the specified UDP port (via <B>-addr</B>) must be open and accessible from other nodes, often requiring proper firewall configuration and correct NAT setup.


title: ENODE URL
content:
An <B>enode URL</B> is the unique identifier for an Ethereum node on the network. It follows the format <I>enode://<node_id>@<ip_address>:<port></I>. The <B><node_id></B> is derived from the node's public key (part of the nodekey). Other Ethereum clients use this URL to connect to the bootnode as an initial peer. When <I>bootnode</I> starts, it prints its enode URL to the console, and it can also be written to a file using the <B>-writeaddress</B> option.


title: USAGE IN PRIVATE NETWORKS
content:
For private or consortium Ethereum networks, one or more <I>bootnode</I> instances are typically set up to serve as the exclusive peer discovery service for that specific network. This ensures that only nodes configured to use these bootnodes can join the private network, providing a controlled environment for blockchain operations. The enode URLs of these bootnodes are then provided to all participating Geth clients via the <B>--bootnodes</B> command-line option.


title: HISTORY
content:
The <I>bootnode</I> command has been an integral part of the <I>go-ethereum</I> (Geth) project since its early days. It was developed to address the fundamental need for robust peer discovery within the Ethereum network. As the network grew and the complexity of peer-to-peer communication increased, a dedicated and reliable discovery service became essential. <I>bootnode</I>'s role has remained consistent: to provide a stable initial point of contact for new nodes joining the network, thereby facilitating seamless connectivity and network resilience. Its development closely tracks the evolution of the Ethereum P2P protocol.


title: SYNOPSIS
content:
<pre><b>clef</b> [<i>global options</i>] {<i>command</i>} [<i>command options</i>]</pre><i>Common invocation as a daemon:</i><pre><b>clef</b> <b>--keystore</b> <i>/path/to/keystore</i> <b>--chainid</b> <i>N</i> <b>--rpc</b> <b>--rpcport</b> <i>8550</i> <b>--rpcaddr</b> <i>127.0.0.1</i></pre><i>To manage accounts:</i><pre><b>clef</b> <b>account</b> <b>new</b></pre><i>To get help:</i><pre><b>clef</b> <b>--help</b><br><b>clef</b> <i>command</i> <b>--help</b></pre>


title: PARAMETERS
content:
<b>--config &lt;path&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a configuration file for <b>clef</b> settings.<br><br><b>--keystore &lt;directory&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Required.</i> Sets the directory where encrypted private keys are stored.<br><br><b>--chainid &lt;N&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Required.</i> Specifies the Ethereum network chain ID for transaction signing.<br><br><b>--rpc</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables the RPC server for <b>clef</b> to accept incoming requests.<br><br><b>--rpcport &lt;port&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the port number on which the RPC server listens (default: 8550).<br><br><b>--rpcaddr &lt;IP&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the IP address the RPC server binds to (default: 127.0.0.1).<br><br><b>--allow-origin &lt;url&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the Access-Control-Allow-Origin header for RPC requests.<br><br><b>--policy &lt;path&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides the path to the Javascript policy file for transaction signing rules.<br><br><b>--lightscrypt-scryptn &lt;N&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adjusts the ScryptN parameter for key derivation, impacting security/performance tradeoffs.<br><br><b>--dev</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Runs <b>clef</b> in developer mode, often with simplified security prompts.<br><br><b>--nousb</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables support for hardware wallets (e.g., Ledger, Trezor).<br><br><b>--passphrase &lt;password&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides a passphrase to unlock accounts non-interactively (use with caution in production).<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the <b>clef</b> client version and exits.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays help information for <b>clef</b> or a specific command.<br><br><b>account</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Subcommand.</i> Manages Ethereum accounts within <b>clef</b>'s keystore (e.g., `new`, `list`, `import`).<br><br><b>attach</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Subcommand.</i> Connects to a running <b>clef</b> instance via RPC or IPC for interactive console access.<br><br><b>chain</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Subcommand.</i> Manages chain-specific settings or information within <b>clef</b>.<br><br>


title: DESCRIPTION
content:
<b>clef</b> is an integral part of the Go-Ethereum (Geth) client ecosystem, designed as an <i>external signer</i> for managing and signing Ethereum transactions securely. It operates as a separate process, decoupling private key management and transaction signing from the main Ethereum node. This separation significantly enhances security by preventing the main node, which might be exposed to the network, from directly accessing sensitive private keys.<br><br><b>clef</b> maintains its own keystore, where Ethereum accounts and their private keys are encrypted and stored. When a transaction needs to be signed, the main Ethereum client (or any other dApp) sends the unsigned transaction data to <b>clef</b> via its RPC interface. <b>clef</b> then applies its configured policies, potentially prompts the user for confirmation (e.g., via a UI or console), and if approved, signs the transaction with the appropriate private key. The signed transaction is then returned to the client for broadcast to the Ethereum network.<br><br>Beyond basic signing, <b>clef</b> features a powerful policy engine that allows users to define granular rules for transaction approval, such as limits on gas prices, transaction values, or recipient addresses. It also supports hardware wallets and various account management functionalities, making it a robust solution for secure key management in the Ethereum space.


title: CAVEATS
content:
<b>clef</b> significantly enhances security by isolating private keys, but its effectiveness depends on proper configuration. Misconfigurations, especially concerning RPC access (`--rpcaddr`, `--allow-origin`), could expose the signing service to unauthorized access. The policy engine, while powerful, requires careful scripting in JavaScript; an incorrect or poorly written policy could lead to unintended transaction approvals or rejections. Users must secure the keystore directory and manage account passphrases diligently, as `clef` itself does not protect against a compromised operating system.


title: POLICY ENGINE
content:
<b>clef</b> incorporates a sophisticated policy engine that allows users to define custom rules for transaction signing. These rules are written in JavaScript and are executed by <b>clef</b> before any transaction is signed. Policies can dictate conditions such as maximum gas price, allowed recipients, value limits, or even require manual confirmation for certain transaction types. This provides a highly flexible and secure way to control how and when <b>clef</b> signs transactions, acting as a programmable firewall for your private keys.


title: RPC INTERFACE
content:
<b>clef</b> exposes a JSON-RPC over HTTP/IPC interface, enabling other applications (like <b>geth</b>, dApps, or custom scripts) to interact with it. Clients can send requests to <b>clef</b> to list accounts, sign transactions, or manage policies. This standardized interface makes <b>clef</b> interoperable with a wide range of tools and clients in the Ethereum ecosystem, facilitating secure remote signing without compromising key security.


title: HISTORY
content:
<b>clef</b> was introduced as part of the broader Go-Ethereum (Geth) project with the primary goal of improving the security posture of Ethereum clients. Prior to <b>clef</b>, main Geth nodes typically held and managed private keys directly, making them a single point of failure if the node's security was compromised. <b>clef</b> emerged as a dedicated, standalone signing service, allowing the separation of concerns: Geth handles blockchain synchronization and transaction broadcasting, while <b>clef</b> focuses solely on secure key management and transaction signing. This architectural shift reflected a growing emphasis on enterprise-grade security and the need for robust key management solutions in the evolving blockchain landscape.


title: PARAMETERS
content:
<b>--config value, -c value</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Specify the path to the configuration file</I>. Default is typically <i>/etc/containerd/config.toml</i>.<br><br><b>--root value</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Set the root directory for containerd state</I>. This stores persistent data like images. Default is often <i>/var/lib/containerd</i>.<br><br><b>--state value</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Set the state directory for containerd runtime data</I>. This stores volatile runtime data. Default is often <i>/run/containerd</i>.<br><br><b>--address value, -a value</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Define the address for the containerd gRPC API socket</I>. Default is usually <i>/run/containerd/containerd.sock</i>.<br><br><b>--metrics-address value</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Specify the address to expose Prometheus metrics</I> for monitoring <b>containerd</b>'s performance.<br><br><b>--log-level value</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Set the level of logging detail</I> for <b>containerd</b> (e.g., debug, info, warn, error). Default is <i>info</i>.<br><br><b>--help, -h</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Display help information</I> for the <b>containerd</b> command or a specific subcommand.<br><br><b>--version, -v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<I>Print the version</I> of the <b>containerd</b> daemon currently installed.<br><br>


title: DESCRIPTION
content:
<b>containerd</b> is an industry-standard, <I>open-source container runtime</I> that manages the complete container lifecycle of its host system. It was originally a component of Docker and was later donated to the Cloud Native Computing Foundation (CNCF). <b>containerd</b> handles image transfer and storage, container execution, supervision, and low-level storage and network attachment. It provides a robust, stable, and extensible platform for managing containers.<br><br>While often running silently in the background, <b>containerd</b> serves as the core component for popular container orchestrators like <I>Kubernetes</I> and container engines like <I>Docker</I>. It abstracts away the complexities of interacting with the underlying operating system and OCI (Open Container Initiative) runtimes (like <b>runc</b>), providing a high-level API over gRPC for managing containers. Developers and operators typically interact with <b>containerd</b> through higher-level tools like <b>docker</b> or <b>nerdctl</b>, rather than directly. Its focus on stability, performance, and OCI compliance makes it a fundamental building block in modern containerized environments.


title: CAVEATS
content:
<b>containerd</b> is primarily a <I>daemon process</I> designed for programmatic interaction via its gRPC API, not direct command-line usage by end-users for daily container operations. Most users interact with it indirectly through higher-level tools like <i>docker</i>, <i>kubelet</i>, or <i>nerdctl</i>.<br><br>Its configuration, often handled via <i>/etc/containerd/config.toml</i>, can be complex and requires a good understanding of container runtimes. Debugging direct <b>containerd</b> issues often requires examining logs, inspecting its internal state, or using low-level tools like <i>ctr</i> (the containerd CLI) or <i>nerdctl</i>.


title: DAEMON OPERATION
content:
<b>containerd</b> typically runs as a <I>long-running daemon process</I>, usually managed by a service manager like <i>systemd</i>. It listens for gRPC requests on a Unix socket (default <i>/run/containerd/containerd.sock</i>) or a TCP port, handling container lifecycle events.


title: CONFIGURATION FILE
content:
The primary configuration for <b>containerd</b> is done via the <i>/etc/containerd/config.toml</i> file. This TOML-formatted file allows specifying various settings, including plugin configurations, runtime options, CGroup drivers, and snapshotter details.


title: RUNTIME SHIMS
content:
<b>containerd</b> utilizes <I>runtime shims</I> (like <i>containerd-shim</i>) to manage container processes. These shims provide a stable supervisor for each container, decoupling the container's lifecycle from the main <b>containerd</b> daemon, enhancing robustness and isolation.


title: HISTORY
content:
<b>containerd</b> originated as a core component within the <I>Docker engine</I>. Recognizing the need for a standardized, pluggable container runtime that could serve a broader ecosystem, Docker Inc. <I>donated containerd to the Cloud Native Computing Foundation (CNCF)</I> in March 2017. This move aimed to foster greater collaboration and solidify <b>containerd</b>'s role as a robust, industry-standard runtime. It has since progressed through the CNCF incubation process and achieved <I>graduated status</I>, signifying its maturity, widespread adoption, and a thriving community. Its development has consistently focused on OCI compliance, stability, and providing a clean, minimal interface for managing containers.


title: SYNOPSIS
content:
disable [ -E ] [ -U <i>username</i> ] [ -c ] [ -h <i>hostname[:port]</i> ] [ -r <i>reason</i> ] <i>printer</i>


title: PARAMETERS
content:
<b>-E</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Forces encryption when connecting to the CUPS server.</i><br><br><b>-U <i>username</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specifies the username to authenticate with the CUPS server.</i><br><br><b>-c</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Disables all printers on the CUPS server simultaneously.</i><br><br><b>-h <i>hostname[:port]</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Connects to a specific CUPS server at the given hostname and optional port.</i><br><br><b>-r <i>reason</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Provides a reason for disabling the printer, which is logged and visible to users.</i><br><br><b><i>printer</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>The name of the printer or class to be disabled. This is a mandatory argument.</i><br><br>


title: DESCRIPTION
content:
The <b>disable</b> command is a utility provided by the Common Unix Printing System (CUPS) for managing print queues on Linux and other Unix-like operating systems. Its primary function is to halt a specified printer or printer class from accepting any new print jobs. When a printer is disabled, any print jobs currently in its queue or actively being processed will continue to completion without interruption. However, no new jobs sent to this printer will be added to its queue; they will typically remain pending or report an error to the user depending on the client application's configuration. This command is an essential tool for system administrators to perform maintenance tasks, troubleshoot printer issues, or temporarily take a printer offline without losing existing print tasks. For instance, an administrator might disable a printer to replace toner, clear a paper jam, or install a driver update. To restore the printer's functionality and allow it to accept new jobs, the complementary <b>enable</b> command must be used. Proper use of <b>disable</b> requires administrative privileges, usually root access or membership in a CUPS administrative group, as it modifies the operational state of a system-wide service. It communicates directly with the CUPS daemon (<i>cupsd</i>) to update the printer's status.


title: CAVEATS
content:
<i>Administrative Privileges:</i> This command typically requires root access or appropriate CUPS administrative permissions to modify printer states. <br><i>Existing Jobs Continue:</i> Disabling a printer only prevents new jobs; existing jobs in the queue will still be processed. <br><i>Re-enable Requirement:</i> A disabled printer will not accept new jobs until explicitly re-enabled using the <b>enable</b> command. <br><i>CUPS Daemon:</i> The CUPS daemon (<i>cupsd</i>) must be running for the command to function correctly.


title: COMMON USE CASES
content:
<i>Administrators frequently use <b>disable</b> during maintenance routines such as refilling ink/toner, clearing paper jams, performing hardware checks, or updating printer drivers. It's crucial for preventing print jobs from being sent to a printer that is temporarily unavailable or malfunctioning.</i>


title: USER NOTIFICATION
content:
<i>When a printer is disabled, users attempting to send jobs to it might experience delays, job queuing (pending), or error messages, depending on their client operating system and application. The `-r` option helps communicate the reason for the disablement to users or other administrators.</i>


title: HISTORY
content:
<i>The Common Unix Printing System (CUPS) was initially developed by Easy Software Products, with its first public release in 1999. Apple Inc. acquired Easy Software Products in 2007 and has since maintained CUPS. The <b>disable</b> command has been a fundamental utility within the CUPS suite from its early stages, providing administrators with essential control over printer operations. It streamlined printer management in Unix environments, moving away from older, often more complex printing systems like LPR/LPRng, by offering a standardized and network-centric approach to print services. Its design reflects the need for robust administrative tools to manage network printers efficiently.</i>


title: PARAMETERS
content:
<b>-a, --all</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all detected hardware components without filtering.<br><br><b>-v, --verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Increases the verbosity of the output, providing more detailed information.<br><br><b>-q, --quiet</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reduces the verbosity of the output, showing only essential information.<br><br><b>-x, --xml</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs the hardware information in XML format, suitable for machine parsing.<br><br><b>-p, --pretty</b><br>&nbsp;&nbsp;&nbsp;&nbsp;When used with --xml, pretty-prints the XML output for better readability.<br><br><b>-C <class>, --class <class></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filters the output to only show devices belonging to a specified class (e.g., `net`, `disk`, `pci`, `usb`).<br><br><b>-D <device>, --device <device></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filters the output to show information for a specific device name (e.g., `eth0`).<br><br><b>-o <os>, --os <os></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Behaves as if running on a specified operating system (e.g., `linux`, `freebsd`).<br><br><b>-V, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version information for the <b>discover</b> command.<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows a help message with available options and usage.<br><br>


title: DESCRIPTION
content:
The <b>discover</b> command is a hardware detection utility primarily used in <I>Debian-based Linux distributions</I> (provided by the `discover1` package). It plays a crucial role in identifying various hardware components of a system, such as network interfaces, storage devices, PCI devices, USB devices, and more. This information is vital during system installation, configuration, and troubleshooting to ensure the correct drivers and kernel modules are loaded and properly configured.<br><br><b>discover</b> works by querying the kernel and various system interfaces to build a comprehensive list of detected hardware. Its output can be consumed by other scripts and tools, particularly during the `debconf` setup phase of Debian installations, to automate the configuration of hardware-dependent packages. While newer and more general-purpose hardware listing tools exist, <b>discover</b> historically provided a tailored approach for Debian's specific needs, helping to make the installation process smoother and more automated for a wide range of hardware.


title: CAVEATS
content:
The <b>discover</b> command is primarily a Debian/Ubuntu-specific utility and may not be found or have the same functionality on other Linux distributions. Its direct use by end-users for general hardware querying has somewhat diminished with the rise of more universally available and frequently updated tools like `lshw`, `lspci`, and `lsusb`, which often provide more comprehensive or up-to-date hardware details. Its primary legacy strength lies in its integration within Debian's installation and configuration processes.


title: ROLE IN SYSTEM AUTOMATION
content:
Beyond manual use, <b>discover</b>'s ability to output hardware information in machine-readable formats (like XML) makes it valuable for <I>scripted automation</I>. System administrators and developers can parse its output to dynamically adapt system configurations based on detected hardware, which is particularly useful in large-scale deployments or custom installation environments.


title: HISTORY
content:
The <b>discover</b> utility gained prominence in the early 2000s, especially within the <I>Debian project</I>, as a robust tool for automatic hardware detection during system installation. Its development was driven by the need to simplify the often complex process of identifying and configuring hardware components for users, ensuring the correct kernel modules and drivers were loaded. It was deeply integrated into Debian's `debconf` system, facilitating scripted and automated installations across a wide variety of hardware. While its direct relevance for manual user queries has been superseded by more modern and generic tools, it remains an important historical component of Debian's approach to hardware configuration.


title: DESCRIPTION
content:
The <b>gemtoppm</b> command is a specialized utility within the extensive Netpbm image manipulation toolkit. Its primary function is to convert image files created by the GEM (Graphics Environment Manager) desktop environment into the Netpbm Portable Pixmap (PPM) format. GEM was a popular graphical user interface in the 1980s and early 1990s, particularly on systems like the Atari ST, Amiga, and early PC compatibles.<br><br>While GEM images stored in the <i>.IMG</i> format often contained various data types, <b>gemtoppm</b> specifically targets and processes the bitmap image data. The resulting PPM file can then be easily manipulated by other Netpbm tools or converted to a wide array of different image formats, integrating older GEM content into modern workflows. It serves as a crucial bridge for preserving and utilizing legacy graphics.


title: CAVEATS
content:
<b>gemtoppm</b> has a significant limitation: it can only process monochrome (1-bit deep) GEM image files. If a GEM <i>.IMG</i> file contains color information, <b>gemtoppm</b> will not be able to correctly interpret or convert it, potentially leading to errors or corrupted output. Users should ensure their GEM input files are strictly black and white bitmaps.


title: INPUT/OUTPUT BEHAVIOR
content:
If no <i>gemfile</i> is specified, <b>gemtoppm</b> reads the GEM image data from standard input. The converted PPM image is always written to standard output. This allows for flexible piping with other commands, such as `cat old.img | gemtoppm > new.ppm`.


title: HISTORY
content:
The <b>gemtoppm</b> utility is part of the Netpbm project, a comprehensive set of graphics tools with roots in the original Pbmplus package developed by Jef Poskanzer in the late 1980s. Netpbm continued to evolve, integrating and expanding upon these initial tools. <b>gemtoppm</b>'s inclusion reflects the project's dedication to interoperability and its ability to handle a vast array of historical and contemporary image formats. Its existence is particularly relevant to the era when GEM was a prominent graphical environment on various personal computers, making it a tool for legacy data migration and preservation.


title: PARAMETERS
content:
<b>-o <i>&lt;dir&gt;</i>, --output-directory <i>&lt;dir&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output directory where the HTML reports will be generated.<br><br><b>-t <i>&lt;title&gt;</i>, --title <i>&lt;title&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the title for the generated HTML pages.<br><br><b>-s, --show-details</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Includes detailed information for functions and branches in the report.<br><br><b>-p <i>&lt;path&gt;</i>, --prefix <i>&lt;path&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes a specified path prefix from source filenames before display.<br><br><b>--no-source</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents the inclusion of source code in the generated HTML files.<br><br><b>--no-function-coverage</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Excludes function coverage data from the report.<br><br><b>--no-branch-coverage</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Excludes branch coverage data from the report.<br><br><b>--list-full-path</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the full path to source files in the coverage summary.<br><br><b>--frames</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates the HTML report using an old-style HTML frameset layout. This is often deprecated.<br><br><b>--no-frames</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates the report without using HTML frames (modern default behavior).<br><br><b>--config-file <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative configuration file to use.<br><br><b>--rc <i>&lt;key&gt;</i>=<i>&lt;value&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Overrides specific configuration file values directly from the command line.<br><br><b>--quiet</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses progress output during report generation.<br><br><b>--verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, showing more details about the generation process.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the <b>genhtml</b> version information.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message with available options.<br><br>


title: DESCRIPTION
content:
<b>genhtml</b> is a command-line tool used to convert LCOV tracefiles into a user-friendly HTML view of code coverage. It processes one or more LCOV tracefiles, which typically contain information about which lines, functions, and branches of source code were executed during a test run. The tool then generates a hierarchical set of HTML pages, including an overall coverage summary, per-directory statistics, and detailed per-file coverage. For individual source files, <b>genhtml</b> adds color-coding to highlight executed, partially executed, or uncovered lines, functions, and branches, making it easy to visually identify areas of code that lack test coverage. This output is invaluable for developers and QA teams to assess the effectiveness of their test suites and identify areas requiring more robust testing. The generated reports are self-contained and can be viewed in any web browser.


title: CAVEATS
content:
Some modern browsers might have issues displaying HTML reports generated with the <i>--frames</i> option due to deprecated frame technology.<br>Large projects might generate very extensive reports that can be slow to navigate or load in browsers, and require significant disk space.<br>Paths to source files must be correctly resolvable from the machine where <b>genhtml</b> is run, or adjusted using the <i>--prefix</i> option.


title: USAGE WITH LCOV TRACEFILES
content:
<b>genhtml</b> typically takes one or more <i>LCOV</i> tracefiles as input. These files are usually generated by the <i>lcov</i> command itself after compiling code with GCOV instrumentation and running tests. Multiple tracefiles can be merged or processed individually, allowing for combined reports from different test runs or modules.


title: CONFIGURATION
content:
<b>genhtml</b>'s behavior can be customized via a global configuration file (e.g., <i>/etc/lcovrc</i>) and a user-specific file (<i>~/.lcovrc</i>). Command-line options like <i>--config-file</i> and <i>--rc</i> allow for overriding these settings, providing flexible control over report generation.


title: HISTORY
content:
<b>genhtml</b> is an integral part of the <i>LCOV</i> project, which was originally developed by Suse for use with the Linux kernel. It has evolved over time to provide comprehensive code coverage reporting for various C/C++ projects, adapting to new web standards for its HTML output while maintaining compatibility with the core <i>LCOV</i> tracefile format.


title: PARAMETERS
content:
<b><b>-c</b>, <b>--clean</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Delete all generated tag files (GTAGS, GRTAGS, GPATH, etc.) in the current project root.<br><br><b><b>-i</b>, <b>--incremental</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Update tag files incrementally. This is generally faster for small changes, updating only modified records.<br><br><b><b>-u</b>, <b>--update</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Update tag files. Similar to <b>--incremental</b>, but can re-scan more thoroughly if needed.<br><br><b><b>-f</b> <i>&lt;file&gt;</i>, <b>--file</b> <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Read file names to be processed from <i>&lt;file&gt;</i> instead of scanning the directory or standard input.<br><br><b><b>-P</b> <i>&lt;path&gt;</i>, <b>--path</b> <i>&lt;path&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the project root directory. If not specified, <i>gtags</i> assumes the current directory as the root.<br><br><b><b>-v</b>, <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable verbose output, showing more details about the tagging process.<br><br><b><b>-q</b>, <b>--quiet</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppress warning and error messages during the tagging process.<br><br><b><b>--exclude</b> <i>&lt;pattern&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Exclude files or directories matching the specified <i>&lt;pattern&gt;</i> from being parsed. Can be used multiple times.<br><br><b><b>--gtagsconf</b> <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify an alternative configuration file for <i>gtags</i> instead of the default <i>gtags.conf</i>.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display version information and exit.<br><br><b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a help message and exit.<br><br>


title: DESCRIPTION
content:
<i>gtags</i> is a crucial component of GNU GLOBAL, a powerful source code tag system. Its primary function is to create a set of tag files (GTAGS, GRTAGS, GPATH, and optionally GSHTAGS) within a source code directory. These files act as an index, enabling rapid navigation and information retrieval about symbols, functions, and variables across an entire project. It works by parsing source files in various programming languages, including C, C++, Java, Python, PHP, and Ruby, to build a comprehensive database of symbol definitions and references. This database is then utilized by the <i>global</i> command-line tool, editor plugins, and other frontends to quickly jump to definitions, find all references to a symbol, or list files containing specific patterns. <i>gtags</i> is highly configurable, allowing users to specify which files to process, ignore certain directories, and even extend its capabilities to new languages or parsing rules, making it an indispensable tool for efficiently exploring and understanding large codebases.


title: CAVEATS
content:
<ul><li><b>Parsing Accuracy:</b> While <i>gtags</i> supports many languages, its parsing is primarily lexical. It may not always fully understand complex semantic constructs, potentially leading to minor inaccuracies compared to full compiler-based analysis.<br></li><li><b>Resource Usage:</b> For extremely large codebases, the initial tag generation can be resource-intensive in terms of CPU, memory, and disk space. Incremental updates (<b>-i</b>) significantly reduce this for subsequent runs.<br></li><li><b>Configuration Dependency:</b> Optimal performance and accurate tag generation often depend on a well-configured <i>gtags.conf</i> file, especially for projects with custom file extensions, unique directory structures, or specific exclusion requirements.</li></ul>


title: ENVIRONMENT VARIABLES
content:
<ul><li><b>GTAGSROOT:</b> Specifies the project root directory where tag files are expected or created if not the current working directory.<br></li><li><b>GTAGSCONF:</b> Defines the path to the <i>gtags.conf</i> configuration file, overriding default locations.<br></li><li><b>GTAGSLABEL:</b> Specifies the label of the configuration to use within <i>gtags.conf</i>, allowing for project-specific settings.<br></li><li><b>GTAGSOBJDIR:</b> Specifies an alternative directory where tag files should be created, useful for keeping source directories clean.</li></ul>


title: CONFIGURATION FILE (<I>GTAGS.CONF</I>)
content:
The <i>gtags.conf</i> file is central to customizing <i>gtags</i>' behavior. It typically defines:<br><ul><li><b>Parsers:</b> Specifies which parser to use for different file extensions and how to handle various programming languages.<br></li><li><b>Exclusions:</b> Lists directories and file patterns to ignore during tag generation.<br></li><li><b>Language-specific Settings:</b> Allows fine-tuning of parsing rules for supported languages.<br></li><li><b>Tool paths:</b> Can define paths to external tools used by <i>gtags</i>.</li></ul>It is usually found in `/etc/gtags.conf` or `~/.globalrc`, but can be overridden by <b>GTAGSCONF</b>.


title: GENERATED TAG FILES
content:
<i>gtags</i> creates several files to store its index information:<br><ul><li><b>GTAGS:</b> Contains definitions of symbols (functions, variables, macros, etc.).<br></li><li><b>GRTAGS:</b> Stores references to symbols, linking usages back to their definitions.<br></li><li><b>GPATH:</b> Lists all source file pathnames included in the project.<br></li><li><b>GSHTAGS:</b> (Optional) Used for shell command history tags, often generated when using cscope compatibility scripts.<br></li><li><b>GTAGSLOG:</b> A log file used to track changes for incremental updates.</li></ul>


title: HISTORY
content:
GNU GLOBAL was originally developed by Shigio Yamaguchi in 1993 with the goal of creating a language-independent and highly efficient source code tag system. <i>gtags</i>, as its core component, was designed to build a persistent, fast-access symbol database for various programming languages. Unlike older tag tools often tied to C, GLOBAL aimed for broader applicability and extensibility. Over the decades, it has evolved to support a wide array of languages and has been integrated into numerous developer workflows, particularly favored for its speed and reliability in large software projects and text editor environments like Vim and Emacs.


title: SYNOPSIS
content:
<b><code>gvpr</code></b> <i>[options]</i> <i>[-f scriptfile | scriptstring]</i> <i>[files...]</i><br>Example:<br><i><code>gvpr -f myscript.gvpr input.dot -o output.dot</code></i><br><i><code>gvpr 'N[color=="red"]{$.color="blue"}' input.dot</code></i>


title: PARAMETERS
content:
<b>-f <i>scriptfile</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a file containing the gvpr script to be executed.<br><br><b><i>scriptstring</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A gvpr script provided directly on the command line, enclosed in quotes.<br><br><b>-o <i>outfile</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Writes the output graph to the specified <i>outfile</i> instead of standard output.<br><br><b>-a</b><br>&nbsp;&nbsp;&nbsp;&nbsp;If set, the output will only contain graph attributes, not the graph structure.<br><br><b>-c</b><br>&nbsp;&nbsp;&nbsp;&nbsp;When a node or edge is copied from one graph to another, its attributes are also copied. If an attribute has already been defined in the target graph, it is normally left unchanged. If the <i>-c</i> flag is set, the input attribute will overwrite any pre-existing attribute.<br><br><b>-e</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Exits on the first semantic error encountered during script execution.<br><br><b>-l</b><br>&nbsp;&nbsp;&nbsp;&nbsp;When processing subgraphs, generates the boolean variable <code>l_g</code> for internal use.<br><br><b>-m</b><br>&nbsp;&nbsp;&nbsp;&nbsp;When processing subgraphs, generates the boolean variable <code>m_g</code> for internal use.<br><br><b>-r</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Operates on the reverse graph. This means edges are traversed in the opposite direction for processing.<br><br><b>-U</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enforces strict graphs, meaning multiple edges between the same two nodes are treated as a single edge.<br><br><b>-v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, printing information about script execution and graph processing.<br><br><b>-V <i>N</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the verbosity level to <i>N</i> (0-5). Higher values provide more detailed output.<br><br><b>-?</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints a usage message and exits.<br><br>


title: DESCRIPTION
content:
gvpr is a powerful, <b>AWK-like processor</b> designed for manipulating and analyzing graphs specified in the Graphviz <b>DOT language</b>. It acts as a graph stream editor, allowing users to apply sophisticated scripts to filter, transform, or extract information from graph data. Inspired by the awk utility, gvpr operates on graphs by executing user-defined actions when specific graph elements (nodes, edges, or the graph itself) match certain patterns.<br><br>A gvpr script typically consists of blocks such as BEGIN, NODE, EDGE, GRAPH, and END, each with a pattern (optional) and an associated action. When gvpr processes an input graph, it sequentially evaluates these blocks. For instance, an EDGE block's action will execute for every edge in the graph that satisfies its pattern. This allows for fine-grained control over graph elements, enabling tasks like modifying attributes, adding or deleting nodes/edges, computing graph metrics, or generating subgraphs based on complex criteria. It's an essential tool for advanced graph processing within the Graphviz ecosystem.


title: CAVEATS
content:
gvpr's power comes with a learning curve. Users need a solid understanding of the <b>DOT language</b> and basic <b>graph theory concepts</b>. The scripting language itself, while AWK-like, introduces graph-specific patterns and actions, requiring familiarity with its unique syntax and built-in functions. Debugging complex gvpr scripts can also be challenging due to the intricate interactions between patterns and graph elements. Incorrectly written scripts can lead to unexpected graph modifications or performance issues on large datasets.


title: SCRIPT STRUCTURE
content:
A gvpr script is composed of BEGIN, NODE, EDGE, GRAPH, and END blocks, each optionally containing a pattern and an action.<br><br><b><code>BEGIN { actions }</code></b>: Executed once before any graphs are processed. Ideal for initialization.<br><b><code>NODE [<i>pattern</i>] { actions }</code></b>: Executed for every node that matches the optional <i>pattern</i>.<br><b><code>EDGE [<i>pattern</i>] { actions }</code></b>: Executed for every edge that matches the optional <i>pattern</i>.<br><b><code>GRAPH [<i>pattern</i>] { actions }</code></b>: Executed for every graph (or subgraph) that matches the optional <i>pattern</i>.<br><b><code>END { actions }</code></b>: Executed once after all graphs have been processed. Ideal for final reporting or cleanup.


title: BUILT-IN VARIABLES
content:
gvpr provides several built-in variables to access properties of the current graph element (node, edge, or graph):<br><br><b><code>$</code></b>: The current graph element (node, edge, or graph).<br><b><code>$.name</code></b>: The name of the current node or graph.<br><b><code>$.head</code></b>: The head node of the current edge.<br><b><code>$.tail</code></b>: The tail node of the current edge.<br><b><code>$.type</code></b>: The type of the current element (e.g., <code>N_node</code>, <code>N_edge</code>, <code>N_graph</code>).<br><b><code>$.indegree</code></b>, <b><code>$.outdegree</code></b>, <b><code>$.degree</code></b>: In-degree, out-degree, and total degree of the current node.<br><b><code>$.n_nodes</code></b>, <b><code>$.n_edges</code></b>: Number of nodes and edges in the current graph.<br>Attributes of the current element can be accessed directly, e.g., <b><code>$.color</code></b>, <b><code>$.label</code></b>.


title: KEY FUNCTIONS
content:
gvpr offers various built-in functions for graph manipulation and queries:<br><br><b><code>subg(<i>graph</i>, <i>nodes</i>, <i>edges</i>)</code></b>: Returns a subgraph induced by a set of nodes and/or edges.<br><b><code>clone(<i>element</i>)</code></b>: Creates a copy of a graph element.<br><b><code>delete(<i>element</i>)</code></b>: Removes a graph element from its graph.<br><b><code>print(<i>value</i>)</code></b>: Prints a value to standard output.<br><b><code>sprintf(<i>format</i>, ...)</code></b>: Formats and returns a string (like C's <code>sprintf</code>).<br><b><code>isdirected(<i>graph</i>)</code></b>: Returns true if the graph is directed.<br><b><code>issubg(<i>graph</i>)</code></b>: Returns true if the graph is a subgraph.


title: HISTORY
content:
gvpr originated as part of the <b>Graphviz</b> project, developed primarily by <b>AT&T Labs Research</b>. Its creation addressed the need for a programmatic way to manipulate and query graph structures defined in the DOT language, going beyond simple attribute modifications. The design was heavily influenced by the awk utility, aiming to bring its powerful pattern-action processing model to the domain of graph data. This allowed Graphviz users to perform complex graph transformations, filtering, and analysis tasks that would otherwise require writing custom programs in general-purpose languages. Over time, gvpr has evolved as a robust and integral component of the Graphviz ecosystem, enabling more sophisticated graph visualization and analysis workflows.


title: SYNOPSIS
content:
<b>imgtool</b> <I>[GLOBAL_OPTIONS]</I> <I>COMMAND</I> <I>[COMMAND_OPTIONS]</I> <I>[ARGS]</I><br><br>Common commands:<br><b>imgtool sign</b> <I>INPUT_FILE</I> <I>OUTPUT_FILE</I> --key <I>KEY_FILE</I> <I>[OPTIONS]</I><br><b>imgtool gen</b> <I>INPUT_FILE</I> <I>OUTPUT_FILE</I> --key <I>KEY_FILE</I> <I>[OPTIONS]</I><br><b>imgtool verify</b> <I>IMAGE_FILE</I><br><b>imgtool getpub</b> --key <I>KEY_FILE</I> --<I>PEM_OUTPUT_FILE</I><br><b>imgtool manifest</b> <I>SUBCOMMAND</I> <I>[ARGS]</I>


title: PARAMETERS
content:
<b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display help message and exit for <b>imgtool</b> or a specific subcommand.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show program's version number and exit.<br><br><b>COMMAND</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The subcommand to execute (e.g., <I>sign</I>, <I>gen</I>, <I>verify</I>, <I>getpub</I>, <I>manifest</I>, <I>key</I>).<br><br><b>--key <I>KEY_FILE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the private key file (PEM or raw) used for signing or generating images.<br><br><b>--header-size <I>SIZE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Size of the image header in bytes (e.g., 0x200). Used by sign/gen.<br><br><b>--align <I>ALIGNMENT</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Image alignment requirement in bytes (e.g., 1, 2, 4, 8, 16). Used by sign/gen.<br><br><b>--pad</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Pad the image to fill the image header. Used with --header-size for sign/gen.<br><br><b>--max-pad <I>SIZE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Pad the image to a maximum size if it's smaller. Used by sign/gen.<br><br><b>--version <I>MAJOR.MINOR.REVISION+BUILD</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the firmware version string for the image. Used by sign/gen.<br><br><b>--dependencies <I>DEPS_FILE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provide a file specifying image dependencies for multi-image updates. Used by sign/gen.<br><br><b>--boot-record <I>SIZE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Size of the boot record in bytes. Used for bootloader-specific padding by sign/gen.<br><br><b>--erase-value <I>VALUE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Value to use for erased flash (e.g., 0xff). Used by sign/gen.<br><br>


title: DESCRIPTION
content:
The <b>imgtool</b> is a specialized command-line utility primarily used within the Zephyr RTOS ecosystem for manipulating firmware images. Its core functionality revolves around creating, signing, and verifying bootable images, essential for secure boot and over-the-air (OTA) update mechanisms in embedded systems. It integrates tightly with bootloaders like MCUboot, ensuring the integrity and authenticity of firmware by applying cryptographic signatures using private keys.<br><br>The tool can generate images from compiled binaries, embed version information, dependencies, and pad images to specific sizes or alignments. It also supports various manifest operations and key management functionalities, making it a critical component for deploying secure and verifiable firmware.


title: CAVEATS
content:
<b>imgtool</b> is a specialized Python-based utility primarily developed for use with the Zephyr RTOS and its associated secure bootloader, MCUboot. It is not a general-purpose Linux disk imaging tool. Its effective use requires an understanding of embedded firmware development, secure boot concepts, and cryptographic key management. Mismanagement of private keys can compromise the security of your embedded devices.<br><br>The tool's functionality and options can vary slightly between different versions and specific Zephyr releases. Users should always consult the official Zephyr documentation for the most accurate and up-to-date information pertaining to their specific development environment.


title: INTEGRATION WITH MCUBOOT
content:
<b>imgtool</b> is specifically designed to generate images compatible with the MCUboot secure bootloader. It adds the necessary header and signature information that MCUboot verifies before booting new firmware, preventing unauthorized or corrupted updates.


title: SECURE BOOT WORKFLOW
content:
The typical workflow involves compiling application code, then using <b>imgtool</b> to sign the resulting binary with a private key. The public key counterpart is embedded in the bootloader. During device startup, the bootloader uses this public key to verify the signature of the new firmware image, only proceeding if the signature is valid.


title: HISTORY
content:
<b>imgtool</b> emerged from the need for robust and secure firmware update mechanisms in embedded systems, particularly in the context of the Zephyr RTOS and the MCUboot bootloader. Its development is tightly coupled with the evolution of secure boot practices for microcontrollers. It provides a standardized way to sign firmware images, ensuring their authenticity and integrity before they are loaded onto a device.<br><br>This functionality has become increasingly vital as IoT and embedded devices face growing security threats, making <b>imgtool</b> a foundational component for secure product development using Zephyr.


title: SEE ALSO
content:
<i>objcopy(1)</i> (Manipulate object file formats, often used to convert binaries)<br>, <i>openssl(1)</i> (Cryptographic toolkit for key generation and certificate management)<br>, <i>dd(1)</i> (Convert and copy a file, can be used for raw image manipulation)<br>, <i>west(1)</i> (Meta-tool for Zephyr development, often invokes imgtool during the build process)


title: SYNOPSIS
content:
<b>pbuilder</b> <i>[options]</i> <i>command</i> <i>[arguments]</i><br><br>Common commands:<br><b>pbuilder</b> <i>build</i> <i>[options]</i> <i>source.dsc</i><br><b>pbuilder</b> <i>update</i> <i>[options]</i><br><b>pbuilder</b> <i>create</i> <i>[options]</i><br><b>pbuilder</b> <i>login</i> <i>[options]</i>


title: PARAMETERS
content:
<b><b>-C</b>, <b>--configfile</b> <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative configuration file to use instead of the default <i>/etc/pbuilderrc</i> or <i>~/.pbuilderrc</i>.<br><br><b><b>-D</b>, <b>--distribution</b> <i>&lt;dist&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the target Debian distribution for the chroot (e.g., <i>stable</i>, <i>unstable</i>, <i>bookworm</i>).<br><br><b><b>-B</b>, <b>--buildplace</b> <i>&lt;dir&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the base directory where the chroot environment will be created and managed.<br><br><b><b>-U</b>, <b>--update</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Ensures the base chroot image is updated with the latest packages before a build or operation.<br><br><b><b>-u</b>, <b>--override-config</b> <i>&lt;var&gt;=&lt;value&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Overrides specific configuration variables defined in the <i>pbuilderrc</i> file.<br><br><b><b>-p</b>, <b>--pbuilderootdir</b> <i>&lt;dir&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the root directory for all <i>pbuilder</i>-related files, including the chroot and cache.<br><br><b><b>-r</b>, <b>--buildresult</b> <i>&lt;dir&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Designates the directory where the built Debian packages (<i>.deb</i>, <i>.changes</i>, etc.) will be placed.<br><br><b><b>-w</b>, <b>--what-to-do-when-error</b> <i>&lt;action&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Determines the action to take if a build error occurs (e.g., <i>login</i> to the chroot, <i>halt</i>, <i>unmount</i>).<br><br><b><b>--bindmounts</b> <i>&lt;list&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A comma-separated list of directories from the host system to bind mount into the chroot environment.<br><br><b><b>--hookdir</b> <i>&lt;dir&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a directory containing custom hook scripts to be executed at various build stages.<br><br><b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the program's version information.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows a help message and exits.<br><br>


title: DESCRIPTION
content:
<i>pbuilder</i> is a crucial tool for Debian and derivative distributions, designed to build Debian packages (<code>.deb</code>) within a clean, isolated chroot environment. Its primary objective is to ensure that packages are built solely against their declared build dependencies, thereby preventing accidental reliance on locally installed packages. This isolation is vital for identifying missing build dependencies early, guaranteeing package reproducibility, and enhancing portability across diverse systems. <br><br>The process involves creating a base chroot image, updating it with the latest packages, and then utilizing this pristine image for building source packages. After a build concludes, the environment is either discarded or reverted to its original state, ensuring a fresh slate for every subsequent build. This methodology is indispensable for package maintainers and developers, as it effectively counters the "builds-on-my-machine" syndrome and significantly contributes to the robustness and correctness of the Debian archive. <i>pbuilder</i> supports multiple architectures and offers extensive configuration options for tailoring build environments.


title: CAVEATS
content:
Using <i>pbuilder</i> requires significant disk space, especially for multiple chroot environments and built packages. Initial chroot creation or extensive dependency updates can be time-consuming. Advanced configurations, such as custom hooks or managing various distributions and architectures, can introduce complexity. Additionally, <i>pbuilder</i> operations typically require root privileges to manage the chroot environment effectively.


title: CONFIGURATION FILES
content:
<i>pbuilder</i> heavily relies on configuration files, primarily <i>/etc/pbuilderrc</i> and <i>~/.pbuilderrc</i>. These files allow users to define default behaviors for their build environments, including the target distribution, architecture, package repositories, and the location of chroots. This robust configuration system enables highly customized and repeatable build processes without the need for extensive command-line options for every operation.


title: HOOKS MECHANISM
content:
A powerful feature of <i>pbuilder</i> is its support for 'hooks.' These are custom scripts that can be executed at various predefined stages of the build process, such as before chroot creation, after updating the base image, prior to the actual package build, or after the build completes. This allows for advanced automation, including installing specific build tools, setting up temporary package repositories, performing custom checks, or exporting detailed build logs, greatly extending <i>pbuilder</i>'s flexibility.


title: HISTORY
content:
<i>pbuilder</i> was developed by Junichi Uekawa, with its initial release dating back to approximately 2002. It rapidly became an indispensable utility for Debian maintainers and developers by addressing the critical need for clean and reproducible package build environments. Prior to <i>pbuilder</i>, developers often relied on manual <i>chroot</i> setups, which were prone to inconsistencies. <i>pbuilder</i> formalized and automated this process, mitigating the "works on my machine" problem. Its design and principles have profoundly influenced subsequent build tools like <i>cowbuilder</i> (which optimizes performance using copy-on-write techniques) and <i>sbuild</i>. <i>pbuilder</i> continues to be actively maintained and remains a cornerstone of the Debian package building ecosystem, ensuring high-quality and reliable software packages.


title: PARAMETERS
content:
<b><b>-r</b><i>[rev]</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the revision(s) to compare. If one <b>-r</b> is given, it compares the specified <i>rev</i> with the working file. If two <b>-r</b> options are given, it compares the first <i>rev</i> with the second <i>rev</i>.<br><br><b><b>-q</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Operates in quiet mode, suppressing diagnostic output and warnings.<br><br><b><b>-c</b><i>[date]</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Compares with the revision checked in on or before the specified <i>date</i>.<br><br><b><b>-n</b><i>[name]</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Compares with the revision specified by the symbolic <i>name</i>.<br><br><b><b>-kkv</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses the <b>kv</b> keyword expansion mode when retrieving revisions for comparison.<br><br><b><b>-T</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Preserves the modification time of the file when retrieving revisions, useful for timestamp-sensitive operations.<br><br><b><b>-u</b>, <b>-U</b><i>[num]</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates output in the unified context diff format (similar to <b>diff -u</b> or <b>diff -U</b>).<br><br><b><b>-C</b><i>[num]</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates output in the context diff format (similar to <b>diff -c</b>), with <i>num</i> lines of context.<br><br><b><b>-p</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates output in a format suitable for input to the <b>patch</b> command.<br><br><b><b>-s</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses output if the two revisions or files being compared are identical.<br><br><b><b>-t</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Preserves the modification time of the new revision when comparing.<br><br><b><b>-V</b><i>[rev]</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a compatible RCS version to use for processing files, for backward compatibility.<br><br><b><b>-V</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the RCS version number and exits.<br><br><b><b>-x</b><i>[suffixes]</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Processes only files whose names end with one of the specified <i>suffixes</i> (e.g., `<b>-x.c/.h</b>`).<br><br><b><b>-z</b><i>[zone]</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the default time zone for date comparisons (e.g., `<b>-zUTC</b>`).<br><br><b><i>diff-options</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Many standard <b>diff</b> options can be passed directly to <b>rcsdiff</b>, such as <b>-b</b> (ignore changes in amount of whitespace), <b>-w</b> (ignore all whitespace), <b>-i</b> (ignore case), <b>-I</b><i>regexp</i> (ignore lines matching <i>regexp</i>), <b>-E</b> (ignore blank lines), and <b>-a</b> (treat all files as text).<br><br>


title: DESCRIPTION
content:
The <b>rcsdiff</b> command is a utility from the Revision Control System (RCS) package, designed to compare different revisions of files managed under RCS.<br>It essentially acts as a wrapper around the standard <b>diff</b> command, allowing users to easily see the differences between various historical versions of a file, or between a working file and a specific RCS revision.<br><br>By default, if you run <b>rcsdiff</b> on a file, it compares the current working copy of that file with the latest revision stored in the corresponding RCS file (typically <i>1.1</i> on the default branch).<br>Users can specify one or two revisions using the <b>-r</b> option to compare any two arbitrary revisions from the RCS history, or a specific revision against the working file.<br><br><b>rcsdiff</b> is invaluable for understanding changes made over time, reviewing code, or identifying what modifications have been introduced in a working directory before checking them in.


title: CAVEATS
content:
<b>rcsdiff</b> is part of the older RCS system, which is file-based and lacks some features common in modern distributed version control systems (like Git or Mercurial), such as atomic commits across multiple files or robust branching/merging.<br>Its output relies heavily on the underlying <b>diff</b> utility, so understanding <b>diff</b>'s output format is essential. While it can handle different file types, its primary strength is with text files. Binary file comparisons might yield less meaningful results, although the <b>-a</b> option can force text interpretation.


title: COMMON USAGE PATTERNS
content:
<i><b>rcsdiff file.c</b></i>: Compares the current working file <i>file.c</i> with its latest checked-in revision in the RCS file.<br><i><b>rcsdiff -r1.1 file.c</b></i>: Compares the working file <i>file.c</i> with revision <i>1.1</i>.<br><i><b>rcsdiff -r1.1 -r1.2 file.c</b></i>: Compares revision <i>1.1</i> of <i>file.c</i> with revision <i>1.2</i> of <i>file.c</i>.<br><i><b>rcsdiff -u file.c</b></i>: Shows the unified diff between the working file and the latest revision.


title: HISTORY
content:
The Revision Control System (RCS) and its utilities like <b>rcsdiff</b> originated in the early 1980s, primarily developed by Walter F. Tichy. It became one of the first widely adopted version control systems, especially prominent in Unix-like environments. <b>rcsdiff</b> has been a core component since RCS's inception, providing the crucial capability to visualize changes between file revisions, a fundamental aspect of any version control workflow. While newer systems have largely superseded RCS for daily development, it remains valuable for simple file versioning and understanding the history of software development tools.


title: PARAMETERS
content:
<b><b>--repoid=&lt;repoid&gt;</b>, <b>-r &lt;repoid&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specifies one or more repository IDs to synchronize.</i><br><br><br><b><b>--arch=&lt;arch&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Filters packages by specified architecture(s) (e.g., x86_64, noarch).</i><br><br><br><b><b>--delete</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Removes local packages that are no longer present in the remote repository.</i><br><br><br><b><b>--download-metadata</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Downloads all repository metadata (e.g., repomd.xml, primary.xml) necessary for a functional mirror.</i><br><br><br><b><b>--newest-only</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Downloads only the latest version of each package, by name and architecture.</i><br><br><br><b><b>--norepopath</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Prevents adding the repository ID as a subdirectory within the download path.</i><br><br><br><b><b>--gpgcheck</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Enables GPG signature verification for downloaded packages.</i><br><br><br><b><b>--source</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Synchronizes source RPM packages instead of binary packages.</i><br><br><br><b><b>--urls</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Instead of downloading packages, only prints their URLs to standard output.</i><br><br><br><b><b>--config=&lt;file&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Uses an alternative DNF/Yum configuration file.</i><br><br><br><b><b>--download-path=&lt;path&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Sets the base directory where synchronized content will be stored. Defaults to <b>/var/cache/dnf</b> or <b>/var/lib/yum/repos/&lt;repoid&gt;</b>.</i><br><br><br><b><b>--plugins</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Enables DNF plugins for the synchronization process.</i><br><br><br><b><b>-q</b>, <b>--quiet</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Suppresses most output messages.</i><br><br><br><b><b>-v</b>, <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Increases the verbosity of output messages.</i><br><br><br>


title: DESCRIPTION
content:
<b>reposync</b> is a utility designed to synchronize remote DNF or older Yum repositories to a local directory. <br>It enables the creation of complete local mirrors, downloading all packages, metadata (repodata), and other essential files from specified repositories. <br>This functionality is invaluable for several use cases: providing offline access to packages, maintaining consistent package versions across multiple systems without relying on external network access for each, and significantly reducing internet bandwidth consumption within a local network by serving packages from a central mirror. <br>The command offers robust filtering capabilities, allowing users to specify architectures, download only the newest packages, or even sync source RPMs. It also provides options for managing existing local content, such as deleting packages no longer present in the remote repository.


title: CAVEATS
content:
<i>Disk Space Consumption:</i> <b>reposync</b> can consume significant disk space, especially for large repositories or when syncing multiple architectures and versions. Plan storage accordingly.<br><i>Network Bandwidth:</i> Initial synchronization or syncing large updates can use substantial network bandwidth.<br><i>Repository Configuration:</i> Requires the target repositories to be defined and enabled in the system's DNF/Yum configuration files (e.g., in <b>/etc/yum.repos.d/</b>).<br><i>Metadata Generation:</i> While <b>--download-metadata</b> fetches the remote metadata, creating a fully functional <i>local</i> repository often requires running <b>createrepo_c</b> on the synced directory afterward to generate local repodata, especially if serving via HTTP/NFS or for custom local repositories. This is not handled automatically by <b>reposync</b> itself.<br><i>Permissions:</i> Requires appropriate write permissions to the specified download path, often root privileges for default system locations.


title: POST-SYNC METADATA GENERATION WITH CREATEREPO_C
content:
After running <b>reposync</b>, especially if you intend to serve the synchronized content as a new local or network-accessible repository, it is generally recommended to execute <b>createrepo_c</b> on the root of your synced repository directory. For example, <i>createrepo_c /path/to/your/synced/repo</i>. This step generates or updates the local repository metadata, making it consumable by DNF/Yum clients.<br>


title: SPECIFYING A CONFIGURATION FILE
content:
Instead of relying on globally enabled repositories, you can direct <b>reposync</b> to use a specific repository definition file by using the <b>--config</b> option. For instance, <i>reposync --config=/path/to/myrepo.repo --repoid=myrepo</i> allows for syncing repositories not necessarily configured system-wide.


title: HISTORY
content:
<b>reposync</b> originated as part of the <b>yum-utils</b> package, serving the Yum package manager in older Red Hat-based distributions. With the evolution to DNF as the primary package manager in Fedora and RHEL 8+, its functionality was adapted and integrated into the <b>dnf-utils</b> package (or directly within DNF's ecosystem in some versions). Despite this transition, its fundamental purpose of providing robust repository synchronization capabilities has remained a core utility for system administrators and developers managing package mirrors.


title: PARAMETERS
content:
<b>-r, --random</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Overwrite data with pseudo-random bytes. This is a robust method for data sanitization.<br><br><b>-p, --pattern <pattern></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Overwrite with a specific pattern. Accepted patterns include 'dod', 'gutmann', 'zero', 'random', or a hexadecimal string (e.g., '0xAA').<br><br><b>-x, --blocksize <N></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the I/O block size to N bytes. This can affect performance, with larger blocks generally being faster.<br><br><b>-s, --skip <N></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Skip the first N bytes of the target. Useful for preserving boot sectors or specific data areas.<br><br><b>-S, --size <N></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Scrub only N bytes from the target, starting after any skipped bytes. This allows for partial device/file scrubbing.<br><br><b>-f, --force</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force scrubbing even on read-only filesystems or by ignoring I/O errors. Use with extreme caution.<br><br><b>-v, --verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable verbose output, showing progress information during the scrubbing process.<br><br><b>-z, --zero</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Overwrite data with zeros. While fast, it is considered less secure than random or pattern-based methods for preventing advanced recovery.<br><br><b>-I, --iterations <N></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the number of passes for random or pattern scrubbing. More passes increase security but also execution time.<br><br><b>-D, --device</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Treat target(s) as block devices (e.g., /dev/sda). This is critical when sanitizing entire disks or partitions.<br><br><b>-F, --file</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Treat target(s) as regular files (this is the default behavior).<br><br><b>-d, --dry-run</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Simulate scrubbing without actually writing any data. Useful for testing commands and verifying parameters.<br><br><b>-q, --quiet</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppress all output except errors. Useful for scripting or background operations.<br><br><b>-L, --loop</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Continuously loop scrubbing the target. This will repeatedly overwrite the data until manually stopped.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display help message and exit.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output version information and exit.<br><br>


title: DESCRIPTION
content:
<b>scrub</b> is a command-line utility used for securely erasing data from files or block devices. Unlike a standard <b>rm</b> command, which only unlinks a file's inode but leaves its data blocks on the disk, <b>scrub</b> overwrites the actual data several times with specific patterns. This process makes it extremely difficult, if not impossible, to recover the original information using data recovery techniques. It supports various data sanitization methods, including writing pseudo-random data, fixed patterns, or patterns conforming to standards like DoD 5220.22-M or the Gutmann method. This tool is crucial for ensuring data privacy and security when decommissioning hardware, disposing of old disks, or before reusing storage devices that previously held sensitive information. By systematically overwriting data sectors, <b>scrub</b> helps prevent unauthorized access to residual data, mitigating the risk of data breaches.


title: CAVEATS
content:
<b>Metadata Incompleteness:</b> <br><b>scrub</b> primarily focuses on file content. It does not typically erase file names, directory structures, or other metadata stored in the filesystem, which might still contain sensitive information. For complete sanitization, the filesystem itself may need to be recreated or the entire device scrubbed.<br><br><b>SSD Limitations:</b> <br>Due to wear leveling, TRIM commands, and over-provisioning in Solid State Drives (SSDs), software-based secure erase tools like <b>scrub</b> may not reliably overwrite all data sectors. For true SSD sanitization, hardware-level secure erase commands (e.g., via <b>hdparm</b>) are generally recommended.<br><br><b>Journaling Filesystems:</b> <br>On journaling filesystems (e.g., ext3/4, XFS, Btrfs), data remnants might persist in the filesystem journal or other cached areas, even after scrubbing the primary file.<br><br><b>Data Recovery Potential:</b> <br>While highly effective against most data recovery methods, no software tool can guarantee 100% data unrecoverability against highly sophisticated forensic techniques or specialized hardware attacks.


title: SCRUBBING METHODS AND PATTERNS
content:
<b>scrub</b> supports various patterns for overwriting data. Common patterns include <i>random</i> (writing pseudo-random data), <i>zero</i> (writing all zeros), and specific algorithmic patterns like <i>dod</i> (Department of Defense 5220.22-M standard) or <i>gutmann</i> (a 35-pass method designed for older magnetic media, often considered overkill for modern drives but still supported). The choice of pattern affects both the security level and the time taken to complete the operation.


title: USAGE CONSIDERATIONS
content:
When scrubbing entire disks or partitions, ensure you target the correct device (e.g., <code>/dev/sda</code>, <code>/dev/sdb1</code>) to avoid unintended data loss. Using the <code>--dry-run</code> option is highly recommended to verify your command before executing a destructive operation. For files, remember that <b>scrub</b> only affects the file content, not its name or directory entry. Always back up any necessary data before running <b>scrub</b>, as the operation is irreversible.


title: HISTORY
content:
The <b>scrub</b> utility emerged from the need for a robust and reliable method to perform data sanitization on Linux systems. Its development focused on implementing various government and industry-standard data erasure techniques, such as the Department of Defense (DoD) 5220.22-M standard and the Gutmann method, to ensure data could not be recovered after disposal. It's often distributed as part of the <i>scrub-utils</i> package and has been an essential tool for system administrators and users concerned with data privacy and regulatory compliance when decommissioning hardware or reusing storage media.


title: PARAMETERS
content:
<b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows help message and exits.<br><br><b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows version information and exits.<br><br><b><b>-c</b> <i>&lt;path&gt;</i>, <b>--config</b> <i>&lt;path&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative path to the configuration file, overriding the default.<br><br>


title: DESCRIPTION
content:
SDDM (Simple Desktop Display Manager) is a display manager that handles graphical login for desktop environments on Linux and other Unix-like systems. It provides a user-friendly graphical interface (greeter) to authenticate users, allowing them to select their desktop environment (e.g., KDE Plasma, GNOME, XFCE) and language before logging in. SDDM supports both X11 and Wayland display servers, making it a versatile choice for modern Linux distributions. It is highly configurable through its <i>sddm.conf</i> file, allowing customization of themes, sessions, and various display settings. It's typically started automatically at boot time by the system's init system (like systemd) and manages multiple user sessions. Its primary role is to start and manage display servers and user sessions after authentication, ensuring a seamless transition from boot to a usable graphical desktop.


title: CAVEATS
content:
<i>sddm</i> is primarily a system daemon managed by the init system (e.g., <i>systemd</i>) and is not typically run directly by users from the command line for daily operation. Most of its behavior and appearance are controlled through its configuration files, particularly <i>/etc/sddm.conf</i>, rather than command-line options. Troubleshooting often involves examining system logs via <i>journalctl</i>.


title: CONFIGURATION FILE
content:
SDDM's primary configuration is managed through its configuration file, typically located at <i>/etc/sddm.conf</i> or modularly within <i>/etc/sddm.conf.d/</i>. This file allows administrators to customize themes, default sessions, X11 and Wayland specific settings, user session behaviors, and security policies.


title: THEMING AND GREETERS
content:
SDDM supports rich theming using QML, providing a highly customizable login interface (greeter). Users can choose different themes to change the look and feel of their login screen. The default greeter is usually <i>sddm-greeter</i>, which manages the actual graphical login process and user interaction.


title: HISTORY
content:
SDDM was created as a modern, QML-based display manager to offer an alternative to older options like GDM and LightDM. Its development prioritized flexibility, extensive theming capabilities, and robust support for newer display technologies, including Wayland. It gained significant traction, especially within the KDE community, and has become the default display manager for KDE Plasma in many popular Linux distributions, emphasizing a lightweight and visually appealing login experience.


title: SEE ALSO
content:
<b>gdm</b>(1), <b>lightdm</b>(1), <b>xdm</b>(1), <b>display-manager</b>(7), <b>systemd-logind</b>(8), <b>sddm.conf</b>(5)


title: PARAMETERS
content:
<b><B>--help</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the help message and exits.<br><br><b><B>--version</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints version information and exits.<br><br><b><B>--md5</B> <I>FILE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Calculates and prints the MD5 hash of the specified <I>FILE</I>.<br><br><b><B>--sha1</B> <I>FILE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Calculates and prints the SHA1 hash of the specified <I>FILE</I>.<br><br><b><B>--sha256</B> <I>FILE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Calculates and prints the SHA256 hash of the specified <I>FILE</I>.<br><br><b><B>--hex</B> <I>STRING</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Converts an ASCII <I>STRING</I> to its hexadecimal representation.<br><br><b><B>--vhex</B> <I>HEXSTRING</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Converts a hexadecimal <I>HEXSTRING</I> back to its ASCII representation.<br><br><b><B>--info</B> <I>VIRUSNAME</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays information about a signature matching <I>VIRUSNAME</I> from loaded databases.<br><br><b><B>--test</B> <I>FILE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Tests all loaded signatures against the given <I>FILE</I>.<br><br><b><B>--unpack-cvd</B> <I>CVD_FILE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Unpacks a <B>CVD</B> (ClamAV Virus Database) file into its component signature files in the current directory.<br><br><b><B>--html-info</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Dumps ClamAV database information in HTML format.<br><br><b><B>--ascii-dump</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Converts and prints non-printable bytes from standard input to their ASCII representation (useful for debugging binary data).<br><br><b><B>--decode-base64</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Decodes base64-encoded data from standard input.<br><br><b><B>--encode-base64</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Encodes data from standard input into base64 format.<br><br><b><B>--list-sigs</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all loaded signature names.<br><br><b><B>--list-broken</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists broken signatures found in the loaded databases.<br><br><b><B>--gen-mdb</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates a <B>MDB</B> (MD5 Database) from files specified on the command line or standard input.<br><br><b><B>--find</B> <I>STRING</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Searches for <I>STRING</I> in loaded signatures. Useful for finding patterns.<br><br>


title: DESCRIPTION
content:
<i>sigtool</i> is a powerful command-line utility bundled with the <B>ClamAV</B> antivirus engine, primarily designed for developers and advanced users to manage, create, test, and debug virus signatures.<br><br>It provides a comprehensive suite of functions for interacting with various ClamAV signature formats, including MD5, SHA1, SHA256 hashes, hexadecimal signatures, logical signatures (HDB/CDB), and Compiled ClamAV Database (CVD) files. Users can calculate file hashes, query signature information from loaded databases, create custom signatures for testing, unpack and inspect CVD files, and convert data formats.<br><br>While not intended for routine end-user operations, <i>sigtool</i> is an indispensable tool for understanding ClamAV's detection mechanisms, developing custom detection rules, and troubleshooting signature-related issues.


title: CAVEATS
content:
<i>sigtool</i> is primarily a developer and debugging tool for ClamAV. It requires a good understanding of ClamAV signature formats and internal workings. Incorrect usage, especially when generating or modifying signatures, can lead to false positives or ineffective detection. It also needs access to ClamAV's signature databases to perform most operations like <B>--info</B> or <B>--test</B>.


title: SIGNATURE TYPES
content:
<i>sigtool</i> interacts with various ClamAV signature types:<br><br> <B>MD5/SHA1/SHA256</B>: Hash-based signatures for identifying exact file matches.<br> <B>HDB</B> (Hexadecimal Database): Simple hexadecimal string patterns.<br> <B>CDB</B> (Container Database): Signatures for detecting malware within container files (e.g., archives).<br> <B>CVD</B> (Compiled Virus Database): The main compiled signature database format used by ClamAV, which <i>sigtool</i> can unpack.<br> <B>LDB</B> (Logical Database): Advanced signatures combining multiple patterns and logical operators for complex detection rules.


title: DATABASE LOADING
content:
For many operations (e.g., <B>--info</B>, <B>--test</B>, <B>--list-sigs</B>), <i>sigtool</i> needs to load the ClamAV signature databases. By default, it looks in standard ClamAV database locations (e.g., <code>/var/lib/clamav</code> or <code>/usr/local/share/clamav</code>). If databases are in a non-standard location, the <B>CLAM_DBDIR</B> environment variable can be used to specify the path.


title: HISTORY
content:
<i>sigtool</i> has been an integral part of the <B>ClamAV</B> project since its early days, evolving alongside the antivirus engine itself. Its development has mirrored the increasing complexity of malware and the need for more sophisticated signature formats. Initially, it provided basic hashing and signature information. Over time, features like unpacking CVDs, testing signatures against files, and supporting various advanced signature types (e.g., logical signatures, bytecode) were added to empower security researchers and ClamAV signature writers in their fight against malicious software. It continues to be actively maintained as part of the official ClamAV distribution.


title: PARAMETERS
content:
<b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the <b>solc</b> compiler version information.<br><br><b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows a comprehensive help message with all available options.<br><br><b><b>--bin</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs the EVM bytecode of the compiled contract(s), suitable for deployment.<br><br><b><b>--abi</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs the Application Binary Interface (ABI) JSON of the compiled contract(s), describing how to interact with the contract's functions and events.<br><br><b><b>--optimize</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables the bytecode optimizer to reduce contract deployment cost and execution gas fees.<br><br><b><b>--optimize-runs <i>N</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the number of times the optimizer will run. A higher number might lead to smaller bytecode but takes longer to compile. Default is 200.<br><br><b><b>--overwrite</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Allows <b>solc</b> to overwrite existing output files without prompting for confirmation.<br><br><b><b>--standard-json</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Activates the Standard JSON Input/Output mode, allowing complex compilation configurations via a single JSON file.<br><br><b><b>--output-dir <i>&lt;dir&gt;</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the directory where all generated output files should be written.<br><br><b><b>--include-path <i>&lt;path&gt;</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a path to the list of directories searched for imported Solidity files (e.g., libraries).<br><br>


title: DESCRIPTION
content:
<b>solc</b> is the command-line interface for the Solidity compiler. It takes Solidity source code files (typically with a <code>.sol</code> extension) as input and compiles them into Ethereum Virtual Machine (EVM) bytecode and Application Binary Interface (ABI) definitions. These outputs are essential for deploying smart contracts to the Ethereum blockchain and interacting with them from external applications. <b>solc</b> supports various optimization levels, output formats, and allows developers to compile single files or entire projects, making it a fundamental tool in the development workflow for decentralized applications (dApps) and smart contracts on Ethereum and compatible blockchains. It provides crucial information for contract deployment, such as the bytecode to be executed and the ABI specification required for calling contract functions, facilitating seamless integration with front-end applications and other contracts.


title: CAVEATS
content:
<b>Version Compatibility:</b> Solidity language features evolve rapidly. Older <b>solc</b> versions might not support newer syntax, and newer versions can introduce breaking changes. Always ensure your compiler version matches the <code>pragma</code> directive in your contracts for predictable behavior.<br><br><b>Security Concerns:</b> While rigorously tested, compiler bugs, though extremely rare, can have severe consequences for deployed contracts. It's crucial to use well-tested compiler versions, review changelogs for critical fixes, and follow comprehensive security auditing practices for your smart contracts.<br><br><b>Optimization Impact:</b> While the optimizer significantly reduces gas costs, it can sometimes alter the bytecode in ways that make debugging more challenging or potentially introduce subtle, unexpected behavior. Thorough testing of optimized code on testnets is always recommended before mainnet deployment.


title: OUTPUT FORMATS
content:
<b>solc</b> can produce various critical output formats beyond just bytecode and ABI, which are essential for different stages of the development and deployment lifecycle:<br><i>--bin-runtime</i>: Outputs the bytecode that is actually stored on the blockchain and executed after deployment.<br><i>--asm</i>: Generates the EVM assembly language representation of the compiled contract.<br><i>--yul</i>: Outputs the Yul intermediate representation, a low-level, high-level language used within the Solidity compiler.<br><i>--hashes</i>: Provides the function hashes (selectors) for all public and external functions, useful for raw transaction data.<br><i>--metadata</i>: Outputs contract metadata JSON, which includes a hash of the source code and compiler settings, crucial for source verification and debugging tools.<br>Developers select these outputs based on whether they are deploying, interacting, or performing in-depth analysis of contract logic.


title: IMPORT RESOLUTION
content:
Solidity contracts frequently use <code>import</code> statements to include other contracts or libraries, defining modular and reusable code. <b>solc</b> resolves these imports based on a specific hierarchy of paths:<br>1. It first checks the current directory where the primary source file being compiled resides.<br>2. Next, it searches through any paths specified using the <i>--include-path</i> option, allowing developers to define custom search directories for dependencies.<br>3. Finally, if provided, it uses the base path specified by the <i>--base-path</i> option, which serves as a root directory for resolving absolute import paths.<br>Understanding this import resolution mechanism is crucial for managing complex project dependencies and preventing 'file not found' errors during compilation.


title: HISTORY
content:
Solidity was first proposed by Gavin Wood in 2014, and the <b>solc</b> compiler has evolved alongside the language as its official toolchain. Initially implemented in C++, <b>solc</b> has seen continuous development by the Ethereum Foundation and community contributors. Its development has focused on improving performance, adding new language features, enhancing security, and providing various output options to cater to the diverse needs of smart contract developers. From rudimentary beginnings, <b>solc</b> has matured into a robust and essential tool for the entire Ethereum ecosystem, underpinning countless decentralized applications and blockchain innovations.


title: SYNOPSIS
content:
<b>svnadmin</b> <I>subcommand</I> [<I>options</I>] [<I>args</I>]<br><br>Common subcommands:<br>  <b>svnadmin create</b> <I>REPOS_PATH</I> [<I>options</I>]<br>  <b>svnadmin verify</b> <I>REPOS_PATH</I><br>  <b>svnadmin dump</b> <I>REPOS_PATH</I> [-r <I>REV[:REV]</I>] [<I>options</I>]<br>  <b>svnadmin load</b> <I>REPOS_PATH</I> [<I>options</I>]<br>  <b>svnadmin hotcopy</b> <I>SOURCE_REPOS_PATH</I> <I>DEST_REPOS_PATH</I> [<I>options</I>]<br>  <b>svnadmin recover</b> <I>REPOS_PATH</I>


title: PARAMETERS
content:
<b>--help (-h)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message for <b>svnadmin</b> or a specific subcommand.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints <b>svnadmin</b>'s version information.<br><br><b>--bypass-hooks</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Bypasses the execution of repository hooks during certain operations (e.g., during <b>load</b>, <b>commit</b>).<br><br><b>--config-dir <I>DIR</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a custom configuration directory for SVN settings.<br><br><b>--fs-type <I>TYPE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the filesystem type for a new repository. Common types are 'fsfs' (default) and 'bdb'. (Used with <b>create</b>).<br><br><b>--compatible-version <I>MAJOR[.MINOR[.PATCH]]</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;For 'fsfs' repositories, creates a repository compatible with older Subversion clients. (Used with <b>create</b>).<br><br><b>--revision (-r) <I>REV[:REV2]</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Operates on a specific revision or range of revisions. (Used with <b>dump</b>, <b>load</b>, <b>verify</b>, <b>setlog</b>, <b>setrevprop</b>).<br><br><b>--incremental</b><br>&nbsp;&nbsp;&nbsp;&nbsp;When dumping, outputs an incremental dump stream, suitable for appending to an existing repository dump. (Used with <b>dump</b>).<br><br><b>--deltas</b><br>&nbsp;&nbsp;&nbsp;&nbsp;When dumping, stores file contents as deltas against preceding revisions, making the dump smaller but potentially slower to load. (Used with <b>dump</b>).<br><br><b>--normalize-props</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Normalizes textual property values during dump and load operations. (Used with <b>dump</b>, <b>load</b>).<br><br><b>--pre-2.1-compat</b><br>&nbsp;&nbsp;&nbsp;&nbsp;When loading, provides compatibility with pre-2.1 Subversion clients for older dump streams. (Used with <b>load</b>).<br><br><b>--parent-dir <I>DIR</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;When loading, loads into a subdirectory of the target repository. (Used with <b>load</b>).<br><br><b>--strip-props <I>ARG</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes specific properties during loading. <I>ARG</I> can be 'all', 'rev', or 'dir-props'. (Used with <b>load</b>).<br><br><b>--clean-logs</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes unused Berkeley DB log files from the repository. (Used with <b>recover</b>).<br><br><b>--ignore-uuid</b><br>&nbsp;&nbsp;&nbsp;&nbsp;When loading, ignores any UUID found in the dump stream, allowing the target repository's UUID to be preserved. (Used with <b>load</b>).<br><br><b>--force-uuid</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces a new UUID to be assigned to the repository. (Used with <b>setuuid</b>).<br><br><b>--old-dumpfile <I>PATH</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an older dump file to compare against for delta generation. (Used with <b>dump</b> when creating an incremental dump).<br><br>


title: DESCRIPTION
content:
The <b>svnadmin</b> command is the primary tool for administrators to manage and maintain Subversion repositories directly. It operates on the repository's filesystem, making it essential for tasks that require direct manipulation rather than network access through clients or servers. Key functions include creating new repositories, verifying repository integrity, dumping repository contents to a portable stream, loading data from such streams, performing 'hot copies' for backups, and recovering from certain forms of corruption. Unlike the <b>svn</b> client commands that interact with the repository through a server, <b>svnadmin</b> works locally, demanding direct file system access and appropriate permissions. This direct access makes it a powerful but potentially dangerous tool if misused, as it can directly alter the repository's internal structure. Administrators often use <b>svnadmin</b> for initial setup, routine maintenance, migrations between servers, and disaster recovery planning.


title: CAVEATS
content:
<b>svnadmin</b> requires direct filesystem access to the Subversion repository, meaning it must be run on the same machine where the repository data resides. It should generally not be run concurrently with other <b>svnadmin</b> commands, <b>svnserve</b>, or Apache (via <b>mod_dav_svn</b>) accessing the same repository, as this can lead to repository corruption. Always ensure proper backups before performing any major administrative tasks. When migrating repositories, be mindful of filesystem types (FSFS vs BDB) and Subversion client compatibility versions to avoid issues. Misuse of commands like <b>setrevprop</b> can permanently alter revision properties without history.


title: REPOSITORY BACKENDS
content:
Subversion repositories can use one of two primary backend types: Berkeley DB (BDB) or FSFS. BDB was the original default but is now largely deprecated in favor of FSFS. FSFS repositories are simpler to manage, less prone to corruption from crashes, and easier to backup because they don't rely on a separate database engine. When creating a new repository, <b>svnadmin</b> defaults to FSFS, but the <code>--fs-type</code> option can be used to explicitly choose a backend. For new installations, FSFS is strongly recommended.


title: HOTCOPY VS. DUMP/LOAD
content:
There are two main methods for backing up or migrating Subversion repositories: <b>hotcopy</b> and <b>dump</b>/<b>load</b>. <b>svnadmin hotcopy</b> creates an exact, byte-for-byte copy of a live repository, which is fast and preserves all repository metadata including UUIDs and hooks. It's ideal for regular backups. The <b>svnadmin dump</b> command generates a portable stream of repository data, which can then be read by <b>svnadmin load</b> into a new or existing repository. Dump/load is slower but allows for greater flexibility, such as filtering revisions or properties, changing repository filesystem types, or migrating to different server environments where a direct copy might not be feasible.


title: REPOSITORY HOOKS
content:
Subversion repositories support 'hook' scripts that are executed automatically at specific points in the repository's lifecycle (e.g., pre-commit, post-commit, pre-revprop-change). While <b>svnadmin</b> operations generally trigger hooks, some subcommands (like <b>load</b>) can be instructed to bypass them using the <code>--bypass-hooks</code> option. This is often useful during migration or recovery to prevent unexpected behavior from custom scripts.


title: HISTORY
content:
Subversion (SVN) was created in 2000 as a successor to CVS, aiming to provide a more robust and feature-rich version control system. <b>svnadmin</b> has been a fundamental part of the Subversion toolkit since its inception, providing the essential command-line interface for direct repository management. Over the years, its development has closely tracked that of Subversion itself, with enhancements supporting new features, improved performance, and better handling of repository backends, most notably the transition from Berkeley DB (BDB) to FSFS as the default and recommended filesystem type due to its simpler administration and better recovery characteristics. It continues to evolve with new Subversion releases, offering administrators the tools needed to maintain healthy repositories.


title: PARAMETERS
content:
<b>-s, --status</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show the current HDMI status and detected display modes.<br><br><b>-p, --preferred</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the HDMI output to the preferred mode reported by the monitor's EDID.<br><br><b>-m, --modes [DMT|CEA]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;List all supported HDMI modes. Can filter by <b>DMT</b> (Display Monitor Timings) or <b>CEA</b> (Consumer Electronics Association) standards.<br><br><b>-e, --explicit="DMT <N> | CEA <N>"</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force a specific HDMI mode by its group (DMT/CEA) and mode number (e.g., <i>"CEA 16"</i> for 1920x1080 @ 60Hz).<br><br><b>-o, --off</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Turn off the HDMI output and disable the display signal.<br><br><b>-O, --on</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Turn on the HDMI output, restoring the display signal.<br><br><b>-c, --sdtv="PAL|NTSC"</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Switch video output to composite (SDTV), specifying <b>PAL</b> or <b>NTSC</b> standard.<br><br><b>--sdtv_aspect="4:3|14:9|16:9"</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the aspect ratio for SDTV composite output.<br><br><b>-d, --dumpedid <filename></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Dump the EDID (Extended Display Identification Data) from the connected monitor to a specified file.<br><br><b>-v, --verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable verbose output for more detailed information during execution.<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a help message with available options and usage information.<br><br>


title: DESCRIPTION
content:
<i>tvservice</i> is a command-line utility primarily found on <b>Raspberry Pi</b> devices, designed to query and control the HDMI (and composite) video output. It directly interfaces with the Broadcom VideoCore GPU firmware, allowing users to manipulate display modes, resolutions, refresh rates, and power states of the connected monitor.<br><br>It's an essential tool for headless setups, troubleshooting display issues, or forcing specific video modes that might not be automatically detected by a display. Unlike <i>xrandr</i>, which manages X server displays, <i>tvservice</i> operates at a lower, hardware-firmware level, affecting the console output before any graphical environment starts. Its direct hardware access makes it powerful for precise display configuration on the Raspberry Pi platform.


title: CAVEATS
content:
<i>tvservice</i> is specific to <b>Raspberry Pi</b> devices and other systems utilizing Broadcom's VideoCore GPU. It is <b>not</b> a standard Linux utility found on general-purpose distributions. Its functionality relies on direct interaction with the GPU firmware and hardware, making it hardware-dependent. Incorrect usage can lead to display issues, potentially requiring a reboot.


title: COMMON RESOLUTION CHANGE WORKFLOW
content:
To set a specific resolution, first use <i>tvservice -m CEA</i> or <i>tvservice -m DMT</i> to identify the desired mode number. Then, apply it using <i>sudo tvservice -e "CEA <N>"</i> (replace <N>). For example, <i>sudo tvservice -e "CEA 16"</i> often sets 1920x1080 @ 60Hz. It may also be necessary to update the framebuffer using <i>sudo fbset -depth 32</i> and <i>sudo fbset -virtual <WIDTH> <HEIGHT></i>.


title: HEADLESS OPERATION AND POWER SAVING
content:
In headless Raspberry Pi setups (without a connected monitor), <i>tvservice -o</i> is commonly used to turn off the HDMI output. This can help conserve power and prevent the GPU from continuously polling for a display. To re-enable the output if a monitor is connected, <i>tvservice -p</i> or <i>tvservice -O</i> can be used.


title: HISTORY
content:
Developed specifically for the Raspberry Pi platform, <i>tvservice</i> has been a fundamental tool for controlling its unique VideoCore IV GPU's display output since the earliest models. It provides command-line control over HDMI and composite video, crucial for both basic setup and advanced display configuration in embedded or headless applications. It complements, and in some ways predates, the more recent kernel modesetting (KMS) drivers on Raspberry Pi.


title: SYNOPSIS
content:
<b>VBoxManage</b> <i>&lt;command&gt;</i> [<i>&lt;args&gt;</i>...]<br><br>Examples:<br><b>VBoxManage</b> <i>list vms</i><br><b>VBoxManage</b> <i>createvm --name MyVM --ostype Ubuntu_64 --register</i><br><b>VBoxManage</b> <i>modifyvm MyVM --memory 2048 --cpus 2</i><br><b>VBoxManage</b> <i>startvm MyVM --type headless</i><br><b>VBoxManage</b> <i>controlvm MyVM savestate</i>


title: PARAMETERS
content:
<b><b>list</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists various VirtualBox objects like registered VMs, running VMs, host information, host-only network interfaces, etc. E.g., <i>list vms</i>, <i>list runningvms</i>.<br><br><b><b>createvm</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Creates a new virtual machine definition. Requires parameters such as <i>--name</i> for the VM's name and <i>--ostype</i> for the operating system type. Often used with <i>--register</i> to make it known to VirtualBox.<br><br><b><b>registervm</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Registers an existing VM from its .vbox file, making it accessible to VirtualBox.<br><br><b><b>unregistervm</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Unregisters a VM. Optionally, <i>--delete</i> can be used to delete all associated files.<br><br><b><b>modifyvm</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Modifies the settings of a registered VM. This command has a vast array of options to configure memory, CPUs, network adapters, video memory, boot order, and many other hardware aspects. E.g., <i>--memory</i>, <i>--cpus</i>, <i>--nic1</i>.<br><br><b><b>startvm</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts a registered VM. The <i>--type</i> option specifies the frontend, e.g., <i>gui</i>, <i>headless</i>, or <i>separate</i>.<br><br><b><b>controlvm</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Controls a running VM. Actions include <i>poweroff</i>, <i>reset</i>, <i>savestate</i>, <i>pause</i>, <i>resume</i>, and <i>acpipowerbutton</i>.<br><br><b><b>snapshot</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Manages VM snapshots. Allows <i>take</i>, <i>restore</i>, <i>delete</i>, <i>list</i>, and <i>showvminfo</i> for snapshots.<br><br><b><b>storageattach</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Attaches a storage device (e.g., virtual hard disk, CD/DVD drive, floppy) to a VM's storage controller. Requires controller and port specifications.<br><br><b><b>storagectl</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds or modifies a storage controller (e.g., SATA, IDE, SCSI, SAS, NVMe) for a VM.<br><br><b><b>createmedium</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Creates a new virtual disk image (e.g., VDI, VHD, VMDK). Options include <i>--filename</i>, <i>--size</i>, and <i>--format</i>.<br><br><b><b>closemedium</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Closes a medium (removes it from the Virtual Media Manager), optionally deleting the file.<br><br><b><b>sharedfolder</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Manages shared folders for a VM. Allows <i>add</i>, <i>remove</i>, and <i>list</i> operations.<br><br><b><b>hostonlyif</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Manages host-only network interfaces. Allows <i>create</i>, <i>remove</i>, <i>ipconfig</i>, and <i>dhcpserver</i> configuration.<br><br><b><b>dhcpserver</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Manages DHCP servers associated with host-only networks. Allows <i>add</i>, <i>remove</i>, <i>modify</i>, and <i>start/stop</i>.<br><br><b><b>setextradata</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets extra data values globally or for a specific VM, useful for custom settings or scripting.<br><br><b><b>export</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Exports a VM to an OVF or OVA appliance file, facilitating VM portability.<br><br><b><b>import</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Imports a VM from an OVF or OVA appliance file.<br><br><b><b>hostinfo</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays various information about the host system and its VirtualBox installation, such as CPU details, memory, and installed extensions.<br><br><b><b>setproperty</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets a global VirtualBox property, like the default machine folder or specific settings for the VRDP server.<br><br>


title: DESCRIPTION
content:
The <b>VBoxManage</b> command is the powerful, feature-rich command-line interface to Oracle VM VirtualBox. It allows users to control every aspect of VirtualBox, from creating and configuring virtual machines (VMs) to managing snapshots, network settings, and storage. It is indispensable for automating tasks, scripting VirtualBox operations, and managing VMs on headless servers where a graphical user interface is unavailable or undesirable. With <b>VBoxManage</b>, you can start, stop, pause, and reset VMs, modify their hardware settings like memory and CPU, attach virtual disks, configure networking, and perform import/export operations, making it a crucial tool for system administrators and developers working with VirtualBox environments.


title: CAVEATS
content:
Using <b>VBoxManage</b> requires the VirtualBox software to be installed on the system. Users typically need to be part of the <i>vboxusers</i> group to have the necessary permissions to manage VMs. Incorrectly configured commands or parameters can lead to data loss or VM corruption. Due to the extensive number of options and subcommands, consulting the official VirtualBox documentation or <i>VBoxManage --help</i> for specific commands is highly recommended.


title: SCRIPTING AND AUTOMATION
content:
<b>VBoxManage</b> is invaluable for scripting and automating VirtualBox operations. Its command-line nature allows integration into shell scripts (Bash, PowerShell) to create, configure, start, stop, and manage VMs programmatically, which is essential for CI/CD pipelines, automated testing, and cloud provisioning.


title: HEADLESS OPERATION
content:
For server environments or running VMs in the background without a graphical interface, the <i>--type headless</i> option with <b>startvm</b> is crucial. This allows VMs to run without consuming desktop resources for a GUI, making them ideal for hosting services or running background tasks.


title: HISTORY
content:
VirtualBox was originally developed by <i>Innotek GmbH</i>. It was first released in 2007. In 2008, Sun Microsystems acquired Innotek, bringing VirtualBox under their umbrella. Following Oracle Corporation's acquisition of Sun Microsystems in 2010, VirtualBox has continued its development and maintenance under Oracle, becoming a widely used virtualization solution for desktop and server environments across various operating systems.


title: PARAMETERS
content:
<b><b>-comment</b> "<i>text</i>"</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the comment string to be written into the JPEG file. Enclose the text in quotes, especially if it contains spaces or special characters.<br><br><b><b>-c</b> "<i>text</i>"</b><br>&nbsp;&nbsp;&nbsp;&nbsp;A shorthand alternative for <b>-comment</b>, specifying the comment string to be written.<br><br><b><b>-replace</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Replaces all existing comment markers in the file with the new comment provided by <b>-comment</b> or <b>-c</b>. If no new comment is specified, this option has no effect.<br><br><b><b>-insert</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Inserts the new comment before any existing comment markers in the file. If no new comment is specified, this option has no effect.<br><br><b><b>-append</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Appends the new comment after any existing comment markers in the file. If no new comment is specified, this option has no effect.<br><br><b><b>-dump</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints all existing comment markers from the specified JPEG file to standard output. No new comment is written when this option is used. This is useful for inspecting current comments.<br><br><b><b>-q</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Operates in quiet mode, suppressing non-critical messages and warnings during execution.<br><br><b><b>-?</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message with usage instructions and available options, then exits.<br><br><b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a comprehensive help message with usage instructions and available options, then exits.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the version information for the <b>wrjpgcom</b> utility, then exits.<br><br><b><i>filename.jpg</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the JPEG image file to be processed. This argument is mandatory.<br><br>


title: DESCRIPTION
content:
<b>wrjpgcom</b> is a command-line utility designed to manage textual comments embedded within JPEG image files. JPEG files can contain special markers, known as Comment (COM) markers, which allow arbitrary textual information to be stored alongside image data without affecting the image display. This utility enables users to add new comments, replace existing ones, or append comments to a JPEG file. It can also be used to simply dump all existing comments from a specified JPEG file to standard output, making it useful for inspecting metadata. <b>wrjpgcom</b> is a handy tool for adding copyright notices, descriptions, or any other relevant text directly into the image file itself, which can be useful for organization or preserving metadata across various systems.<br><br>The command directly modifies the JPEG file, inserting or updating the comment markers according to the specified options.


title: CAVEATS
content:
The maximum length of a single comment marker can be limited by the JPEG standard, typically around 64KB, though most practical uses won't exceed this. <b>wrjpgcom</b> specifically handles JPEG Comment (COM) markers; it does not manage other forms of metadata like EXIF, IPTC, or XMP. For comprehensive metadata management, dedicated tools like <b>exiftool</b> should be used. Always back up critical images before modifying them with any command-line tool, as direct file manipulation carries inherent risks.


title: JPEG COMMENT MARKERS
content:
JPEG files allow for 'Comment' (COM) markers, which can store arbitrary text. These comments are typically ignored by standard image viewers and processing software, making them a discreet way to embed metadata, copyright notices, or internal notes directly into the image file without altering its visual representation or critical EXIF data.


title: NON-DESTRUCTIVE VS. DESTRUCTIVE OPERATIONS
content:
When using <b>-insert</b> or <b>-append</b>, <b>wrjpgcom</b> adds the new comment without removing existing ones, preserving all previous comments. The <b>-replace</b> option is the only one that will remove all prior comments before writing the new one, making it a destructive operation for existing comment metadata. If no option for placement (<b>-replace</b>, <b>-insert</b>, <b>-append</b>) is specified, the default behavior often varies between versions or implicitly appends the comment.


title: HISTORY
content:
The <b>wrjpgcom</b> utility is typically part of the <i>jpeginfo</i> package or similar collections of tools that interact with the <i>libjpeg</i> library, a foundational component for JPEG processing on Unix-like systems. Its development has closely paralleled the evolution of the <i>libjpeg</i> library itself, which provides the underlying JPEG compression and decompression functionalities. While not as widely used for general image manipulation as tools like <b>jpegtran</b>, <b>wrjpgcom</b> fills a specific niche for managing the lesser-known, but often useful, comment markers within the JPEG standard. It has been a stable and long-standing utility in the ecosystem of JPEG processing tools, offering a straightforward way to embed textual metadata directly into image files.


title: SYNOPSIS
content:
<b>xorriso</b> [ <I>options</I> ] [ <I>commands</I> ]<br><b>xorriso</b> -outdev <I>device|image</I> [ -indev <I>device|image</I> ] <I>commands</I>...<br><b>xorriso</b> -dev <I>device|image</I> [ <I>commands</I>... ]


title: PARAMETERS
content:
<b>-help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a summary of common options and commands.<br><br><b>-version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the program version information.<br><br><b>-outdev <I>path</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output device or image file for writing operations.<br><br><b>-indev <I>path</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the input device or image file for reading an existing session or content.<br><br><b>-dev <I>path</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets both the input and output device/image to the same path for read/write operations.<br><br><b>-eject <I>on|off</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Controls automatic disc ejection after operations complete.<br><br><b>-volid <I>ID</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the volume ID (label) for the ISO 9660 filesystem.<br><br><b>-joliet <I>on|off</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables or disables Joliet extensions for long filenames and Unicode character support.<br><br><b>-rockridge <I>on|off</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables or disables Rock Ridge extensions for Unix-like permissions, symbolic links, and device nodes.<br><br><b>-add <I>source_path</I> <I>iso_path</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a file or directory from the host filesystem at <I>source_path</I> to the ISO image at <I>iso_path</I>.<br><br><b>-map <I>source_path</I> <I>iso_path</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a file or directory, mapping <I>source_path</I> to <I>iso_path</I> in the image. If <I>iso_path</I> is omitted, it defaults to the basename of <I>source_path</I>.<br><br><b>-rm <I>iso_path</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes a file or directory at <I>iso_path</I> from the ISO image.<br><br><b>-extract <I>iso_path</I> <I>dest_path</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Extracts a file or directory from the ISO image at <I>iso_path</I> to the host filesystem at <I>dest_path</I>.<br><br><b>-boot_image <I>type</I> <I>settings</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Configures parameters for creating a bootable image (e.g., El Torito, GRUB).<br><br><b>-commit</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Writes all pending filesystem changes to the output device or image file.<br><br><b>-abort</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Discards all pending filesystem changes, reverting to the state before the last commit or input device read.<br><br><b>-iso_level <I>num</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the ISO 9660 conformance level (1-4). Level 3 supports files larger than 4GB.<br><br><b>-speed <I>num</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the writing speed for optical media (e.g., '4x', 'max', '10000').<br><br><b>-read_only <I>on|off</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents any writing operations when set to <I>on</I>.<br><br><b>-hardlinks <I>on|off</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables or disables the creation of hardlinks on the ISO filesystem.<br><br><b>-acl <I>on|off</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables or disables the recording of Access Control Lists (ACLs).<br><br><b>-xattr <I>on|off</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables or disables the recording of Extended Attributes (xattrs).<br><br><b>-hfsplus <I>on|off</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables or disables the generation of an HFS+ filesystem alongside ISO 9660, for Apple Macintosh compatibility.<br><br><b>-zisofs <I>on|off</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables or disables zisofs compression for files within the ISO image.<br><br><b>-multi_session <I>mode</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Controls multi-session behavior, allowing appending data to existing optical discs (e.g., 'on', 'off', 'append').<br><br>


title: DESCRIPTION
content:
xorriso is a versatile command-line utility for creating, modifying, and burning ISO 9660 Rock Ridge filesystems, primarily for optical media like CD, DVD, and BD. It combines the functionalities of traditional tools like <I>mkisofs</I> and <I>growisofs</I> into a single, powerful application. Beyond simple ISO creation, xorriso supports multi-session recording, incremental backups, and file extraction from existing images or discs. It can manage various advanced filesystem features such as Joliet, HFS+, ACLs, and extended attributes. Its robust design allows for flexible manipulation of disc content, making it an indispensable tool for archival, data distribution, and system recovery tasks.


title: CAVEATS
content:
xorriso has a very comprehensive set of options and can be complex to use for intricate tasks. Misconfiguration of options, especially related to <I>-boot_image</I>, filesystem extensions (<I>-acl</I>, <I>-xattr</I>, <I>-hfsplus</I>), or multi-session parameters, can lead to unbootable or unreadable media.<br>Direct device access requires appropriate user permissions, often root privileges. Care must be taken when using <I>-outdev</I> with a physical drive, as it can overwrite existing data. The command-line interface, with its distinction between <I>options</I> and <I>commands</I>, requires careful attention to syntax.


title: UNIFIED WORKFLOW
content:
xorriso unifies the entire workflow of ISO image and optical disc management. Users can create a new ISO, add files, modify its structure, append data in a new session, and even extract specific files, all within a single invocation or interactive session, unlike older approaches that often required piping between multiple commands.


title: FILESYSTEM AGNOSTIC DESIGN
content:
While primarily focused on ISO 9660, xorriso can generate compatible filesystems like Joliet, Rock Ridge, and HFS+, allowing for broad compatibility across different operating systems while retaining POSIX-like attributes. It also supports advanced features like 'zisofs' compression and extended attributes which can be vital for backup and archival purposes.


title: INTERACTIVE MODE
content:
xorriso can be run in an interactive mode, allowing users to issue commands sequentially, inspect the current state of the filesystem, and commit changes only when satisfied, providing a more controlled environment for complex operations.


title: HISTORY
content:
xorriso was developed as a modern, unified tool to overcome the limitations and complexities of using separate programs like <I>mkisofs</I> and <I>growisofs</I> in conjunction. It was designed to support modern optical media (DVD, Blu-ray) and advanced filesystem features (like ACLs, xattr, HFS+), which were either lacking or poorly implemented in older tools. Its development aimed to provide a single, consistent interface for all stages of ISO image and optical disc manipulation, from creation to multi-session appending and data extraction. It has become a standard component in many Linux distributions for optical media handling.


title: PARAMETERS
content:
<b><b>-h</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints a short help message and exits.<br><br><b><b>-version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the version number of the <b>libwebp</b> library and exits.<br><br><b><b>-loop</b> <i>N</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Loops the animation <i>N</i> times. Use 0 for infinite looping. Default is 0.<br><br><b><b>-fps</b> <i>F</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the frames per second (FPS) for the animation. Default is 30.<br><br><b><b>-info</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints image information (dimensions, frames, duration, etc.) and exits, without displaying the image.<br><br><b><b>-noalpha</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Ignores the alpha channel (transparency) of the WebP image during display.<br><br><b><b>-nofullscreen</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents <b>vwebp</b> from attempting to use the full terminal window for display.<br><br><b><b>-min_duration</b> <i>D</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets a minimum frame duration in milliseconds (ms) for all frames. If a frame has a shorter duration, it will be extended.<br><br><b><b>-use_color_profile</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Attempts to use any ICC color profile embedded in the WebP image for rendering.<br><br><b><b>-no_color_profile</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Explicitly ignores any ICC color profile embedded in the WebP image.<br><br><b><b>-verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, showing more details about the decoding and rendering process.<br><br><b><b>-blend</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses blend method for rendering. This is the default behavior.<br><br><b><b>-no_blend</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables the blend method, instead drawing frames directly over the previous content.<br><br><b><b>-crop</b> <i>X Y W H</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Crops the image to a rectangular region defined by top-left coordinates (<i>X</i>, <i>Y</i>) and dimensions (<i>W</i>, <i>H</i>).<br><br><b><b>-scale</b> <i>W H</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Scales the image to the specified width <i>W</i> and height <i>H</i> pixels.<br><br><b><b>-premultiplication</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses premultiplied alpha for blending. This is the default behavior.<br><br><b><b>-no_premultiplication</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables premultiplied alpha for blending.<br><br><b><b>-dither</b> <i>strength</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies dithering with a specified strength (0-100) to reduce color banding.<br><br><b><b>-no_screen_clear</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents <b>vwebp</b> from clearing the screen between frames, which might reduce flickering in some terminals.<br><br><b><b>-flip</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Flips the image vertically before display.<br><br><b><b>-mt</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables multi-threading for faster decoding and rendering, if supported by the system.<br><br><b><b>-k</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;When scaling, keeps the original aspect ratio of the image.<br><br><b><b>-cpu_cap_test</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Runs an internal CPU capability test and prints the results.<br><br><b><b>-full_alpha</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses the full 0-255 alpha range during blending, which can affect transparency rendering.<br><br><b><b>-h_frag</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables horizontal fragment rendering optimization.<br><br><b><b>-v_frag</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables vertical fragment rendering optimization.<br><br>


title: DESCRIPTION
content:
<b>vwebp</b> is a command-line utility from the <b>libwebp</b> package designed to display WebP images directly within a terminal window. It leverages the <b>ncurses</b> library to render both static and animated WebP files, providing a rudimentary graphical interface in a text-based environment. This tool is particularly useful for quickly previewing WebP images on headless servers, remote SSH sessions, or minimal systems where a full graphical desktop environment is unavailable or undesirable. It supports displaying animated WebP files, allowing users to control animation properties like loop count and frames per second. <b>vwebp</b> can also handle transparency, scale images to fit the terminal, and provide basic image information. While its display capabilities are limited by the terminal's character grid and color depth, it offers a surprisingly effective way to interact with WebP images without leaving the command line.<br><br>It's an invaluable diagnostic and preview tool for developers and system administrators working with WebP assets in non-GUI environments.


title: CAVEATS
content:
The visual quality of images displayed by <b>vwebp</b> is highly dependent on the capabilities of the terminal emulator being used, including its character set, color support (e.g., 256 colors vs. true-color), and font rendering. True-color support can be limited or require specific terminal configurations. Displaying large images or high-FPS animations can be resource-intensive and may perform poorly, especially over slow network connections like SSH. Interactivity is basic, limited to pausing/resuming animation and frame navigation. Finally, <b>vwebp</b> requires the <b>ncurses</b> library for its rendering functionality, which might need to be explicitly installed on minimal Linux distributions.


title: KEY BINDINGS
content:
While <b>vwebp</b> is running, users can interact with the displayed image or animation using the following keyboard shortcuts:<br><b>Space</b> or <b>n</b>: Pause/Resume animation or advance to the next frame.<br><b>p</b>: Go to the previous frame.<br><b>q</b>: Quit the <b>vwebp</b> viewer.


title: HISTORY
content:
<b>vwebp</b> is an integral part of the <b>libwebp</b> open-source project, primarily developed by Google. The <b>libwebp</b> library and its associated command-line tools, including <b>vwebp</b>, were created to promote the adoption and utility of the WebP image format, which offers superior compression compared to older formats like JPEG and PNG. <b>vwebp</b> specifically addresses the need for a command-line viewer, extending the format's usability into text-based and server environments, complementing the encoders (<b>cwebp</b>) and decoders (<b>dwebp</b>) within the suite. Its development has closely mirrored the improvements and feature additions to the WebP format itself, ensuring compatibility with new capabilities such as extended animation and ICC profiles.


# TipSection

data1:
If you screw up the screen by e.g. accidentally reading a binary file with cat or less you might reinitialisation the terminal with the reset command.


data1:
This might save you a lot of time. If you e.g. want to delete a file with a very long name you can type the first few characters of the name and press TAB to auto complete the name. If there are more then one possibilities and you press TAB twice you get a list of all possibilities.


data1:
<b>1</b> = File type: \'-\' for a regular file, \'d\' for a directory, \'l\' for a symbolic link.\n
<b>2</b> = Owner permission\n
<b>3</b> = Group permission\n
<b>4</b> = Other permission


data1:
In the shown example the user has read, write and execute permission but the group and other has only read permissions.


data1:
Example: Give the owner read and write permission, the group read permission and no permission to other.


data1:
The first number represents the <b>owner</b> permission, the second the <b>group</b> permissions and the last number for all other users. The numbers are a binary representation of the <b>rwx</b> string.\n
<b>r = 4</b>\n
<b>w = 2</b>\n
<b>x = 1</b>


data1:
<b>ctrl + u</b> = Clear everything before the cursor\n
<b>ctrl + a</b> = To beginning of line\n
<b>ctrl + e</b> = To end of line\n
<b>ctrl + f</b> = Forward one character\n
<b>ctrl + b</b> = Back one character\n
<b>ctrl + w</b> = Cut last word\n
<b>ctrl + k</b> = Clear everything after cursor\n
<b>ctrl + _</b> = Undo\n
<b>meta + f</b> Forward one word\n
<b>meta + b</b> Back one one word


data1:
Shell special characters are interpreted by the shell as soon as it is given the command. For example, if you type ls *.bak, the shell translates *.bak to the list of all files in the current folder whose names end in .bak. The ls command never sees the asterisk. So if you want to search for files which actually have an asterisk in their names, you have to escape the asterisk to stop the shell from interpreting it.


data1: ""
data2:
The contents of the quotes are treated as one argument; any specials inside the quotes, except for $ and ``, are left uninterpreted.


data1:
Don't confuse shell special characters with special characters in regular expressions. Regular expressions must be protected from the shell by enclosing them in single quotes.


data1: 2>
data2:
send error messages to file (overwriting). (This means that errors can be directed separately from normal output.)


data1:
Save yourself time and create aliases for your most used commands. Aliases are like custom shortcuts.


data1:
Find a place in the file, where you want to keep the aliases. Usually you find them at the end of the file.


data1:
Separated by double ampersands, the next command is executed only if the previous one was executed successfully.


data1:
If there is no man page on your system, which hardly ever happens, you can check if the command has a help page in the most common way:


