# CommandSection

title: HOW TO LOAD (UNPICKLE) AN OBJECT IN PYTHON
content:
To load an object from a <i>.pkl</i> file, you use <b>pickle.load()</b>:<br><code><b>import</b> <b>pickle</b><br><br><b>with</b> <b>open</b>('<i>my_data.pkl</i>', '<b>rb</b>') <b>as</b> <i>f</i>:  <i># 'rb' for read binary</i><br>    <i>loaded_object</i> = <b>pickle.load</b>(<i>f</i>)<br><br><b>print</b>(<i>loaded_object</i>)</code>


title: PICKLE PROTOCOLS
content:
The <b>pickle</b> module supports several protocol versions. By default, it uses the highest available protocol. You can specify a protocol version when dumping:<br><code><b>import</b> <b>pickle</b><br><br><i>my_object</i> = [<i>1</i>, <i>2</i>, <i>3</i>]<br><br><b>with</b> <b>open</b>('<i>my_data_protocol2.pkl</i>', '<b>wb</b>') <b>as</b> <i>f</i>:<br>    <b>pickle.dump</b>(<i>my_object</i>, <i>f</i>, <b>protocol</b>=<i>2</i>)  <i># Use protocol 2 for compatibility</i></code><br>Using older protocols can improve compatibility with older Python versions but may come at the cost of larger file sizes or reduced performance.


title: HISTORY
content:
The <b>pickle</b> module has been a fundamental part of the Python standard library since its early versions, providing a native mechanism for object serialization. Over time, different 'protocol' versions have been introduced to improve performance, reduce file size, and handle new Python features. For instance, protocol 0 was the original text-based format, while later protocols (e.g., 2, 3, 4, 5) introduced binary formats and optimizations. Its development is tied directly to the evolution of the Python language itself and its need for robust object persistence.


title: TLDR
content:
<b>Evaluate the given Pkl modules and produce their rendering results</b>`pkl eval [module.pkl]`<br><b>Run as a server that communicates over stdin and stdout</b>`pkl server`<br><b>Evaluate Pkl modules as tests and produces a report</b>`pkl test [module.pkl]`<br><b>Start a REPL session</b>`pkl repl`<br><b>Prepare a Pkl project for publishing as a package</b>`pkl project package [path/to/project_directory]`<br><b>Resolve project dependencies and writes the resolved versions to a file at path PklProject.deps.json</b>`pkl project resolve [path/to/project_directory]`


title: SYNOPSIS
content:
<b>poetry version</b> [<I>new-version</I>] [<b>-s</b>|<b>--short</b>] [<b>--dry-run</b>] [<b>--absolute</b>]


title: PARAMETERS
content:
<b><I>new-version</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The version string to set (e.g., '1.0.1') or a rule to derive the new version (e.g., 'major', 'minor', 'patch', 'prerelease', 'premajor', 'preminor', 'prepatch').<br><br><b><b>-s</b>, <b>--short</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs only the version number, without any additional text or context.<br><br><b><b>--dry-run</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs all actions without actually writing changes to the <I>pyproject.toml</I> file, reporting only the new version that would be set.<br><br><b><b>--absolute</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version along with the absolute path to the <I>pyproject.toml</I> file where the version is defined.<br><br>


title: DESCRIPTION
content:
<b>poetry version</b> is a crucial command within the <i>Poetry</i> ecosystem, designed for managing a Python project's version.<br>It primarily serves two functions: displaying the current version and updating it.<br><br>When invoked without arguments, it simply outputs the version number defined in the <i>pyproject.toml</i> file. This is particularly useful for scripting or quickly checking the current state of a project.<br><br>The command's power lies in its ability to increment the version based on predefined rules like <i>major</i>, <i>minor</i>, <i>patch</i>, or even <i>prerelease</i>. It automatically updates the <i>pyproject.toml</i> file, ensuring consistency across your project's metadata.<br><br>It also supports setting an absolute version string. This functionality is vital for maintaining semantic versioning practices, facilitating release management, and ensuring that dependencies correctly reference your project's evolution.<br>It's an indispensable tool for any <i>Poetry</i>-managed project, streamlining the versioning workflow.


title: CAVEATS
content:
<b>poetry version</b> requires that your project is initialized with a <I>pyproject.toml</I> file containing a <I>[tool.poetry]</I> section with a 'version' key.<br>If the 'version' key is missing or the file is not found, the command will fail.<br>When using rules like 'major' or 'patch', it adheres strictly to <I>Semantic Versioning 2.0.0</I> (semver) principles. Non-semver compatible versions may not be correctly incremented by these rules.


title: SEMANTIC VERSIONING
content:
The <I>new-version</I> rules (<i>major, minor, patch, prerelease</i>, etc.) strictly follow <I>Semantic Versioning 2.0.0</I> principles. Understanding semver is crucial for effective use of these versioning rules for project releases.


title: FILE INTERACTION
content:
The command directly reads and writes the 'version' key within the <I>[tool.poetry]</I> section of your project's <I>pyproject.toml</I> file, making it the single source of truth for the project's version.


title: HISTORY
content:
The <i>Poetry</i> project, initiated by <I>Sébastien Eustace</I>, emerged as a modern Python dependency manager and packaging tool. From its inception, the ability to manage project versions was a core requirement, making <b>poetry version</b> an integral command.<br><br>It has evolved to provide robust support for <i>semantic versioning</i>, reflecting the best practices in software development for clear and consistent release cycles. Its introduction streamlined the process of bumping versions manually, which previously often involved direct edits to configuration files or custom scripts.


title: TLDR
content:
<b>Output the current version</b>`poetry version [[-s|--short]]`<br><b>Set project to a specific phase</b>`poetry version [stage]`<br><b>Increment the project to the next prerelease phase</b>`poetry version --next-phase`<br><b>Test project stage function without writing to pyproject.toml</b>`poetry version [stage] --dry-run`


title: PARAMETERS
content:
<b>-h</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays help for the `about` subcommand.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays help for the `about` subcommand.<br><br>


title: DESCRIPTION
content:
The `poetry about` command is a subcommand of the <b>Poetry</b> dependency management tool for Python. Its primary function is to display concise yet comprehensive information regarding the Poetry project itself. This typically includes the current version of Poetry installed, its license (usually MIT), official project URLs (like the homepage, GitHub repository, and documentation), and sometimes a list of its primary contributors.<br><br>It serves several useful purposes:<br><i>1. Quick Diagnostics:</i> When troubleshooting issues or reporting bugs, knowing the exact Poetry version and relevant project links is crucial.<br><i>2. Project Overview:</i> It offers a quick reference for developers and users to understand the tool's foundational details.<br><i>3. Compliance:</i> Easily check the licensing information for compliance reasons.<br><br>Essentially, `poetry about` acts as an informational panel, providing essential metadata about the `poetry` tool without requiring an internet connection or navigating external documentation, making it a handy utility for anyone working with Poetry.


title: CAVEATS
content:
The command `poetry about` is <i>not</i> a standalone Linux command. It is a subcommand of the <b>Poetry</b> Python dependency manager. Therefore, <b>Poetry</b> must be installed and accessible in the system's PATH for this command to function. Attempting to run `poetry-about` directly (with a hyphen) will typically result in a "command not found" error unless an alias or script specifically creates such a command.


title: TYPICAL OUTPUT
content:
The output of `poetry about` usually includes:<br><ul><li><b>Poetry</b> version (e.g., `Poetry (version 1.8.2)`)</li><li>License information (e.g., `License: MIT`)</li><li>Official project URLs (e.g., `Homepage: https://python-poetry.org/`, `GitHub: https://github.com/python-poetry/poetry`)</li><li>A brief description of what Poetry is.</li></ul>


title: HISTORY
content:
<b>Poetry</b> was created by Sébastien Eustace to provide a more robust and pleasant dependency management experience for Python projects, inspired by tools like `composer` (PHP) and `cargo` (Rust). It aims to replace `pip`, `venv`, `setup.py`, and `requirements.txt` with a single, coherent tool. The `about` subcommand has been a fundamental part of Poetry since its early versions, serving as a standard way for users to quickly retrieve essential information about the tool they are using. Its presence reflects a common practice in well-designed command-line interfaces to provide easy access to self-descriptive metadata.


title: SYNOPSIS
content:
<b>restic profile</b> [<i>profile_options</i>] <i>command</i> [<i>command_options</i>] [<i>global_options</i>]


title: PARAMETERS
content:
<b><i>command</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The specific <I>restic</I> subcommand to run and profile (e.g., <I>backup</I>, <I>restore</I>, <I>check</I>). All arguments following this command are passed directly to it.<br><br><b>--cpuprofile <i>file</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Writes CPU profile data to the specified <I>file</I>. This helps identify functions consuming the most CPU time.<br><br><b>--memprofile <i>file</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Writes memory allocation profile data to the specified <I>file</I>. Useful for detecting memory leaks or excessive memory usage.<br><br><b>--blockprofile <i>file</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Writes block I/O profile data to the specified <I>file</I>. Helps analyze disk and network read/write patterns.<br><br><b>--mutexprofile <i>file</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Writes mutex contention profile data to the specified <I>file</I>. Useful for identifying bottlenecks due to concurrent access to shared resources.<br><br><b>--profile-duration <i>duration</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the duration for which profiling data should be collected (e.g., <I>30s</I>, <I>5m</I>, <I>1h</I>). After this duration, profiling stops, but the command continues.<br><br><b>--profile-path <i>path</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the directory where profile data files should be written. Defaults to the current working directory.<br><br>


title: DESCRIPTION
content:
The <b>restic profile</b> command is a powerful diagnostic tool within the <I>restic</I> backup program. Its primary function is to run a specified restic subcommand (such as <I>backup</I>, <I>restore</I>, or <I>check</I>) while collecting detailed performance data. This data, often in the <I>pprof</I> format, can then be analyzed using tools like `go tool pprof` to identify bottlenecks in CPU usage, memory allocation, I/O operations, or concurrency. It's invaluable for diagnosing and optimizing performance issues, especially in large repositories or during long-running operations. Users can specify various types of profiles (CPU, memory, block, mutex) and define the duration for which profiling data should be collected. It's important to note that this command is typically invoked as `restic profile` rather than a standalone `resticprofile` binary, which does not exist in standard restic installations.


title: CAVEATS
content:
The command you are likely looking for is `<b>restic profile</b>`, which is a subcommand of `<b>restic</b>`, not a standalone `<b>resticprofile</b>` binary. Profiling adds some overhead to the execution of the profiled command, so it's not recommended for regular use. Analyzing the generated profile files requires familiarity with Go's `<b>pprof</b>` tool (`go tool pprof`), which is part of the Go development kit. Without this tool, the raw profile data is not easily interpretable.


title: USAGE EXAMPLE
content:
To profile a backup operation for 60 seconds and generate a CPU profile:<br><br><code><b>restic profile --cpuprofile cpu.pprof --profile-duration 60s backup /path/to/data --tag my-backup</b></code><br><br>This will run the `<b>backup</b>` command, collecting CPU data for the first 60 seconds. The `<b>cpu.pprof</b>` file can then be analyzed.


title: ANALYZING PROFILE DATA
content:
Once a profile file (e.g., `<b>cpu.pprof</b>`) is generated, it can be analyzed using `<b>go tool pprof</b>`. For example, to view the CPU profile in an interactive web interface:<br><br><code><b>go tool pprof -http=:8080 cpu.pprof</b></code><br><br>This command starts a web server on port 8080, providing a graphical representation of the profile data, including call graphs and flame graphs.


title: HISTORY
content:
`<b>restic</b>` is an open-source, modern backup program written in Go, first released in 2014. Given its origin in a compiled language like Go, performance profiling capabilities are a natural extension of its development toolkit. The `<b>profile</b>` subcommand was integrated to provide developers and advanced users with the ability to diagnose and optimize the performance of backup, restore, and other repository operations, ensuring the tool remains efficient for large-scale data management.


title: TLDR
content:
<b>List all saved snapshots</b>`resticprofile`<br><b>Run a backup on the default profile</b>`resticprofile backup`<br><b>Run a backup with a specific profile (default profile is "default")</b>`resticprofile [[-n|--name]] "[profile_name]" backup`<br><b>Run in dry-run mode and show the underlying restic commands</b>`resticprofile --dry-run backup`<br><b>Display the names of all profiles from the configuration file</b>`resticprofile profiles`<br><b>Generate shell completions</b>`resticprofile generate [--bash-completion|--zsh-completion]`<br><b>Show all details of a profile</b>`resticprofile show [[-n|--name]] "[profile_name]"`


title: PARAMETERS
content:
<b><I>subcommand</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The specific debug operation to perform, such as <I>info</I> for environment details or <I>resolve</I> for dependency resolution troubleshooting.<br><br><b>--show-directory</b><br>&nbsp;&nbsp;&nbsp;&nbsp;(For <I>info</I> subcommand) <br>Displays the root directory of the current Poetry project.<br><br><b>--extras <extras></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(For <I>resolve</I> subcommand) <br>A comma-separated list of extras to enable during the dependency resolution process.<br><br><b>--python <python_version></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(For <I>resolve</I> subcommand) <br>The specific Python version to use when attempting dependency resolution.<br><br><b>--dry-run</b><br>&nbsp;&nbsp;&nbsp;&nbsp;(For <I>resolve</I> subcommand) <br>Executes the resolution process without actually modifying any files, showing what would happen.<br><br><b>--only-lock</b><br>&nbsp;&nbsp;&nbsp;&nbsp;(For <I>resolve</I> subcommand) <br>Forces the resolver to only use the lock file, ignoring potentially newer constraints in <b>pyproject.toml</b>.<br><br><b>-v, --verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Increases the verbosity of messages during command execution, providing more detailed output for debugging.<br><br>


title: DESCRIPTION
content:
The <b>poetry debug</b> command serves as a critical diagnostic tool within the <I>Poetry</I> dependency management ecosystem. Unlike a standalone executable, it acts as a parent namespace for various subcommands designed to help users troubleshoot issues related to project configuration, virtual environment setup, and most importantly, dependency resolution. This command is invaluable for developers encountering complex dependency conflicts, unexpected installation behavior, or general issues with their project's dependencies. Its primary subcommands, <I>info</I> and <I>resolve</I>, offer deep insights into the current environment and the intricate process of dependency graph construction, enabling users to quickly identify the root causes of problems and find solutions. It bridges the gap between a problem and its resolution by providing clear, actionable diagnostic data.


title: CAVEATS
content:
The <I>poetry debug</I> command is not a standalone executable. It requires <I>Poetry</I> to be installed and accessible in your shell's PATH. It functions as a collection of subcommands, and invoking <I>poetry debug</I> without a specific subcommand will display general help information rather than performing any particular debugging task. Its utility is entirely dependent on the specific subcommand invoked (e.g., <I>info</I> or <I>resolve</I>).


title: KEY SUBCOMMANDS
content:
<b>info</b>:<br>Displays detailed information about the current Poetry environment, including Poetry's version, Python version, virtual environment path, project root, and other relevant system details. This is often the first step in diagnosing environment-related issues.<br><br><b>resolve</b>:<br>Helps troubleshoot dependency resolution problems. It attempts to resolve the project's dependencies and provides verbose output about the resolution process, including why certain packages were chosen or rejected. This subcommand is invaluable for understanding conflicts or unexpected dependency versions.


title: HISTORY
content:
The <I>debug</I> namespace was introduced to <I>Poetry</I> as the project matured, recognizing the need for better introspection and diagnostic tools. As dependency graphs grew more complex and users encountered varied environment configurations, the demand for clear debugging information became paramount. The <I>info</I> subcommand was one of the earlier additions, providing a snapshot of the environment. The <I>resolve</I> subcommand, especially its detailed output, became crucial for understanding the intricate process of dependency resolution, evolving to help users pinpoint conflicts that were otherwise obscure. Its development reflects <I>Poetry</I>'s commitment to user experience and robust dependency management.


title: TLDR
content:
<b>Show debug info about Poetry and your project's virtual environment</b>`poetry debug info`<br><b>Attempt to resolve your project dependencies</b>`poetry debug resolve`<br><b>Show supported packaging tags for your project's active virtual environment</b>`poetry debug tags`


title: SYNOPSIS
content:
<B>poetry-python</B> [<i>-h</i>] [<i>-v</i>] [<i>-B</i>] [<i>-c command</i> | <i>-m module</i> | <i>script-file</i>] [<i>arguments...</i>]


title: PARAMETERS
content:
<b><i>-h</i>, <i>--help</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display help message and exit for the underlying Python interpreter.<br><br><b><i>-V</i>, <i>--version</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the Python version number of the virtual environment's interpreter and exit.<br><br><b><i>-c &lt;command&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Execute the specified Python <I>command</I> string using the project's Python.<br><br><b><i>-m &lt;module&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Run the specified Python library <I>module</I> as a script within the project's environment.<br><br><b><i>-B</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not write <I>.pyc</I> files on import (byte-code cache).<br><br><b><i>-E</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Ignore all <I>PYTHON*</I> environment variables (such as <I>PYTHONPATH</I>, <I>PYTHONHOME</I>) when starting the interpreter.<br><br><b><i>&lt;script-file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to a Python script file to execute using the virtual environment's interpreter.<br><br><b><i>&lt;arguments...&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Arguments passed to the Python script or module being executed.<br><br>


title: DESCRIPTION
content:
The <B>poetry-python</B> command, while not typically invoked directly by users, serves as an internal shim or wrapper for the Python interpreter managed by the <I>Poetry</I> dependency management tool. Its primary function is to ensure that when a Python command is executed within a Poetry project's context (e.g., via <I>poetry run</I> or within a <I>poetry shell</I>), the correct Python executable from the project's virtual environment is utilized.<br><br>Instead of directly calling the system's default Python, <B>poetry-python</B> guarantees that the interpreter associated with the project's specific dependencies is invoked. This is crucial for maintaining isolated and reproducible development environments. Any arguments or options passed to <B>poetry-python</B> are generally forwarded directly to the underlying virtual environment's <I>python</I> interpreter, making it behave like the standard <I>python</I> command but with the correct environment context. It abstracts away the complexity of managing virtual environment activation for Python script execution.


title: CAVEATS
content:
<B>poetry-python</B> is primarily an internal mechanism of the <I>Poetry</I> dependency manager and is generally <B>not intended for direct user invocation</B>. Users should typically interact with their project's Python interpreter through <I>poetry run python</I> or by activating the shell with <I>poetry shell</I>.<br><br>The exact behavior and even the presence of a directly executable <B>poetry-python</B> shim might vary slightly depending on the Poetry version and how it was installed. Relying on its direct execution could lead to unexpected behavior or compatibility issues in future Poetry updates.


title: IMPLICIT INVOCATION
content:
While not typically run directly, <B>poetry-python</B> (or similar internal logic) is implicitly invoked by <I>Poetry</I> when you use commands like <I>poetry run python</I> or <I>poetry run &lt;script&gt;</I>. <I>Poetry</I> handles the necessary environment setup, including setting the correct <I>PATH</I> and other environment variables, before executing the command. This ensures that the Python interpreter and its associated packages from the project's virtual environment are correctly utilized.


title: HISTORY
content:
The concept of a wrapper like <B>poetry-python</B> evolved as a fundamental component of <I>Poetry</I>'s design philosophy, which emphasizes strong project isolation and reliable dependency management. From its early development, <I>Poetry</I> aimed to abstract away the complexities of virtual environments, making it seamless for developers to execute scripts and commands using the correct project-specific Python interpreter. This wrapper ensures that the <B>python</B> command, when invoked within a <I>Poetry</I> context, always points to the virtual environment's interpreter, solidifying <I>Poetry</I>'s promise of reproducible builds and consistent development environments.


title: TLDR
content:
<b>Install the specified Python version</b>`poetry python install [3.13.1]`<br><b>List all Python versions managed by System or Poetry</b>`poetry python list`<br><b>List all Python versions managed by Poetry</b>`poetry python list --managed`<br><b>Remove the specified Python version (if managed by Poetry)</b>`poetry python remove [3.13.1]`


title: PARAMETERS
content:
<b>--help, -h</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display help information for the <B>poetry self</B> command or a specific subcommand.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show the version of the <B>poetry self</B> utility itself (not the installed Poetry version).<br><br><b>--verbose, -v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Increase the verbosity of messages during the operation.<br><br><b>--quiet, -q</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppress all output except for errors.<br><br><b>--dry-run</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Simulate the operation without actually making any changes to the installation.<br><br><b>--channel <I>&#60;channel&#62;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the distribution channel to use for installations or updates (e.g., <I>stable</I>, <I>preview</I>).<br><br>


title: DESCRIPTION
content:
<I>poetry self</I> is an integral utility designed for the comprehensive management of the Poetry dependency manager installation itself. It empowers users to effortlessly inspect the currently installed Poetry version, streamline upgrades to the latest stable release, or precisely install a specific version tailored to particular project needs. This command acts as a crucial maintenance tool, ensuring your Poetry environment remains current and robust, thereby mitigating potential compatibility conflicts that can emerge from outdated versions. It centralizes self-management operations, simplifying the process of keeping Poetry optimized and consistent across diverse development projects. Utilizing <I>poetry self</I> contributes significantly to a stable, efficient, and reliable Python development workflow, ensuring that your development toolchain is always ready and up-to-date.<br><br>Beyond simple updates, <I>poetry self</I> also provides mechanisms for checking for new releases and even removing Poetry installations, making it a complete lifecycle manager for the tool.


title: CAVEATS
content:
Installing or updating Poetry globally might require elevated privileges (e.g., using <I>sudo</I>) depending on the installation method and target directory.<br>Relying on <I>poetry self</I> for updates is generally recommended over system package managers (like <I>apt</I> or <I>brew</I>) if Poetry was initially installed via its official installer or <I>pipx</I>, to avoid conflicts and ensure the latest features.<br>An active internet connection is necessary for fetching new Poetry versions or updates.


title: SUBCOMMANDS OVERVIEW
content:
The <B>poetry self</B> command provides several subcommands for specific management tasks:<br><br><B><I>install</I></B> <I>&#60;version&#62;</I> [<I>&#60;options&#62;</I>]: Installs a specific version of Poetry. If no version is specified, it installs the latest stable version. Options include <B>--channel</B> for selecting a release channel, and <B>--file</B> for installing from a local archive.<br><br><B><I>update</I></B> [<I>&#60;options&#62;</I>]: Upgrades the current Poetry installation to the latest available version in the configured channel. Use <B>--preview</B> to update to a preview release if available.<br><br><B><I>version</I></B>: Displays the currently installed version of Poetry.<br><br><B><I>check</I></B> [<I>&#60;options&#62;</I>]: Checks for new available Poetry releases without performing an update. Use <B>--latest</B> to check against the absolute latest release, ignoring the configured channel.<br><br><B><I>remove</I></B> [<I>&#60;options&#62;</I>]: Uninstalls the Poetry application. The <B>--purge</B> option can be used to remove all associated configuration files and caches.


title: HISTORY
content:
The <I>poetry self</I> functionality emerged from the community's need for a standardized, robust way to manage the Poetry application itself, separate from project-specific dependencies. Initially, users relied on manual downloads, <I>pipx</I> commands, or shell scripts for updates and installations. Recognizing the importance of self-sufficiency, the Poetry project integrated these capabilities into a dedicated <I>self</I> subcommand. This evolution centralized control over Poetry's lifecycle, improving user experience by providing a consistent interface for updates, installations, and version management, thereby reducing fragmentation and enhancing the overall stability of the development ecosystem.


title: TLDR
content:
<b>Install a package</b>`poetry self add [package_name]`<br><b>Install dependencies from the Poetry installation's pyproject.toml file</b>`poetry self install`<br><b>Lock dependencies from the Poetry installation's pyproject.toml file</b>`poetry self lock`<br><b>Remove a package</b>`poetry self remove [package_name]`<br><b>List all installed packages</b>`poetry self show`<br><b>List all installed plugins</b>`poetry self show plugins`<br><b>Sync the runtime environment with the Poetry installation's poetry.lock file</b>`poetry self sync`<br><b>Update dependencies from the Poetry installation's pyproject.toml file</b>`poetry self update`


title: SYNOPSIS
content:
rdiff-backup [<i>options</i>] <i>source_directory</i> <i>destination_directory</i><br>rdiff-backup [<i>options</i>] --restore <i>source_directory</i> <i>destination_directory</i>


title: PARAMETERS
content:
<b>--restore</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Restores files from a backup repository to a specified destination. Requires a source (the backup repository) and a destination path.<br><br><b>-r <time>, --restore-as-of <time></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Restores files as they were at a specific point in time. The <i>&lt;time&gt;</i> argument can be an absolute date/time string (e.g., '2023-10-27 10:00:00'), a relative time (e.g., '3D' for 3 days ago, '1W' for 1 week ago), an increment number, or 'now'.<br><br><b>--remove-older-than <time></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes all incremental backup data (old file versions) from the repository that are older than the specified <i>&lt;time&gt;</i>. This helps manage disk space.<br><br><b>--force</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the backup or restore operation to proceed even if there are warnings or existing conflicts that would normally cause it to abort.<br><br><b>--exclude <glob_pattern></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Excludes files or directories matching the given glob pattern from the backup. This option can be specified multiple times for different patterns.<br><br><b>--include <glob_pattern></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Includes files or directories matching the given glob pattern, overriding any previous <b>--exclude</b> directives. This option can also be specified multiple times.<br><br><b>--exclude-device-files</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Excludes device files (block and character special files) from the backup to prevent potential issues or large, empty files.<br><br><b>--exclude-special-files</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Excludes special files (sockets, fifos, and device files) from the backup.<br><br><b>--preserve-numerical-ids</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Preserves numerical User IDs (UIDs) and Group IDs (GIDs) instead of attempting to map them to usernames and group names on the destination system. Useful for maintaining permissions across systems with different user/group databases.<br><br><b>--print-statistics</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints detailed statistics about the backup or restore operation, including number of files, total size, transfer rates, and changed files.<br><br><b>--server</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Runs <b>rdiff-backup</b> in server mode. This is typically invoked automatically by a remote <b>rdiff-backup</b> client over SSH and not meant for direct user interaction.<br><br><b>--remote-schema <ssh_command></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a custom command to use for establishing SSH connections to remote hosts. For example, <code>ssh -C</code> for compression or <code>ssh -p 2222</code> for a different port.<br><br><b>-v, --verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Increases the verbosity level of output. Can be specified multiple times (e.g., <code>-vv</code>) for more detailed information.<br><br><b>--no-compression</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables compression for the stored diff files in the backup repository. This can reduce CPU usage at the cost of increased disk space.<br><br><b>--no-hard-links</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Treats hard links as separate files, rather than preserving their hard link relationship in the backup. This can increase storage but simplify restoration in some scenarios.<br><br><b>--tempdir <directory></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative temporary directory for <b>rdiff-backup</b> to use during its operations. By default, it uses the system's temporary directory.<br><br>


title: DESCRIPTION
content:
<b>rdiff-backup</b> is a versatile and efficient backup utility for Linux and other Unix-like systems, widely appreciated for its unique "reverse incremental" backup approach. Unlike traditional incremental backup systems where the initial backup is full and subsequent backups store only changes, <b>rdiff-backup</b> maintains the most recent backup as a full, easily accessible snapshot. Older file versions are then stored as reverse diffs relative to the newest full backup. This design significantly simplifies and speeds up the restoration process for the latest version of files, as no diffs need to be applied.<br><br>It leverages the <i>librsync</i> algorithm to compute and store only the differences between files, optimizing disk space usage, especially for files that change little over time. <b>rdiff-backup</b> supports both local and remote backups, using SSH for secure network transfers. This makes it an excellent choice for backing up data to remote servers or network-attached storage. It faithfully preserves file permissions, ownership, symlinks, hard links, and other metadata, ensuring data integrity. Users can easily restore specific file versions or entire directories from any point in time for which backup data exists.


title: CAVEATS
content:
<b>Disk Space Usage:</b> While <b>rdiff-backup</b> uses diffs, the repository can still grow significantly over time, especially if many files change frequently or if <b>--remove-older-than</b> is not used periodically to prune old increments.<br><br><b>Performance:</b> Backups over slow network connections can be sluggish, particularly during the initial full backup. The <i>librsync</i> algorithm itself consumes CPU resources on both client and server during diff calculation.<br><br><b>Repository Integrity:</b> Directly modifying or deleting files within the <code>rdiff-backup-data</code> directory of the repository can corrupt the backup chain and lead to irretrievable data loss. Always use <b>rdiff-backup</b> commands for managing the repository.<br><br><b>File Permissions and Attributes:</b> While <b>rdiff-backup</b> aims to preserve all file attributes (permissions, ownership, ACLs, etc.), differences in filesystem capabilities or user/group IDs between source and destination systems can sometimes lead to discrepancies.<br><br><b>Requires <i>librsync</i>:</b> <b>rdiff-backup</b> relies on the <i>librsync</i> library for its core differencing functionality, which must be installed on both the client and server for remote operations.


title: HOW IT WORKS
content:
<b>rdiff-backup</b> operates on a unique "reverse incremental" principle. On the first run, it creates a complete, full backup of the source directory at the destination. For subsequent backups, it compares the current state of the source with the <i>latest full backup</i> already at the destination. Using the <i>librsync</i> algorithm, it calculates only the differences. These differences (reverse diffs) are then stored in a hidden <code>rdiff-backup-data</code> directory. Crucially, the destination's main directory is updated to become a new, full snapshot of the source's latest state. This means the most recent backup is always a readily accessible full copy, while older versions are reconstructed by applying the stored diffs.


title: RESTORATION PROCESS
content:
Restoring the latest version of a file or an entire directory is extremely fast and straightforward because the most recent backup at the destination is always a full, uncompressed copy. To restore older versions, <b>rdiff-backup</b> intelligently applies the stored reverse diffs in reverse chronological order to reconstruct the file or directory as it existed at the specified historical point in time. This simplifies the restoration logic compared to traditional incremental systems where many diffs might need to be applied to reach the latest state.


title: REMOTE OPERATION
content:
One of <b>rdiff-backup</b>'s powerful features is its ability to perform backups to or from a remote host securely over SSH. When a remote path is specified (e.g., <code>user@host::/path/to/destination</code>), <b>rdiff-backup</b> automatically initiates an SSH connection and invokes an <code>rdiff-backup --server</code> process on the remote machine. This establishes a secure and efficient communication channel, allowing differential data transfers without needing manual configuration of network shares or complex setup on the remote side.


title: REPOSITORY STRUCTURE
content:
The destination directory for an <b>rdiff-backup</b> repository contains two main parts: the actual, latest full backup of your data, and a hidden directory named <code>rdiff-backup-data</code>. The <code>rdiff-backup-data</code> directory stores all the historical reverse diffs, metadata about each backup session, file listings, and other internal information necessary to reconstruct older versions of files. It is critical to never manually modify or delete anything within the <code>rdiff-backup-data</code> directory, as this can easily corrupt the entire backup history. Management of old increments should always be done via <b>rdiff-backup</b> commands like <b>--remove-older-than</b>.


title: HISTORY
content:
<b>rdiff-backup</b> was created by Ben Escoto and first released around 2002. It was designed to provide efficient incremental backups with an emphasis on easy restoration of the latest state, a common pain point with traditional incremental backup systems. Its innovation lay in the "reverse incremental" model, where the most recent backup is a full snapshot, and older versions are derived from it using diffs. This design quickly gained popularity for its practicality and robustness, especially combined with its support for remote backups over SSH. Over the years, it has seen continuous development and maintenance, adapting to newer Python versions and operating system environments, maintaining its position as a reliable tool in the Linux backup ecosystem.


title: TLDR
content:
<b>Back up path/to/source to path/to/backup</b>`rdiff-backup backup [path/to/source] [path/to/backup]`<br><b>List incremental backups in repository (location path, local or remote)</b>`rdiff-backup list increments [repository]`<br><b>Restore from most recent backup</b>`rdiff-backup restore [path/to/backup] [path/to/destination]`<br><b>Restore backed up files as they were 3 days ago</b>`rdiff-backup restore --at 3D [path/to/backup] [path/to/destination]`


title: SYNOPSIS
content:
As `<b>repomix</b>` itself is not a standalone command, its functionality was invoked through the <B>Pulp 2</B> client's `pulp-admin` tool. The typical conceptual invocation was:<br><br><b>pulp-admin rpm repo create</b> <br>&nbsp;&nbsp;<b>--repo-id</b> <i>&lt;new_repository_id&gt;</i> <br>&nbsp;&nbsp;<b>--repomix</b>=<i>true</i> <br>&nbsp;&nbsp;<b>--source-repo-ids</b>=<i>&lt;repo1_id&gt;</i>[,<i>&lt;repo2_id&gt;</i>,...]<br><br>This structure indicates creating a new repository (`<b>repo create</b>`) with a specified ID, enabling the mixing feature (`<b>--repomix=true</b>`), and listing the source repositories (`<b>--source-repo-ids</b>`) to draw content from.


title: PARAMETERS
content:
<b><b>--repo-id</b> <i>&lt;new_repository_id&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the unique identifier for the new repository that will be created to house the mixed content. This ID is used for subsequent management and client configuration within <I>Pulp 2</I>.<br><br><b><b>--repomix</b>=<i>true</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A boolean flag that, when set to <i>true</i>, instructs the <B>Pulp 2</B> system to perform a repository mixing operation, combining content from specified source repositories rather than synchronizing from a single upstream.<br><br><b><b>--source-repo-ids</b>=<i>&lt;repo1_id&gt;</i>[,<i>&lt;repo2_id&gt;</i>,...]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;A comma-separated list of unique identifiers for existing <I>Pulp 2</I> repositories whose content (packages, metadata) will be aggregated into the new mixed repository.<br><br>


title: DESCRIPTION
content:
The term `<b>repomix</b>` refers to a specific functionality, primarily associated with the <I>Pulp 2</I> content management platform. It enabled the creation of a new <B>RPM repository</B> by intelligently combining packages and metadata from several existing RPM repositories. This feature was vital for system administrators to aggregate, curate, and simplify access to software packages from various upstream sources into a single, unified repository for client systems. Unlike typical repository synchronization, `repomix` created a logical union, often linking to content rather than duplicating it, optimizing storage and management.


title: CAVEATS
content:
The term `<b>repomix</b>` is not a standalone, general-purpose command found in most standard Linux distributions. It primarily refers to a specific feature within the <B>Pulp 2</B> content management platform's `pulp_rpm` plugin. <B>Pulp 2</B> is an older, deprecated version of the Pulp project and has reached its End-of-Life. Modern content management systems, including <B>Pulp 3</B>, use different architectures and methods for content aggregation and distribution, meaning the explicit `<b>repomix</b>` command or flag is typically not present. Information provided here is based on its context within <B>Pulp 2</B>.


title: CONTEXT IN PULP 2
content:
In <B>Pulp 2</B>, the `<b>repomix</b>` functionality allowed server administrators to define a virtual repository that would logically draw its content from multiple existing source repositories. This was a powerful feature for creating custom content views without duplicating vast amounts of data, as <B>Pulp</B> would intelligently link to the content rather than storing multiple physical copies, optimizing storage and synchronization efforts.


title: CURRENT STATUS AND ALTERNATIVES
content:
Users should be aware that <B>Pulp 2</B> is an older, deprecated version of the <B>Pulp</B> content management system. Its successor, <B>Pulp 3</B>, offers similar capabilities for content aggregation but uses a redesigned architecture and different command-line interfaces. For current content management needs, users should explore <B>Pulp 3</B> or other modern repository management solutions that provide similar aggregation features, often through concepts like content views or composite repositories, which abstract the mixing process.


title: HISTORY
content:
The `<b>repomix</b>` functionality was a significant innovation introduced with the <B>Pulp 2</B> project, specifically within its `pulp_rpm` plugin. Launched to provide robust content management for <I>RPMs</I> and other package types, <B>Pulp 2</B> utilized `<b>repomix</b>` to enable administrators to create custom, consolidated views of software for their client systems. This simplified package distribution and management by aggregating disparate upstream repositories into a single logical source. With the subsequent development of <B>Pulp 3</B>, the underlying architecture shifted, and while content aggregation remains a core feature, the explicit `<b>repomix</b>` terminology and invocation methods evolved into more integrated and generalized content management functionalities within the new platform.


title: TLDR
content:
<b>Output custom format</b>`repomix [[-o|--output]] [path/to/file] --style [xml|markdown|plain]`<br><b>Send output to stdout</b>`repomix --stdout > [path/to/file]`<br><b>Send output to stdout, then pipe into another program</b>`repomix --stdout | [less]`<br><b>Output with compression</b>`repomix --compress`<br><b>Process specific files</b>`repomix --include "[src/**/*.ts]" --ignore "[**/*.test.ts]"`<br><b>Pack a repository from a branch</b>`repomix --remote [https://github.com/user/repo/tree/main]`<br><b>Pack a repository at a specific commit</b>`repomix --remote [https://github.com/user/repo/commit/836abcd7335137228ad77feb28655d85712680f1]`<br><b>Pack repository using shorthand</b>`repomix --remote [user/repo]`


title: SYNOPSIS
content:
<b><code>poetry check [--strict] [--help] [--quiet] [--verbose|-v] [--version] [--no-interaction]</code></b>


title: PARAMETERS
content:
<b><b><code>--strict</code></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Returns a non-zero exit code for warnings, in addition to errors. Without this option, warnings might be printed, but the command could still exit with code 0 if no errors are found.<br><br><b><b><code>--help</code></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays help information about the <b><code>check</code></b> command.<br><br><b><b><code>--quiet</code></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses all command output, only returning an exit code.<br><br><b><b><code>--verbose</code></b> (or <b><code>-v</code></b>, <b><code>-vv</code></b>, <b><code>-vvv</code></b>)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Increases the verbosity of messages. Multiple <b><code>-v</code></b> options increase the level of detail.<br><br><b><b><code>--version</code></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the current Poetry application version.<br><br><b><b><code>--no-interaction</code></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not ask any interactive questions.<br><br>


title: DESCRIPTION
content:
The <b><code>poetry check</code></b> command is an essential tool for maintaining the integrity and correctness of a Python project managed by Poetry. Its primary function is to validate the <b><code>pyproject.toml</code></b> file against established standards and Poetry's specific schema.<br><br>This includes verifying the syntax and structure of project metadata, dependencies, scripts, and other configuration settings defined within the file. By running <b><code>poetry check</code></b>, developers can proactively identify and correct potential issues such as malformed entries, missing required fields, or non-compliant dependency specifications (e.g., against PEP 508 or PEP 621).<br><br>This early detection prevents more significant problems during dependency installation (<b><code>poetry install</code></b>), package publishing, or when other developers attempt to work with the project. It provides a quick and static analysis of the project configuration without attempting to resolve or install any dependencies, making it a fast and reliable first line of defense for project health.


title: CAVEATS
content:
While <b><code>poetry check</code></b> is excellent for validating the <b><code>pyproject.toml</code></b> file's syntax and schema, it does <i>not</i> perform runtime checks or dependency resolution. It will not verify if specified packages actually exist in the configured repositories, or if their versions are compatible with each other. For such checks, commands like <b><code>poetry install</code></b> or <b><code>poetry update</code></b> are necessary, as they attempt to resolve and fetch dependencies.


title: EXIT STATUS
content:
The <b><code>poetry check</code></b> command exits with status <b><code>0</code></b> if the <b><code>pyproject.toml</code></b> file is valid and no errors or warnings (when <b><code>--strict</code></b> is used) are encountered. It exits with a non-zero status (typically <b><code>1</code></b>) if any errors are found, or if warnings are present and the <b><code>--strict</code></b> flag is enabled. This makes it suitable for use in continuous integration (CI) pipelines to ensure project integrity before deployment or further build steps.


title: HISTORY
content:
The Poetry project, including the <b><code>poetry check</code></b> command, was initiated by Sébastien Eustace with its first public releases around late 2017 and early 2018. From its inception, the command-line interface (CLI) was designed to prioritize ease of use and project integrity. The <b><code>check</code></b> command has been a foundational part of Poetry's toolkit, embedded in its CLI from very early versions, reflecting the critical importance of validating the <b><code>pyproject.toml</code></b> configuration file before any other dependency management operations are performed. Its purpose has remained consistent: to ensure the core project configuration is sound and compliant.


title: SEE ALSO
content:
<b><code>poetry install(1)</code></b>, <b><code>poetry update(1)</code></b>, <b><code>poetry lock(1)</code></b>, <b><code>pip(1)</code></b>, <b><code>pipenv(1)</code></b>


title: PARAMETERS
content:
<b>UNIT...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name(s) of one or more systemd units (e.g., 'apache2.service', 'multi-user.target') whose processes are to be frozen or thawed. If no units are specified, the command will typically do nothing or report an error depending on systemd version.<br><br>


title: DESCRIPTION
content:
systemctl freeze is a subcommand of systemctl used to pause the execution of processes belonging to one or more specified systemd units. Conversely, systemctl thaw resumes their execution. <br><br> This functionality relies on the Linux kernel's <I>cgroups freezer controller</I>, which allows an administrator to stop all processes within a particular control group. When a unit is frozen, all processes that systemd manages for that unit are placed into a frozen state, preventing them from consuming CPU cycles or performing I/O operations. <br><br> The primary use cases for freezing services include preparing a system for a consistent snapshot or backup operation, performing maintenance on a dependent service without stopping the primary service entirely, or temporarily pausing a service for debugging purposes. It provides a mechanism to achieve a "quiesced" state for specific applications or services, which is crucial for data integrity during critical operations. It's important to note that systemctl freeze does not suspend the entire system, but only the processes within the designated systemd units' cgroups.


title: CAVEATS
content:
<b>Incomplete Freeze:</b> The freezer only affects processes within the designated cgroup. Processes that fork and then escape the cgroup, or processes not managed by systemd, will not be affected. <br><br> <b>Resource Dependency:</b> Requires the Linux kernel's cgroup freezer controller to be available and enabled (either v1 or v2). <br><br> <b>Application Behavior:</b> Frozen applications might experience timeouts or become unresponsive, potentially leading to errors or crashes if not managed carefully. It's not suitable for all applications. <br><br> <b>Not a System Suspend:</b> This command does not suspend the entire operating system; it only targets specific service processes. <br><br> <b>Potential for Deadlock:</b> If core system services are frozen indiscriminately, it could lead to system instability or deadlocks.


title: <B>USE CASES</B>
content:
<ul><li><i>Snapshot Creation:</i> Essential for creating consistent filesystem or VM snapshots, ensuring that services are paused and data is flushed to disk before the snapshot.</li><li><i>Backup Operations:</i> Facilitates hot backups by momentarily freezing services to ensure data integrity during the backup window.</li><li><i>Maintenance & Debugging:</i> Allows administrators to pause a service to perform dependent maintenance, inspect its state, or debug issues without shutting it down and restarting.</li></ul>


title: <B>CGROUP FREEZER CONTROLLER</B>
content:
The command relies on the kernel's cgroup freezer controller, which provides a mechanism to set the state of all tasks in a cgroup to "frozen" or "thawed". This is a low-level kernel feature that <b>systemd</b> abstracts and makes accessible via <b>systemctl freeze</b> and <b>thaw</b>.


title: HISTORY
content:
The <b>systemctl freeze</b> and <b>systemctl thaw</b> commands were introduced as part of <b>systemd</b> to leverage the Linux kernel's <I>cgroups freezer controller</I> functionality. This feature allows <b>systemd</b> to manage process states at a finer granularity, particularly useful for scenarios requiring process quiescence without full termination. Its development is intertwined with the evolution of <b>systemd</b> itself and the increasing adoption of <I>cgroups</I> for resource management and isolation in Linux systems.


title: PARAMETERS
content:
<b>UNIT...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more systemd unit names (e.g., <i>nginx.service</i>, <i>multi-user.target</i>).<br><br><b>--runtime</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Unmask the unit only until the next system reboot. The change will not persist across reboots.<br><br><b>--now</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Attempt to start the unit immediately after unmasking. This option is only effective if the unit was previously enabled or is configured to start automatically.<br><br>


title: DESCRIPTION
content:
<i>systemctl unmask</i> is a command used to reverse the effect of a <i>systemctl mask</i> operation on one or more systemd unit files. When a unit is "masked," it means that symbolic links are created from the unit file's location (e.g., <i>/etc/systemd/system/multi-user.target.wants/nginx.service</i>) to <i>/dev/null</i>. This effectively prevents the unit from being started, either manually or as a dependency, because <i>systemd</i> interprets <i>/dev/null</i> as a "black hole" where the unit cannot execute. Masking is often used to permanently disable critical services, prevent unwanted services from running, or during troubleshooting.<br><br>Unmasking a unit removes these symbolic links, restoring the unit file to its original location and allowing <i>systemd</i> to manage it normally again. It does <b>not</b> automatically start the unit or enable it to start on boot. After unmasking, you typically need to use <i>systemctl enable</i> to configure it to start automatically on system boot and <i>systemctl start</i> to activate it immediately. The <i>unmask</i> command is crucial for regaining control over units that were previously locked down.


title: CAVEATS
content:
Unmasking a unit only makes it eligible to be started; it does not automatically start the unit or enable it for boot. To achieve this, you typically need to follow up with <b>systemctl enable</b> and <b>systemctl start</b> commands. If the unit was previously enabled, unmasking it will make it eligible to start on the next reboot. Using the <b>--now</b> option can have immediate effects, potentially starting services that might not be ready or could interfere with other running processes.


title: UNDERLYING MECHANISM
content:
When a unit is masked, a symbolic link is created from its configuration path (e.g., <i>/etc/systemd/system/nginx.service</i>) to <i>/dev/null</i>. The <b>systemctl unmask</b> command simply removes this symlink, restoring the unit's ability to be managed by <b>systemd</b>. You can manually inspect these symlinks by checking directories like <i>/etc/systemd/system/</i>.


title: CHECKING UNIT STATUS
content:
To determine if a unit is currently masked, you can use <b>systemctl status <i>UNIT</i></b> and look for 'masked' in its state, or use <b>systemctl list-unit-files --state=masked</b> to see all masked units.


title: HISTORY
content:
The <b>systemctl</b> command and the concept of masking/unmasking units are integral parts of <b>systemd</b>, which was developed by Lennart Poettering and Kay Sievers. <b>systemd</b> was first introduced in Fedora 15 in 2011 and has since been widely adopted across most major Linux distributions, replacing older <b>SysVinit</b> and <b>Upstart</b> systems. The <b>mask</b> and <b>unmask</b> functionalities have been core features from <b>systemd</b>'s early development, providing robust control over service lifecycles.


title: SEE ALSO
content:
systemctl mask(1), systemctl enable(1), systemctl disable(1), systemctl start(1), systemctl stop(1), systemctl status(1)


title: TLDR
content:
<b>Unmask a service</b>`systemctl unmask [service_name]`<br><b>Unmask and start a service immediately</b>`systemctl unmask [service_name] --now`<br><b>Unmask a user service</b>`systemctl unmask [service_name] --user`


title: SYNOPSIS
content:
<b>systemctl</b> [<i>OPTIONS...</i>] <b>exit</b> [<i>STATUS</i>]<br><b>systemctl --user</b> [<i>OPTIONS...</i>] <b>exit</b> [<i>STATUS</i>]


title: PARAMETERS
content:
<b>STATUS</b><br>&nbsp;&nbsp;&nbsp;&nbsp;An optional integer exit status code that the systemd manager should report upon termination. If omitted, the default exit status is 0 (success).<br><br><b>--user</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Directs the command to communicate with the systemd user session manager instance instead of the system manager. This is crucial for terminating a user's session systemd.<br><br><b>--system</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Directs the command to communicate with the systemd system manager (PID 1). This is the default behavior if neither <b>--user</b> nor <b>--system</b> is specified explicitly.<br><br>


title: DESCRIPTION
content:
The <b>systemctl exit</b> command is used to request the systemd manager instance it is communicating with to terminate. When executed without the <b>--user</b> option, it targets the main systemd system manager (PID 1). However, attempting to exit the PID 1 system manager on a live, production system is highly disruptive and effectively equivalent to an uncontrolled system shutdown, as systemd is responsible for managing all system processes. Therefore, this command is rarely used for the system manager in normal operations.<br><br>Its primary utility for the system manager lies in testing environments, debugging systemd itself, or within containerized setups where systemd might be running as a non-PID 1 process. In such scenarios, it allows for a controlled termination of the systemd instance without affecting the host.<br><br>When combined with the <b>--user</b> option (e.g., <b>systemctl --user exit</b>), the command targets the user's systemd session manager. Exiting the user manager terminates all services and processes managed by that user's systemd instance, which typically includes graphical session components and background applications. This can be used to gracefully end a user's entire session without logging out from the display manager.


title: CAVEATS
content:
Using <b>systemctl exit</b> on the system manager (PID 1) of a running operating system will lead to severe system instability or an uncontrolled shutdown, as the systemd process is vital for managing nearly all other system services and processes. It should virtually never be used in a production environment.<br><br>Exiting the user manager with <b>systemctl --user exit</b> will terminate all services and applications managed by that user's systemd instance. This can include graphical environment components, potentially leading to the termination of the user's desktop session or background processes.


title: SYSTEM MANAGER VS. USER MANAGER BEHAVIOR
content:
When invoked without <b>--user</b>, <b>systemctl exit</b> targets the global systemd instance (PID 1). This is dangerous on a live system. When used with <b>--user</b>, it targets the individual user's systemd instance, which manages processes specific to that user's session. Terminating the user manager is less destructive than the system manager but will still end the user's session-related services.


title: PRIMARY USE CASES
content:
The command is primarily useful for: <br>1. <i>Testing and Development:</i> For developers working on systemd itself or related components.<br>2. <i>Container Environments:</i> When systemd runs as a non-PID 1 process inside a container or chroot, allowing graceful shutdown of that specific systemd instance.<br>3. <i>User Session Management:</i> With <b>--user</b>, it provides a programmatic way to terminate a user's entire systemd-managed session, useful in scripting or specific desktop environments.


title: HISTORY
content:
The <b>exit</b> subcommand has been a part of <b>systemctl</b> since the early days of systemd's development. Its inclusion primarily serves internal testing, debugging, and specific containerization/chroot scenarios, rather than general system administration. It reflects systemd's architecture where both the system and user managers are themselves services that can be controlled and, in special cases, terminated.


title: TLDR
content:
<b>Exit the user service manager</b>`systemctl exit --user`<br><b>Exit the user service manager with a specific exit code</b>`systemctl exit [code] --user`<br><b>Ask the container's service manager to exit (equivalent of systemctl poweroff if not in a container)</b>`systemctl exit`


title: SYNOPSIS
content:
The command <B>systemctl-soft-reboot</B> is <I>not a standard Linux or systemd command</I>.<br>Therefore, a standard synopsis does not exist.


title: DESCRIPTION
content:
The command <b>systemctl-soft-reboot</b> is <I>not a standard Linux command</I> provided by the systemd project or commonly found in mainstream distributions.<br>The concept of a "soft reboot" typically refers to restarting the operating system's userspace processes and services without performing a full hardware power cycle or reloading the kernel (e.g., avoiding the BIOS/UEFI POST sequence).<br><br>While systemd is the primary init system in modern Linux, managing system startup, shutdowns, and service lifecycles, it does not offer a direct `soft-reboot` subcommand. Systemd provides mechanisms for a graceful full system reboot (`systemctl reboot`), for restarting individual services (`systemctl restart <service>`), and for switching to different system targets.<br><br>A true "soft reboot" (kernel-wise) is more closely associated with tools like <I>kexec</I>, which can load and boot a new kernel image from the currently running kernel, effectively performing a kernel restart without a hardware reboot. Userspace-only restarts or restarting all services would typically involve custom scripting or specific sequences of `systemctl` commands to achieve a similar effect, but `systemctl-soft-reboot` itself does not exist as a predefined utility.


title: CAVEATS
content:
The command <B>systemctl-soft-reboot</B> is <I>not a standard part of systemd or any mainstream Linux distribution</I>.<br>Its usage would imply a custom script, an alias, or a misconception about existing systemd functionalities.<br>Relying on such a non-standard command could lead to unpredictable system behavior, security vulnerabilities if not properly implemented, or simply not function as expected on most systems.


title: ACHIEVING A 'SOFT REBOOT' EFFECT
content:
To achieve effects that might be colloquially termed a 'soft reboot' using standard Linux tools:<br><ul><li>For a standard, graceful system reboot (which includes a kernel reload), use <B>systemctl reboot</B>.</li><li>To restart a specific service, use <B>systemctl restart &lt;service_name&gt;</B>.</li><li>To restart all services (without a kernel reload or full shutdown), one would typically need a custom script. This script might iterate through all active services (e.g., via <B>systemctl list-units --type=service --state=running</B>) and restart them individually using <B>systemctl restart</B>. This approach, however, may not perfectly replicate a 'soft reboot' due to potential complex inter-service dependencies and timing.</li><li>For a 'kernel soft reboot' (replacing the running kernel without going through the BIOS/UEFI POST sequence), the <B>kexec</B> utility is used. This is sometimes integrated with systemd via <B>systemctl kexec</B> if configured, or executed directly using <B>kexec -e</B> after loading a new kernel.</li><li>Restarting the graphical environment (e.g., Xorg or Wayland) by logging out and back in, or restarting the display manager, is sometimes referred to as a 'soft reboot' by users addressing display issues.</li></ul>


title: HISTORY
content:
As <B>systemctl-soft-reboot</B> is <I>not a standard command</I>, there is no official development or usage history to document.<br>The underlying concept of a 'soft reboot' (e.g., userspace-only restart, kernel replacement via kexec) has existed in various forms throughout Linux's history, but not under this specific command name within the systemd suite.


title: TLDR
content:
<b>Perform a soft reboot immediately</b>`systemctl soft-reboot`<br><b>Force a soft reboot</b>`systemctl soft-reboot --force`<br><b>Schedule a soft reboot for a specific time</b>`systemctl soft-reboot --when "[timestamp]"`<br><b>Cancel a scheduled soft reboot</b>`systemctl soft-reboot --when cancel`


title: PARAMETERS
content:
<b><b>--session</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(Hypothetical)</i> Displays information about the current user's systemd session, including session ID, control group, and associated properties as managed by <i>logind</i>.<br><br><b><b>--user</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(Hypothetical)</i> Reports the effective user ID and username under which user-specific systemd services and units are run, differentiating from the system-wide root context.<br><br><b><b>--root-privileges</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(Hypothetical)</i> Indicates whether the current user has `sudo` access or is currently operating with root privileges when interacting with the systemd manager daemon for system-level operations.<br><br><b><b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(Hypothetical)</i> Provides more detailed output, including raw cgroup paths, extensive property lists for the identified user context, or a more comprehensive breakdown of systemd units associated with the user.<br><br><b><b>--json</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(Hypothetical)</i> Outputs information in a structured, machine-readable JSON format, suitable for scripting or integration with other tools.<br><br>


title: DESCRIPTION
content:
<br><i><b>Note:</b> The command &quot;systemctl-whoami&quot; is not a standard Linux command found in common distributions. This analysis provides a hypothetical interpretation based on its name, combining functionalities suggested by &quot;systemctl&quot; (the systemd system and service manager) and &quot;whoami&quot; (reporting the current user).</i><br><br>As a hypothetical utility, &quot;systemctl-whoami&quot; would likely aim to provide insights into the user context relevant to the systemd environment. This could include identifying the effective user associated with ongoing systemd processes, reporting details about the current user's systemd session (e.g., cgroup, slice, scope), or indicating the privileges under which systemd-related actions are typically executed by the current user. Its purpose would be to bridge the gap between user identity and systemd's structured management of processes and resources, offering a clearer picture of how a user's actions manifest within the systemd framework. It would ideally help administrators and users understand resource allocation, process isolation, and privilege separation within the systemd control groups.


title: CAVEATS
content:
<i><b>Critical Note:</b> &quot;systemctl-whoami&quot; is not a recognized or standard command in mainstream Linux distributions (e.g., Debian, Ubuntu, Fedora, RHEL, Arch Linux). This analysis is entirely based on a hypothetical interpretation of its name and components. There is no official documentation or implementation of a command with this specific name as part of the systemd project or other common utilities. Any usage or expectation of this command's functionality should be re-evaluated as it likely does not exist in typical environments. It is possible it refers to a custom script or alias in a specific, non-standard setup.</i>


title: CONCEPTUAL BASIS
content:
The name &quot;systemctl-whoami&quot; conceptually merges `<b>systemctl</b>`, the primary interface for controlling the systemd system and service manager, with `<b>whoami</b>`, a command that prints the effective username of the current user. This combination suggests a utility designed to identify or report the user context within the systemd framework, going beyond a simple username to include session, cgroup, or privilege details relevant to systemd operations. It implies a need to understand 'who' is interacting with systemd, and 'how' their identity maps to systemd's resource management and process isolation mechanisms.


title: POTENTIAL USE CASES (HYPOTHETICAL)
content:
If such a command existed, it could be invaluable for several diagnostic and management purposes:<br><ul><li><i>Debugging User Services</i>: Understanding why a user-specific systemd service is failing or behaving unexpectedly by examining its exact execution context and associated control groups.</li><li><i>Auditing and Security</i>: Verifying which user initiated certain systemd operations or resource allocations, ensuring adherence to security policies and privilege separation.</li><li><i>Resource Management Insight</i>: Gaining insight into a user's allocated systemd slice or scope, helping administrators understand and troubleshoot resource control (CPU, memory, I/O) applied to a user's processes.</li><li><i>Session Management</i>: Providing quick details about the current user's `logind` session, including its ID and properties, useful for multi-user systems.</li></ul>


title: HISTORY
content:
<i>As &quot;systemctl-whoami&quot; is not a standard or officially recognized command, there is no historical development or evolution to describe. Its existence is purely hypothetical, derived from combining the names of existing utilities. If it were to exist, it would likely be a custom script or an alias created by a user or administrator for specific diagnostic purposes, rather than a formally developed system utility. Therefore, no version history, development milestones, or usage trends can be provided.</i>


title: SEE ALSO
content:
whoami(1), id(1), logname(1), systemctl(1), systemd-run(1), systemd.slice(5), systemd.scope(5), systemd-logind(8)


title: TLDR
content:
<b>Show the unit of the current shell (where systemctl is running)</b>`systemctl whoami`<br><b>Show the unit of the current shell in user service manager (services managed for your login session)</b>`systemctl whoami --user`<br><b>Show the unit a specific process belongs to</b>`systemctl whoami [pid]`<br><b>Show the units for multiple processes</b>`systemctl whoami [pid1 pid2 ...]`


title: PARAMETERS
content:
<b><b>--no-block</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not wait for the started job to complete. If this option is specified, the `systemctl` command will exit after the job has been enqueued.<br><br><b><b>--job-mode=</b><i>MODE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;If a new job is started but conflicts with an already existing pending job, this option controls how to resolve the conflict. <i>MODE</i> can be 'fail', 'replace', 'replace-irreversibly', 'isolate', 'flush', or 'ignore'. The default is 'replace'.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show a short help text and exit.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show a short version string and exit.<br><br>


title: DESCRIPTION
content:
The `systemctl emergency` command is used to bring the system into <i>emergency mode</i>, a highly stripped-down operational state. This mode is typically invoked when the system fails to boot normally, or when administrators need to perform critical maintenance or recovery operations on a severely damaged system. <br><br>In emergency mode, the system boots with the absolute minimum number of services and mounts the root filesystem, often initially in a read-only state. It then presents a root shell to the user, allowing them to manually diagnose and repair issues that prevent the system from booting correctly. Common uses include fixing filesystem corruption, repairing `fstab` entries, or troubleshooting issues with critical services. It provides a more basic environment than <i>rescue mode</i> (`systemctl rescue`), which attempts to load more services and mount more filesystems. Access to emergency mode usually requires the root password.


title: CAVEATS
content:
<ul><li>Requires the <i>root password</i> to access the shell.</li><li>Many services and daemons will <i>not be running</i>, and most filesystems (including the root filesystem) may initially be mounted <i>read-only</i>. You will likely need to remount the root filesystem read-write (`mount -o remount,rw /`) and potentially mount other necessary filesystems before performing repairs.</li><li>Network services are typically <i>unavailable</i>, limiting access to external resources.</li><li>This mode is for <i>diagnostic and repair purposes only</i>, not for normal system operation.</li></ul>


title: EXITING EMERGENCY MODE
content:
To exit emergency mode after completing your repairs, you can usually type `exit` in the shell or use `systemctl default` to switch back to the normal multi-user target. Alternatively, `systemctl reboot` will restart the system.


title: HOW TO ENTER
content:
Besides `systemctl emergency` from a running system, you can enter emergency mode during boot by adding `systemd.unit=emergency.target` to the kernel command line in your boot loader (e.g., GRUB). Many distributions also offer an "Emergency Mode" option directly in the GRUB menu.


title: UNDERLYING TARGET
content:
`systemctl emergency` is essentially a shortcut for `systemctl isolate emergency.target`. The `emergency.target` is a special <i>systemd target unit</i> designed to pull in only the most essential services needed for a minimal, interactive shell environment.


title: HISTORY
content:
The concept of a low-level system recovery mode has existed in various forms across Unix-like operating systems. With the adoption of <i>systemd</i> as the default init system in many modern Linux distributions, the `systemctl emergency` command (and its underlying `emergency.target`) was introduced to provide a standardized and integrated method for entering this critical recovery state. It superseded older methods often relying on kernel boot parameters or specific runlevels (like runlevel 1 or 'single user mode' in SysVinit).


title: TLDR
content:
<b>Enter emergency mode</b>`systemctl emergency`<br><b>Enter emergency mode without blocking (return immediately)</b>`systemctl emergency --no-block`


title: PARAMETERS
content:
<b><i>UNIT...</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more unit names to operate on (e.g., `apache2.service`, `network.target`).<br><br><b>--no-block</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not wait for the operation to finish. The command will return immediately after queuing the operation.<br><br><b>--force</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force the operation. While its direct effect on 'try-restart' is minimal in terms of the 'only if running' logic, it can force other `systemctl` operations or override certain checks.<br><br><b>--wait</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Wait for the operation to complete. This is the default behavior unless `--no-block` is used.<br><br><b>--user</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Communicate with the systemd user instance, managing user-specific services rather than system services.<br><br><b>--system</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Communicate with the systemd system and service manager. This is the default behavior when no `--user` or `--scope` is specified.<br><br><b>--runtime</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Make changes that are effective only until the next system reboot. These changes are not persistent across reboots.<br><br><b>--root=<i>PATH</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Operate on a specified alternative root directory `PATH` instead of the system's default root.<br><br>


title: DESCRIPTION
content:
The `systemctl try-restart` command is a crucial utility within the systemd service manager, designed to restart one or more specified service units, but only if they are currently in a running state. Unlike the `systemctl restart` command, which will start a service if it's stopped and then restart it, `try-restart` will simply do nothing if the target service is not active. This behavior makes `try-restart` particularly useful in scripting and automation scenarios where you want to apply configuration changes or update a service without inadvertently starting a service that was intentionally stopped.<br><br>It ensures that your actions only affect currently operational services, preserving the intended state of inactive units. The command communicates with the systemd init system via D-Bus to manage the specified units, providing a robust and controlled way to maintain system services on modern Linux systems.


title: CAVEATS
content:
The command requires the systemd service manager to be running and accessible via D-Bus.<br><br>If the specified service unit is not running, `try-restart` will silently do nothing and return a successful exit code (0). This behavior must be accounted for in scripts to avoid misinterpretation of success.<br><br>Requires appropriate permissions (typically root privileges) to manage system services, unless operating on user units with `--user`.


title: EXIT STATUS
content:
`systemctl try-restart` returns an exit code of 0 on success, even if the service was not running and no action was taken. A non-zero exit code indicates an error (e.g., invalid unit name, permission denied).


title: SCRIPTING UTILITY
content:
This command is particularly valuable in automated scripts or configuration management tools (like Ansible, Chef, Puppet) where you want to apply updates or configuration changes to a service without accidentally starting it if it was previously stopped (e.g., during maintenance or troubleshooting). It ensures that only services intentionally running are affected by a restart operation.


title: HISTORY
content:
The `systemctl` command is an integral part of systemd, the system and service manager that largely replaced the traditional SysVinit and Upstart systems in many Linux distributions starting in the early 2010s. `try-restart` was introduced as part of the systemd suite to provide finer-grained control over service management, distinguishing between unconditionally restarting a service and conditionally restarting only active ones. Its development reflects systemd's goal of offering a comprehensive and flexible framework for managing the lifecycle of system processes.


title: SEE ALSO
content:
systemctl(1), systemctl restart(1), systemctl start(1), systemctl stop(1), systemctl status(1), systemd(1)


title: TLDR
content:
<b>Restart a specific unit if it is running</b>`systemctl try-restart [unit]`<br><b>Restart multiple units if they are running</b>`systemctl try-restart [unit1 unit2 ...]`<br><b>Restart all units matching a pattern if they are running</b>`systemctl try-restart '[pattern]'`


title: PARAMETERS
content:
<b>ROOT</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to the new root directory. This directory will become the new <I>/</I> (root) of the system. If omitted, the command assumes the current root directory (<I>/</I>) is mounted as <I>/sysroot</I> in the new environment and attempts to pivot into it.<br><br><b>INIT</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to the init system executable to be run inside the new root. This is typically <I>/sbin/init</I> or the <I>systemd</I> executable itself. If omitted, the current <I>systemctl</I> instance (the PID 1 process) is re-executed within the new root to continue the boot process.<br><br>


title: DESCRIPTION
content:
The <I>systemctl switch-root</I> subcommand facilitates the critical transition from an <I>initramfs</I> environment to the real root filesystem of a Linux system. This is a fundamental step during the boot process, typically executed by the <I>initramfs</I> after it has prepared necessary drivers and mounted the main root device.<br><br>The command performs a <I>pivot_root(2)</I> or <I>chroot(2)</I> system call to change the root directory, remounts essential filesystems (such as <I>/dev</I>, <I>/proc</I>, <I>/sys</I>) within the new root, and then optionally executes a new init system (usually <I>systemd</I> itself) from this new location. This process effectively discards the temporary <I>initramfs</I> environment and launches the full operating system, enabling a flexible boot process where the <I>initramfs</I> handles complex early setup tasks before handing control to the main system.


title: CAVEATS
content:
This command is primarily intended for use by <I>initramfs</I> scripts during the automated boot process. Manually executing it can lead to an unbootable system or unexpected behavior unless you fully understand the implications for the running system.<br><br>It assumes that the current system is operating within an <I>initramfs</I> context and that the new root filesystem is correctly set up and ready to take over. Incorrect <I>ROOT</I> or <I>INIT</I> paths can cause the system to fail to boot or become unresponsive.


title: BOOT PROCESS INTEGRATION
content:
<I>systemctl switch-root</I> plays a pivotal role in the Linux boot sequence. After the kernel is loaded and the <I>initramfs</I> takes over, its primary responsibility is to find, mount, and prepare the actual root filesystem. Once the root filesystem is ready, <I>systemctl switch-root</I> is invoked to perform the final transition, effectively discarding the temporary <I>initramfs</I> environment and handing control to the main operating system's <I>init</I> process (which is typically <I>systemd</I>).


title: PIVOT_ROOT VS. CHROOT
content:
While <I>chroot</I> simply changes the apparent root directory for a process and its children, <I>pivot_root</I> is a more powerful operation that actually moves the root filesystem of the current process to a new location (the old root typically becomes accessible at a specified mount point, e.g., <I>/oldroot</I> or <I>/sysroot/oldroot</I>). <I>systemctl switch-root</I> primarily utilizes <I>pivot_root</I> as it is the more robust mechanism for a full system root change, but it may fall back to <I>chroot</I> in specific scenarios or if <I>pivot_root</I> encounters issues.


title: HISTORY
content:
The <I>switch-root</I> functionality is an integral part of modern Linux boot processes, particularly for systems utilizing <I>systemd</I>. Historically, <I>initramfs</I> scripts would often directly invoke <I>pivot_root</I> system calls or dedicated utilities like <I>switch_root</I> (often provided by <I>util-linux</I>). The integration of this function as a subcommand of <I>systemctl</I> emerged with the widespread adoption of <I>systemd</I> as the default init system. This integration allows <I>systemd</I> itself (as PID 1) to manage the transition and subsequent re-execution, ensuring a more consistent, robust, and centralized startup sequence.


title: TLDR
content:
<b>Switch to a new root filesystem and execute its default init system</b>`systemctl switch-root [path/to/new_root]`<br><b>Switch to a new root filesystem and run a specific init binary</b>`systemctl switch-root [path/to/new_root] [/sbin/init]`<br><b>Switch to a new root filesystem with verbose output</b>`systemctl switch-root [path/to/new_root] --verbose`


title: PARAMETERS
content:
<b><I>VARIABLE=VALUE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more environment variable name-value pairs to set. The variable name is case-sensitive, and the value will be assigned directly. Multiple pairs can be specified, separated by spaces.<br><br><b><b>--user</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Operate on the per-user service manager instance, rather than the system-wide instance. This sets environment variables for the current user's systemd services only.<br><br><b><b>--system</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Operate on the system-wide service manager instance (this is the default behavior).<br><br>


title: DESCRIPTION
content:
The <b>systemctl set-environment</b> command is used to persistently set environment variables within the systemd manager's environment block. These variables become available to all services and programs subsequently started by that specific systemd manager instance (either the system-wide manager or a user-specific manager).<br><br>Unlike setting variables in a shell with <i>export</i>, which only affects the current shell and its child processes, <b>set-environment</b> provides a system-wide or user-wide persistent mechanism that survives reboots. It's particularly useful for global configurations, paths (e.g., JAVA_HOME), or other settings that many services might rely on. For service-specific environment variables, it's generally recommended to use the <i>Environment=</i> or <i>EnvironmentFile=</i> directives within the service unit file itself, as these take precedence over variables set via <b>set-environment</b> for that particular unit.


title: CAVEATS
content:
<b>Global Scope:</b> Variables set via <b>set-environment</b> affect all services started by the respective systemd manager. Care must be taken to avoid unintended side effects or conflicts.<br><b>Precedence:</b> Environment variables defined directly in a service unit file (using <i>Environment=</i> or <i>EnvironmentFile=</i>) will override variables set via <b>set-environment</b> for that specific service.<br><b>Security:</b> Avoid storing sensitive information (like passwords or API keys) as global environment variables, as they can be widely accessible to all processes under the systemd manager.<br><b>Existing Services:</b> Services already running will not automatically pick up new environment variables; they must be restarted to apply the changes.<br><b>Shell Impact:</b> This command does not modify the environment of your current shell session. It only affects processes started by systemd.


title: PERSISTENCE ACROSS REBOOTS
content:
Environment variables set using <b>systemctl set-environment</b> are stored persistently by the systemd manager and will be restored automatically after system reboots, ensuring that the desired environment is consistently available for all systemd-managed processes.


title: ENVIRONMENT VARIABLE PRECEDENCE
content:
Systemd processes evaluate environment variables in a specific order of precedence, from lowest to highest: <br>1. Variables from <i>/etc/environment</i> and <i>/etc/default/*</i>.<br>2. Variables from <i>environment.d</i> snippets.<br>3. Variables set via <b>systemctl set-environment</b>.<br>4. Variables set directly in unit files via <i>Environment=</i> or <i>EnvironmentFile=</i> (these have the highest precedence for a specific unit).


title: HISTORY
content:
The <b>systemctl set-environment</b> command is part of the systemd init system, which has become the de facto standard init system for many Linux distributions since its adoption in the early 2010s. It provides a more dynamic and persistent way to manage global environment variables compared to traditional methods like editing <i>/etc/environment</i>, offering greater flexibility for system administrators and developers.


title: SEE ALSO
content:
systemctl(1), systemctl unset-environment(1), systemctl show-environment(1), systemd.exec(5), environment.d(5), systemd(1)


title: TLDR
content:
<b>Set a single environment variable</b>`systemctl set-environment [var value]`<br><b>Set multiple environment variables at once</b>`systemctl set-environment [var1 value1 var2 value2 ...]`<br><b>Set an environment variable for the user service manager</b>`systemctl set-environment [var value] --user`


title: TLDR
content:
<b>Delete title</b>`mkvpropedit [[-d|--delete]] title [path/to/file.mkv]`<br><b>Mark subtitle track 3 as SDH - Subtitles for deaf and hearing impared</b>`mkvpropedit [path/to/file.mkv] [[-e|--edit]] track:s3 [[-s|--set]] flag-hearing-impaired=1`<br><b>Mark audio track 2 as Default</b>`mkvpropedit [path/to/file.mkv] [[-e|--edit]] track:a2 [[-s|--set]] flag-default=1`<br><b>Delete the name of video track 1</b>`mkvpropedit [path/to/file.mkv] [[-e|--edit]] track:v1 [[-d|--delete]] name`


title: SYNOPSIS
content:
<i>lvmpersist</i> is not a recognized command. <br>There is no standard syntax for a command with this name.


title: DESCRIPTION
content:
The term <i>lvmpersist</i> does not correspond to a standard or commonly recognized command within the Logical Volume Manager (LVM) suite on Linux. LVM, by its design, ensures that its configuration (Physical Volumes, Volume Groups, and Logical Volumes) is inherently persistent across system reboots. This persistence is managed by LVM's daemon (like <i>lvmlockd</i> in some configurations) and the LVM metadata stored on disk. When a system boots, LVM utilities scan for and activate Volume Groups and Logical Volumes based on this metadata, making them available for use. Therefore, there isn't a specific command named <i>lvmpersist</i> required to 'make LVM persist' as it is a fundamental characteristic of LVM.<br><br>While <i>lvmpersist</i> itself doesn't exist, LVM commands like <b>vgchange</b>, <b>lvchange</b>, <b>vgimport</b>, and <b>lvconvert</b> play roles in how LVM entities are activated, configured, and thus how their state is managed and persisted on the system. It's possible the term is a misconception, a typo for another LVM command (e.g., <b>vgpersist</b> which exists in clustered LVM but has a different scope), or a reference to a custom script.


title: CAVEATS
content:
<b>Non-existence:</b> The primary caveat is that <i>lvmpersist</i> is not a standard Linux LVM command. Attempting to execute it will result in a "command not found" error.<br><br><b>Conceptual Misunderstanding:</b> The term might arise from a misunderstanding of how LVM inherently manages persistence. LVM's configuration is stored on disk and automatically processed at boot time.<br><br><b>Possible Typo/Alternative:</b> It could be a typo for another LVM command, or perhaps refers to the functionality provided by LVM activation mechanisms or cluster-related commands like <b>vgpersist</b> (used in certain clustered LVM environments to mark a VG for persistent activation, but not universally present or used in standalone LVM).


title: LVM PERSISTENCE MECHANISM
content:
LVM configurations persist because LVM metadata is written directly to the Physical Volumes (PVs). During system boot, LVM initialization scripts (e.g., <b>lvm.conf</b>, <b>systemd</b> units like <b>lvm2-pvscan.service</b>, <b>lvm2-vgscan.service</b>, <b>lvm2-lvmetad.service</b>, <b>lvm2-activation.service</b>) scan for these metadata structures, read the configuration of Volume Groups and Logical Volumes, and then activate them, making them accessible to the operating system. This automatic process eliminates the need for a manual <i>lvmpersist</i> command.


title: HISTORY
content:
As <i>lvmpersist</i> is not a standard LVM command, there is no development or usage history specifically for it within the LVM project. The concept of LVM configuration persistence, however, has been fundamental to LVM since its inception, ensuring that defined storage structures are available after system reboots. This is an inherent design feature rather than a command-driven action.


title: TLDR
content:
<b>Start PR on all PVs in a VG with a local key (exclusive access by default)</b>`lvmpersist start --ourkey [0x1234abcd] --vg [vg_name]`<br><b>Start PR for a shared VG (allow multiple hosts)</b>`lvmpersist start --ourkey [0x1234abcd] --access [sh] --vg [vg_name]`<br><b>Stop PR on a VG and unregister the local key</b>`lvmpersist stop --ourkey [0x1234abcd] --vg [vg_name]`<br><b>Take over a local VG by preempting another host while starting PR</b>`lvmpersist start --ourkey [0xmy_key] --removekey [0xother_key] --vg [vg_name]`<br><b>Remove another host's key from a shared VG</b>`lvmpersist remove --ourkey [0xmy_key] --removekey [0xother_key] --vg [vg_name]`<br><b>Show registered keys and reservations for a VG</b>`lvmpersist read --vg [vg_name]`<br><b>Operate on specific devices instead of a VG</b>`lvmpersist start --ourkey [0x1234abcd] --device [/dev/sdX] --device [/dev/mapper/mpathY]`


title: PARAMETERS
content:
<b><i>VARIABLE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of an environment variable to remove from the systemd manager's global environment. Multiple variable names can be specified, separated by spaces. If no variables are specified, the command does nothing.<br><br>


title: DESCRIPTION
content:
<b>systemctl unset-environment</b> is a powerful command used to remove one or more global environment variables that have been previously set for the systemd manager itself and consequently for all its child processes, which includes services, sockets, mounts, and other units it manages. When a new systemd unit starts, it inherits the environment variables currently defined for the systemd manager. Unsetting these variables can be crucial for various purposes such as security hardening, resource cleanup, or to prevent the unintended propagation of specific environment settings to newly launched services.<br><br>It's important to note that the changes made by this command are transient; they only affect processes started <i>after</i> the command is executed and do not persist across system reboots. Furthermore, already running services will not be affected and will continue to operate with their existing environment. To achieve persistent environment variable changes across reboots, users should instead modify systemd configuration files like <i>/etc/systemd/system.conf.d/*.conf</i> or the system-wide <i>/etc/environment</i> file.


title: CAVEATS
content:
Changes made by <b>systemctl unset-environment</b> are <i>transient</i>; they do not persist across system reboots and must be re-applied or configured through persistent files for permanent effect.<br>This command only affects <i>new</i> processes started by systemd after its execution. Already running services or processes will retain their existing environment variables.<br>Execution typically requires root privileges (or appropriate D-Bus permissions) to modify the systemd manager's environment.<br>Unsetting critical environment variables could potentially disrupt system services or applications if not done carefully.


title: PERSISTENCE
content:
To make environment variable changes permanent across reboots, they should not be managed solely with <b>systemctl unset-environment</b>. Instead, define environment variables in systemd configuration files such as <i>/etc/systemd/system.conf.d/*.conf</i> (e.g., using `DefaultEnvironment=`), the system-wide <i>/etc/environment</i> file, or through custom environment generator scripts.


title: SCOPE OF EFFECT
content:
The global environment variables managed by <b>systemctl set-environment</b> and <b>unset-environment</b> are inherited by *all* services and units started by the systemd user or system manager. For managing environment variables specific to a single service, it is generally recommended to use the `Environment=` or `EnvironmentFile=` directives within that service's unit file (e.g., <i>/etc/systemd/system/myservice.service</i>) for better encapsulation and control.


title: HISTORY
content:
The <b>set-environment</b> and <b>unset-environment</b> subcommands were introduced with <b>systemd</b> version 232 (released around late 2016 / early 2017). These commands provided a convenient, runtime mechanism for administrators to manage global environment variables for the systemd manager, complementing existing methods of environment configuration via unit files and system-wide configuration files.


title: SEE ALSO
content:
systemctl(1), systemctl set-environment(1), systemd.exec(5), systemd.environment-generator(7), environment.d(5)


title: TLDR
content:
<b>Unset a single environment variable</b>`systemctl unset-environment [var]`<br><b>Unset multiple environment variables at once</b>`systemctl unset-environment [var1 var2 ...]`<br><b>Unset an environment variable in the user service manager</b>`systemctl unset-environment [var] --user`


title: PARAMETERS
content:
<b>No direct parameters</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The <I>suspend-then-hibernate</I> action itself does not accept direct command-line parameters. Its behavior is entirely configured through the <I>systemd-sleep.conf</I> file. However, standard <B>systemctl</B> options like <I>--no-block</I> (to return immediately without waiting for the operation to complete) or <I>--quiet</I> (to suppress output) can precede the action, affecting how <B>systemctl</B> itself executes the command.<br><br>


title: DESCRIPTION
content:
The <b>systemctl suspend-then-hibernate</b> command initiates a power-saving mode where the system first enters suspend-to-RAM (sleep) state. In this state, the system consumes minimal power, and its state is preserved in volatile memory (RAM), allowing for a quick resume. However, if the system remains suspended for a predefined duration, it will automatically transition into a hibernate-to-disk state. During hibernation, the system's entire state, including all open applications and data, is saved to a persistent storage device (typically swap space on a hard drive or SSD), and the system is then powered off completely. <br><br>This hybrid approach combines the benefits of both suspend and hibernate: the speed of suspend for short periods of inactivity, and the energy efficiency and data safety of hibernate for longer, unattended periods, or in case of battery depletion. It prevents data loss due to power failure during an extended suspend and ensures zero power consumption when finally hibernated. The transition delay from suspend to hibernate is configurable via the <I>SuspendThenHibernateDelay</I> option in the <I>systemd-sleep.conf</I> file.


title: CAVEATS
content:
<b>Swap Space Requirement:</b> For the hibernation phase to function correctly, your system must have a swap partition or file that is at least as large as your installed RAM. Without sufficient swap space, the system will fail to hibernate.<br><b>Configuration:</b> The behavior of this mode, especially the crucial delay before hibernating, is controlled by settings in <I>/etc/systemd/sleep.conf</I> or custom configuration files located in <I>/etc/systemd/sleep.conf.d/</I>. Incorrect or missing configuration can lead to unexpected behavior or failure to transition to hibernate.<br><b>Hardware/Kernel Support:</b> Both suspend and hibernate states require proper kernel and hardware support. Issues with display drivers, power management interfaces (ACPI), or specific hardware components can prevent these states from working reliably.<br><b>Data Loss during Suspend:</b> While the ultimate goal is to save state, if power is completely lost during the initial suspend-to-RAM phase (before the system has a chance to automatically hibernate), any unsaved work will be lost. The hibernation step acts as a safeguard against prolonged power loss, but not instantaneous unexpected power cuts during the suspend phase.


title: CONFIGURATION DETAILS
content:
The primary configuration for <I>suspend-then-hibernate</I> is managed through <B>/etc/systemd/sleep.conf</B> or supplementary configuration files within <B>/etc/systemd/sleep.conf.d/</B>. Key options to set in the <B>[Sleep]</B> section include:<br><ul><li><B>SuspendThenHibernate=yes</B>: Explicitly enables this power-saving mode.</li><li><B>SuspendThenHibernateDelay=</B><I>duration</I>: This is the most critical setting, defining the time (e.g., '2h' for 2 hours, '30min' for 30 minutes, '1800s' for 30 minutes) the system will wait in suspend-to-RAM state before automatically transitioning to hibernate-to-disk.</li><li><B>SuspendState=</B><I>state</I>: Specifies the method for suspending to RAM (e.g., 'mem' is the most common and generally recommended).</li><li><B>HibernateState=</B><I>state</I>: Specifies the method for hibernating to disk (e.g., 'disk' is typical).</li></ul>


title: WORKFLOW AND BEHAVIOR
content:
When <B>systemctl suspend-then-hibernate</B> is executed, the following sequence of events unfolds:<br>1. The system immediately enters a suspend-to-RAM state, effectively 'sleeping' with its state preserved in memory and drawing minimal power.<br>2. A timer is initiated for the duration specified by the <I>SuspendThenHibernateDelay</I> option.<br>3. If the system is woken up (e.g., by keyboard, mouse, or power button) before this timer expires, it resumes quickly from RAM, and the suspend-then-hibernate cycle is effectively reset.<br>4. If the timer expires without the system being woken, the system automatically transitions from suspend-to-RAM to hibernate-to-disk. This involves saving the entire system state to swap space and then powering off completely.<br>5. Once hibernated, the system consumes no power. Upon the next power-on, the system restores its state from disk, allowing the user to resume exactly where they left off before the hibernation process began.


title: HISTORY
content:
With the widespread adoption of <I>systemd</I> as the default init system in most major Linux distributions, its integrated power management capabilities have largely superseded older utilities like <I>pm-utils</I>. The <I>suspend-then-hibernate</I> target was introduced as part of <I>systemd</I>'s comprehensive power management features to provide a robust and configurable solution for hybrid power saving. It addresses a common user desire to combine the rapid wake-up of suspend with the power efficiency and data protection of hibernate, offering a more intelligent and reliable approach to system sleep states within the <I>systemd</I> ecosystem.


title: SEE ALSO
content:
systemctl(1), systemctl suspend(1), systemctl hibernate(1), systemctl hybrid-sleep(1), systemd-sleep.conf(5), pm-suspend(8), pm-hibernate(8)


title: TLDR
content:
<b>Suspend the system and hibernate after the configured delay</b>`systemctl suspend-then-hibernate`<br><b>Force suspend-then-hibernate (bypass inhibitor locks)</b>`systemctl suspend-then-hibernate --force`


title: PARAMETERS
content:
<b><code>UNIT...</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more <code>systemd</code> unit names to operate on. These can be services (e.g., <code>nginx.service</code>, <code>my-app</code>), sockets, devices, mount points, or other <code>systemd</code> unit types. For common service units, the <code>.service</code> suffix can often be omitted.<br><br>


title: DESCRIPTION
content:
The <code>systemctl try-reload-or-restart</code> command is a convenient and intelligent way to manage <code>systemd</code> services when configuration changes are applied. Its primary purpose is to minimize downtime by attempting a graceful reload before resorting to a full restart.<br><br>When invoked, <code>systemctl</code> first checks if the specified service unit supports and defines an <code>ExecReload</code> command in its configuration. If an <code>ExecReload</code> command is found, <code>systemd</code> attempts to execute it, instructing the running service to re-read its configuration without stopping and starting. This method is generally faster and causes less disruption to active connections or processes.<br><br>If the service does not define an <code>ExecReload</code> command, if the reload operation fails, or if <code>systemd</code> determines that a reload is not appropriate, <code>systemctl</code> will then proceed to perform a full <code>restart</code> of the service. A full restart involves stopping the service (<code>ExecStop</code>), then starting it again (<code>ExecStart</code>), which typically results in a brief interruption of service.<br><br>This command is particularly useful in automation scripts or for administrators who want to update configurations with the least impact, ensuring that a service only restarts if a reload is not possible or sufficient.


title: CAVEATS
content:
<ul><li>For the <code>reload</code> portion of the command to succeed, the service unit file (e.g., <code>/etc/systemd/system/my-service.service</code>) must explicitly define an <code>ExecReload</code> directive. If <code>ExecReload</code> is not defined, the command will always fall back to a full <code>restart</code>.</li><li>Even with a successful reload, some configuration changes might only take effect after a full restart, depending on how the application itself handles configuration reloads.</li><li>Always verify the service status after running this command using <code>systemctl status <I>UNIT</I></code> to ensure it is running as expected.</li></ul>


title: CHECKING FOR EXECRELOAD SUPPORT
content:
You can determine if a service explicitly supports a reload operation by inspecting its unit file or querying <code>systemd</code>:<br><code>systemctl show <I>your-service.service</I> | grep ExecReload</code><br>If this command returns an output containing <code>ExecReload=</code> followed by a command, the service is configured to handle reloads. If it returns nothing, it will always restart.


title: IMPACT OF DAEMON-RELOAD
content:
Note that <code>try-reload-or-restart</code> does not automatically perform a <code>daemon-reload</code>. If you modify a service's unit file (e.g., <code>.service</code> file), you must run <code>systemctl daemon-reload</code> <i>before</i> running <code>try-reload-or-restart</code> for <code>systemd</code> to recognize the changes in the unit file itself.


title: HISTORY
content:
The <code>systemctl</code> command is the primary control interface for <code>systemd</code>, the init system that has largely replaced traditional SysVinit and Upstart in most modern Linux distributions since the early 2010s. The <code>try-reload-or-restart</code> verb was introduced as part of <code>systemd</code>'s evolution to provide more intelligent and less disruptive service management, reflecting a focus on minimizing service downtime during configuration updates.


title: SEE ALSO
content:
systemctl(1), systemd.service(5), systemctl reload, systemctl restart, systemctl stop, systemctl start, systemctl status, systemctl daemon-reload


title: TLDR
content:
<b>Reload or restart a specific unit</b>`systemctl try-reload-or-restart [unit]`<br><b>Reload or restart multiple units</b>`systemctl try-reload-or-restart [unit1 unit2 ...]`<br><b>Reload or restart all units matching a pattern</b>`systemctl try-reload-or-restart '[pattern]'`


title: SYNOPSIS
content:
<b>rpmkeys</b> [<i>OPTION</i>...] [<i>PACKAGE_FILE</i>...]<br><b>rpmkeys</b> <i>--import</i> <i>FILE</i>...<br><b>rpmkeys</b> <i>--list</i><br><b>rpmkeys</b> <i>--delete</i> <i>KEYID</i>...


title: PARAMETERS
content:
<b><i>PACKAGE_FILE</i>...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies one or more RPM package files whose GPG signatures should be verified. This is often the default operation when no other key-related options like <i>--import</i> or <i>--list</i> are provided.<br><br><b><i>--import</i> <i>FILE</i>...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Imports one or more GPG public keys from the specified <i>FILE</i>s into the RPM database. These keys will then be used to verify package signatures.<br><br><b><i>--list</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all GPG public keys currently imported into the RPM database, displaying their key IDs, summaries, and creation dates.<br><br><b><i>--delete</i> <i>KEYID</i>...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Deletes one or more GPG public keys, identified by their <i>KEYID</i> (e.g., '0xABCDEF01'), from the RPM database. Use with caution as this removes trust for packages signed with these keys.<br><br><b><i>--checksig</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Explicitly instructs <b>rpmkeys</b> to perform signature checking on the specified <i>PACKAGE_FILE</i>s. This is equivalent to using <b>rpm -K</b>.<br><br><b><i>--quiet</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses non-error messages, making the command output minimal.<br><br><b><i>--verbose</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Increases the verbosity of the output, providing more detailed information during operations, such as signature verification results.<br><br><b><i>--root</i> <i>DIR</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative root directory for the RPM database. All operations are then performed relative to this directory.<br><br><b><i>--dbpath</i> <i>PATH</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative path to the RPM database. This overrides the default database location derived from <i>--root</i>.<br><br>


title: DESCRIPTION
content:
The <b>rpmkeys</b> command provides a dedicated interface for handling GPG public keys within the RPM ecosystem. It enables users to securely import new keys, list existing trusted keys, and critically, verify the digital signatures of RPM packages. By performing these operations, <b>rpmkeys</b> plays an essential role in ensuring the authenticity and integrity of software installed on RPM-based systems. It helps mitigate risks associated with tampered or unverified packages, thereby enhancing system security and preventing the installation of unauthorized or corrupted software.


title: CAVEATS
content:
On many Linux distributions, <b>rpmkeys</b> is not a standalone executable but rather a symbolic link or a wrapper script to <b>rpm --checksig</b>. For importing, listing, or deleting keys, the <b>rpm</b> command itself with <i>--import</i>, <i>-qa gpg-pubkey*</i>, or <i>--erase gpg-pubkey-KEYID</i> is typically used. Key import and deletion usually require root privileges. Always ensure that GPG keys are obtained from trusted sources to prevent security compromises.


title: TRUST MODEL
content:
RPM's security model relies on a chain of trust established through GPG public keys. When a key is imported using <b>rpmkeys --import</b> (or <b>rpm --import</b>), the system implicitly trusts any package signed by that corresponding private key. This trust is fundamental to verifying package integrity and authenticity. It is paramount to only import keys from officially sanctioned and verifiable sources.


title: SECURITY IMPLICATIONS
content:
Proper management of RPM GPG keys is a critical security practice. Failing to verify package signatures (e.g., by disabling checks or ignoring warnings) or importing untrusted keys can expose a system to significant risks. Malicious actors could distribute tampered packages that install backdoors, malware, or compromise system stability. <b>rpmkeys</b> provides the tools necessary to maintain a secure package environment.


title: HISTORY
content:
The concept of cryptographic signature verification was integrated into the RPM Package Manager early in its development by Red Hat to enhance software distribution security. While the core functionality has always resided within the <b>rpm</b> command, utilities like <b>rpmkeys</b> (or its equivalent in direct <b>rpm</b> invocations) emerged to highlight and simplify the crucial aspect of GPG key management and package signature checking. This evolution reflects the growing importance of securing software supply chains against tampering and unauthorized distribution.


title: TLDR
content:
<b>List all imported RPM keys. Also outputs its Key ID needed for deleting a imported RPM key</b>`sudo rpmkeys --list`<br><b>Remove/Delete a previously imported RPM key, given by its 16-Number/Letters Key ID</b>`sudo rpmkeys --delete [5a278d9c-5bbc73cb]`<br><b>Import an RPM key of repository</b>`sudo rpmkeys --import [path/to/rpm_key]`


title: PARAMETERS
content:
<b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Displays a help message and exits.</i><br><br><b><b>-V</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Prints the version number and exits.</i><br><br><b><b>-f</b>, <b>--foreground</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Runs the daemon in the foreground, primarily for debugging purposes.</i><br><br><b><b>-l</b>, <b>--readonly</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Runs the daemon in read-only mode, preventing any modifications.</i><br><br><b><b>-s</b>, <b>--socket</b>=<i>Path</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specifies the path for the daemon's communication socket.</i><br><br><b><b>-p</b>, <b>--pidfile</b>=<i>Path</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specifies the path for the daemon's PID file.</i><br><br><b><b>-o</b>, <b>--driveropts</b>=<i>String</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Passes additional driver-specific options to the LVM backend.</i><br><br><b><b>-d</b>, <b>--debug</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Increases the debugging level for more verbose output.</i><br><br><b><b>-v</b>, <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Increases the verbosity of the output.</i><br><br><b><b>-q</b>, <b>--quiet</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Suppresses informational and warning messages.</i><br><br>


title: DESCRIPTION
content:
<i>The <b>lvmpolld</b> daemon is a crucial component of the Logical Volume Manager (LVM) in Linux, responsible for monitoring and managing long-running LVM operations that occur in the background.<br><br>Historically, some LVM operations like <b>pvmove</b> (moving extents between physical volumes), <b>lvconvert --mirror</b> (creating or converting logical volumes to mirrors), or <b>lvchange --resync</b> (resynchronizing mirrored or RAID logical volumes) would either block the calling command until completion or rely on kernel mechanisms. <b>lvmpolld</b> centralizes this polling, allowing these operations to proceed asynchronously.<br><br>It periodically checks the progress and status of these background tasks, updating LVM metadata and ensuring proper completion. This daemon typically starts automatically with the LVM system services (e.g., <b>lvm.systemd.service</b>) when such operations are initiated. Its primary function is to prevent LVM commands from blocking for extended periods and to ensure the integrity and completion of complex, time-consuming LVM processes.<br><br>If <b>lvmpolld</b> is not running, background LVM operations will not be monitored and may not complete, potentially leading to stalled or inconsistent LVM states.</i>


title: CAVEATS
content:
<i>If <b>lvmpolld</b> is stopped or not running, LVM operations that require background polling (e.g., <b>pvmove</b>, <b>lvconvert --mirror</b>, <b>lvchange --resync</b>) will halt their progress and may remain in an incomplete or inconsistent state. Ensuring its continuous operation is critical for the reliability of such LVM features.<br><br>While it runs in the background, excessive logging or a very high polling frequency (if configurable, though not directly exposed via standard options) could theoretically consume system resources, but this is rarely an issue in practice due to its optimized design.</i>


title: <B>DAEMON OPERATION</B>
content:
<i><b>lvmpolld</b> operates as a system daemon, usually starting automatically via <b>systemd</b> (e.g., <b>lvm.systemd.service</b>) when LVM detects an active background operation. It communicates with LVM tools via a local socket, receiving requests for polling and reporting status updates. Its continuous operation is vital for the integrity and completion of LVM tasks like <b>pvmove</b> or mirror synchronizations. Manual intervention to start or stop it is typically only required for debugging or advanced troubleshooting.</i>


title: HISTORY
content:
<i>The introduction of <b>lvmpolld</b> marked a significant improvement in how LVM handles background operations. Prior to its existence, such tasks were often either blocking or managed in a less centralized manner. The daemon was introduced to provide a robust, consistent, and non-blocking mechanism for monitoring the progress of these operations, enhancing the overall reliability and user experience of LVM when dealing with complex data movements and synchronizations. It became an integral part of modern LVM installations, typically managed by system init systems like <b>systemd</b>.</i>


title: TLDR
content:
<b>Start the daemon in the foreground</b>`lvmpolld [[-f|--foreground]]`<br><b>Start in the foreground with debug logging</b>`lvmpolld [[-f|--foreground]] [[-l|--log]] debug`<br><b>Set the idle shutdown timeout (seconds)</b>`lvmpolld [[-t|--timeout]] [300]`<br><b>Use a custom socket path</b>`lvmpolld [[-s|--socket]] [/tmp/lvmpolld.socket]`<br><b>Use a custom PID file</b>`lvmpolld [[-p|--pidfile]] [/tmp/lvmpolld.pid]`<br><b>Dump the current state</b>`lvmpolld --dump`


title: TLDR
content:
<b>Display history for the current stack</b>`pulumi stack [[hist|history]]`<br><b>Display history for the current stack showing full dates instead of relative dates</b>`pulumi stack [[hist|history]] --full-dates`<br><b>Display history for the current stack in JSON format</b>`pulumi stack [[hist|history]] [[-j|--json]]`<br><b>Display history for a specific stack</b>`pulumi stack [[hist|history]] [[-s|--stack]] [stack_name]`<br><b>Display help</b>`pulumi stack [[hist|history]] [[-h|--help]]`


title: SYNOPSIS
content:
<b>conda compare</b> <i>SOURCE1 SOURCE2</i> [<i>OPTIONS</i>]<br><i>SOURCE</i> can be an environment name, path to an environment, or path to an <b>environment.yml</b> file.


title: PARAMETERS
content:
<b><i>SOURCE1 SOURCE2</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Paths to environments, environment names, or paths to <b>environment.yml</b> files that are to be compared.</i><br><br><b><b>-f</b>, <b>--file</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Instructs <b>conda-compare</b> to interpret both <i>SOURCE1</i> and <i>SOURCE2</i> as paths to <b>environment.yml</b> files, rather than environment names or prefixes.</i><br><br><b><b>-j</b>, <b>--json</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Outputs the comparison results in a structured JSON format, suitable for programmatic parsing.</i><br><br><b><b>--no-builds</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Ignores the package build string during comparison, focusing solely on package name and version.</i><br><br><b><b>--no-platform</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Disregards the platform information when comparing packages, useful for cross-platform comparisons.</i><br><br><b><b>--no-channel</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Omits channel information from the comparison, only considering package name and version.</i><br><br><b><b>--strict</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>If any differences are detected between the environments, the command will exit with a non-zero status code (1), making it ideal for automation scripts and CI/CD checks.</i><br><br>


title: DESCRIPTION
content:
<i><b>conda-compare</b> is a powerful utility designed to highlight differences between Conda environments or their definition files. It systematically analyzes and reports disparities in installed packages, their versions, and associated channels. This tool is indispensable for maintaining consistency across various stages of development—from local workstations to production servers—and for debugging complex dependency conflicts. Users can compare two active environments, two <b>environment.yml</b> files, or an environment against a file. By presenting a clear, often color-coded, output, <b>conda-compare</b> simplifies the task of identifying what has been added, removed, or changed. It significantly aids in ensuring environment reproducibility, collaborating on projects, and validating environment integrity within CI/CD pipelines. It functions as a subcommand after installing the <b>conda-env-compare</b> package.</i>


title: CAVEATS
content:
<i><b>conda-compare</b> requires the <b>conda-env-compare</b> package to be installed separately. While powerful, it primarily compares packages and their metadata, and might not capture differences in non-package-related environment settings (e.g., custom environment variables set outside <b>environment.yml</b> or by activate scripts). Comparing very large environments can be resource-intensive and time-consuming.</i>


title: INSTALLATION
content:
<i>To use <b>conda-compare</b>, you must first install the <b>conda-env-compare</b> package. This can typically be done using the following command:<br><code>conda install conda-env-compare</code></i>


title: OUTPUT INTERPRETATION
content:
<i>By default, <b>conda-compare</b> provides a human-readable, color-coded output that visually distinguishes added, removed, and changed packages. For example, green often indicates additions, red for removals, and yellow for changes in version or build. When the <b>--json</b> flag is used, the output shifts to a machine-readable JSON object, ideal for integration into automated workflows or custom reporting tools.</i>


title: HISTORY
content:
<i><b>conda-compare</b> is not an intrinsic part of the core <b>conda</b> distribution but is provided by the separately maintained <b>conda-env-compare</b> package. Its development arose from the community's need for a more sophisticated environment comparison tool than simple <b>diff</b> operations on <b>conda env export</b> outputs. It was created to offer a purpose-built, intelligent comparison specifically tailored for the intricacies of Conda environments. Its emergence reflects the increasing demand for robust reproducibility and efficient environment management within data science and scientific computing, quickly establishing itself as a valuable extension to the Conda ecosystem.</i>


title: TLDR
content:
<b>Compare packages in the current directory to packages from the file file.yml</b>`conda compare file.yml`<br><b>Compare packages in environment named myenv to packages from the file file.yml</b>`conda compare [[-n|--name]] myenv [path/to/file.yml]`<br><b>Compare packages in environment myenv at custom path (i.e. prefix) to packages from the file file.yml</b>`conda compare [[-p|--prefix]] [path/to/myenv] [path/to/file.yml]`<br><b>Display help</b>`conda create [[-h|--help]]`


title: PARAMETERS
content:
<b>-h <I>hostname</I>, --host=<I>hostname</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the host name of the machine on which the database server is running. If the value starts with a slash, it is used as the directory for the Unix domain socket.<br><br><b>-p <I>port</I>, --port=<I>port</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the TCP port or local Unix domain socket file extension on which the server is listening for connections.<br><br><b>-U <I>username</I>, --username=<I>username</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;User name to connect as. This user must typically have superuser privileges to drop other users.<br><br><b>-w, --no-password</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Never issue a password prompt. If the server requires password authentication and a password is not available by other means (e.g., .pgpass file), the connection attempt will fail.<br><br><b>-W, --password</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force <b>dropuser</b> to prompt for a password before connecting to a database. This is typically not necessary because <b>dropuser</b> prompts automatically if the server requires password authentication.<br><br><b>-e, --echo</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Echo the SQL commands that <b>dropuser</b> generates and sends to the server. This can be useful for debugging or understanding the underlying operations.<br><br><b>-i, --interactive</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prompt for confirmation before dropping the user. This is the default behavior if neither <b>-e</b> nor <b>-w</b> is specified.<br><br><b>--if-exists</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not throw an error if the user does not exist. A notice is issued in this case. This can be useful in scripts where you're unsure if a user might already be absent.<br><br><b><I>username</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of the PostgreSQL role (user) to be dropped. This is a mandatory argument.<br><br>


title: DESCRIPTION
content:
The <b>dropuser</b> utility is a command-line wrapper for the SQL command <code>DROP ROLE</code>. It provides a convenient way to remove existing PostgreSQL roles (often referred to as 'users') from a database cluster without needing to interact directly with the <b>psql</b> interactive terminal. When invoked, <b>dropuser</b> connects to the specified PostgreSQL database (or the default 'postgres' database if none is specified) using the provided connection parameters and then executes the necessary SQL command to delete the user.<br><br>It's important to understand that <b>dropuser</b> only removes the role itself. It <i>does not</i> automatically reassign or delete any database objects (like tables, databases, or schemas) that were owned by the user being dropped. These objects will remain in the database but will be owned by the special `(no owner)` role, which can lead to administrative complications. Therefore, it is generally recommended to reassign ownership of all objects from the user to another role <i>before</i> dropping the user.


title: CAVEATS
content:
Dropping a user <i>does not</i> automatically reassign ownership of objects created by that user. Any objects (databases, tables, etc.) owned by the dropped user will remain in existence, but their ownership will be reset to `(no owner)`, potentially causing issues. It is crucial to reassign ownership of all objects to another role or drop them before dropping the user. Furthermore, the user being dropped cannot have any active connections to the database server. If the user owns a database, that database must be dropped or its ownership reassigned before the user can be dropped.


title: PERMISSIONS REQUIRED
content:
To successfully drop a user, the connecting user specified with <b>-U</b> (or inferred from environment variables) must have `CREATEROLE` privilege or be a superuser. For security reasons, regular users cannot drop other users or themselves.


title: ENVIRONMENT VARIABLES
content:
Several environment variables can be used to specify default connection parameters, avoiding the need to use command-line options repeatedly:<br><ul><li>`PGHOST`: Default host name or IP address of the database server.</li><li>`PGPORT`: Default port number.</li><li>`PGUSER`: Default user name for connection.</li><li>`PGPASSWORD`: Password for connection (caution: not recommended for security reasons; use .pgpass).</li><li>`PGDATABASE`: Default database to connect to (if not specified, defaults to `PGUSER` or `postgres`).</li></ul>


title: HISTORY
content:
<b>dropuser</b> is an integral part of the PostgreSQL client application suite, which has evolved alongside the PostgreSQL database system itself. PostgreSQL's origins trace back to the <i>POSTGRES</i> project at the University of California, Berkeley, in the mid-1980s. Utilities like <b>dropuser</b> were developed to provide command-line convenience for common administrative tasks, abstracting the raw SQL commands for database administrators and scripting purposes. It has been a standard utility for managing database roles for many versions, reflecting PostgreSQL's commitment to robust and accessible administrative tools.


title: TLDR
content:
<b>Prompt for confirmation and the username before user removal</b>`dropuser [[-i|--interactive]]`<br><b>Remove user instantly</b>`dropuser [username]`<br><b>No error if the user to be removed doesn't exist</b>`dropuser --if-exists [username]`<br><b>Remove a user on the server with address 127.0.0.1 on port 4321</b>`dropuser [[-h|--host]] 127.0.0.1 [[-p|--port]] 4321 [username]`<br><b>Remove a user on the server with address 127.0.0.1 on port 4321 as user "admin" </b>`dropuser [[-U|--username]] admin [[-h|--host]] 127.0.0.1 [[-p|--port]] 4321 [username]`


title: SYNOPSIS
content:
conda clean [-h] [-y] [--all] [--index-cache] [--packages] [--tarballs] [--logfiles] [--tempfiles] [--dry-run]


title: PARAMETERS
content:
<b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show the help message and exit.<br><br><b><b>-y</b>, <b>--yes</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not ask for confirmation before removing files.<br><br><b><b>--all</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Remove all unused packages, tarballs, index cache, log files, and temporary files. This is a comprehensive cleaning option.<br><br><b><b>--index-cache</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Remove the index cache files. These are metadata files downloaded from Conda channels.<br><br><b><b>--packages</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Remove unused cached packages. These are packages that are no longer linked into any active Conda environment.<br><br><b><b>--tarballs</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Remove downloaded package tarballs from the Conda cache. Reinstalling these packages will require re-downloading them.<br><br><b><b>--logfiles</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Remove Conda's log files.<br><br><b><b>--tempfiles</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Remove temporary files created by Conda operations.<br><br><b><b>--dry-run</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Perform a dry run. Show what would be removed without actually deleting any files.<br><br>


title: DESCRIPTION
content:
The <b>conda clean</b> command is an essential utility for managing disk space used by the Conda package manager. Over time, Conda accumulates various files such as downloaded package tarballs, cached index data, temporary files, and unlinked packages from previous installations or updates. These files, while sometimes useful for reproducibility or offline installations, can consume significant amounts of disk space, especially in environments with frequent package installations, updates, or numerous Conda environments.<br><br><b>conda clean</b> allows users to selectively remove these superfluous files, helping to reclaim valuable disk space. It provides options to target specific categories of files, such as <i>tarballs</i> (downloaded package archives), <i>packages</i> (unused package caches not linked into any environment), <i>index-cache</i> (metadata for package channels), <i>logfiles</i>, and <i>tempfiles</i>. Using this command regularly is a good practice for maintaining efficient Conda installations and preventing disk space exhaustion.


title: CAVEATS
content:
While <b>conda clean</b> is generally safe, especially when targeting <i>tarballs</i> or <i>index-cache</i>, using options like <b>--packages</b> or <b>--all</b> should be understood. Removing unused packages (not linked to any current environment) is usually fine, but it means that if you later create a new environment or need an older package version, Conda might need to re-download or re-solve dependencies. The <b>--dry-run</b> option is highly recommended to preview changes before permanent deletion, especially when using aggressive cleaning options.


title: DISK SPACE RECOVERY TIPS
content:
Using <b>conda clean</b> can free up significant amounts of disk space, often several gigabytes, especially on systems where Conda has been used extensively. Prioritize cleaning <b>--tarballs</b> and <b>--packages</b> for maximum impact. Regularly running <b>conda clean --dry-run</b> can help users identify potential space savings without commitment.


title: IMPACT ON OFFLINE USE
content:
Removing <b>--tarballs</b> can affect offline installations. If you rely on Conda for installations in environments without internet access, you might prefer not to remove tarballs, or to back them up. However, for typical online usage, removing tarballs is a safe and effective way to free up space.


title: HISTORY
content:
<b>conda clean</b> has been a fundamental utility within the Conda package manager since its early days. As Conda's capabilities expanded to manage complex environments and package dependencies, the need for efficient disk space management grew in parallel. The command's core functionality—to identify and remove transient or unused files—has remained consistent, evolving alongside Conda's development to ensure a robust and user-friendly experience for managing software environments. Its continuous presence underscores its importance in the Conda ecosystem.


title: TLDR
content:
<b>Delete all temporary or unused files verbosely and say yes to all confirmations</b>`conda clean [[-avy|--all --verbose --yes]]`<br><b>Delete only index cache, tarballs, and log files</b>`conda clean [[-itl|--index-cache --tarballs --logfiles]]`<br><b>Delete only temporary [c]ache files that could not be deleted earlier due to being in use</b>`conda clean [[-c|--tempfiles]] [path/to/tempfiles]`<br><b>Delete only unused packages. Might delete packages installed with softlinks</b>`conda clean [[-p|--packages]]`<br><b>Force delete all writable packages. More broad than the --all option. Will delete packages installed with softlinks</b>`conda clean [[-f|--force-pkgs-dirs]]`<br><b>Display help</b>`conda clean [[-h|--help]]`


title: PARAMETERS
content:
<b><i>ENVIRONMENT_NAME_OR_PATH</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of the Conda environment to activate (e.g., 'my_env'), or the full path to the environment's directory. This is a positional argument.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show a help message for the <b>activate</b> command and exit.<br><br><b><b>-s</b>, <b>--stack</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Stack the specified environment on top of the currently active environment, rather than replacing it. This means the new environment's packages will be preferred, but the previous environment remains partially active in the <code>PATH</code>.<br><br><b><b>-p</b>, <b>--prefix</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the full path to the environment's prefix directory. This explicitly indicates that the argument provided is a path, not just an environment name.<br><br>


title: DESCRIPTION
content:
The <b>conda activate</b> command is fundamental for managing isolated Python and other software environments created with Conda. When executed, it modifies the shell's environment variables, most notably the <code>PATH</code>, to point to the executables and libraries of the specified Conda environment. This ensures that when you run commands like <code>python</code> or <code>pip</code>, you are interacting with the versions and packages installed within that specific environment, rather than the system's default or another Conda environment.<br><br>This isolation is crucial for reproducible research, development, and data science projects, as it prevents dependency conflicts between different projects. For example, Project A might require Python 3.8 and a specific version of NumPy, while Project B needs Python 3.10 and a different NumPy version. <b>conda activate</b> allows seamless switching between these isolated setups without interfering with each other.


title: CAVEATS
content:
<ul><li><b>Shell Initialization Required:</b> For <b>conda activate</b> to work, Conda must be initialized in your shell using <code>conda init</code>. This command sets up necessary shell functions. Without it, <b>conda activate</b> will likely fail or require manual sourcing of scripts.</li><li><b>Not for Non-Interactive Scripts:</b> Directly using <b>conda activate</b> in non-interactive scripts (e.g., a Bash script that is not sourced) is generally not recommended as it modifies the shell's state. For such cases, consider <code>conda run</code> or `conda shell activate` (if available and appropriate for your Conda version) to execute commands within a specific environment.</li><li><b>Base Environment:</b> If no environment is specified, <b>conda activate</b> often defaults to activating the 'base' environment.</li><li><b>Path Management:</b> Be aware that <b>conda activate</b> prepends environment-specific paths to your <code>PATH</code> variable. Mismanagement can lead to unexpected command execution if not careful.</li></ul>


title: HOW IT WORKS
content:
Unlike simple path modification, <b>conda activate</b> relies on shell functions (set up by <code>conda init</code>) that introspect the current shell and modify its environment. When you run <code>conda activate my_env</code>, the shell function `conda_activate` is executed. This function performs several actions, including:<br>1. Updating the <code>PATH</code> environment variable to prioritize the executables within <code>my_env/bin</code> (or `Scripts` on Windows).<br>2. Setting other environment variables specific to the activated environment (e.g., `CONDA_PREFIX`, `CONDA_DEFAULT_ENV`).<br>3. Potentially running activation scripts defined within the environment itself (e.g., in `conda-meta/activate.d/`).


title: DEACTIVATING ENVIRONMENTS
content:
To revert to the previous environment or the base environment, use the command <b>conda deactivate</b>. This command restores the shell's environment variables to their state before the last activation, effectively exiting the current Conda environment.


title: HISTORY
content:
Conda was developed by Continuum Analytics (now Anaconda Inc.) to address the growing challenges of package and environment management, particularly in the scientific computing and data science communities. Before Conda, managing complex dependencies across different projects often led to 'dependency hell.' The introduction of <b>conda activate</b>, as a core component of the Conda ecosystem, provided a robust, cross-platform, and user-friendly mechanism to switch between isolated software environments. Its development has focused on improving shell integration, performance, and reliability, evolving with various shell types (Bash, Zsh, Fish, PowerShell) to ensure a consistent user experience.


title: SEE ALSO
content:
conda deactivate(1), conda create(1), conda env list(1), conda init(1), conda run(1), source(1), export(1)


title: TLDR
content:
<b>Activate an existing environment named myenv</b>`conda activate myenv`<br><b>Activate an existing environment located at custom path</b>`conda activate [path/to/myenv]`<br><b>Stack myenv environment on top of a previous environment making libraries/commands/variables from both accessible</b>`conda activate --stack myenv`<br><b>Start a clean environment myenv without stacking it making previous environment libraries/commands/variables not accessible</b>`conda activate --no-stack myenv`<br><b>Display help</b>`conda activate [[-h|--help]]`


title: SYNOPSIS
content:
<b>gh-org</b> <i>&lt;subcommand&gt;</i> [<i>&lt;flags&gt;</i>]<br><br>Available subcommands enable various operations for listing organizations, viewing organization details, and managing members. Each subcommand may have its own specific flags and arguments.


title: PARAMETERS
content:
<b>list</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all GitHub organizations that the authenticated user is a member of. This provides a quick overview of your organizational affiliations.<br><br><b>members <i>&lt;organization&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Manages or lists members of the specified GitHub organization. This subcommand typically requires further sub-actions (e.g., <code>gh-org members list &lt;org&gt;</code>, <code>gh-org members add &lt;org&gt; &lt;user&gt;</code>) to perform specific member-related tasks.<br><br><b>view <i>&lt;organization&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays detailed public and private information about a specific GitHub organization, including its description, URL, repository count, and other relevant metadata. Requires appropriate permissions for private organization details.<br><br>


title: DESCRIPTION
content:
The <b>gh-org</b> command provides a robust interface for interacting with GitHub organizations directly from your command line. It streamlines common organizational tasks, allowing users to <i>list all organizations</i> they belong to, <i>view detailed information</i> about specific organizations, and <i>manage organization members</i>. This command is an essential tool for developers and administrators who need to efficiently oversee and maintain their GitHub organization's structure, permissions, and teams without switching context to the web interface. It leverages the GitHub API to ensure up-to-date and accurate data, making it a powerful utility for scripting and automation of organizational workflows. Its design focuses on ease of use and integration with existing shell environments, making complex organizational tasks manageable with simple commands.


title: CAVEATS
content:
The <b>gh-org</b> command relies on the <i>GitHub CLI (gh)</i> being installed and properly configured with an authenticated GitHub session. Operations are subject to GitHub API rate limits and require the authenticated user to have sufficient permissions within the target organization (e.g., owner privileges for member management).


title: AUTHENTICATION
content:
Before using <b>gh-org</b>, you must authenticate your GitHub CLI session. This is typically done using the <code>gh auth login</code> command, which will guide you through the process of connecting your terminal to your GitHub account and granting the necessary permissions.


title: PERMISSIONS
content:
All actions performed by <b>gh-org</b> are executed under the context of the authenticated user's permissions. For tasks such as adding or removing organization members, the user must possess organization owner privileges or specific team maintenance permissions within the target GitHub organization.


title: HISTORY
content:
The functionality encapsulated by <b>gh-org</b> is part of the broader <i>GitHub CLI (gh)</i> tool, which was officially released in 2020. Its development aimed to provide a comprehensive command-line interface for GitHub, enabling developers to manage repositories, issues, pull requests, and organizations directly from their terminal. The organizational management features have evolved to mirror the capabilities of the GitHub web interface and API, continually improving to support modern development workflows and automation needs.


title: TLDR
content:
<b>List organizations for the authenticated user</b>`gh org [[ls|list]]`<br><b>List a certain amount of organizations (defaults to 30)</b>`gh org [[ls|list]] [[-L|--limit]] [100]`<br><b>Display help</b>`gh org --help`


title: SYNOPSIS
content:
<code>createuser [<i>connection-options</i>...] [<i>option</i>...] [<i>rolename</i>]</code><br>Example:<br><code>createuser --createdb --login new_app_user</code><br><code>createuser -s -P admin_user</code>


title: PARAMETERS
content:
<b><b>-s</b>, <b>--superuser</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The new role will be a database superuser.<br><br><b><b>-r</b>, <b>--createrole</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The new role will be allowed to create other roles.<br><br><b><b>-d</b>, <b>--createdb</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The new role will be allowed to create new databases.<br><br><b><b>-l</b>, <b>--login</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The new role will be allowed to log in (default behavior).<br><br><b><b>-P</b>, <b>--pwprompt</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prompts for a password for the new role.<br><br><b><b>-R</b>, <b>--replication</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The new role will be allowed to initiate replication.<br><br><b><b>-U</b> <I>username</I>, <b>--username=</b><I>username</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;User name to connect as for the database server.<br><br><b><b>-h</b> <I>host</I>, <b>--host=</b><I>host</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Database server host name or socket directory.<br><br><b><b>-p</b> <I>port</I>, <b>--port=</b><I>port</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Database server port number.<br><br><b><b>--if-not-exists</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not error if a role with the same name already exists; issue a notice.<br><br>


title: DESCRIPTION
content:
The <b>createuser</b> command is a PostgreSQL utility designed to define new database roles, which can represent either database users or groups of users. It is crucial to understand that <b>createuser</b> manages access within a PostgreSQL database cluster and <i>not</i> system-level user accounts on the Linux operating system. This command provides a convenient way to grant various privileges to a new role, such as the ability to log in, create databases, create other roles, or become a superuser, all from the command line. It acts as a wrapper around the SQL <I>CREATE ROLE</I> command. The utility connects to a PostgreSQL database (typically <I>postgres</I>) to execute the role creation. It simplifies the process by abstracting the complex SQL syntax, allowing database administrators to quickly set up new user accounts with specified permissions.


title: CAVEATS
content:
The <b>createuser</b> command is used exclusively for managing roles within a PostgreSQL database and does <i>not</i> create system-level user accounts on the Linux operating system. Attempting to use it for system user management will fail. To use <b>createuser</b>, you must have superuser privileges within the PostgreSQL database or the CREATEROLE privilege. It's generally best practice to assign the minimum necessary privileges to new roles rather than granting superuser status indiscriminately.


title: ROLE ATTRIBUTES AND PRIVILEGES
content:
A role created with <b>createuser</b> can have various attributes determining its capabilities. These include whether it can log in, create databases, create other roles, or initiate replication. Specific SQL commands like <I>GRANT</I> and <I>REVOKE</I> are used to manage object-level privileges (e.g., SELECT on a table) for these roles after creation.


title: SECURITY CONSIDERATIONS
content:
Always use strong, unique passwords for database roles. Avoid granting superuser privileges unless absolutely necessary. For production environments, consider using client authentication methods like <I>pg_hba.conf</I> to restrict database access based on host, user, and database.


title: HISTORY
content:
The <b>createuser</b> utility has been a fundamental part of the PostgreSQL toolset since its early versions, providing a command-line interface for database role management. As PostgreSQL evolved, the underlying SQL syntax for role creation became more feature-rich, encompassing various attributes like login status, password settings, and creation privileges. <b>createuser</b> consistently serves as a user-friendly wrapper for these SQL commands, adapting to new role features while maintaining its simple invocation pattern. Its longevity underscores the importance of streamlined database administration within the PostgreSQL ecosystem.


title: SEE ALSO
content:
<b>dropuser</b>(1), <b>psql</b>(1), <b>useradd</b>(8) <I>(for creating Linux system users)</I>, <b>usermod</b>(8) <I>(for modifying Linux system users)</I>


title: TLDR
content:
<b>Create a user interactively</b>`createuser --interactive [username]`<br><b>Create a user with no special rights</b>`createuser [username]`<br><b>Create a superuser</b>`createuser [[-s|--superuser]] [username]`<br><b>Create a user allowed to create databases, manage roles, and prompt for a password</b>`createuser [[-d|--createdb]] [[-r|--createrole]] [[-P|--pwprompt]] [username]`<br><b>Create a user without the ability to create databases or manage roles</b>`createuser [[-D|--no-createdb]] [[-R|--no-createrole]] [username]`


title: PARAMETERS
content:
<b><I>stack-name</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of the Pulumi stack whose history is to be displayed. If omitted, the currently selected stack is used.<br><br><b>--json</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Emits the stack history output in machine-readable JSON format.<br><br><b>--show-secrets</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays secret values that are part of the stack's history. Use with extreme caution as this exposes sensitive information.<br><br><b>--max-count <I>int</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the maximum number of history records to display. The default is typically 100.<br><br>


title: DESCRIPTION
content:
The <b>pulumi-stack-hist</b> command provides a detailed chronological record of all updates performed on a specific Pulumi stack. Each entry in the history typically includes information such as the unique update ID, the time the update was initiated, the duration of the update, the user who performed it, and its final status (e.g., succeeded, failed, pending). This command is invaluable for auditing changes, debugging issues by pinpointing when a problem might have been introduced, and understanding the evolution of infrastructure over time. It helps maintain accountability and provides a clear lineage of infrastructure state transformations. Users can inspect past deployments to trace configuration changes, resource modifications, or policy adjustments. The command supports various options to refine the output, such as displaying the history in JSON format for programmatic consumption or adjusting the number of records displayed.


title: CAVEATS
content:
Using the <b>--show-secrets</b> flag can expose sensitive information. Exercise extreme caution and ensure appropriate security measures are in place when using this option, especially in shared or logged environments.<br>The command displays a high-level overview of updates; for detailed diffs between specific update versions, further Pulumi commands or tooling might be required.


title: USAGE CONTEXT
content:
<b>pulumi-stack-hist</b> is primarily used for auditing, debugging, and understanding the lifecycle of infrastructure. It provides crucial context for operational teams and developers to trace back changes that might have led to current infrastructure states or issues.


title: OUTPUT FORMAT
content:
By default, the output is presented in a human-readable table format. When the <b>--json</b> flag is used, it provides a structured JSON array, making it suitable for scripting and integration with other tools for automated reporting or analysis.


title: HISTORY
content:
The functionality represented by <b>pulumi-stack-hist</b> is an integral part of the Pulumi CLI, which emerged with the Pulumi platform itself. Pulumi was founded in 2017 and publicly launched in 2018, aiming to enable developers to define, deploy, and manage cloud infrastructure using familiar programming languages. As a core aspect of infrastructure as code (IaC) is audibility and state management, the ability to view a stack's history was a foundational component, allowing users to track the evolution of their infrastructure deployments from day one. Its design reflects the need for clear visibility into who changed what and when, supporting both individual developer workflows and team-based infrastructure management.


title: PARAMETERS
content:
<b>-s, --stack <i>string</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of the stack to operate on. If omitted, the currently selected stack's history is shown.<br><br><b>--json</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Emit output as JSON, which is useful for programmatic consumption and integration with other tools.<br><br><b>--show-secrets</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display secret values in the history output. Use with extreme caution due to security implications.<br><br><b>--show-url</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the URL to the update in the Pulumi Cloud console (if using the Pulumi Cloud backend).<br><br>


title: DESCRIPTION
content:
The <b>pulumi stack history</b> command provides a chronological record of all updates performed on a specific Pulumi stack.<br><br>It is an essential tool for understanding the evolution of your infrastructure, debugging issues, and auditing deployments. Each history entry typically includes the unique update ID, the timestamp when the update began, the duration of the update, the identity of the user who initiated the update, and its final status (e.g., <i>succeeded</i>, <i>failed</i>, <i>canceled</i>).<br><br>This command helps track changes, identify who made them, and when, offering valuable insights into the lifecycle of your cloud resources managed by Pulumi. It can be particularly useful for reviewing deployment timelines, analyzing performance of updates, and quickly pinpointing the state of a stack at any given point in its history.


title: CAVEATS
content:
The command requires a Pulumi project and a selected stack, or a stack name provided as an argument.<br>The history is stored in the Pulumi backend (local, cloud, S3, etc.) and its availability depends on the backend's configuration.<br>Using <i>--show-secrets</i> should be done with extreme caution due to the sensitive nature of secret values, as it can expose credentials or other confidential information.


title: OUTPUT DETAILS
content:
The command typically displays columns such as <b>ID</b>, <b>UPDATE TIME</b>, <b>DURATION</b>, <b>USER</b>, and <b>STATUS</b>. The <b>ID</b> is a unique identifier for each update, which is useful for referencing specific deployments (e.g., for `pulumi stack restore --update <ID>`).


title: HISTORY
content:
Pulumi was founded in 2017 to enable infrastructure as code using general-purpose programming languages. The <b>stack history</b> command is a fundamental component of the Pulumi CLI, present since early versions, as robust deployment tracking is crucial for any Infrastructure as Code (IaC) platform. Its development has consistently focused on clarity of output, operational robustness, and seamless integration with various backend providers.


title: SEE ALSO
content:
pulumi stack ls(1), pulumi stack select(1), pulumi up(1), pulumi destroy(1), pulumi stack export(1), pulumi stack restore(1)


title: PARAMETERS
content:
<b>-i <I>hostname</I>:<I>port</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the Impala daemon to connect to. Default port is 21000.<br><br><b>-q <I>query</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Executes a single SQL query in non-interactive mode and exits. Useful for scripting.<br><br><b>--database=<I>db_name</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the initial database to use after connecting.<br><br><b>--ssl</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables SSL/TLS encryption for the connection to Impala.<br><br><b>--ca_cert=<I>path</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to the CA certificate file for validating the Impala daemon's certificate when SSL is enabled.<br><br><b>--auth_option=<I>option</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the authentication mechanism. Common options include PLAIN, NOSASL, GSSAPI (Kerberos).<br><br><b>--auth_creds_kinit</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses existing Kerberos credentials obtained via <I>kinit</I> for GSSAPI authentication.<br><br><b>--ldap_user=<I>user</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the LDAP username for authentication when using LDAP.<br><br><b>--ldap_password_file=<I>path</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to a file containing the LDAP password for authentication.<br><br><b>--query_option=<I>key</I>=<I>value</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets a query option (e.g., query_timeout_s, batch_size) for the current session.<br><br><b>-f <I>file</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Executes SQL commands from a specified file in non-interactive mode.<br><br><b>--delimited</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays query results with tab-separated values, useful for scripting.<br><br><b>--disable_webserver_reporting</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables logging the shell's activities to the Impala Web UI.<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message and exits.<br><br>


title: DESCRIPTION
content:
The <b>impala</b> command launches the <I>Impala shell</I>, a command-line interface for interacting with Apache Impala, a high-performance, distributed SQL query engine for data stored in a Hadoop cluster.<br><br>Impala enables users to issue SQL queries directly against large datasets stored in HDFS, Apache Kudu, or Apache HBase, providing low-latency responses for interactive analytics. The shell connects to an Impala daemon (impalad) and allows users to execute SQL statements, manage databases and tables, and retrieve query results. It's an essential tool for developers, data analysts, and administrators working with Impala, facilitating both interactive data exploration and scripting of analytical workloads.


title: CAVEATS
content:
The <b>impala</b> command requires a running Impala daemon to connect to. It is specifically designed for the Impala ecosystem and is not a general-purpose Linux SQL client. Network connectivity and proper security configurations (e.g., Kerberos, SSL/TLS) are crucial for successful operation in production environments. Performance can vary significantly based on cluster size, data distribution, and query complexity.


title: INTERACTIVE VS. NON-INTERACTIVE MODE
content:
The <b>impala</b> shell operates in two primary modes: interactive and non-interactive. When invoked without the <code>-q</code> or <code>-f</code> option, it enters an interactive prompt where users can type and execute SQL commands directly. With <code>-q</code> or <code>-f</code>, it executes the provided query or script and then exits, making it suitable for batch processing and automation.


title: AUTHENTICATION AND AUTHORIZATION
content:
Impala supports various authentication mechanisms, including Kerberos (GSSAPI), LDAP, and basic PLAIN authentication. The <b>impala</b> shell provides options like <code>--auth_option</code>, <code>--auth_creds_kinit</code>, and LDAP-specific parameters to configure secure connections to Impala daemons. Authorization is typically managed via Apache Ranger or similar systems, ensuring users only access permitted data.


title: HISTORY
content:
Apache Impala was initially developed by Cloudera to provide low-latency, interactive SQL queries over large datasets stored in Hadoop, addressing the performance limitations of earlier SQL-on-Hadoop solutions like Apache Hive (which traditionally relied on MapReduce). It was open-sourced and later became an Apache Incubator project. The <b>impala</b> shell has been a core component since its inception, providing a familiar command-line interface for database interaction, akin to traditional RDBMS clients, but optimized for the big data environment.


title: TLDR
content:
<b>Launch impala in station mode</b>`impala`<br><b>Launch impala in Access Point mode</b>`impala [[-m|--mode]] ap`<br><b>Switch between different sections</b>`[<Tab>|<Shift Tab>]`<br><b>Select a network to connect to</b>`<Space>`<br><b>Display hotkeys</b>`<?>`


title: PARAMETERS
content:
<b><I>subcommand</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The specific maintenance operation to perform. Each subcommand has its own set of options.<br><br><b><b>world</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Rebuilds packages in the <i>@world</i> set, ensuring dependencies are met and profile settings are respected. This is frequently used after system updates or profile changes.<br><br><b><b>sync</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Synchronizes the Portage tree with the latest package information from configured repositories. Note that <i>emerge --sync</i> or <i>app-portage/webrsync</i> are often preferred for this task today.<br><br><b><b>clean</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Cleans up old source archives (distfiles) in <i>/var/cache/distfiles</i> and obsolete binary packages or package build directories. This helps reclaim disk space.<br><br><b><b>config</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Updates system configuration files by invoking <i>etc-update</i> or <i>dispatch-conf</i>. It prompts the administrator to review and merge changes from new package versions.<br><br><b><b>binhost</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Manages binary packages, facilitating their creation, installation, and general administration on systems that utilize a binary package host.<br><br><b><b>diff</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows differences in configuration files without performing any updates, similar to the review step of <i>etc-update</i> or <i>dispatch-conf</i>.<br><br><b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays general help information for <i>emaint</i>, or specific help for a given <I>subcommand</I> when used as <i>emaint subcommand --help</i>.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the <i>emaint</i> utility's version information.<br><br>


title: DESCRIPTION
content:
<i>emaint</i> is a powerful and versatile command-line utility designed for managing various system maintenance tasks on a Gentoo Linux system. It provides a unified interface for operations such as synchronizing the Portage tree, rebuilding the system's <i>@world</i> package set, cleaning up obsolete packages and source files, and managing configuration file updates. While some of its functionalities can be achieved through other Portage tools (like <i>emerge</i>), <i>emaint</i> often simplifies complex workflows by grouping related actions under intuitive subcommands, making system administration more efficient for Gentoo users. It's an essential tool for keeping a Gentoo system healthy and up-to-date.


title: CAVEATS
content:
<i>emaint</i> is an integral tool for Gentoo Linux and relies heavily on its Portage package manager. Most operations require <i>root</i> privileges. Misuse of certain subcommands, particularly <b>world</b> or <b>clean</b>, can potentially lead to system instability, unbootable systems, or data loss if not carefully managed. Some functionalities, like <b>sync</b>, have more modern or commonly adopted alternatives.


title: SUBCOMMAND-SPECIFIC HELP
content:
<i>emaint</i> operates primarily through its subcommands. To get detailed help and options for a particular subcommand, always use the <b>--help</b> flag with the subcommand. For example, to see options for rebuilding the <i>@world</i> set, execute: <br><code>emaint world --help</code>


title: CONFIGURATION FILE MANAGEMENT IMPORTANCE
content:
The <b>emaint config</b> subcommand is crucial for maintaining system stability on Gentoo. It automates the process of reviewing and merging updated configuration files (often presented as <i>.config.new</i> files) provided by new package versions. Regularly running this command (e.g., after every major <i>emerge -uDNa @world</i>) is vital to prevent system breakage due to outdated or incompatible configuration files.


title: HISTORY
content:
<i>emaint</i> has been an integral part of the Gentoo Linux ecosystem for many years, providing a structured way to perform common system maintenance tasks. Its development has closely followed the evolution of Portage itself, adapting to new functionalities and best practices in Gentoo system administration. It aims to consolidate various maintenance routines into a single, easy-to-use interface, simplifying the maintenance burden for Gentoo users.


title: TLDR
content:
<b>Synchronize repositories that are set to auto-sync (default for most repositories)</b>`sudo emaint sync [[-a|--auto]]`<br><b>Synchronize a specific repository</b>`sudo emaint sync [[-r|--repo]] [repository]`<br><b>Synchronize all repositories</b>`sudo emaint sync [[-A|--allrepos]]`<br><b>Clear the Portage resume list</b>`sudo emaint cleanresume [[-f|--fix]]`<br><b>Clean Portage logs</b>`sudo emaint logs [[-C|--clean]]`


title: TLDR
content:
<b>Bind-mount a host path into the same location inside the unit</b>`systemctl bind [unit] /[path/to/host_directory]`<br><b>Bind-mount a host path into a different location inside the unit</b>`systemctl bind [unit] /[path/to/host_directory] /[path/to/unit_directory]`<br><b>Bind-mount a path as read-only inside the unit</b>`systemctl bind [unit] /[path/to/host_directory] --read-only`<br><b>Create the destination path inside the unit before binding</b>`systemctl bind [unit] /[path/to/host_directory] /[path/to/unit_directory] --mkdir`


title: PARAMETERS
content:
<b>`<i>PID...</i>`</b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more Process IDs. When specified, `systemctl cancel` will send the `SIGKILL` signal to these processes, forcibly terminating them, and subsequently remove any systemd jobs associated with them from the queue. If no PIDs are provided, the command cancels *all* currently pending jobs in the systemd queue without affecting running processes.<br><br>


title: DESCRIPTION
content:
`systemctl cancel` is a powerful command used to clear the systemd job queue. When invoked without any arguments, it will <b>immediately cancel all pending jobs</b> that are currently queued by systemd. This includes jobs like starting, stopping, restarting, or reloading units that have not yet begun execution or are waiting for dependencies. It's an important diagnostic and recovery tool, particularly useful when the system's startup or shutdown process gets stalled due to a hung or misbehaving service, or when the job queue becomes unresponsive.<br><br>Unlike `systemctl stop`, which attempts to gracefully terminate a running unit, `cancel` operates on the <i>jobs themselves</i>, preventing them from executing or removing them if they are stuck. When PIDs are specified, `systemctl cancel` will additionally send the <b>SIGKILL signal</b> to those processes, forcibly terminating them, and then remove any associated jobs from the queue. This can be critical for unblocking the system when specific processes are preventing further systemd operations.


title: CAVEATS
content:
<ul><li><b>Disruptive Action:</b> When used without PIDs, `systemctl cancel` clears <i>all</i> pending systemd jobs, which can disrupt planned system operations or services that were about to start or stop.</li><li><b>Data Loss Risk (with PIDs):</b> Sending `SIGKILL` to processes (when PIDs are specified) is a forceful termination that does not allow processes to perform cleanup or save data. This can lead to data corruption or loss for applications that do not handle sudden termination gracefully.</li><li><b>State Inconsistency:</b> Cancelling jobs, especially those related to system startup or critical service management, might leave the system in an inconsistent or undefined state.</li><li><b>Requires Root Privileges:</b> This command requires elevated privileges (root or sudo) to execute due to its potential impact on system-wide operations and processes.</li></ul>


title: WHEN TO USE `SYSTEMCTL CANCEL`
content:
Use this command as a last resort when the system is stuck in a state where systemd jobs are queued but not progressing, preventing normal operation, shutdown, or startup. Examples include:<br><ul><li>During boot or shutdown, if the system hangs waiting for a service to start or stop.</li><li>When `systemctl status` shows services in a 'starting' or 'stopping' state indefinitely, blocking other operations.</li><li>To clear a backlog of failed or hung jobs that are preventing further systemd actions.</li><li>When specific processes are unresponsive and holding up systemd transitions, and a `SIGTERM` (via `systemctl stop` or `kill`) is ineffective.</li></ul>


title: UNDERSTANDING JOB QUEUES
content:
Systemd manages units (services, mount points, devices, etc.) through a job queue. When you issue a command like `systemctl start my-service`, systemd creates a job and adds it to the queue. Dependencies are resolved, and jobs are executed in the appropriate order. `systemctl cancel` acts directly on this queue, removing jobs before they are executed or completed, allowing the system manager to potentially unblock itself.


title: HISTORY
content:
The `systemctl` command is an integral part of <b>systemd</b>, the system and service manager that has become the default init system for most Linux distributions, replacing the older SysVinit. The `cancel` subcommand was introduced early in systemd's development lifecycle as a crucial mechanism for system administrators to recover from situations where the systemd job queue becomes stalled or unresponsive. Its functionality evolved to include the ability to target specific processes with `SIGKILL`, enhancing its utility as a forceful recovery tool for unresponsive services that block critical system operations like shutdown or startup. This reflects systemd's design philosophy of providing robust control and recovery capabilities for system services.


title: TLDR
content:
<b>Cancel a job by its numeric ID</b>`systemctl cancel [job_id]`<br><b>Cancel multiple jobs</b>`systemctl cancel [job_id1 job_id2 ...]`<br><b>Cancel all pending jobs</b>`systemctl cancel`<br><b>Cancel a job in the user service manager</b>`systemctl cancel [job_id] --user`


title: TLDR
content:
<b>Run the legacy reporter (LVM1 systems only)</b>`lvmsar`<br><b>Report I/O statistics for a device using device-mapper stats</b>`dmstats report [/dev/mapper/device]`<br><b>List statistics regions for a device</b>`dmstats list [/dev/mapper/device]`


title: SYNOPSIS
content:
<b>dnf</b> [<i>options</i>] <b>clean</b> [<i>mode</i>]<br><i>Available modes:</i> <b>all</b> | <b>packages</b> | <b>metadata</b> | <b>expire-cache</b> | <b>dbcache</b> | <b>plugins</b> | <b>binaries</b> | <b>debuginfo-packages</b> | <b>oldheaders</b>


title: PARAMETERS
content:
<b>all</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes all cached files, including packages, metadata, and database cache.<br><br><b>packages</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes all cached package files from the system, typically located in <i>/var/cache/dnf/</i>.<br><br><b>metadata</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes all cached repository metadata. DNF will re-download this data on the next update or installation.<br><br><b>expire-cache</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Marks the current cache as expired, forcing DNF to check with repositories for newer metadata on the next transaction without actually deleting the files.<br><br><b>dbcache</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes the sqlite cache used by DNF for various operations. This also gets rebuilt on the next DNF command.<br><br><b>plugins</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes cached data specifically generated by DNF plugins.<br><br><b>binaries</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes cached binary files.<br><br><b>debuginfo-packages</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes cached debuginfo packages.<br><br><b>oldheaders</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes old package headers which are no longer needed.<br><br>


title: DESCRIPTION
content:
<b>dnf clean</b> is a vital subcommand of the DNF package manager, used to remove various types of cached files from the system. These cached files, while useful for speeding up subsequent DNF operations, can accumulate over time, consuming significant disk space. Additionally, a corrupted cache can sometimes lead to issues with package installations or updates. By utilizing <b>dnf clean</b>, users can free up disk space and resolve potential caching-related problems.<br><br>The command offers different cleaning modes, allowing users to target specific types of cached data, such as downloaded packages, repository metadata, or database caches. Running <b>dnf clean</b> frequently can increase the time taken for DNF to perform its next operation (e.g., <i>dnf update</i> or <i>dnf install</i>) as it will need to re-download necessary metadata or packages. However, it's a powerful tool for system maintenance and troubleshooting.


title: CAVEATS
content:
Cleaning metadata (using <b>metadata</b> or <b>all</b>) will force DNF to re-download all repository metadata during the next DNF operation, which can slow down the initial process, especially on slower internet connections. While <b>dnf clean</b> helps free up disk space, it does not remove <i>installed</i> packages from the system; it only targets cached <i>downloaded</i> packages and metadata. Use <b>dnf remove</b> for uninstalling packages.


title: COMMON USE CASES
content:
<b>dnf clean</b> is frequently used to:<br>1. Free up disk space on systems where DNF has accumulated a large cache.<br>2. Resolve issues with DNF not being able to find packages or exhibiting strange behavior, often due to corrupted or outdated metadata.<br>3. Ensure that DNF is working with the freshest possible repository information before performing critical updates.


title: HISTORY
content:
The <b>clean</b> functionality was inherited by DNF from its predecessor, YUM. With the transition from YUM to DNF as the default package manager in Fedora and later RHEL/CentOS, <b>dnf clean</b> effectively replaced <b>yum clean</b>, offering similar capabilities with DNF's improved performance and dependency resolution. Its development is tied directly to the evolution of the DNF project itself, aiming to provide robust and efficient package management for RPM-based Linux distributions.


title: TLDR
content:
<b>Remove cache files generated from the repository metadata</b>`dnf clean dbcache`<br><b>Mark the repository metadata as expired</b>`dnf clean expire-cache`<br><b>Remove repository metadata</b>`dnf clean metadata`<br><b>Remove any cached packages from the system</b>`dnf clean packages`<br><b>Clean up all DNF repository specific metadata and cached files (all of the above)</b>`dnf clean all`


title: PARAMETERS
content:
<b><<i>UNIT_FILE_PATH</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more paths to systemd unit files (e.g., <i>/usr/lib/systemd/system/myunit.service</i>, <i>/etc/systemd/system/anotherservice.socket</i>). The script scans these files to extract dependency information.<br><br>


title: DESCRIPTION
content:
<i>systemctl-add-requires</i> is a utility script primarily used within RPM packaging workflows, specifically in conjunction with <i>systemd-rpm-macros</i>. Its main purpose is to automatically parse systemd unit files (e.g., <i>.service</i>, <i>.socket</i>, <i>.timer</i>) and extract their declared dependencies and relationships, such as <i>Requires=</i>, <i>Wants=</i>, <i>Before=</i>, <i>After=</i>, and <i>Conflicts=</i>.<br><br>The script then translates these unit relationships into <i>Requires:</i> entries suitable for inclusion in an RPM <i>.spec</i> file. This automation helps ensure that when a package providing systemd units is installed, all necessary systemd units it depends on are also installed, improving system stability and simplifying package maintenance. It is not typically executed directly by end-users for general system administration tasks, but rather invoked during the package build process to generate correct RPM dependencies.


title: CAVEATS
content:
<ul><li>This command is primarily a build-time utility, not intended for runtime system administration. Directly executing it outside of a package build context may not be useful for end-users.</li><li>It typically outputs <i>Requires:</i> lines to standard output, which are then usually captured and added to an RPM <i>.spec</i> file. It does not modify systemd configurations or unit files directly.</li><li>Its exact behavior and any available command-line options can vary slightly depending on the specific <i>systemd-rpm-macros</i> package version and distribution it originates from.</li></ul>


title: INTEGRATION WITH RPM BUILDS
content:
This script is typically invoked within the <i>%build</i> or <i>%prep</i> sections (or similar build phases) of an RPM <i>.spec</i> file, often through <i>systemd-rpm-macros</i>. It helps generate the necessary <i>Requires:</i> entries that ensure dependent <i>systemd</i> units are installed alongside the package providing the main unit. This prevents broken dependencies and ensures the correct functioning of services and applications when installing or removing packages that interact with <i>systemd</i>.


title: HISTORY
content:
The <i>systemctl-add-requires</i> script emerged as a crucial component during the widespread adoption and integration of <i>systemd</i> into RPM-based distributions like Fedora and RHEL. As <i>systemd</i> became the default init system, packages providing systemd units required a robust and automated mechanism to declare their dependencies on other units. This was essential to ensure a functional and stable system upon installation and upgrade.<br><br>Instead of requiring package maintainers to manually inspect each unit file and add complex <i>Requires:</i> lines to <i>.spec</i> files, this utility was developed as a macro-driven solution within <i>systemd-rpm-macros</i>. Its introduction significantly automated this process, making package maintenance more efficient, less error-prone, and tightly coupled with the evolving <i>systemd</i> packaging guidelines.


title: TLDR
content:
<b>Add a Requires dependency from a target to a unit</b>`systemctl add-requires [target] [unit]`<br><b>Add multiple Requires dependencies at once</b>`systemctl add-requires [target] [unit1 unit2 ...]`<br><b>Add a user-level Requires dependency</b>`systemctl add-requires [target] [unit] --user`


title: TLDR
content:
<b>Power off the system</b>`systemctl poweroff`<br><b>Power off the system immediately without asking services to stop gracefully</b>`systemctl poweroff --force`<br><b>Power off the system immediately without sending notifications to logged-in users</b>`systemctl poweroff --force --no-wall`


title: PARAMETERS
content:
<b><I>TARGET_UNIT</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The systemd unit (e.g., a target like `<i>multi-user.target</i>` or a service) that will express the 'Wants=' dependency. This unit will attempt to start the units specified by `<i>UNIT_TO_WANT</i>`.<br><br><b><I>UNIT_TO_WANT</I>...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more systemd units (e.g., `<i>my-service.service</i>`, `<i>another.target</i>`) that the `<i>TARGET_UNIT</i>` should 'want' to start. These units will be linked into the `<i>TARGET_UNIT</i>`.wants/ directory.<br><br><b>--runtime</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Create the 'wants' symlink in the volatile `<i>/run/systemd/system/</i>` directory. This makes the dependency effective only for the current boot and will be lost after a reboot.<br><br><b>--force</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Overwrite existing symlinks if they point to a different unit or if the target directory already contains a file with the same name. Use with caution to avoid unexpected behavior.<br><br><b>--dry-run</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show what actions would be performed (e.g., which symlinks would be created) without actually modifying the filesystem. Useful for testing and verifying commands.<br><br>


title: DESCRIPTION
content:
The command `systemctl-add-wants` is <b>not a standard utility</b> provided by the `systemd` project itself. Instead, it represents a conceptual operation or a common helper script's function aimed at managing 'Wants' dependencies for systemd units. In `systemd`, a 'Wants=' dependency is a weak dependency: if unit A 'wants' unit B, unit A will attempt to start unit B, but will not fail if unit B cannot be started or if it fails. This is distinct from 'Requires=', which mandates successful startup and continuous operation of the dependency.<br><br>Typically, 'Wants' dependencies are established either by adding a `<b>Wants=</b>` directive within a unit file's `<b>[Unit]</b>` section, or by creating symbolic links in `<i>.wants/</i>` directories (e.g., `<i>/etc/systemd/system/multi-user.target.wants/</i>`). The standard way to create these symlinks for system-wide targets is using `<b>systemctl enable</b> <I>service-name</I>`, which will create the necessary symlink, usually in `<i>multi-user.target.wants/</i>` or similar, depending on the unit's `<b>[Install]</b>` section.<br><br>If `systemctl-add-wants` were a real command, its purpose would be to provide a more direct and simplified way to create these 'wants' symlinks between an arbitrary target unit and one or more service units, effectively making the target unit 'want' the specified services.


title: CAVEATS
content:
This command is <b>not a standard systemd utility</b>. Its functionality is typically handled by `<b>systemctl enable</b>` or by manually editing unit files and creating symlinks in the appropriate `<i>.wants/</i>` directories (e.g., `<i>/etc/systemd/system/multi-user.target.wants/</i>`).<br><br>Directly manipulating `.wants` directories without using `<b>systemctl</b>` can lead to inconsistent system state or unexpected behavior, as `systemctl` handles dependency resolution, unit reloading, and proper path management more robustly. For permanent, custom dependencies, it is generally recommended to declare `<b>Wants=</b>` directives directly within your unit files rather than relying on scripts that bypass `systemctl`'s standard mechanisms.


title: <I>WANTS=</I> VS. <I>REQUIRES=</I>
content:
The `<b>Wants=</b>` directive defines a weak dependency: the unit will attempt to start the wanted units, but will not fail if they cannot be started or if they fail. This contrasts with `<b>Requires=</b>`, which establishes a strong dependency where the unit will not start if the required unit cannot be started, and will stop if the required unit stops. `<b>Wants=</b>` is generally preferred for optional or non-critical dependencies.


title: STANDARD DEPENDENCY MANAGEMENT
content:
To establish a 'wants' dependency, the recommended method is to either:<br>1. Add a `<b>Wants=</b><i>your-unit.service</i>` line directly to the `<b>[Unit]</b>` section of the unit file that should want another unit (e.g., `<i>multi-user.target</i>`). After editing, run `<b>systemctl daemon-reload</b>` to apply changes.<br>2. Use `<b>systemctl enable</b> <i>your-unit.service</i>`, which typically creates a symlink in a default target's `<i>.wants/</i>` directory (e.g., `<i>/etc/systemd/system/multi-user.target.wants/</i>`) based on the unit's `<b>[Install]</b>` section. This is the official way to make a unit start automatically with a target.


title: HISTORY
content:
The concept of 'Wants' dependencies has been a core part of <b>systemd</b> since its inception, providing a mechanism for weak dependencies between units. This allows for flexible service orchestration where certain services are desired but not strictly required for a system or target to function.<br><br>While no dedicated `systemctl-add-wants` command exists in standard <b>systemd</b> distributions, the underlying operation of creating symlinks in `<i>.wants/</i>` directories is fundamental to how `<b>systemctl enable</b>` activates units for specific targets. Over time, various system administrators or distribution maintainers might have developed wrapper scripts or helper functions that behave conceptually like `systemctl-add-wants` to simplify the creation of these symlinks for specific use cases.


title: TLDR
content:
<b>Add a Wants dependency from a target to a unit</b>`systemctl add-wants [target] [unit]`<br><b>Add multiple Wants dependencies at once</b>`systemctl add-wants [target] [unit1 unit2 ...]`<br><b>Add a user-level Wants dependency</b>`systemctl add-wants [target] [unit] --user`


title: TLDR
content:
<b>Run the collector (legacy LVM1 systems only)</b>`lvmsadc`<br><b>Report I/O statistics using the device-mapper replacement</b>`dmstats report [/dev/mapper/device]`


title: TLDR
content:
<b>List the most recent agent tasks</b>`gh [[agent|agent-task]] list`<br><b>Create a new agent task for the current repository</b>`gh [[agent|agent-task]] create "[Improve the performance of the data processing pipeline]"`<br><b>Create a new agent task from a file</b>`gh [[agent|agent-task]] create [[-F|--from-file]] [path/to/file]`<br><b>View details about a specific agent task</b>`gh [[agent|agent-task]] view [session_id|pr_number|url|branch]`<br><b>Show the log of a specific agent task</b>`gh [[agent|agent-task]] view --log [session_id|pr_number|url|branch]`


title: PARAMETERS
content:
<b>config</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Registers and configures the self-hosted runner with GitHub. <br>Common options include <b>--url</b> (GitHub URL), <b>--token</b> (registration token), <b>--name</b> (runner name), and <b>--labels</b> (custom labels).<br><br><b>run</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts the runner to actively listen for and execute GitHub Actions jobs. <br>The <b>--once</b> option can be used to execute a single job and then exit.<br><br><b>remove</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Unregisters and removes the self-hosted runner from GitHub. <br>Requires <b>--url</b> and a Personal Access Token (PAT) or runner token (<b>--token</b>) for authentication.<br><br><b>service</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Manages the runner as a background system service (e.g., systemd on Linux). <br>Subcommands like <b>install</b>, <b>uninstall</b>, <b>start</b>, <b>stop</b>, and <b>status</b> are used to control the service lifecycle.<br><br>


title: DESCRIPTION
content:
The <b>gh-agent</b> command (representing the GitHub Actions self-hosted runner application) is the core executable responsible for enabling and managing a self-hosted runner on a user's infrastructure. It allows users to register, configure, run, and remove a runner machine, connecting it to a GitHub repository or organization. This agent polls GitHub for new jobs, executes them in its local environment, and reports the status back to GitHub. <br><br>By using <b>gh-agent</b>, organizations can utilize their own hardware and custom environments for executing CI/CD workflows, providing more control over compute resources, security, and specific software requirements than GitHub-hosted runners. It's typically deployed on Linux, Windows, or macOS machines and requires proper authentication and configuration to interact with GitHub.


title: CAVEATS
content:
<i>Security Risks</i>: Self-hosted runners execute potentially untrusted code on your infrastructure, requiring careful security measures.<br><i>Maintenance Overhead</i>: Users are responsible for updating the runner application, OS, and dependencies.<br><i>Resource Management</i>: Adequate compute, memory, and storage must be provisioned for job execution.<br><i>Network Access</i>: Requires outbound access to GitHub.com and potentially other services.


title: INSTALLATION PROCESS
content:
The <b>gh-agent</b> (runner application) is typically downloaded as a compressed archive from GitHub, extracted into a directory, and then configured. This usually involves using commands like <b>curl</b> to download the archive and <b>tar</b> to decompress it, followed by executing the <b>config</b> subcommand.


title: SECURITY BEST PRACTICES
content:
Given that self-hosted runners execute code directly on your infrastructure, it is paramount to follow security best practices. This includes isolating the runner machine, using dedicated service accounts with minimal permissions, regularly auditing access, and ensuring that only trusted workflows are allowed to run on these agents. Avoid exposing sensitive environment variables unnecessarily.


title: AUTOMATIC UPDATES FEATURE
content:
By default, the <b>gh-agent</b> is configured to automatically update itself to the latest version. This ensures that runners benefit from the newest features, bug fixes, and security patches without manual intervention. However, this behavior can be optionally disabled during configuration (with <b>--disableupdate</b>) or when running the agent (with <b>--no-autoupdate</b>) for environments requiring strict version control.


title: HISTORY
content:
The concept of self-hosted runners emerged as GitHub Actions gained popularity, allowing organizations to extend their CI/CD capabilities beyond GitHub-provided virtual machines. While GitHub Actions was introduced in 2018 with hosted runners, the need for custom environments, stringent security compliance, and cost optimization drove the development and introduction of self-hosted runners. The <b>gh-agent</b> application has since evolved, integrating features like automatic updates and robust service management to cater to enterprise-level CI/CD requirements.


title: SYNOPSIS
content:
<b>conda rename</b> <i>&lt;old_name&gt;</i> <i>&lt;new_name&gt;</i><br><b>conda rename</b> <i>[-h | --help]</i>


title: PARAMETERS
content:
<b><i>&lt;old_name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The current name of the conda environment you wish to rename.<br><br><b><i>&lt;new_name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The desired new name for the conda environment.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message for the <b>conda-rename</b> command and exits.<br><br>


title: DESCRIPTION
content:
The <b>conda-rename</b> command is a utility designed to extend the functionality of the <b>conda</b> package manager, specifically for environment management. It allows users to rename existing conda environments, a feature that was not natively available in older <b>conda</b> versions. This capability is highly beneficial for organizational purposes, correcting naming errors, or adapting environment names to evolving project standards without the laborious process of recreating the environment from scratch. By providing a direct renaming mechanism, <b>conda-rename</b> significantly streamlines environment maintenance, saving time and effort, especially for environments containing numerous installed packages. While it originated as a community plugin, its utility led to the eventual inclusion of a native 'conda env rename' command in newer <b>conda</b> versions.


title: CAVEATS
content:
<b>conda-rename</b> requires installation of a separate package (e.g., <b>conda-env-mod</b>) if not using <b>conda</b> versions where <b>conda env rename</b> is built-in.<br>It is generally recommended to deactivate the environment before renaming it to prevent potential issues.<br>Any scripts or configurations that hardcode the environment's path or name will need manual updates after renaming.<br>Compatibility and behavior may vary slightly depending on the specific plugin version or <b>conda</b> version being used.


title: BUILT-IN ALTERNATIVE
content:
For <b>conda</b> versions 4.10.0 and above, the functionality to rename environments is natively available via the command: <b>conda env rename</b> <i>&lt;old_name&gt;</i> <i>&lt;new_name&gt;</i>. This built-in command is generally preferred over external plugins due to its better integration, maintenance, and reliability.


title: INSTALLATION (FOR OLDER CONDA OR SPECIFIC PLUGIN USE)
content:
If you are using an older <b>conda</b> version or specifically require the functionality provided by the plugin, <b>conda-rename</b> can typically be installed by installing the <b>conda-env-mod</b> package: <b>conda install conda-env-mod</b>.


title: HISTORY
content:
Historically, renaming a <b>conda</b> environment was not a direct feature, forcing users to resort to a manual process involving exporting, removing, and then recreating an environment under a new name. The <b>conda-rename</b> command emerged as a popular community-contributed plugin, often bundled with packages like <b>conda-env-mod</b>, to address this significant limitation. Its widespread adoption highlighted the demand for such a feature, eventually leading to the inclusion of a native <b>conda env rename</b> command in <b>conda</b> versions 4.10.0 and later, effectively making the external <b>conda-rename</b> plugin less necessary for modern <b>conda</b> installations.


title: TLDR
content:
<b>Rename an environment via its name</b>`conda rename [[-n|--name]] [current_name] [new_name]`<br><b>Rename an environment via its full path (i.e. prefix)</b>`conda rename [[-p|--prefix]] [path/to/env] [new_name]`


title: PARAMETERS
content:
<b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays help for the given command, showing its specific options and usage.<br><br><b>-q, --quiet</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not output any message, suppressing all non-error output from the command.<br><br><b>-v, --verbose (-vv, -vvv)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Increases the verbosity of messages. <I>-v</I> for normal output, <I>-vv</I> for more verbose output, and <I>-vvv</I> for debug information.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the <I>Poetry</I> application version that is currently in use.<br><br><b>--ansi</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces ANSI output, enabling colored text and formatting even if it's not detected automatically.<br><br><b>--no-ansi</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables ANSI output, removing colored text and special formatting.<br><br><b>--no-interaction</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not ask any interactive question, useful for scripting or automated environments.<br><br><b>-e, --env &lt;ENV&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the environment name to work with (e.g., <I>python3.9</I> or a custom virtual environment name).<br><br>


title: DESCRIPTION
content:
<B>poetry list</B> is a foundational subcommand within the <I>Poetry</I> dependency management tool for Python. Its primary function is to display a comprehensive catalog of all available Poetry commands, each accompanied by a brief, descriptive summary. This command serves as an essential reference for users, enabling them to quickly discover, explore, and recall the various functionalities offered by the Poetry CLI.<br><br>From managing project dependencies and virtual environments to publishing packages, <B>poetry list</B> provides a bird's-eye view of the tool's capabilities, making it easier for both new and experienced users to navigate and utilize Poetry effectively. It's often the first command consulted when seeking to understand what actions Poetry can perform or to get an overview of the CLI's scope.


title: CAVEATS
content:
Since <B>poetry list</B> is part of the <I>Poetry</I> ecosystem, it requires <I>Poetry</I> to be installed and accessible in the system's PATH. It only lists commands available in the current <I>Poetry</I> version and configuration; it does not list standard system commands or commands from other tools. While it displays global Poetry commands, its behavior and output are generally consistent regardless of the current working directory.


title: GLOBAL OPTIONS
content:
Many of the options like <I>--help</I>, <I>--quiet</I>, <I>--verbose</I>, <I>--no-interaction</I>, and <I>--env</I> are global options that apply to most <I>Poetry</I> commands, not exclusively to <B>poetry list</B>. They control aspects like output verbosity, interactive prompts, and environment selection across various <I>Poetry</I> operations.


title: USAGE CONTEXT
content:
While <B>poetry list</B> can be run from any directory, its output is consistent regardless of whether it's executed within a <I>Poetry</I> project or not, as it lists the global <I>Poetry</I> commands available to the user. This means the list of commands itself doesn't change based on project context, only the availability of certain context-dependent operations might.


title: HISTORY
content:
<I>Poetry</I> was created by Sébastien Eustace and first released in 2017, aiming to provide a more consistent and robust dependency management and packaging solution for Python projects. The <B>poetry list</B> command has been a fundamental component of the CLI from its early versions. It serves as a primary entry point for users to explore the tool's capabilities, reflecting common patterns in modern CLI tools where `list` or `help` commands provide an overview of available subcommands.


title: TLDR
content:
<b>List all available Poetry commands</b>`poetry list`<br><b>List commands for a specific namespace</b>`poetry list [namespace]`


title: PARAMETERS
content:
<b><i>&lt;subcommand&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the AI operation to perform, such as <b>suggest</b>, <b>explain</b>, <b>refactor</b>, or <b>chat</b>.<br><br><b>--prompt <i>&lt;text&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides a direct natural language prompt or question to the AI.<br><br><b>--file <i>&lt;path&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a file to provide context for the AI, or to apply changes to. Used with subcommands like <b>explain</b> or <b>refactor</b>.<br><br><b>--language <i>&lt;lang&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Hints the desired programming language for the AI's output, e.g., 'python', 'javascript', 'bash'.<br><br><b>--output <i>&lt;format&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the output format for the AI's response, such as 'text', 'markdown', or 'json'.<br><br><b>--line <i>&lt;start&gt;</i>[:<i>&lt;end&gt;</i>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;When used with <b>--file</b>, specifies a particular line or range of lines within the file for AI analysis or modification.<br><br><b>--diff</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with <b>refactor</b>, shows a diff of proposed changes before applying them.<br><br><b>--apply</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with <b>refactor</b>, automatically applies the AI's proposed changes to the specified file.<br><br><b>--model <i>&lt;name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Selects a specific underlying AI model if multiple are available.<br><br><b>--verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output for debugging or detailed information.<br><br>


title: DESCRIPTION
content:
The <b>gh-copilot</b> command provides a command-line interface to AI-powered coding assistance, conceptually integrating features similar to GitHub Copilot directly into your Linux terminal. It allows developers to generate code snippets, explain complex code, refactor existing functions, or get quick answers to programming questions without leaving their development environment. By leveraging advanced AI models, <b>gh-copilot</b> aims to boost developer productivity by offering intelligent suggestions, boilerplate code generation, and contextual help based on the provided input or file content. It's designed to be a pragmatic tool for various programming tasks, from scripting and prototyping to debugging and learning. The command typically interacts with an underlying AI service (like GitHub Copilot's API) to process requests and return relevant, AI-generated content, making it a powerful companion for daily coding activities. Its utility extends across multiple programming languages and development workflows, bringing the power of an AI pair programmer directly to the command line, enhancing efficiency and reducing context switching.


title: CAVEATS
content:
This command typically requires an active subscription to a service like GitHub Copilot and an internet connection to function. AI-generated content, while often helpful, can sometimes be incorrect, incomplete, or contain 'hallucinations.' Users should always review and test AI-generated code carefully before deployment. Depending on the underlying AI service, there might be API rate limits or usage costs.


title: SUBCOMMANDS
content:
<ul><li><b>suggest</b>: Generates code snippets or solutions based on a prompt or context.</li><li><b>explain</b>: Provides explanations for code, commands, or concepts.</li><li><b>refactor</b>: Suggests and optionally applies improvements or changes to existing code.</li><li><b>chat</b>: Initiates an interactive conversational session with the AI.</li></ul>


title: CONFIGURATION
content:
Authentication details (e.g., API keys or tokens) and default settings (like preferred language or model) are usually managed through environment variables or a configuration file, typically located in <i>~/.config/gh-copilot/</i> or similar, to secure credentials and customize behavior.


title: HISTORY
content:
The concept of integrating AI into development workflows gained significant traction with the rise of large language models. GitHub Copilot, initially released in 2021, popularized AI pair programming by providing real-time code suggestions within popular IDEs. The emergence of tools like <b>gh-copilot</b> reflects a natural progression to extend these powerful AI capabilities to the command-line interface, allowing developers to leverage AI assistance within their shell scripts, automation tools, and overall terminal-centric workflows, mirroring the trend of bringing powerful GUI features into the CLI for increased efficiency.


title: TLDR
content:
<b>Suggest a command, given a description</b>`gh copilot suggest "[Install git]"`<br><b>Suggest a Git command</b>`gh copilot suggest [[-t|--target]] git "[Undo the most recent local commits]"`<br><b>Explain a command</b>`gh copilot explain "[traceroute example.com]"`<br><b>Generate shell-specific aliases for Bash</b>`echo 'eval "$(gh copilot alias -- bash)"' >> ~/.bashrc`<br><b>Generate shell-specific aliases for Zsh</b>`echo 'eval "$(gh copilot alias -- zsh)"' >> ~/.zshrc`<br><b>Configure options</b>`gh copilot config`


title: PARAMETERS
content:
<b>-f, --force</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes all installed versions of the specified <I>formula</I>, even if it is a dependency of another currently installed formula. Without this option, Homebrew will prevent the uninstallation of a formula that is still required by other installed packages.<br><br><b>&lt;formula&gt; [...]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more names of formulas (packages) to be uninstalled. Multiple formulas can be specified, separated by spaces.<br><br>


title: DESCRIPTION
content:
While "brew-rm" is not a native Linux command, it refers to the <b><I>brew rm</I></b> command, which is an alias for <b><I>brew uninstall</I></b> within the Homebrew package manager. Homebrew is widely used on macOS and is also available on Linux (often referred to as Linuxbrew). The <b><I>brew rm</I></b> command's primary function is to remove or uninstall one or more specified formulas (packages) from your Homebrew installation. It handles the removal of the package's installed files from the Homebrew cellar, making the software unavailable. Unlike some other package managers, <b><I>brew rm</I></b> by default does not automatically remove packages that were installed as dependencies of the uninstalled formula. This design choice provides users with more control over their installed libraries but requires explicit action (e.g., using <b><I>brew autoremove</I></b> or <b><I>brew cleanup</I></b>) to free up space from no-longer-needed dependencies.


title: CAVEATS
content:
<b><I>brew rm</I></b> is not a standard, pre-installed Linux command; it is part of the Homebrew package manager. If Homebrew is not installed on your system, this command will not be available. <br>By default, <b><I>brew rm</I></b> does not remove packages that were installed as dependencies of the uninstalled formula. These orphaned dependencies remain installed and must be removed separately using commands like <b><I>brew autoremove</I></b> or <b><I>brew cleanup</I></b>. <br>The command generally removes only files managed by Homebrew in its cellar; it typically does not remove user configuration files or data directories created by the software.


title: DEPENDENCY MANAGEMENT
content:
When you uninstall a formula with <b><I>brew rm</I></b>, its dependencies are not automatically removed. To remove unused dependencies and old versions of formulas, you can use: <br><ul><li><b><I>brew autoremove</I></b>: Removes formulas that were installed as dependencies but are no longer required by any installed formula.</li><li><b><I>brew cleanup</I></b>: Removes stale lock files and old versions of installed formulas, as well as their outdated downloads from the Homebrew cache.</li></ul>


title: FORMULA VS. CASK
content:
Homebrew manages two types of packages: <br><ul><li><b>Formulas</b>: These are command-line tools and libraries (e.g., `git`, `python`). <b><I>brew rm</I></b> is used for formulas.</li><li><b>Casks</b>: These are graphical macOS applications (e.g., `google-chrome`, `vlc`). Casks are uninstalled using <b><I>brew uninstall --cask &lt;cask_name&gt;</I></b> (or `brew rm --cask`). The `--zap` option can be used with casks to remove all associated files, including support files and preferences.</li></ul>


title: HISTORY
content:
The <b><I>brew rm</I></b> command, as an alias for <b><I>brew uninstall</I></b>, is an integral part of Homebrew, which was initially released in 2009 by Max Howell for macOS. Its clean design and simplicity quickly made it the de facto package manager for Mac. The concept of using a 'Cellar' for package installations and symlinking them into standard paths (like /usr/local/bin) was a key innovation. As Homebrew gained popularity, efforts to port it to Linux emerged, eventually leading to Linuxbrew (now integrated back into Homebrew). The <b><I>rm</I></b>/<b><I>uninstall</I></b> command has been a core component since the early days, providing a straightforward way for users to manage their installed software by removing packages when no longer needed.


title: SEE ALSO
content:
brew install(1), brew list(1), brew cleanup(1), brew autoremove(1), apt remove(8), dnf remove(8), yum remove(8), pacman -R(8)


title: SYNOPSIS
content:
<b>gh search</b> <i>&lt;SUBCOMMAND&gt; &lt;query&gt;</i> [<i>flags</i>]<br><br>Examples:<br>  <b>gh search repos</b> <i>"cli tool" --language go --stars ">=100"</i><br>  <b>gh search issues</b> <i>"bug report" --repo cli/cli --state open --label "help wanted"</i><br>  <b>gh search codes</b> <i>"func main" --repo cli/cli --language go</i>


title: PARAMETERS
content:
<b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show help for the <b>gh search</b> command or its subcommands.<br><br><b><b>-f</b>, <b>--format</b> <i>&lt;string&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output format: <i>{json|text}</i>. Specifies how the search results should be presented.<br><br><b><b>-q</b>, <b>--jq</b> <i>&lt;expression&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filter JSON output using a <b>jq</b> expression for precise data extraction.<br><br><b><b>-t</b>, <b>--template</b> <i>&lt;string&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Format JSON output using a Go template for custom display.<br><br><b><b>--paginate</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Fetch all pages of results instead of just the first page.<br><br><b><b>--archived</b> (<i>repos subcommand</i>)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Include archived repositories in the search results.<br><br><b><b>--language</b> <i>&lt;string&gt;</i> (<i>repos, codes subcommands</i>)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filter results by programming language (e.g., `go`, `python`).<br><br><b><b>--stars</b> <i>&lt;string&gt;</i> (<i>repos subcommand</i>)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filter repositories by the number of stars (e.g., `">100"`, `"10..20"`).<br><br><b><b>--topic</b> <i>&lt;string&gt;</i> (<i>repos subcommand</i>)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filter repositories by a specific topic tag.<br><br><b><b>--state</b> <i>&lt;string&gt;</i> (<i>issues, prs subcommands</i>)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filter issues or pull requests by state: <i>{open|closed}</i>.<br><br><b><b>--label</b> <i>&lt;string&gt;</i> (<i>issues, prs subcommands</i>)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filter issues or pull requests by specific labels (e.g., `"bug"`, `"enhancement"`).<br><br><b><b>--author</b> <i>&lt;string&gt;</i> (<i>issues, prs, users subcommands</i>)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filter by the author's username.<br><br>


title: DESCRIPTION
content:
The <b>gh search</b> command is an integral part of the GitHub CLI, enabling users to perform comprehensive searches across various GitHub entities directly from the command line. It provides subcommands to specifically search for <i>repositories</i>, <i>issues</i>, <i>pull requests</i> (PRs), <i>code</i>, and <i>users</i>. Users can construct sophisticated queries using GitHub's powerful search syntax, apply numerous filters based on criteria like language, stars, labels, author, and more. The command supports different output formats, including plain text and JSON, and allows for advanced filtering and formatting of results using `jq` expressions or Go templates. This makes it an indispensable tool for developers needing to discover projects, track issues, find code snippets, or locate collaborators without leaving their terminal environment, streamlining workflows and enhancing productivity.


title: CAVEATS
content:
Using <b>gh search</b> requires the GitHub CLI (`gh`) to be installed and authenticated with your GitHub account. Searches are subject to GitHub API rate limits, which may affect the speed and volume of requests, especially when using `--paginate` for extensive results. Effective use often requires familiarity with GitHub's specific search syntax, which can be more powerful but also more complex than simple keyword searches.


title: GITHUB SEARCH SYNTAX
content:
The power of <b>gh search</b> is greatly enhanced by leveraging GitHub's advanced search syntax. Users can combine keywords with qualifiers (e.g., `language:go`, `stars:>50`, `is:open`, `user:octocat`) to refine queries. For a comprehensive guide, refer to the official GitHub documentation on <a href="https://docs.github.com/github/searching-for-information-on-github/constructing-a-search-query">Constructing a search query</a>.


title: AVAILABLE SUBCOMMANDS
content:
The <b>gh search</b> command is categorized into several subcommands, each tailored for a specific type of GitHub entity:<br><ul><li><b>codes</b>: Search for code within repositories.</li><li><b>issues</b>: Search for issues across repositories.</li><li><b>prs</b>: Search for pull requests.</li><li><b>repos</b>: Search for repositories.</li><li><b>users</b>: Search for users and organizations.</li></ul>Each subcommand offers unique flags and filtering options relevant to the entity being searched.


title: HISTORY
content:
The <b>gh search</b> command is a core component of the GitHub CLI (`gh`), which was officially released by GitHub in 2020. It rapidly became a fundamental feature, allowing developers to extend their command-line workflows directly to GitHub's extensive data, reducing the need to switch to a web browser for discovery and information retrieval tasks. Its development has focused on providing a flexible and powerful interface to GitHub's search capabilities, mirroring and often enhancing the web experience.


title: TLDR
content:
<b>Search for code containing specific keywords</b>`gh search code [keyword1 keyword2 ...]`<br><b>Search for issues with a specific phrase</b>`gh search issues "[search_phrase]"`<br><b>Search commits by a specific author</b>`gh search commits --author [username]`<br><b>Search pull requests assigned to yourself that are still open</b>`gh search prs --assignee @me --state open`<br><b>Search repositories in an organization by topic</b>`gh search repos --owner [org_name] --topic [topic_name]`<br><b>Search issues without a certain label (Unix-like systems)</b>`gh search issues -- "[search_query] -label:[label_name]"`<br><b>Search issues without a certain label (PowerShell)</b>`gh --% search issues -- "[search_query] -label:[label_name]"`<br><b>Open the search query in the web browser</b>`gh search [subcommand] [[-w|--web]] [query]`


title: PARAMETERS
content:
<b><b>[package]</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of a specific package to inspect, displaying its details and dependencies.<br><br><b><b>--tree</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the dependencies of the project or a specified package in a hierarchical tree format.<br><br><b><b>--latest</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the latest available version for each package in addition to the installed version.<br><br><b><b>--outdated</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists packages that have newer versions available, indicating both installed and latest versions.<br><br><b><b>--patch</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with <b>--outdated</b>, limits the output to only patch-level updates.<br><br><b><b>--minor</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with <b>--outdated</b>, limits the output to only minor-level updates.<br><br><b><b>--major</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with <b>--outdated</b>, limits the output to only major-level updates.<br><br><b><b>--direct</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays only the direct dependencies of the project, excluding transitive ones.<br><br><b><b>-D, --dev</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Includes development dependencies in the output.<br><br><b><b>-P, --prod</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Includes production dependencies in the output (default if no other dependency option is given).<br><br><b><b>-f <i>FORMAT</i>, --format <i>FORMAT</i></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output format. Valid options are <i>pretty</i> (default), <i>json</i>, or <i>raw</i>.<br><br><b><b>-l, --locked</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows packages as they are defined in the <i>poetry.lock</i> file, ensuring consistency.<br><br><b><b>-o, --only-dev</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows only development dependencies, excluding production ones.<br><br><b><b>-N, --only-prod</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows only production dependencies, excluding development ones.<br><br><b><b>-A, --all-packages</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays all packages, including transitive dependencies, without filtering.<br><br><b><b>-i, --only-installable</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filters the output to show only packages that are currently installable.<br><br><b><b>--why <package></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Explains why a specific package is required by showing its dependants.<br><br><b><b>--ansi</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the use of ANSI escape codes for colored output, even if not automatically detected.<br><br><b><b>--no-ansi</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables ANSI escape codes, resulting in plain text output.<br><br>


title: DESCRIPTION
content:
<i>poetry show</i> is a versatile command within the <b>Poetry</b> ecosystem, primarily used to inspect the installed packages and their dependencies for the current project. It offers various options to drill down into specific details, such as a list of all installed packages, details about a particular package, or a graphical representation of the dependency tree. This command is indispensable for developers who need to understand their project's dependency graph, troubleshoot package conflicts, or verify installed versions.<br><br>It helps in maintaining a clean and understandable project environment by providing clear insights into the package landscape. Whether you're debugging, reviewing, or simply exploring your project's components, <i>poetry show</i> serves as a powerful diagnostic and informational tool for Python projects managed with Poetry.


title: CAVEATS
content:
The command requires <b>Poetry</b> to be installed and the project to be initialized with <b>Poetry</b>. Output can be extensive for large projects, especially when using options like <b>--all-packages</b> or <b>--tree</b>. Version updates shown by <b>--latest</b> or <b>--outdated</b> are based on available package sources and might not necessarily be compatible with the current project's constraints in <i>pyproject.toml</i>.


title: OUTPUT FORMATS
content:
The <b>--format</b> option allows seamless integration with other tools or scripting by providing <i>json</i> output, which is highly useful for programmatic parsing and automation workflows.


title: DEPENDENCY TYPES
content:
The clear distinction between development and production dependencies, along with the ability to filter them using options like <b>--dev</b>, <b>--prod</b>, <b>--only-dev</b>, and <b>--only-prod</b>, helps in managing different environments effectively.


title: UPDATE CHECKS
content:
The various <b>--outdated</b> options (<b>--patch</b>, <b>--minor</b>, <b>--major</b>) provide fine-grained control over checking for available updates, helping maintainers decide on specific upgrade strategies tailored to their project's stability requirements.


title: HISTORY
content:
<b>Poetry</b> itself emerged as a modern Python dependency management and packaging tool, designed to simplify project creation, dependency resolution, and package publishing. The <i>show</i> command has been a core part of <b>Poetry</b> from its early versions, providing essential introspection capabilities into the project's dependency graph. Its functionality has evolved with <b>Poetry</b> itself, with new options like <b>--why</b> being added to address more specific use cases and improve debugging. It aims to offer a more robust and consistent experience compared to traditional tools like <i>pip</i> and <i>setuptools</i> by managing virtual environments and locking dependencies effectively.


title: TLDR
content:
<b>Display all packages</b>`poetry show`<br><b>Show details of a specific package</b>`poetry show [package_name]`<br><b>Show details as a dependency tree</b>`poetry show [[-t|--tree]]`<br><b>Only show top-level packages (those explicitly defined in pyproject.toml)</b>`poetry show [[-T|--top-level]]`<br><b>Show outdated packages</b>`poetry show [[-o|--outdated]]`<br><b>Show the latest versions for all packages</b>`poetry show [[-l|--latest]]`<br><b>Exclude a specific dependency group/s</b>`poetry show --without [group1,group2,...]`<br><b>Only show a specific dependency group/s</b>`poetry show --only [group1,group2,...]`


title: PARAMETERS
content:
<b><b>add</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a GPG public key to your GitHub account.<br><i>&lt;flags&gt;</i> include:<br>&nbsp;&nbsp;<b>--import-from-gpg</b>: Imports a public key from your local GPG agent, prompting you to choose from available keys.<br>&nbsp;&nbsp;<b>--public-key &lt;file&gt;</b>: Reads a GPG public key from the specified file.<br>&nbsp;&nbsp;<b>--title &lt;string&gt;</b>: Assigns a descriptive title to the GPG key on GitHub.<br><br><b><b>delete &lt;id&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Deletes a GPG public key from your GitHub account. The <i>&lt;id&gt;</i> is the unique identifier of the key, which can be found using the <b>list</b> command.<br><br><b><b>list</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all GPG public keys currently associated with your GitHub account.<br><i>&lt;flags&gt;</i> for output formatting:<br>&nbsp;&nbsp;<b>--json &lt;fields&gt;</b>: Outputs in JSON format, allowing you to specify desired fields.<br>&nbsp;&nbsp;<b>--jq &lt;query&gt;</b>: Filters and formats JSON output using a <i>jq</i> expression.<br>&nbsp;&nbsp;<b>--template &lt;template&gt;</b>: Formats output using a Go template string.<br><br><b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays help information for the <b>gh-gpg-key</b> extension or a specific subcommand.<br><br>


title: DESCRIPTION
content:
The <b>gh-gpg-key</b> command, typically invoked as <i>gh gpg-key</i>, is a powerful GitHub CLI extension designed to streamline the management of GPG keys associated with your GitHub account. It provides a convenient command-line interface for tasks such as listing, adding, and deleting GPG keys, eliminating the need to navigate the web interface. This tool is essential for developers who use GPG for signing commits and tags, ensuring the authenticity and integrity of their work on GitHub. By integrating directly with the GitHub CLI, it offers a consistent and efficient workflow for maintaining cryptographic identities, enhancing security practices directly from your terminal.


title: CAVEATS
content:
This command requires the GitHub CLI (<i>gh</i>) to be installed and authenticated to your GitHub account (via <i>gh auth login</i>). For adding keys using <b>--import-from-gpg</b>, you must have <i>gpg</i> configured locally with the desired public key available in your GPG keyring.


title: INSTALLATION
content:
To use <b>gh-gpg-key</b>, you first need to install it as a GitHub CLI extension. This can typically be done using the command:<br><i>gh extension install cli/gh-gpg-key</i><br>After installation, the command becomes available as <i>gh gpg-key</i>.


title: AUTHENTICATION
content:
Before using <b>gh gpg-key</b> to manage your GPG keys on GitHub, ensure you are logged into the GitHub CLI by running <i>gh auth login</i>. This command requires authenticated access to your GitHub account to perform key management operations.


title: HISTORY
content:
As a GitHub CLI extension, <b>gh-gpg-key</b> is part of the modern <i>gh</i> ecosystem, developed to extend the core CLI's functionality. Its development aligns with GitHub's efforts to provide comprehensive command-line tooling for managing various aspects of a developer's GitHub presence, including GPG key management for commit and tag signing verification. It leverages the extensibility features of the <i>gh</i> CLI to provide a focused utility.


title: TLDR
content:
<b>List GPG keys in the authorized GitHub account</b>`gh gpg-key [[ls|list]]`<br><b>Add a GPG key to the authorized GitHub account by specifying the key file</b>`gh gpg-key add [path/to/key_file]`<br><b>Add a GPG key to the authorized GitHub account by specifying the key ID</b>`gpg [[-a|--armor]] --export [key_id] | gh gpg-key add -`<br><b>Delete a GPG key from the authorized GitHub account</b>`gh gpg-key delete [key_id]`


title: PARAMETERS
content:
<b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints help information.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints version information.<br><br><b><b>--verbose</b>, <b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use verbose output.<br><br><b><b>--quiet</b>, <b>-q</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not print cargo deb log messages.<br><br><b><b>--profile</b> <i><PROFILE></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Build with the given profile (e.g., <code>debug</code>, <code>release</code>). Defaults to <code>release</code>.<br><br><b><b>--target</b> <i><TRIPLE></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Build for the target triple (e.g., <code>x86_64-unknown-linux-gnu</code>).<br><br><b><b>--no-strip</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not strip the debug symbols from the binary. This results in larger packages but can be useful for debugging.<br><br><b><b>--no-build</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not build the project, only create the Debian package from pre-built artifacts.<br><br><b><b>--deb-version</b> <i><VERSION></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Override the Debian version string specified in <code>Cargo.toml</code>. Useful for custom release cycles.<br><br><b><b>--output</b> <i><PATH></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Write the <code>.deb</code> file to the specified path instead of the default <code>target/debian/</code> directory.<br><br><b><b>--manifest-path</b> <i><PATH></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to <code>Cargo.toml</code>.<br><br><b><b>--features</b> <i><FEATURES></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Space-separated list of features to activate.<br><br><b><b>--all-features</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Activate all available features.<br><br><b><b>--no-default-features</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not activate the <code>default</code> feature.<br><br>


title: DESCRIPTION
content:
<i>cargo-deb</i> is a <b>cargo subcommand</b> that simplifies the process of creating Debian (<code>.deb</code>) packages directly from Rust projects. It automates the packaging of Rust binaries, libraries, and associated files into a standard Debian format, making it easier to distribute Rust applications on Debian-based Linux systems like Ubuntu.<br><br>When invoked, <i>cargo-deb</i> reads metadata from your project's <code>Cargo.toml</code> file, including project name, version, description, and optionally specific Debian-related configurations. It then compiles your Rust project, gathers the necessary artifacts (executables, shared libraries, man pages, etc.), and bundles them into a <code>.deb</code> archive compliant with Debian packaging standards. This tool significantly reduces the manual effort required to package Rust software for Linux distribution, bridging the gap between Rust's build system and the Debian ecosystem.


title: CAVEATS
content:
<i>cargo-deb</i> relies heavily on metadata configured within your project's <code>Cargo.toml</code> file. Incorrect or missing information (especially under <code>[package.metadata.deb]</code>) can lead to malformed packages or errors. It also depends on system tools like <code>dpkg</code> and its dependencies for creating the final <code>.deb</code> archive, so these must be available on the build system. While powerful for common use cases, it may not support highly complex Debian packaging scenarios that require custom maintainer scripts or intricate file placement logic as robustly as manual <code>debhelper</code> configurations.


title: <CODE>CARGO.TOML</CODE> CONFIGURATION
content:
<i>cargo-deb</i> extensively uses the <code>[package.metadata.deb]</code> section in your <code>Cargo.toml</code> to configure package metadata. This allows you to specify critical Debian-specific fields like:<br><ul><li><b>Section</b>: The Debian package section (e.g., <code>utils</code>, <code>devel</code>).</li><li><b>Priority</b>: The package's priority (e.g., <code>optional</code>, <code>required</code>).</li><li><b>Depends</b>: A list of runtime dependencies on other Debian packages.</li><li><b>ExtendedDescription</b>: A more detailed, multi-line description of the package.</li><li><b>Maintainer</b>: The package maintainer's name and email.</li><li><b>Homepage</b>: The project's homepage URL.</li><li><b>assets</b>: Defines files to be included in the package, allowing precise control over file paths and permissions.</li></ul>


title: HISTORY
content:
Before <i>cargo-deb</i>, creating Debian packages for Rust projects often involved manual creation of the <code>debian/</code> directory and its intricate control files, or using generic build system integrations. This was a cumbersome process for Rust developers aiming to distribute their applications on Debian-based systems. <i>cargo-deb</i> emerged to streamline this workflow, providing a native <code>cargo</code> subcommand that leverages existing project metadata from <code>Cargo.toml</code> to automatically generate valid <code>.deb</code> packages. Its development has focused on integrating seamlessly with the Rust build ecosystem, significantly lowering the barrier to entry for distributing Rust-based software on a wide array of Linux distributions.


title: TLDR
content:
<b>Create a Debian package from a project</b>`cargo deb`<br><b>Write the .deb file to the specified file or directory</b>`cargo deb [[-o|--output]] [path/to/file_or_directory]`<br><b>Compile for the specified Rust target triple</b>`cargo deb --target [x86_64-unknown-linux-gnu]`<br><b>Select which package to use in a Cargo workspace</b>`cargo deb [[-p|--package]] [package_name]`<br><b>Immediately install the created package</b>`cargo deb --install`


title: TLDR
content:
<b>Show all information</b>`conda info [[-a|--all]]`<br><b>Display base environment path</b>`conda info --base`<br><b>List all conda environments</b>`conda info [[-e|--envs]]`<br><b>List environment variables</b>`conda info [[-s|--system]]`<br><b>Display list of channels with tokens exposed</b>`conda info --unsafe-channels`


title: PARAMETERS
content:
<b><b>--name</b> &lt;environment&gt;, <b>-n</b> &lt;environment&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Name of the <i>conda</i> environment to run the command in.<br><br><b><b>--prefix</b> &lt;path&gt;, <b>-p</b> &lt;path&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Full path to the <i>conda</i> environment to run the command in.<br><br><b><b>--cwd</b> &lt;path&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Working directory to run the command in. Defaults to the current directory.<br><br><b><b>--env</b> &lt;VAR=VALUE&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set environment variables for the executed command. Can be specified multiple times for different variables.<br><br><b><b>--no-default-packages</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not include default packages (e.g., <i>Python</i>, <i>pip</i>, <i>setuptools</i>, <i>wheel</i>) in the environment setup. This is rarely needed for typical use.<br><br><b><b>--debug</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show debug messages for detailed execution information.<br><br><b><b>--json</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Report all output as a <i>JSON</i> object. Useful for programmatic parsing and automation.<br><br><b><b>--help</b>, <b>-h</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show a help message for <b>conda-run</b> and exit.<br><br><b><b>--verbose</b>, <b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use verbose output, showing more details during execution.<br><br><b><b>--quiet</b>, <b>-q</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not display progress bar or other informational messages.<br><br>


title: DESCRIPTION
content:
<b>conda-run</b> allows executing a command within a designated <i>conda</i> environment without the need to explicitly activate it first. This command is particularly useful for scripting, automation, and non-interactive workflows where changing the current shell's state is undesirable.<br><br>It sets up the specified environment's paths and variables for the duration of the command's execution, ensuring that the command runs with the correct dependencies and versions. Unlike <b>conda activate</b>, which modifies the current shell session, <b>conda-run</b> creates a temporary execution context, providing a clean and isolated way to interact with different <i>conda</i> environments. This greatly simplifies tasks like running a <i>Python</i> script with a specific <i>Python</i> version or executing tools installed in a particular environment without affecting the calling shell.


title: CAVEATS
content:
<b>conda-run</b> does not perform a full environment activation in the same way <b>conda activate</b> does. It primarily modifies the `PATH` and sets essential environment variables for the command's execution. Therefore, some shell-specific configurations or scripts that rely on a full activation (e.g., sourcing custom `activate.d` scripts) might not behave as expected. It also requires <i>conda</i> to be initialized in the shell where it's executed, otherwise, the `conda` command itself won't be found.


title: EXECUTION CONTEXT
content:
When invoked, <b>conda-run</b> constructs a new, temporary execution environment. Within this context, the specified <i>conda</i> environment's binaries are prioritized in the `PATH`, and relevant environment variables (like `CONDA_PREFIX`, `CONDA_DEFAULT_ENV`) are set. This temporary isolation ensures the command finds the correct versions of executables and libraries without permanently changing the shell from which <b>conda-run</b> was called, promoting reproducibility and avoiding conflicts.


title: RETURN CODE
content:
The exit code of <b>conda-run</b> will be the exit code of the <i>COMMAND</i> it executes. This behavior allows for standard error checking and conditional logic in scripts, making it robust for automation workflows.


title: HISTORY
content:
The <i>Conda</i> project, initiated by <i>Anaconda, Inc.</i>, has continuously evolved to provide robust cross-platform package and environment management. <b>conda-run</b> was introduced as a utility to enhance scripting capabilities and facilitate non-interactive execution of commands within specific <i>Conda</i> environments. It addressed a common need for cleaner automation workflows, especially in continuous integration/continuous deployment (CI/CD) pipelines and complex scripting tasks, by offering a way to utilize <i>Conda</i> environments without altering the user's interactive shell state.


title: TLDR
content:
<b>Run a command in the currently active environment</b>`conda run [command]`<br><b>Target an environment by name</b>`conda run [[-n|--name]] [environment_name] [command]`<br><b>Target an environment by its path (i.e. prefix)</b>`conda run [[-p|--path]] [path/to/env] [command]`


title: SYNOPSIS
content:
<B>conda remove</B> [<B>-h</B>] [<B>--all</B>] [<B>--deps</B>|<B>--no-deps</B>] [<B>--force</B>] [<B>--dry-run</B>] [<B>-n</B> <I>ENV</I> | <B>-p</B> <I>PATH</I>] [<B>--yes</B>] [<I>package_spec</I> ...]


title: PARAMETERS
content:
<b><I>package_spec</I> [...]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more package specifications (e.g., <B>numpy</B>, <B>python=3.8</B>) to remove from the environment.<br><br><b><B>-n</B> <I>ENV</I>, <B>--name</B> <I>ENV</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Remove packages from a specified environment by its name. If not specified, the active environment is used.<br><br><b><B>-p</B> <I>PATH</I>, <B>--prefix</B> <I>PATH</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Remove packages from a specified environment by its full path. Useful when the environment is not in the default Conda environment locations.<br><br><b><B>--all</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Remove all packages from the specified environment, effectively emptying it. This is a powerful option and should be used with care.<br><br><b><B>--deps</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Remove packages that are no longer needed as dependencies by other installed packages. This is often the default behavior.<br><br><b><B>--no-deps</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not remove packages that are no longer needed as dependencies. Only remove the explicitly specified packages.<br><br><b><B>--force</B>, <B>--force-remove</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force removal of packages even if they are vital for Conda or other packages. Use with extreme caution as this can break your environment.<br><br><b><B>--dry-run</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Perform a dry run; show what would be removed without actually modifying the environment. Useful for testing commands.<br><br><b><B>-y</B>, <B>--yes</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not ask for confirmation before performing the removal operation. Proceeds automatically.<br><br><b><B>-q</B>, <B>--quiet</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not display progress indicators or other verbose output during the operation.<br><br><b><B>-v</B>, <B>--verbose</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use verbose output, showing more details about the operation.<br><br><b><B>--json</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Report all output as JSON, suitable for programmatic parsing.<br><br>


title: DESCRIPTION
content:
<I>conda remove</I> is a fundamental command in the Conda package manager, used to uninstall specified packages from a Conda environment. This command intelligently handles dependencies, by default removing any dependencies that are no longer required by other installed packages, helping to keep environments clean and optimized.<br><br>Users can target specific environments using the <B>--name</B> or <B>--prefix</B> options, ensuring precise package management. It's an essential tool for maintaining healthy environments, freeing up space, or resolving conflicts by removing problematic software. While powerful, it should be used with caution, especially when removing packages from the base environment or using options like <B>--all</B> which can completely empty an environment. The command <B>conda uninstall</B> is an alias for <B>conda remove</B>, providing the same functionality.


title: CAVEATS
content:
When using <B>conda remove</B>, exercise caution:<br><br>- Removing packages from the <B>base</B> environment is generally discouraged and can lead to issues with your Conda installation itself.<br>- The <B>--all</B> option will completely empty the specified environment, which might not be the intended action.<br>- Using <B>--force</B> can break your environment by removing critical dependencies or Conda's own components.<br>- Always consider using <B>--dry-run</B> first to understand the potential impact of your command before executing it.


title: ALIASES
content:
<B>conda uninstall</B> is an alias for <B>conda remove</B>. Both commands perform the exact same function.


title: REMOVING ENTIRE ENVIRONMENTS
content:
To remove an entire Conda environment, including all its packages, use the <B>conda env remove</B> command instead of <B>conda remove --all</B>. For example: <I>conda env remove -n myenv</I>.


title: HISTORY
content:
Conda, developed by Continuum Analytics (now Anaconda, Inc.), was open-sourced in 2012 as a cross-platform, language-agnostic package and environment manager. The <B>conda remove</B> command has been a core component since its early inception, providing essential functionality for managing and cleaning environments. Its design reflects Conda's philosophy of robust dependency management, ensuring that environment modifications are handled consistently and safely, evolving alongside other Conda commands to support new features and package types.


title: TLDR
content:
<b>Remove scipy from the currently active environment</b>`conda remove scipy`<br><b>Remove a list of packages from the specified environment</b>`conda remove [[-n|--name]] [environment_name] [package1 package2 ...]`<br><b>Remove all packages and the environment itself</b>`conda remove [[-n|--name]] [environment_name] --all`<br><b>Remove all packages, but keep the environment</b>`conda remove [[-n|--name]] [environment_name] --all --keep-env`


title: TLDR
content:
<b>Display Poetry's available caches</b>`poetry cache list`<br><b>Remove all packages from a cache (e.g.: PyPI)</b>`poetry cache clear PyPI --all`<br><b>Remove a specific package from a cache (Note: must be in format cache:package:version)</b>`poetry cache clear [pypi]:[requests]:[2.24.0]`


title: TLDR
content:
<b>Show available versions of the specified package</b>`conda repoquery search [package]`<br><b>Show dependencies of the specified package</b>`conda repoquery depends [package]`<br><b>Show packages that depend on the specified package</b>`conda repoquery whoneeds [package]`


title: SYNOPSIS
content:
<b>npm exec</b> [<i>options</i>] [<i>--</i>] [<i>&lt;command-arg-list&gt;</i>]<br><b>npm exec</b> [<i>options</i>] <i>&lt;pkg&gt;</i>[<i>@&lt;version&gt;</i>] [<i>&lt;command&gt;</i>] [<i>--</i>] [<i>&lt;command-arg-list&gt;</i>]<br><b>npx</b> [<i>options</i>] [<i>--</i>] [<i>&lt;command-arg-list&gt;</i>] <i>(alias)</i><br><b>npx</b> [<i>options</i>] <i>&lt;pkg&gt;</i>[<i>@&lt;version&gt;</i>] [<i>&lt;command&gt;</i>] [<i>--</i>] [<i>&lt;command-arg-list&gt;</i>] <i>(alias)</i>


title: PARAMETERS
content:
<b><b>--</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i><br>This is a crucial separator. Arguments following <b>--</b> are passed directly to the executed command, preventing npm from interpreting them as its own options.</i><br><br><b><b>-c</b>, <b>--call &lt;script-string&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i><br>Executes a string as a shell command. The string is interpreted as a Node.js script. This is similar to <b>npm run</b>, but executes commands from dependencies without needing a <b>package.json</b> script.</i><br><br><b><b>-p</b>, <b>--package &lt;pkg&gt;[@&lt;version&gt;]</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i><br>Specifies a package (or multiple packages by repeating this option) that <b>npm-exec</b> should install before executing the command. If not specified, <b>npm-exec</b> infers the package name from the command itself.</i><br><br><b><b>--ignore-existing</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i><br>Forces <b>npm-exec</b> to re-download and re-install the package even if it already exists in <b>node_modules/.bin</b> or the cache.</i><br><br><b><b>--no-install</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i><br>Prevents <b>npm-exec</b> from installing packages if they are not found locally. If the command cannot be resolved from <b>node_modules/.bin</b> or <b>PATH</b>, it will fail.</i><br><br><b><b>-y</b>, <b>--yes</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i><br>Automatically answers 'yes' to any prompts, such as confirming the installation of a package. Useful for non-interactive environments.</i><br><br><b><b>--shell &lt;shell&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i><br>Specifies the shell to use for executing the command. By default, it uses the system's default shell (e.g., <b>/bin/sh</b> or <b>cmd.exe</b>).</i><br><br><b><b>--location &lt;path&gt;</b>, <b>--prefix &lt;path&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i><br>Specifies where to install packages temporarily if needed. This can be useful for managing cache or installation locations.</i><br><br>


title: DESCRIPTION
content:
<i>npm-exec</i>, often invoked via its alias <i>npx</i>, is a powerful utility for executing Node.js package binaries. Its primary purpose is to allow users to run commands provided by npm packages without needing to explicitly install those packages globally or locally first. When you execute a command using <i>npm-exec</i>, it first checks if the command exists in your local <i>node_modules/.bin</i> directory, and then in your system's <i>PATH</i>. If not found, it temporarily downloads and installs the necessary package(s) to a cache, runs the command, and then often removes the temporary installation. This makes it incredibly useful for one-off tasks, scaffolding new projects (e.g., <i>create-react-app</i>), trying out new tools without cluttering your global installations, or ensuring you're always running the latest version of a command without manual updates. Since <i>npm@7</i>, <i>npm-exec</i> is a core part of <i>npm</i>, with <i>npx</i> serving as a convenient alias.


title: CAVEATS
content:
<i><b>Security Risk:</b> Executing packages directly from npm can introduce security vulnerabilities if you're running untrusted code. Always be mindful of the source of the packages you execute.<br><b>Network Dependency:</b> If the package is not found locally, <b>npm-exec</b> requires an active internet connection to download and install it.<br><b>Version Resolution:</b> Without specifying a version (e.g., <b>create-react-app@latest</b>), <b>npm-exec</b> will use the latest available version, which might introduce breaking changes for repeated commands.<br><b>Temporary Installations:</b> While convenient, be aware that packages are often installed temporarily and then removed, meaning subsequent executions might incur a download overhead.</i>


title: UNDERSTANDING THE <B>--</B> SEPARATOR
content:
<i>The double-dash (<b>--</b>) separator is fundamental when using <b>npm-exec</b> (or <b>npx</b>) and passing arguments to the actual command being executed. Without it, <b>npm</b> might try to interpret those arguments as its own options, leading to unexpected behavior or errors. For example, to run <b>some-command</b> with the <b>--help</b> argument, you would use: <b>npm exec some-command -- --help</b>.</i>


title: <B>NPX</B> ALIAS
content:
<i>While <b>npm-exec</b> is the official command since <b>npm@7</b>, the <b>npx</b> command remains widely used. It functions as a direct alias for <b>npm exec</b>. So, <b>npx create-react-app my-app</b> is functionally identical to <b>npm exec create-react-app my-app</b>. This ensures that existing scripts and muscle memory continue to work seamlessly.</i>


title: EXECUTION FLOW
content:
<i>When you run a command via <b>npm-exec</b>, it follows a specific resolution order: <br>1. Checks if the command exists in the local <b>node_modules/.bin</b> directory of the current project.<br>2. Checks if the command exists in your system's <b>PATH</b>.<br>3. If not found, it determines the corresponding npm package, downloads it to a temporary cache, and then executes the binary from that temporary installation. <br>This intelligent lookup ensures efficiency and flexibility.</i>


title: HISTORY
content:
<i>The concept of executing npm package binaries without prior installation was popularized by the standalone <b>npx</b> tool, first released in 2017. <b>npx</b> quickly became an essential part of the Node.js ecosystem, addressing a common pain point of managing global or local development dependencies. With the release of <b>npm@7</b> in late 2020, the functionality of <b>npx</b> was integrated directly into the core <b>npm</b> CLI as <b>npm-exec</b>. Since then, <b>npx</b> continues to exist as a convenient alias that simply calls <b>npm exec</b>, ensuring backward compatibility while consolidating the toolchain.</i>


title: TLDR
content:
<b>Execute the command from a local or remote npm package</b>`npm [[x|exec]] [command] [argument1 argument2 ...]`<br><b>Specify the package explicitly (useful if multiple commands with the same name exist)</b>`npm [[x|exec]] --package [package] [command]`<br><b>Run a command if it exists in the current path or in node_modules/.bin</b>`npm [[x|exec]] --no-install [command] [argument1 argument2 ...]`<br><b>Execute a specific command, suppressing any output from npm itself</b>`npm [[x|exec]] --quiet [command] [argument1 argument2 ...]`<br><b>Display help</b>`npm [[x|exec]] --help`


title: SYNOPSIS
content:
<b>gh status</b> [<I>options</I>]<br>Specifically:<br><b>gh status</b> [--jq <I>EXPRESSION</I>] [--json <I>FIELDS</I>] [-e|--exclude <I>{prs|issues|reviews|mentions|notifications}</I>]


title: PARAMETERS
content:
<b>-e <types>, --exclude <types></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Excludes specific activity types from the status output. Multiple types can be specified by repeating the option. Accepted types include <i>prs</i> (pull requests), <i>issues</i>, <i>reviews</i>, <i>mentions</i>, and <i>notifications</i>.<br><br><b>--jq <EXPRESSION></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filters and formats the command's JSON output using a <I>jq</I> expression for advanced parsing and customization.<br><br><b>--json <FIELDS></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs the status in JSON format, allowing the user to specify a comma-separated list of <I>FIELDS</I> to include in the output.<br><br>


title: DESCRIPTION
content:
The <b>gh status</b> command provides a concise overview of your active GitHub engagements. It helps users quickly assess pending actions and important updates by displaying open pull requests where you're a reviewer or assignee, issues assigned to you, and unread notifications. Furthermore, it highlights pull requests awaiting your review and mentions across issues and pull requests. This command is an essential tool for developers to stay on top of their GitHub workflow directly from the command line, reducing the need to constantly check the web interface for updates.


title: CAVEATS
content:
The <b>gh status</b> command requires the GitHub CLI (<b>gh</b>) to be installed and authenticated to a GitHub account via <b>gh auth login</b>. The displayed status is always based on the authenticated user's permissions and activity on GitHub. The <b>--exclude</b> option can be repeated multiple times to filter out various activity types.


title: AUTHENTICATION
content:
Users must be logged in to a GitHub account via the <b>gh auth login</b> command for <b>gh status</b> to successfully retrieve and display personal activity data.


title: OUTPUT FORMATTING
content:
Beyond the default human-readable output, <b>gh status</b> supports advanced output formatting options like <b>--jq</b> and <b>--json</b>. These are valuable for scripting and integrating the command's results into automated workflows, offering flexibility for parsing and displaying specific data points.


title: HISTORY
content:
The <b>gh status</b> command is an integral part of the GitHub CLI, <b>gh</b>, which was officially released by GitHub in September 2020. Developed to bring GitHub's functionality to the command line, <b>gh status</b> emerged as a core utility to provide users with a quick summary of their pending work and notifications. Its design reflects the CLI's goal of streamlining developer workflows, allowing for efficient task management without context switching from the terminal. It has been consistently maintained and updated alongside the <b>gh</b> tool, evolving with new features and improvements.


title: TLDR
content:
<b>Print information about all repositories you're subscribed to (issues, pull requests, reviews, mentions, activity, etc.)</b>`gh status`<br><b>Exclude certain repositories</b>`gh status [[-e|--exclude]] [repositories]`<br><b>Print status of repositories belonging to an organization</b>`gh status [[-o|--org]] [organization]`


title: PARAMETERS
content:
<b>--no-update</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Do not update locked versions, only check the lock file. This option implies <b>--check</b>.</i><br><br><b>--check</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Only check if the <b>poetry.lock</b> file is up to date with <b>pyproject.toml</b>. If it's not, an error will be raised. No changes are written.</i><br><br><b>--no-interaction</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Do not ask any interactive question during the locking process.</i><br><br><b>--directory (-C)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>The working directory where the <b>pyproject.toml</b> file is located. This allows executing the command from a different directory.</i><br><br>


title: DESCRIPTION
content:
The <b>poetry lock</b> command is a fundamental tool within the Poetry dependency management ecosystem, designed to ensure reproducible project environments. Its primary function is to resolve the exact versions of all direct and transitive dependencies specified in a project's <b>pyproject.toml</b> file and record them in a <b>poetry.lock</b> file. This lock file acts as a snapshot, guaranteeing that anyone working on the project will install the identical set of package versions, thereby preventing "it works on my machine" scenarios caused by varying dependency versions.<br><br>When executed without options, <b>poetry lock</b> will attempt to find the latest compatible versions for all dependencies and update the <b>poetry.lock</b> file accordingly. This process involves querying package repositories, performing dependency resolution, and then meticulously writing the precise package names, versions, and their hashes into the lock file. This command is implicitly called by other Poetry commands like <b>poetry add</b>, <b>poetry remove</b>, and <b>poetry update</b>, which modify the project's dependency graph. However, <b>poetry lock</b> can be run explicitly to refresh or generate the lock file independently of other actions. It is crucial for maintaining a consistent and reliable development and deployment workflow across different environments.


title: CAVEATS
content:
<b>poetry lock</b> relies heavily on the definitions within your <b>pyproject.toml</b> file.<br>Complex dependency graphs can lead to longer resolution times, especially the first time.<br>Requires network access to package repositories for initial resolution and updates (unless packages are cached).<br>Can fail if an unresolvable conflict exists within your declared dependencies or if package sources are unreachable.


title: <I>WHEN TO USE <B>POETRY LOCK</B> EXPLICITLY</I>
content:
While many Poetry commands (like <b>add</b>, <b>remove</b>, <b>update</b>) automatically trigger a lock file update, you might run <b>poetry lock</b> explicitly if you've manually edited <b>pyproject.toml</b> and need to refresh the lock file without performing other actions like installing dependencies. It's also useful for CI/CD pipelines to ensure the lock file is always current after source code changes.


title: <I>THE ROLE OF <B>POETRY.LOCK</B></I>
content:
The <b>poetry.lock</b> file records the exact package versions and their hashes that were resolved. This ensures that every developer and deployment environment uses precisely the same dependencies, guaranteeing consistency and preventing unexpected breakage due to version drift. It should always be committed to version control.


title: HISTORY
content:
The concept of a lock file for reproducible builds is central to the Poetry project, which was initiated to modernize Python dependency management. <b>poetry lock</b>, as a dedicated command, has been an integral part of Poetry since its early development. It embodies Poetry's philosophy of ensuring consistent dependency environments, a significant improvement over traditional methods that often led to environment inconsistencies. Its continuous refinement reflects ongoing efforts to enhance resolution speed and robustness.


title: TLDR
content:
<b>Lock dependencies from the current directory's pyproject.toml file</b>`poetry lock`<br><b>Regenerate the existing lock file</b>`poetry lock --regenerate`


title: PARAMETERS
content:
<b>None</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>conda deactivate</i> operates without standard command-line options or arguments. It implicitly targets the currently active Conda environment within the shell session.<br><br>


title: DESCRIPTION
content:
<i>conda deactivate</i> is a fundamental command within the Conda package and environment management system. Its primary role is to reverse the effects of <i>conda activate</i>, returning the user's shell to a previous or base environment. When executed, it meticulously modifies the shell's <b>PATH</b> variable, removing entries specific to the previously active environment. This action ensures that Python interpreters, libraries, and executables from the deactivated environment are no longer prioritized in the command search path.<br><br>Additionally, <i>conda deactivate</i> typically adjusts the shell prompt, often removing the environment's name, providing a clear visual indicator of the current environment. This process is crucial for maintaining isolated development and deployment setups, preventing dependency conflicts between different projects. It allows users to seamlessly switch between various project-specific configurations by managing environment stacks.


title: CAVEATS
content:
<ul><li>If no Conda environment is presently active in the shell, executing <i>conda deactivate</i> will typically result in no action or a message indicating that no environment is active to deactivate.</li><li>The command's effects are strictly limited to the shell session in which it is run. Other concurrently open terminal windows or sessions remain unaffected.</li><li>For <i>conda deactivate</i> to function correctly, Conda's initialization scripts must have been sourced into the current shell, usually done via <b>conda init</b>.</li><li>When deactivating from a nested environment, the shell reverts to the <i>immediately preceding</i> active environment in the environment stack, not necessarily the base environment.</li></ul>


title: ENVIRONMENT STACK MANAGEMENT
content:
<i>conda deactivate</i> plays a vital role in managing the Conda environment stack. If you activate <b>env_A</b>, then <b>env_B</b>, deactivating from <b>env_B</b> will return your shell to <b>env_A</b>. This allows for hierarchical environment management.


title: SHELL PROMPT MODIFICATION
content:
Beyond altering the <b>PATH</b>, <i>conda deactivate</i> also updates the shell prompt. Typically, it removes the environment's name (e.g., <b>(my_env) $</b>) from the prompt, visually indicating that the environment is no longer active.


title: UNDERLYING MECHANISM
content:
The command primarily works by manipulating the shell's <b>PATH</b> environment variable and other shell-specific configurations (like <b>PS1</b> for prompt) that are set up during <b>conda init</b> and subsequent <b>conda activate</b> calls.


title: HISTORY
content:
Conda was developed by Continuum Analytics (now Anaconda, Inc.) to address the complexities of package and dependency management, particularly in data science and scientific computing. It emerged as a powerful, language-agnostic solution, offering isolated environments to prevent conflicts.<br><br>The <i>activate</i> and <i>deactivate</i> commands are cornerstones of this system, enabling users to easily switch between distinct project setups. This paradigm has been instrumental in Conda's widespread adoption since its inception, providing a robust framework for managing diverse software requirements.


title: SYNOPSIS
content:
<b>poetry add</b> [<i>OPTIONS</i>] <i><package-name></i> [<i>@<version-constraint></i>]<br><b>poetry add</b> [<i>OPTIONS</i>] <i><path></i><br><b>poetry add</b> [<i>OPTIONS</i>] <i><url></i>


title: PARAMETERS
content:
<b><b><package-name></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of the package to add. Can include an optional version constraint.<br><br><b><b><path></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to a local package or directory to add as a dependency.<br><br><b><b><url></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;URL to a package distribution file (e.g., wheel, sdist) to add as a dependency.<br><br><b><b>--dev</b>, <b>-D</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add the package to the <i>dev</i> dependency group.<br><br><b><b>--group GROUP</b>, <b>-G GROUP</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add the package to a specific dependency group (e.g., <i>test</i>, <i>docs</i>).<br><br><b><b>--optional</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Mark the dependency as optional, meaning it is not installed by default.<br><br><b><b>--source SOURCE</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the repository source from which to retrieve the package.<br><br><b><b>--constraint CONSTRAINT</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Manually specify a version constraint for the package.<br><br><b><b>--dry-run</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Simulate the command's execution without making any changes.<br><br><b><b>--editable</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Install a local path dependency in editable mode (<i>--editable</i> for pip).<br><br><b><b>--lock</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not perform an update of the <i>poetry.lock</i> file.<br><br><b><b>--allow-prereleases</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Allow prereleases for the added dependency during resolution.<br><br><b><b>--python PYTHON_VERSION</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a Python version constraint for the added dependency.<br><br><b><b>--platform PLATFORM_NAME</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a platform constraint for the added dependency.<br><br>


title: DESCRIPTION
content:
The <b>poetry add</b> command is a central feature of the <i>Poetry</i> dependency management tool for Python. It enables developers to seamlessly declare and integrate new package dependencies into their projects. Upon execution, <b>poetry add</b> performs several crucial steps: first, it updates the `<i>pyproject.toml</i>` file by adding the specified package and its version constraints. Next, it meticulously resolves the entire dependency tree to ensure compatibility and updates the `<i>poetry.lock</i>` file, thereby guaranteeing reproducible builds across different environments. Finally, it installs the newly added package, along with its transitive dependencies, into the project's dedicated virtual environment. This command offers extensive flexibility through various options, allowing users to categorize dependencies (e.g., development-only, specific groups), define custom sources, or incorporate packages from local paths or URLs, providing precise control over the project's dependency landscape.


title: CAVEATS
content:
The <b>poetry add</b> command requires an existing <i>pyproject.toml</i> file in the current or a parent directory.<br>Adding a package with incompatible existing dependencies can lead to dependency resolution failures.<br>When specifying local paths or URLs, ensure the target provides a valid <i>Poetry</i>-compatible package or project structure.


title: <B>DEPENDENCY RESOLUTION</B>
content:
<b>poetry add</b> employs a sophisticated dependency solver to ensure that all package requirements, including transitive dependencies, are compatible and resolved, effectively mitigating 'dependency hell' scenarios.


title: <B>REPRODUCIBLE ENVIRONMENTS</B>
content:
Upon successful execution, <b>poetry add</b> automatically updates the <i>poetry.lock</i> file. This file precisely pins the versions of all installed packages, guaranteeing consistent and reproducible environments across different development machines and deployment stages.


title: HISTORY
content:
<i>Poetry</i> emerged around 2018 as a comprehensive Python dependency manager, offering a more integrated approach than traditional tools. The <b>add</b> command has been a foundational element since its inception, continuously evolving to incorporate features like dependency groups, custom sources, and robust constraint handling, enhancing its utility for diverse project requirements.


title: TLDR
content:
<b>Add required packages</b>`poetry add [package_name]`<br><b>Add required packages to a specific group of dependencies</b>`poetry add [package_name] --group [group_name]`<br><b>Add a specific version of a package</b>`poetry add [package_name]==[version]`<br><b>Add a specific version of a package equal to or earlier than a given version</b>`poetry add [package_name]<=[version]`<br><b>Add a specific version of a package equal to or later than a given version</b>`poetry add [package_name]>=[version]`


title: PARAMETERS
content:
<b><b>-f</b>, <b>--force</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force deletion without prompt, even if the file is write-protected.<br><br><b><b>-r</b>, <b>--recursive</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Delete directories and their contents recursively.<br><br><b><b>-n</b> <i>PASSES</i>, <b>--passes</b>=<i>PASSES</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the number of overwrite passes (default: 3). More passes increase security but take longer.<br><br><b><b>-z</b>, <b>--zero</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Overwrite with zeroes instead of cryptographically secure random data. Faster but less secure.<br><br><b><b>-v</b>, <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display detailed information during operation, showing progress and actions taken.<br><br><b><b>--shred</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use advanced shredding patterns (e.g., Gutmann method) for enhanced security.<br><br><b><b>--wipe</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Perform a full device wipe on the specified block device (<i><b>CAUTION: EXTREMELY DESTRUCTIVE</b></i>).<br><br>


title: DESCRIPTION
content:
The `crush` command, <i>a hypothetical utility for demonstration purposes</i>, is designed for the secure and permanent deletion of files or directories. Unlike standard `rm` which merely unlinks files, `crush` aims to overwrite the data multiple times with random patterns or zeroes before deletion, making forensic recovery extremely difficult or impossible.<br><br>It's intended for scenarios where sensitive information needs to be completely purged from storage devices. Users should exercise extreme caution, as data `crushed` by this command cannot be recovered. It operates by systematically overwriting sectors occupied by the target file(s), adhering to various data sanitization standards for robust data destruction. This ensures that even advanced data recovery techniques fail to reconstruct the original content.


title: CAVEATS
content:
The `crush` command, being hypothetical, represents a concept of secure data erasure. If such a command were to exist, its primary caveat would be its irreversible nature; once data is `crushed`, it is permanently lost. <br><br>Furthermore, on modern storage devices like SSDs or with journaling file systems, secure deletion can be complex due to wear-leveling, TRIM commands, and caching, which might prevent direct overwriting of specific physical sectors. <br><br>Users would need to understand these underlying storage mechanisms to ensure true data sanitization, and for critical data, physical destruction of media remains the only absolute guarantee.


title: DATA RECOVERY IMPLICATIONS
content:
While `crush` aims for unrecoverable deletion, sophisticated data recovery techniques, particularly in laboratory settings, might still glean partial information from severely damaged or partially overwritten media. <br><br>For ultimate security, physical destruction of storage media (e.g., degaussing, incineration, shredding) remains the most definitive method against all forms of data recovery.


title: USAGE BEST PRACTICES
content:
Always double-check the target `FILE` or `DIRECTORY` arguments before executing `crush` due to its destructive nature. <br><br>It is recommended to use `crush` on unmounted filesystems or raw devices for complete sanitization when wiping entire partitions or drives, as the operating system might otherwise interfere with direct sector access.


title: HISTORY
content:
As a hypothetical command, `crush` does not possess a real development history. However, the concept of secure data deletion emerged from the need to protect sensitive information from recovery, predating digital computers with physical destruction methods. <br><br>In the digital realm, early utilities focused on simple overwrites, evolving to more sophisticated algorithms like the Gutmann method. <br><br>The `shred` command, a real-world equivalent, was introduced as part of GNU Core Utilities to address these security concerns, providing a reliable method for irreversible file deletion on conventional storage devices. The name 'crush' evokes the destructive and irreversible nature of such a command.


title: TLDR
content:
<b>Start interactive mode</b>`crush`<br><b>Run with debug logging</b>`crush [[-d|--debug]]`<br><b>Run with debug logging in a specific directory</b>`crush [[-d|--debug]] [[-c|--cwd]] [path/to/project]`<br><b>Run a single non-interactive prompt</b>`crush run "[Explain the use of context in Go]"`<br><b>Run in dangerous mode (auto-accept all permissions)</b>`crush [[-y|--yolo]]`<br><b>Display version</b>`crush [[-v|--version]]`


title: SYNOPSIS
content:
<b>gh cache</b> <I>command</I> [<I>options</I>]<br><b>gh cache list</b> [<I>flags</I>]<br><b>gh cache delete</b> <I>&lt;key&gt;</I> [<I>flags</I>]<br><b>gh cache download</b> <I>&lt;key&gt;</I> [<I>flags</I>]


title: PARAMETERS
content:
<b><b>Common Flags:</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<br><br><b><code>-R, --repo &lt;owner/repo&gt;</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Selects a different repository for the operation using the <code>[HOST/]OWNER/REPO</code> format.<br><br><b><b>For <code>list</code> subcommand:</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists GitHub Actions caches.<br><br><b><code>-B, --ref &lt;branch&gt;</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filters caches by the specified Git branch name.<br><br><b><code>-L, --limit &lt;int&gt;</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Limits the maximum number of caches to list.<br><br><b><code>-q, --query &lt;string&gt;</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filters caches by a search query, typically on the cache key or path.<br><br><b><code>-S, --sort &lt;SORT&gt;</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sorts fetched caches by <code>last_accessed_at</code> or <code>size</code>. Default is <code>last_accessed_at</code>.<br><br><b><code>-u, --user &lt;string&gt;</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists caches created by a specific user.<br><br><b><b>For <code>delete</code> subcommand:</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Deletes one or more GitHub Actions caches specified by key.<br><br><b><code>&lt;key&gt;</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The exact cache key to delete. Can accept multiple keys or patterns.<br><br><b><code>--dry-run</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs a dry run without actually deleting the cache(s).<br><br><b><b>For <code>download</code> subcommand:</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Downloads a GitHub Actions cache specified by key.<br><br><b><code>&lt;key&gt;</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The exact cache key to download.<br><br><b><code>-D, --dest &lt;path&gt;</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path where the cache content will be extracted. Defaults to the current directory.<br><br><b><code>-a, --archive-path &lt;path&gt;</code></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path where the raw cache archive will be downloaded to, without extraction.<br><br>


title: DESCRIPTION
content:
The `gh cache` command, a subcommand of the GitHub CLI, provides functionalities to interact with GitHub Actions caches directly from the command line. It enables developers to <b>list existing caches</b>, <i>view details</i> about them, <b>download cache content</b>, and <i>delete specific caches</i>. This is particularly useful for debugging caching issues in CI/CD workflows, freeing up storage space, or manually inspecting cached dependencies.<br><br>Caching in GitHub Actions helps speed up workflow execution by reusing previously built dependencies or build outputs. The `gh cache` command makes cache management more accessible and efficient for users working with GitHub Actions.


title: CAVEATS
content:
Using `gh cache` requires the GitHub CLI (`gh`) to be installed and authenticated to your GitHub account.<br>Access to caches is subject to repository permissions, meaning you need appropriate access to view or modify caches.<br>Deleting caches is an <b>irreversible operation</b>, so proceed with caution.<br>The cache key matching logic is crucial; ensure your keys are correctly identified for listing, deleting, or downloading.


title: UNDERSTANDING GITHUB ACTIONS CACHING
content:
GitHub Actions caching allows you to store and reuse dependencies or build outputs between workflow runs. This significantly reduces the time taken to re-create the same dependencies, making your CI/CD pipelines faster and more efficient. Caches are identified by a unique key and can be restored if a matching key is found during subsequent workflow runs.


title: CACHE KEY MATCHING
content:
When a workflow run starts, GitHub Actions attempts to find a cache entry that matches the provided key. It supports exact matches and, for some actions, prefix matches. If no exact match is found, it looks for a partial match based on a list of fallback keys. Understanding how cache keys are formed and matched is vital for effective caching strategies and using `gh cache` effectively.


title: HISTORY
content:
The `gh cache` functionality was introduced as part of the GitHub CLI to provide better management and debugging capabilities for GitHub Actions caches. It reflects the growing importance of CI/CD workflows and cache optimization in modern development. By extending the existing `gh actions` commands, it makes direct cache interaction more accessible and powerful from the command line, complementing the web interface and GitHub Actions workflow syntax.


title: TLDR
content:
<b>List caches for the current repository</b>`gh cache [[ls|list]]`<br><b>List caches for a specific repository</b>`gh cache [[ls|list]] [[-R|--repo]] [owner]/[repository]`<br><b>List caches with a specific cache key prefix</b>`gh cache [[ls|list]] [[-k|--key]] [key_prefix]`<br><b>List caches for a specific branch</b>`gh cache [[ls|list]] [[-r|--ref]] refs/heads/[branch_name]`<br><b>List caches sorted by least recently accessed</b>`gh cache [[ls|list]] [[-S|--sort]] last_accessed_at [[-O|--order]] asc`<br><b>Delete a cache by id</b>`gh cache delete [cache_id]`<br><b>Delete a cache by key</b>`gh cache delete [cache_key]`<br><b>Delete all caches</b>`gh cache delete [[-a|--all]]`


title: TLDR
content:
<b>List all packages in the current environment</b>`conda list`<br><b>List packages in the named environment</b>`conda list [[-n|--name]] [environment]`<br><b>List packages installed in a given path</b>`conda list [[-p|--prefix]] [path/to/environment]`<br><b>Filter installed packages using regex</b>`conda list [regex]`<br><b>Save packages for future use</b>`conda list [[-e|--export]] > [path/to/package-list.txt]`


title: TLDR
content:
<b>Display the MSRVs of dependencies (as specified in their Cargo.toml)</b>`cargo msrv list`<br><b>Find the MSRV of the project by trying to compile it with various toolchains</b>`cargo msrv find`<br><b>Show the MSRV of the project as specified in Cargo.toml</b>`cargo msrv show`<br><b>Set the MSRV in Cargo.toml to a given Rust version</b>`cargo msrv set [version]`<br><b>Verify whether the MSRV is satisfiable by compiling the project using the specified version of Rust</b>`cargo msrv verify`


title: PARAMETERS
content:
<b><b>--no-block</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not wait for the operation to finish. The command will return immediately after queuing the hibernation request, allowing other tasks to continue in the foreground.<br><br><b><b>--dry-run</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show what would be done without actually performing the hibernation operation. This is useful for testing configurations or understanding the execution path without altering the system state.<br><br>


title: DESCRIPTION
content:
<b>systemctl hibernate</b> is a command used on Linux systems utilizing <i>systemd</i> to initiate the system's hibernation process. Hibernation, also known as Suspend-to-Disk, saves the entire current state of the computer's random access memory (RAM) to a dedicated swap partition or swap file on the hard drive before powering down the machine completely. When the system is powered back on, the contents of the RAM are reloaded from the disk, allowing the user to resume their work exactly where they left off, with all applications and open documents restored. This differs from a regular shutdown, which closes all programs, and from suspension (Suspend-to-RAM), which keeps the RAM powered and consumes minimal energy. Hibernation is useful for saving power over long periods without closing open work, but it requires sufficient disk space (typically equal to or greater than the amount of installed RAM) for the swap area.


title: CAVEATS
content:
<b>Swap Space Requirement</b>:<br>For hibernation to function correctly, your system must have a swap partition or a swap file at least as large as the amount of installed RAM. Insufficient swap space will prevent successful hibernation.<br><br><b>Kernel Configuration</b>:<br>In some cases, the kernel might need to be explicitly told where to find the swap space for resuming. This is typically done via the <i>resume=/dev/SWAP_DEVICE</i> or <i>resume_offset=OFFSET</i> kernel parameter in your bootloader configuration (e.g., GRUB).<br><br><b>Hardware and Driver Compatibility</b>:<br>Not all hardware or proprietary drivers (especially for graphics cards) fully support hibernation, which can lead to issues such as a black screen, system freeze, or inability to resume. Updating drivers or kernel might resolve these.<br><br><b>Dual-Boot Systems and Fast Startup</b>:<br>If you dual-boot with Windows, ensure that Windows 'Fast Startup' feature is disabled. If enabled, Windows might not fully release its hold on the filesystem, leading to potential data corruption if Linux attempts to hibernate and resume from a shared NTFS partition.<br><br><b>Resume Time</b>:<br>Resuming from hibernation can take significantly longer than resuming from suspend (Suspend-to-RAM) due to the need to read the entire RAM contents from disk.


title: HOW HIBERNATION WORKS
content:
When <b>systemctl hibernate</b> is executed, the kernel first copies the entire contents of the system's RAM into a pre-configured swap area (either a partition or a file). Once this operation is complete, the system powers down completely, consuming no power. Upon restart, the bootloader and kernel detect the presence of the hibernation image in the swap area and load it back into RAM, restoring the system to its exact state prior to hibernation. This process ensures that all running applications, open files, and user sessions are preserved.


title: TROUBLESHOOTING COMMON ISSUES
content:
If hibernation fails to work or resume properly, consider the following:<br><b>Verify Swap Size:</b> Ensure your swap space is equal to or greater than your RAM.<br><b>Kernel Parameters:</b> Confirm that your bootloader (e.g., GRUB) is correctly configured with the <i>resume=</i> parameter pointing to your swap device.<br><b>Check Logs:</b> Review system logs (<i>journalctl -b -1</i> for the previous boot) for hibernation-related errors.<br><b>Driver Issues:</b> Update proprietary drivers, especially for graphics, as they can sometimes interfere with power management states.<br><b>Disable Fast Startup (Windows):</b> If dual-booting, ensure Windows 'Fast Startup' is disabled.


title: HISTORY
content:
The concept of system hibernation has existed in Linux for many years, initially managed by tools like <i>pm-utils</i> and direct kernel interfaces. With the widespread adoption of <i>systemd</i> as the init system in major Linux distributions (such as Fedora, Debian, Ubuntu, and Arch Linux), power management functions, including hibernation, were integrated into the <b>systemctl</b> command-line utility. This provided a unified and standardized way to control system states. The <b>systemctl hibernate</b> command replaced older, less consistent methods, offering a more robust and predictable mechanism for suspending the system to disk, leveraging <i>systemd</i>'s comprehensive system management capabilities. Its development aligns with <i>systemd</i>'s goal of centralizing and streamlining various system administration tasks.


title: SEE ALSO
content:
systemctl(1), systemctl suspend(1), systemctl poweroff(1), systemctl reboot(1), systemctl suspend-then-hibernate(1), systemd(1), swap(8)


title: TLDR
content:
<b>Hibernate the system immediately</b>`systemctl hibernate`<br><b>Force hibernation even if inhibitors are present</b>`systemctl hibernate --force`<br><b>Hibernate the system without sending a message to logged-in users</b>`systemctl hibernate --no-wall`


title: PARAMETERS
content:
<b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Show a short help text and exit.</i><br><br><b>--system</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Connect to the systemd system manager. This is the default.</i><br><br><b>--user</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Connect to the systemd user session manager.</i><br><br><b>-q, --quiet</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Suppress output. Only the exit code indicates the success or failure of the operation. Essential for scripting.</i><br><br><b>-t, --type=TYPE</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>When no UNIT is specified, filter units by type (e.g., 'service', 'socket').</i><br><br><b>--root=PATH</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Operate on a specified root directory, useful for chroot/container environments.</i><br><br>


title: DESCRIPTION
content:
<i>systemctl is-failed</i> is a crucial subcommand of the <i>systemctl</i> utility, designed to query the current failure state of one or more systemd units. A unit is deemed 'failed' if its most recent activation attempt was unsuccessful, or if it exited with an error status. This command is particularly valuable for automation, scripting, and monitoring tasks, as its exit code directly communicates the unit's state.<br><br>When invoked with a specific unit name (e.g., <i>sshd.service</i>), it will check that unit's 'ActiveState'. If the unit's state is 'failed', the command exits with a status code of 0. If the unit is active, inactive, or in any other state that is not 'failed', it exits with a status code of 1. Other exit codes (typically >1) indicate an error, such as an unknown unit name. Its concise output (usually just 'failed', 'active', 'inactive', etc., or nothing with <i>--quiet</i>) combined with its robust exit code mechanism makes it ideal for conditional logic within shell scripts to react to service failures.


title: CAVEATS
content:
<i>systemctl is-failed</i> reflects only the <b>current</b> state. A unit could have failed previously and then been successfully restarted, in which case <i>is-failed</i> would report it as not failed. It requires appropriate permissions; typically, checking system units requires root privileges or sudo.<br><br>The primary mechanism for its use in scripts is its <b>exit code</b>. Relying solely on its textual output can be less robust.</i>


title: EXIT CODES
content:
The exit code of <i>systemctl is-failed</i> is its most important feature for scripting:<br><b>0</b>: The specified unit is in a 'failed' state.<br><b>1</b>: The specified unit is not in a 'failed' state (it could be 'active', 'inactive', 'activating', 'deactivating', etc.).<br><b>>1</b>: An error occurred (e.g., the specified unit does not exist, or insufficient permissions).


title: USAGE IN SCRIPTS
content:
This command is frequently used in shell scripts for conditional execution based on service health, for example:<br><i>if systemctl is-failed myapp.service &amp;> /dev/null;</i><br><i>then</i><br><i>    echo "myapp.service is failed! Restarting..."</i><br><i>    sudo systemctl restart myapp.service</i><br><i>elif ! systemctl is-active myapp.service &amp;> /dev/null;</i><br><i>then</i><br><i>    echo "myapp.service is not active! Starting..."</i><br><i>    sudo systemctl start myapp.service</i><br><i>else</i><br><i>    echo "myapp.service is running correctly."</i><br><i>fi</i><br><br>Note the use of <i>&amp;> /dev/null</i> with <i>--quiet</i> for clean script output, relying only on the exit code.


title: HISTORY
content:
<i>The <b>systemctl is-failed</b> command is an integral part of <b>systemd</b>, which was initially released in 2010 and has progressively become the default init system for most major Linux distributions, replacing older systems like SysVinit and Upstart. The <b>is-failed</b> subcommand was introduced early in systemd's development as a fundamental tool for programmatically querying the health of units, highlighting systemd's focus on robust service management and automation capabilities. Its design as a simple exit-code-driven checker reflects the broader Unix philosophy of 'do one thing well' for easy integration into shell scripts and other automation tools.</i>


title: TLDR
content:
<b>Check if there are any failed units</b>`systemctl is-failed`<br><b>Check if a unit or multiple units have failed</b>`systemctl is-failed [unit1 unit2 ...]`<br><b>Suppress output and return only the exit code</b>`systemctl is-failed [unit] [[-q|--quiet]]`<br><b>Check if a user unit has failed</b>`systemctl is-failed [unit] --user`


title: TLDR
content:
<b>Allow allocation on a physical volume</b>`sudo pvchange [[-x|--allocatable]] y [/dev/sdXN]`<br><b>Disallow allocation on a physical volume</b>`sudo pvchange [[-x|--allocatable]] n [/dev/sdXN]`<br><b>Ignore metadata areas on a physical volume</b>`sudo pvchange --metadataignore y [/dev/sdXN]`<br><b>Stop ignoring metadata areas on a physical volume</b>`sudo pvchange --metadataignore n [/dev/sdXN]`<br><b>Add a tag to a physical volume</b>`sudo pvchange --addtag [tag] [/dev/sdXN]`<br><b>Generate a new UUID for a physical volume (use with care)</b>`sudo pvchange --uuid [/dev/sdXN]`<br><b>Change all visible physical volumes (combine with other options such as allocatable)</b>`sudo pvchange [[-a|--all]] [[-x|--allocatable]] y`


title: SYNOPSIS
content:
<b>semanage user</b> {<b>-a</b>|<b>--add</b>} {<b>-R</b> <i><roles></i>} {<b>-r</b> <i><range></i>} <i><selinux_user></i> {<i><linux_user_mapping></i>}<br><b>semanage user</b> {<b>-m</b>|<b>--modify</b>} {<b>-R</b> <i><roles></i>} {<b>-r</b> <i><range></i>} <i><selinux_user></i> {<i><linux_user_mapping></i>}<br><b>semanage user</b> {<b>-d</b>|<b>--delete</b>} <i><selinux_user></i><br><b>semanage user</b> {<b>-l</b>|<b>--list</b>} {<b>-n</b>|<b>--noheader</b>}


title: PARAMETERS
content:
<b><b>-a</b>, <b>--add</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a new SELinux user mapping to the policy. Requires specifying an SELinux user, roles, range, and optionally a Linux user mapping.<br><br><b><b>-d</b>, <b>--delete</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Deletes an existing SELinux user mapping from the policy. Requires specifying the SELinux user to be deleted.<br><br><b><b>-m</b>, <b>--modify</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Modifies an existing SELinux user mapping in the policy. Allows changing the roles, range, or Linux user mapping associated with an SELinux user.<br><br><b><b>-l</b>, <b>--list</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all currently defined SELinux user mappings and their associated properties (roles, range, Linux user mappings).<br><br><b><b>-R</b> <i><roles></i>, <b>--roles=</b><i><roles></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a comma-separated list of SELinux roles that the SELinux user can assume. For example, 'sysadm_r,staff_r'.<br><br><b><b>-r</b> <i><range></i>, <b>--range=</b><i><range></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the MLS/MCS security range for the SELinux user. For example, 's0' or 's0:c0.c1023'.<br><br><b><b>-n</b>, <b>--noheader</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with <b>-l</b> to suppress the header line when listing SELinux user mappings, useful for scripting.<br><br><b><i><selinux_user></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The identifier for the SELinux user. This is a label within the SELinux policy, not necessarily a Linux username (e.g., 'user_u', 'staff_u').<br><br><b><i><linux_user_mapping></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The Linux user or group that maps to the specified SELinux user. Often '<b>__default__</b>' for the default mapping, or a specific Linux username (e.g., 'john').<br><br>


title: DESCRIPTION
content:
The <b>semanage user</b> command is a crucial part of the SELinux policy management toolkit, enabling administrators to define and manage the mappings between Linux users and SELinux users. These mappings are fundamental for controlling the security context under which a user operates on an SELinux-enabled system.<br><br>An SELinux user is a label within the SELinux policy that dictates what roles and security contexts a Linux user can potentially assume. By creating, modifying, or deleting these mappings, <b>semanage user</b> allows for granular control over user permissions beyond traditional DAC (Discretionary Access Control). It also assigns specific SELinux roles and Multi-Level Security (MLS) or Multi-Category Security (MCS) ranges to an SELinux user, further restricting or enhancing their access capabilities within the system's security policy. This command is distinct from <b>semanage login</b>, which handles the mapping of specific Linux logins to SELinux users.


title: CAVEATS
content:
Using <b>semanage user</b> requires root privileges. Misconfiguring SELinux user mappings, roles, or ranges can lead to denial of service, unexpected access restrictions, or potential security vulnerabilities. It's crucial to understand SELinux concepts before making significant changes. Changes made with <b>semanage user</b> are persistent across reboots.


title: SELINUX USER VS. LINUX USER
content:
It's important to distinguish between a Linux user and an SELinux user. A <i>Linux user</i> is a traditional system account (e.g., 'john', 'root'). An <i>SELinux user</i> (e.g., 'user_u', 'staff_u') is an identity within the SELinux policy that determines what roles, contexts, and ultimately what permissions a Linux user can potentially assume. A Linux user is mapped to an SELinux user, often via <b>semanage login</b>, and that SELinux user is defined and configured with <b>semanage user</b>.


title: THE '__DEFAULT__' MAPPING
content:
When adding or modifying an SELinux user mapping, the <i><linux_user_mapping></i> argument can be set to '<b>__default__</b>'. This special mapping indicates that any Linux user not explicitly mapped to an SELinux user via <b>semanage login</b> will automatically be associated with this SELinux user. It serves as a fallback or generic mapping for unconfigured Linux users.


title: ROLES AND MLS/MCS RANGES
content:
The <b>-R</b> (roles) and <b>-r</b> (range) options are critical for defining the capabilities of an SELinux user. Roles (e.g., 'user_r', 'staff_r') define the set of capabilities or domains that the SELinux user can transition into. The MLS/MCS range (e.g., 's0', 's0:c0.c1023') provides Multi-Level Security or Multi-Category Security, which adds another layer of access control based on sensitivity and categories, further refining what resources the user can access.


title: HISTORY
content:
The <b>semanage</b> utility, of which <b>semanage user</b> is a subcommand, was introduced as part of the SELinux userspace tools to simplify the administration of SELinux policies. Prior to tools like <b>semanage</b>, modifying SELinux policy required direct manipulation of policy files or more complex processes. <b>semanage</b> was developed to provide a higher-level, more user-friendly interface for common policy tasks, including managing user mappings, and has been a staple in SELinux-enabled distributions since the early 2000s.


title: TLDR
content:
<b>List all SELinux users</b>`sudo semanage user [[-l|--list]]`<br><b>Add a new SELinux user</b>`sudo semanage user [[-a|--add]] [[-R|--roles]] [role_name] [selinux_user]`<br><b>Delete a SELinux user</b>`sudo semanage user [[-d|--delete]] [selinux_user]`<br><b>Modify an existing SELinux user's roles</b>`sudo semanage user [[-m|--modify]] [[-R|--roles]] [role_name] [selinux_user]`<br><b>Add a SELinux user with a specific default level</b>`sudo semanage user [[-a|--add]] [[-R|--roles]] [role_name] [[-L|--level]] [s0] [selinux_user]`<br><b>Add a SELinux user with a specific MLS/MCS range</b>`sudo semanage user [[-a|--add]] [[-R|--roles]] [role_name] [[-r|--range]] [s0-s0:c0.c1023] [selinux_user]`<br><b>List only customized SELinux users</b>`sudo semanage user [[-l|--list]] [[-C|--locallist]]`


title: PARAMETERS
content:
<b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a help message and exit.<br><br><b>-V, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show program's version number and exit.<br><br>


title: DESCRIPTION
content:
The <b>pacinfo</b> command is a utility on Arch Linux and its derivatives, designed to provide quick and concise information about installed packages. It acts as a lightweight wrapper script, primarily invoking the powerful <b>pacman -Qi</b> command behind the scenes. Its main purpose is to simplify the retrieval of detailed package metadata, offering a user-friendly interface without requiring users to remember specific <b>pacman</b> flags for information queries.<br><br>When executed with a package name, <b>pacinfo</b> fetches and displays crucial details such as the package's name, version, architecture, a brief description, its URL, associated licenses, and the groups it belongs to. Furthermore, it lists dependencies (both required and optional), reverse dependencies (packages that require it), conflicts, and provides information about the installation size, the packager, build date, and the exact installation date. It's an essential tool for system administrators and users alike who need to quickly ascertain the characteristics and relationships of software packages on their Arch-based systems.


title: CAVEATS
content:
<b>pacinfo</b> is a simple wrapper script that executes <b>pacman -Qi</b>. As such, it inherits the behavior and limitations of <b>pacman -Qi</b> and does not provide additional options beyond its basic help and version flags. It is exclusively available on Arch Linux and its derivatives, typically as part of the <i>pacman-contrib</i> package.


title: UNDERLYING COMMAND (PACMAN -QI)
content:
When you run <b>pacinfo</b> <i>&lt;package&gt;</i>, it effectively executes <b>pacman -Qi</b> <i>&lt;package&gt;</i>. This underlying command provides comprehensive details about the specified installed package, including:<br><br><i>Repository</i>, <i>Name</i>, <i>Version</i>, <i>Description</i>, <i>Architecture</i>, <i>URL</i>, <i>Licenses</i>, <i>Groups</i>, <i>Provides</i>, <i>Depends On</i>, <i>Optional Deps</i>, <i>Required By</i>, <i>Optional For</i>, <i>Conflicts With</i>, <i>Replaces</i>, <i>Installed Size</i>, <i>Packager</i>, <i>Build Date</i>, <i>Install Date</i>, <i>Install Reason</i>, <i>Validated By</i>.


title: HISTORY
content:
<b>pacinfo</b> is part of the <i>pacman-contrib</i> package, a collection of useful scripts designed to complement the <b>pacman</b> package manager on Arch Linux. Its purpose has consistently been to provide a quick and user-friendly interface for displaying detailed package information, simplifying a common query task that would otherwise require specific <b>pacman</b> arguments.


title: TLDR
content:
<b>Display information about a specific package</b>`pacinfo [package_name]`<br><b>Disable low-speed timeouts for downloads</b>`pacinfo --no-timeout [package_name]`<br><b>Display sizes in bytes and date values as Unix timestamps</b>`pacinfo --raw [package_name]`<br><b>Display additional package information</b>`pacinfo --verbose [package_name]`<br><b>Display help</b>`pacinfo --help`<br><b>Display version</b>`pacinfo --version`


title: SYNOPSIS
content:
<b>semanage interface</b> -a -t <i>type</i> [-r <i>range</i>] <i>interface_name</i><br><b>semanage interface</b> -d <i>interface_name</i><br><b>semanage interface</b> -m -t <i>type</i> [-r <i>range</i>] <i>interface_name</i><br><b>semanage interface</b> -l [-n]<br><b>semanage interface</b> -D<br><b>semanage interface</b> -E


title: PARAMETERS
content:
<b>-a</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add a new SELinux interface definition to the local policy.<br><br><b>-d</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Delete an existing SELinux interface definition from the local policy.<br><br><b>-m</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Modify an existing SELinux interface definition in the local policy.<br><br><b>-l</b><br>&nbsp;&nbsp;&nbsp;&nbsp;List all currently configured SELinux interface definitions.<br><br><b>-t <i>type</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the SELinux type to associate with the network interface. This option is mandatory for add (<i>-a</i>) and modify (<i>-m</i>) operations.<br><br><b>-r <i>range</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the MLS/MCS (Multi-Level Security/Multi-Category Security) range for the interface. This is an optional parameter, primarily used in environments requiring fine-grained sensitivity labels.<br><br><b><i>interface_name</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of the network interface (e.g., <i>eth0</i>, <i>ens33</i>, <i>wlan0</i>) to which the SELinux definition applies. This is mandatory for add, delete, and modify operations.<br><br><b>-n</b><br>&nbsp;&nbsp;&nbsp;&nbsp;When used with the list (<i>-l</i>) option, this displays numbers for each entry, which can be useful for scripting or referencing specific entries.<br><br><b>-D</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Delete all local SELinux interface customizations, reverting all interface definitions to the policy's default settings.<br><br><b>-E</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Restore the SELinux policy to its default interface definitions by removing all local customizations and rebuilding the policy. This is similar to <i>-D</i> but explicitly rebuilds the policy.<br><br>


title: DESCRIPTION
content:
The <b>semanage interface</b> command is a subcommand of <b>semanage</b>, used for managing SELinux type definitions associated with network interfaces. It allows administrators to add, delete, modify, or list SELinux type and MLS/MCS range mappings for specific network interfaces. <br><br>By controlling these mappings, SELinux can enforce fine-grained access control on network communications, ensuring that only authorized processes can interact with network resources via specific interfaces. For example, you might define a specific type for a management interface to restrict which services can bind to it, enhancing network segmentation and security. These configurations are stored in the local SELinux policy, making them persistent across reboots and policy reloads. This tool is crucial for tailoring SELinux policy to an organization's specific network security requirements, especially in environments where secure communication is paramount. Misconfigurations can lead to network service disruptions, so careful planning and testing are recommended.


title: CAVEATS
content:
Using <b>semanage interface</b> requires root privileges. Changes made are immediately effective and persistently stored in the local policy, taking precedence over default policy definitions. Incorrectly configuring network interface types can lead to network services failing to start or operate correctly, potentially disrupting network connectivity or isolating the system. Always test changes thoroughly in a controlled environment before deploying to production systems.


title: SELINUX CONTEXTS AND NETWORK INTERFACES
content:
SELinux assigns a security context (typically in the format <i>user:role:type:level</i>) to every object on the system, including network interfaces. The <i>type</i> component is the primary attribute used for making access control decisions. By assigning a specific SELinux type to a network interface using <b>semanage interface</b>, the system can enforce rules about which processes (based on their own SELinux type) are allowed to access, bind to, or send/receive data through that particular interface. The optional <i>range</i> (MLS/MCS level) provides an additional layer of sensitivity and confidentiality control, primarily used in multi-level security architectures.


title: POLICY PERSISTENCE
content:
Unlike temporary changes made with commands such as <b>chcon</b>, modifications applied with <b>semanage interface</b> are stored in a local policy customization file (e.g., within <i>/etc/selinux/targeted/modules/active/semanage_*.conf</i> or similar locations). These local changes are then compiled into the active SELinux policy every time the policy is loaded, ensuring that your custom interface type definitions persist across system reboots and SELinux policy reloads. This mechanism guarantees consistency and reliability in your SELinux enforcement, preventing configurations from being lost.


title: HISTORY
content:
The <b>semanage</b> utility, including its <b>interface</b> subcommand, was developed as a key part of the SELinux toolset to simplify the management of local policy customizations. Prior to tools like <b>semanage</b>, administrators often had to engage in more complex policy source compilation to make such modifications. <b>semanage</b> abstracts this complexity, allowing for easier management of specific SELinux policy components like network interface types, file contexts, ports, and users without requiring deep knowledge of the underlying SELinux policy language. Its introduction marked a significant step towards making SELinux more accessible and manageable in enterprise and production environments, improving its overall usability and adoption.


title: TLDR
content:
<b>List all interface type definitions</b>`sudo semanage interface [[-l|--list]]`<br><b>Add a network interface type definition</b>`sudo semanage interface [[-a|--add]] [[-t|--type]] [type_name] [interface_name]`<br><b>Delete a network interface type definition</b>`sudo semanage interface [[-d|--delete]] [interface_name]`<br><b>Modify a network interface type definition</b>`sudo semanage interface [[-m|--modify]] [[-t|--type]] [type_name] [interface_name]`<br><b>List interface type definitions in a customized format</b>`sudo semanage interface [[-l|--list]] [[-C|--locallist]]`


title: TLDR
content:
<b>Create a bootable ISO from the current directory and save it as grub.iso</b>`grub-mkrescue --output [grub.iso] .`<br><b>Create an ISO using GRUB files from a custom directory</b>`grub-mkrescue --directory [/usr/lib/grub/i386-pc] --output [grub.iso] [path/to/source]`<br><b>Use compression for GRUB files when building the image, setting no disables compression</b>`grub-mkrescue --compress [no|xz|gz|lzo] --output [grub.iso] [path/to/source]`<br><b>Disable the GRUB command-line interface in the generated image</b>`grub-mkrescue --disable-cli --output [grub.iso] [path/to/source]`<br><b>Preload specific GRUB modules into the image</b>`grub-mkrescue --modules "[part_gpt iso9660]" --output [grub.iso] [path/to/source]`<br><b>Pass additional options directly to xorriso</b>`grub-mkrescue --output [grub.iso] -- [-volid] [volume_name] [path/to/source]`<br><b>Display help</b>`grub-mkrescue [[-?|--help]]`<br><b>Display version</b>`grub-mkrescue --version`


title: TLDR
content:
<b>Open an image file</b>`eog [path/to/image.png]`<br><b>Open multiple images</b>`eog [image1.jpg image2.png ...]`<br><b>Open images in fullscreen mode</b>`eog --fullscreen [path/to/image.jpg]`<br><b>Start a slideshow</b>`eog --slide-show [path/to/directory]`<br><b>Open a single image without image collection</b>`eog --single-window [path/to/image.jpg]`<br><b>Open an image in a new window instance</b>`eog --new-instance [path/to/image.jpg]`


title: TLDR
content:
<b>Check whether a unit is active</b>`systemctl is-active [unit]`<br><b>Check whether multiple units are active</b>`systemctl is-active [unit1 unit2 ...]`<br><b>Check whether a unit is active without printing the state to stdout</b>`systemctl is-active [unit] [[-q|--quiet]]`<br><b>Check whether a user unit is active</b>`systemctl is-active [unit] --user`


title: TLDR
content:
<b>Show the manual page for a specific unit</b>`systemctl help [unit]`<br><b>Show the manual pages for multiple units</b>`systemctl help [unit1 unit2 ...]`<br><b>Show the manual page for a user unit</b>`systemctl help [unit] --user`<br><b>Show the manual page without a pager (all at once)</b>`systemctl help [unit] --no-pager`<br><b>Show the manual page for the unit of a process by PID</b>`systemctl help [pid]`


title: PARAMETERS
content:
<b><i>N/A</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>'pacini' is not a recognized standard Linux command, so no standard parameters or options are defined.</i><br><br>


title: DESCRIPTION
content:
The command 'pacini' does <b>not</b> appear to be a standard utility or program found in common Linux distributions or their core package repositories.  Unlike commands such as <i>ls</i>, <i>grep</i>, or <i>awk</i>, 'pacini' is not documented in typical Linux manual pages and is not part of the GNU Core Utilities or other widely adopted open-source projects. <br><br>If you have encountered 'pacini', it is highly probable that it is:<br><ul><li>A custom-developed script or application specific to a particular system or environment.</li><li>A typographical error for an actual, existing command.</li><li>Part of a highly specialized or proprietary software package not commonly installed.</li><li>An alias defined in a user's shell configuration.</li></ul><br>Without further context, it is impossible to determine its intended function or usage.


title: CAVEATS
content:
The primary caveat is that 'pacini' is not a standard Linux command. Attempting to execute it on most systems will likely result in a 'command not found' error. If it does execute, it is either a custom script on your system, an alias, or part of a very specific installed package, and its behavior would depend entirely on its custom implementation.


title: HOW TO VERIFY A COMMAND'S EXISTENCE
content:
To check if a command exists on your Linux system, you can use:<br><ul><li><b><i>which command_name</i></b>: Shows the full path of the command if it's in your PATH.</li><li><b><i>type command_name</i></b>: Indicates how the command will be interpreted (e.g., alias, keyword, function, builtin, or file).</li><li><b><i>man command_name</i></b>: Attempts to open the manual page for the command. If a page exists, it's a standard command.</li><li><b><i>apropos keyword</i></b>: Searches manual page names and descriptions for a keyword.</li></ul>


title: IDENTIFYING CUSTOM COMMANDS
content:
If 'pacini' works on a specific system, you can try:<br><ul><li><b><i>type pacini</i></b>: To see if it's an alias, function, or points to a file.</li><li><b><i>cat $(which pacini)</i></b>: If it's a script, this might show its source code (requires execution permission and it to be in PATH).</li><li>Consulting system administrators or documentation specific to the environment where 'pacini' was encountered.</li></ul>


title: HISTORY
content:
As 'pacini' is not a standard or widely recognized Linux command, there is no public or documented history of its development, evolution, or widespread usage within the Linux community.


title: TLDR
content:
<b>Show the full parsed configuration file (default: stdin)</b>`pacini [path/to/file]`<br><b>List configured sections</b>`pacini [path/to/file] --section-list`<br><b>Always show directive names even if only one directive is provided</b>`pacini [path/to/file] --verbose`<br><b>Display directives listed in a specific section</b>`pacini [path/to/file] --section [section_name]`<br><b>Display help</b>`pacini --help`<br><b>Display version</b>`pacini --version`


title: PARAMETERS
content:
<b><i>PATTERN...</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more shell-style glob patterns used to filter the output. Only unit files whose names match any of the provided patterns will be displayed.<br><br><b><b>--type=</b><i>TYPE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show only unit files of a specific type. Common types include <i>service</i>, <i>socket</i>, <i>target</i>, <i>mount</i>, <i>timer</i>, <i>path</i>, <i>slice</i>, <i>scope</i>, <i>device</i>, <i>automount</i>.<br><br><b><b>--state=</b><i>STATE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show only unit files with a specific install state. Examples include <i>enabled</i>, <i>disabled</i>, <i>static</i>, <i>masked</i>, <i>indirect</i>, <i>generated</i>, <i>bad</i>.<br><br><b><b>--plain</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show output in a plain, unformatted mode suitable for scripting, without column headers or special formatting.<br><br><b><b>--no-pager</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not pipe output into a pager (like <i>less</i>). This is useful for capturing output directly or when the output is short.<br><br><b><b>--full</b>, <b>-l</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not ellipsize unit names in the output; display them in full length.<br><br><b><b>--user</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Operate on the user's systemd instance instead of the system instance. This lists unit files for the current user's services.<br><br><b><b>--system</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Operate on the system systemd instance (this is the default behavior).<br><br>


title: DESCRIPTION
content:
The <b>systemctl list-unit-files</b> command provides a comprehensive overview of all unit files known to the systemd init system. Unlike <i>systemctl list-units</i> which shows the runtime status of active units, <b>list-unit-files</b> focuses on the <i>install configuration</i> of unit files, indicating whether they are enabled, disabled, static, masked, or in other states that determine their behavior during system startup.<br><br>The output typically presents two columns: the unit file name (e.g., <i>nginx.service</i>, <i>multi-user.target</i>, <i>timers.target</i>) and its corresponding state. This state signifies whether the unit is configured to start automatically on boot, if it's manually managed, or if it's completely prevented from starting. Administrators frequently use this command to quickly audit the autostart configuration of services, sockets, timers, and other systemd components, facilitating system management and troubleshooting.<br><br>Understanding these states is crucial for effective systemd management. For instance, an 'enabled' service will attempt to start at boot, whereas a 'disabled' one will not. A 'masked' unit is critically important as it prevents the service from starting under any circumstances, even manually, by linking it to <i>/dev/null</i>. This command is an indispensable tool for maintaining control over the system's startup processes and ensuring desired services are correctly configured.


title: CAVEATS
content:
<ul><li>The output of <b>list-unit-files</b> displays the <i>install state</i> of a unit file, not its current <i>runtime state</i>. A service can be 'enabled' but currently 'inactive' if it failed to start, or 'disabled' but currently 'active' if manually started.</li><li>Units with the 'masked' state are completely disabled and cannot be started manually or automatically until they are 'unmasked'. This state is achieved by creating a symlink from the unit file to <i>/dev/null</i>.</li><li>'Static' units are typically dependencies of other units or specific system components (like mount units) and cannot be directly enabled or disabled. Their state is managed implicitly.</li><li>The 'generated' state indicates unit files created dynamically by systemd generators (e.g., from <i>/etc/fstab</i> to generate mount units). These are not directly manageable via <b>enable/disable</b>.</li><li>Accessing system unit files usually requires root privileges or appropriate permissions.</li></ul>


title: UNDERSTANDING UNIT FILE STATES
content:
The second column of the output, the unit file state, is critical: <br><ul><li><b>enabled</b>: The unit is configured to start automatically at boot time.</li><li><b>disabled</b>: The unit is not configured to start automatically at boot.</li><li><b>static</b>: The unit cannot be enabled or disabled directly; it's typically a dependency or a unit that doesn't provide the <i>[Install]</i> section.</li><li><b>masked</b>: The unit is completely disabled and cannot be started, even manually. This is done by symlinking the unit file to <i>/dev/null</i>.</li><li><b>indirect</b>: The unit is enabled through an alias or another unit's dependency.</li><li><b>generated</b>: The unit file was dynamically generated by <i>systemd</i> at runtime or boot (e.g., from <i>/etc/fstab</i>).</li><li><b>bad</b>: The unit file contains errors or is otherwise invalid.</li></ul>


title: DIFFERENCE FROM `LIST-UNITS`
content:
It's important to distinguish <b>list-unit-files</b> from <i>systemctl list-units</i>. <b>list-unit-files</b> shows the <i>persistent configuration</i> (whether a service is set to start on boot), whereas <i>list-units</i> shows the <i>current runtime status</i> of units (whether they are loaded, active, running, etc.). A unit file can be 'enabled' but currently 'inactive' (e.g., if it failed to start), or 'disabled' but 'active' (if manually started). Both commands are essential for different aspects of system monitoring and management.


title: HISTORY
content:
The <b>systemctl</b> command and its <b>list-unit-files</b> subcommand are integral parts of the <i>systemd</i> project, which was initially released in 2010. <i>systemd</i> was designed to replace the traditional Unix <i>SysVinit</i> and <i>Upstart</i> init systems on Linux, aiming for faster boot times and more robust service management. <b>systemctl</b> quickly became the primary interface for interacting with the <i>systemd</i> manager. The <b>list-unit-files</b> command was a fundamental component from early versions, providing system administrators with an essential tool for auditing and managing the autostart configuration of services, reflecting <i>systemd</i>'s focus on granular control over system components. Its functionality has remained largely consistent, evolving with minor enhancements to filtering and output options.


title: SEE ALSO
content:
systemctl(1), systemd(1), systemctl enable(8), systemctl disable(8), systemctl mask(8), systemctl unmask(8), systemctl list-units(1), systemctl status(1), systemd.unit(5), systemd.service(5)


title: TLDR
content:
<b>List installed unit files and their states</b>`systemctl list-unit-files`<br><b>Filter by state</b>`systemctl list-unit-files --state [enabled|disabled|static|...]`<br><b>Filter by unit type</b>`systemctl list-unit-files [[-t|--type]] [service|socket|timer|...]`<br><b>Filter by a name pattern</b>`systemctl list-unit-files '[sshd*]'`<br><b>Print output directly to stdout</b>`systemctl list-unit-files --no-pager`<br><b>Print output without headers or footers</b>`systemctl list-unit-files --no-legend`


title: SYNOPSIS
content:
<b>chcat</b> [-d <i>&lt;source_filename&gt;</i>] [-c <i>&lt;catalog_name&gt;</i>] <i>&lt;output_catalog_file&gt;</i>


title: PARAMETERS
content:
<b>-d <i>&lt;source_filename&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to the message definition source file, which contains the human-readable messages to be compiled into the catalog. This file defines the messages, their sets, and numbers.<br><br><b>-c <i>&lt;catalog_name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides an internal name for the catalog. This name can be used by applications to identify and load the specific message catalog from the binary file.<br><br><b><i>&lt;output_catalog_file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the binary message catalog file that will be created or updated by the command. This is the file applications will read at runtime to retrieve localized messages.<br><br>


title: DESCRIPTION
content:
The <b>chcat</b> command, part of the <i>libxcatalog</i> suite, is a utility designed for managing X/Open-style message catalogs used in application internationalization (i18n). Its primary function is to compile a message definition source file into a binary message catalog or to update an existing catalog. This process involves taking human-readable message definitions (often with <b>.msg</b> or similar extensions) and converting them into a format that can be efficiently accessed by applications at runtime using functions like <i>catgets</i>. While conceptually similar to <b>gencat</b>, <b>chcat</b> offers specific functionalities within the <i>libxcatalog</i> framework. It is not a standard utility found on most GNU/Linux distributions by default and typically requires the installation of <i>libxcatalog</i>.


title: CAVEATS
content:
The <b>chcat</b> command is <i>not</i> a standard GNU/Linux utility and is generally not found on most systems by default. It is specifically part of the <i>libxcatalog</i> project. Its primary use is in a niche context of X/Open message catalog development for internationalization, and its functionality might be confused with more common tools like <b>gencat</b> or file permission commands like <b>chmod</b>.


title: INTERNATIONALIZATION (I18N)
content:
<i>Internationalization (i18n)</i> is the process of designing a software application so that it can be adapted to various languages and regions without engineering changes. Message catalogs, managed by tools like <b>chcat</b>, are a key component of this, allowing all user-visible text and messages to be stored externally in a localized manner.


title: X/OPEN MESSAGE CATALOGS
content:
The <b>chcat</b> command operates on message catalogs conforming to the <i>X/Open Portability Guide (XPG)</i> standards. These standards define the format and access methods for message catalogs, ensuring a consistent approach to application localization across different Unix-like environments. These catalogs are typically binary files containing messages organized by set and message number.


title: HISTORY
content:
The <b>chcat</b> utility's history is intertwined with the development of the <i>libxcatalog</i> project, which emerged to provide an implementation of X/Open-style message catalog functionalities on various Unix-like systems. Its purpose is rooted in the broader efforts to standardize and facilitate application internationalization (i18n) since the early days of computing, allowing software to adapt to diverse language and regional preferences.


title: TLDR
content:
<b>List all available categories</b>`sudo chcat [[-L|--list]]`<br><b>Add a category to a file</b>`sudo chcat +[CategoryName] [path/to/file]`<br><b>Remove a category from a file</b>`sudo chcat -- -[CategoryName] [path/to/file]`<br><b>Set specific categories for a file (replacing existing ones)</b>`sudo chcat [CategoryName1,CategoryName2,...] [path/to/file]`<br><b>Display the categories of a file</b>`ls [[-Z|--context]] [path/to/file]`<br><b>Remove all categories from a file</b>`sudo chcat [[-d|--delete]] [path/to/file]`


title: SYNOPSIS
content:
<i><b><code>systemctl get-default</code></b></i><br><i><b><code>systemctl set-default &lt;target-name.target&gt;</code></b></i>


title: PARAMETERS
content:
<b>None specific (for <i>systemctl get-default</i>)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The <i><b><code>systemctl get-default</code></b></i> command does not take any specific options or arguments itself, beyond general <code>systemctl</code> options.<br><br><b><code>&lt;target-name.target&gt;</code> (for <i>systemctl set-default</i>)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the name of the target unit to which <code>default.target</code> should point. This must be a valid target unit file (e.g., <code>graphical.target</code>, <code>multi-user.target</code>, <code>rescue.target</code>).<br><br>


title: DESCRIPTION
content:
The term "systemctl-default" does not refer to a standalone Linux command. Instead, it typically refers to the concept of managing the <i>default systemd target unit</i>, which dictates the state of the system after boot. In systemd, boot states are defined by "targets" (similar to runlevels in older SysVinit systems). The <code>default.target</code> unit is a symbolic link, usually found at <code>/etc/systemd/system/default.target</code>, pointing to the actual target unit the system will attempt to reach during startup. Common targets include <code>multi-user.target</code> (for a console-only, networked system) and <code>graphical.target</code> (for a system with a graphical desktop environment). <br><br>The actual commands used to interact with this default target are: <br><i><b><code>systemctl get-default</code></b></i>: Displays the name of the current default target.<br><i><b><code>systemctl set-default &lt;target-name.target&gt;</code></b></i>: Changes the default target by updating the <code>/etc/systemd/system/default.target</code> symbolic link to point to the specified target. This change takes effect on the next reboot.


title: CAVEATS
content:
It is crucial to understand that "systemctl-default" is not an executable command. Attempting to run it directly will result in a "command not found" error. <br>When using <i><b><code>systemctl set-default</code></b></i>, specifying an incorrect or non-existent target can render your system unbootable into a desired state, potentially dropping you into <code>emergency.target</code> or <code>rescue.target</code>. Always verify the target name and understand its implications before setting it as default. Modifying the default target should be done with caution.


title: <B>WHAT IS <CODE>DEFAULT.TARGET</CODE>?</B>
content:
<code>default.target</code> is a special systemd target unit that serves as a symbolic link. It is the target that <i><b><code>systemd</code></b></i> attempts to activate by default during system startup. By changing where this symbolic link points, you can alter the system's initial boot state without directly modifying systemd's core configuration files.


title: <B>COMMON DEFAULT TARGETS</B>
content:
<ul><li><i><b><code>multi-user.target</code></b></i>: Configures the system for a multi-user environment with network services, but typically without a graphical interface. This is common for servers.</li><li><i><b><code>graphical.target</code></b></i>: Extends <code>multi-user.target</code> by adding a graphical display manager and desktop environment. This is common for workstations and desktop systems.</li><li><i><b><code>reboot.target</code></b></i>: Causes the system to reboot.</li><li><i><b><code>poweroff.target</code></b></i>: Causes the system to power off.</li><li><i><b><code>rescue.target</code></b></i>: Provides a rescue shell, often used for system maintenance or repair.</li><li><i><b><code>emergency.target</code></b></i>: Provides an even more minimal shell environment, typically used when <code>rescue.target</code> is not accessible.</li></ul>


title: HISTORY
content:
The concept of a default boot state is fundamental to operating systems. In Linux, before systemd, this was managed through runlevels in SysVinit. With the adoption of <i><b><code>systemd</code></b></i> as the default init system in most major Linux distributions (e.g., Fedora from 2011, RHEL/CentOS 7, Debian 8, Ubuntu 15.04), runlevels were largely superseded by "targets." The <code>default.target</code> was introduced as the primary mechanism for administrators to define the desired system state post-boot, providing a more descriptive and flexible approach compared to numerical runlevels.


title: SEE ALSO
content:
systemctl(1), systemd.special(7), systemd.target(5), multi-user.target(5), graphical.target(5), rescue.target(5), emergency.target(5)


title: TLDR
content:
<b>Enter default mode as a blocking operation</b>`systemctl default`<br><b>Enter default mode as asynchronous operation</b>`systemctl default --no-block`


title: SYNOPSIS
content:
<I>limine-install</I> [<I>options</I>] <I>device</I><br>The <I>limine-install</I> utility is used to install the Limine bootloader onto a target storage device (disk or partition).


title: PARAMETERS
content:
<b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display help message and exit.<br><br><b>-p, --partition</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Install Limine to a specific partition instead of the entire disk.<br><br><b>-v, --verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print more detailed information during the installation process.<br><br><b>-s, --skip-esp-check</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Skip checking for an EFI System Partition (ESP) on UEFI systems.<br><br><b>-a, --allow-uuid-scan</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable scanning for UUIDs to locate the Limine configuration file.<br><br><b>-E <file>, --efi-file <file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the EFI executable file path for UEFI installations.<br><br><b>-u, --update</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Update an existing Limine bootloader installation.<br><br><b>-C <path>, --config <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify an alternative path to the Limine configuration file (limine.cfg).<br><br><b>-r, --raw</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Install raw bootloader code without an ELF executable (for advanced use).<br><br><b>-F, --force</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Force the installation, overriding potential warnings or issues.<br><br><b><I>device</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The target disk or partition device (e.g., <I>/dev/sda</I>, <I>/dev/nvme0n1p1</I>) where Limine will be installed.<br><br>


title: DESCRIPTION
content:
Limine is a modern, high-performance, and flexible open-source bootloader designed primarily for 64-bit systems. It supports both <b>BIOS</b> and <b>UEFI</b> environments and provides a robust boot protocol for operating systems to interact with. Limine aims to be a next-generation bootloader, offering features like a graphical boot menu, various boot protocols (Limine protocol, Multiboot1/2, Stivale, Stivale2), and a streamlined development experience for OS developers. It emphasizes speed, security, and ease of use, making it a powerful alternative to traditional bootloaders like GRUB.


title: CAVEATS
content:
Installation of Limine requires <b>root privileges</b>. Incorrect usage of <I>limine-install</I> can lead to data loss or an unbootable system. Limine's runtime behavior is configured via a <I>limine.cfg</I> file, not command-line options at boot. Users should be familiar with bootloader concepts and partition schemes (MBR/GPT, BIOS/UEFI, ESP).


title: LIMINE BOOT PROTOCOL
content:
Limine introduces its own clean and well-defined boot protocol. This protocol streamlines the communication between the bootloader and the operating system kernel, enabling efficient data transfer and system initialization without the burden of legacy standards, facilitating easier kernel development.


title: CONFIGURATION FILE (<I>LIMINE.CFG</I>)
content:
The behavior of the Limine bootloader, including boot entries, kernel paths, modules, boot arguments, timeouts, and graphical settings, is defined in a text-based configuration file named <I>limine.cfg</I>. This file is typically located at the root of the boot partition and uses a straightforward syntax.


title: SUPPORTED BOOT PROTOCOLS
content:
Beyond its native Limine protocol, the bootloader offers extensive compatibility by supporting other widely used protocols such as <b>Multiboot1/2</b> and <b>Stivale/Stivale2</b>. This broad support allows Limine to boot a wide variety of existing operating systems and custom kernels.


title: HISTORY
content:
Limine was created by 'minio' as a modern, high-performance alternative to existing bootloaders like GRUB. Its development focused on providing a clean, modular codebase and a robust boot protocol, particularly beneficial for hobby OS developers. Over time, it has evolved into a feature-rich bootloader supporting a wide range of hardware and boot standards, distinguishing itself with a fresh design and emphasis on speed and flexibility.


title: SEE ALSO
content:
grub(8) - GRand Unified Bootloader, syslinux(8) - A collection of lightweight bootloaders, refind(8) - An EFI boot manager


title: TLDR
content:
<b>Install Limine to an MBR-partitioned disk</b>`limine bios-install [/dev/sdX]`<br><b>Install Limine to a GPT-partitioned disk with a specific BIOS boot partition</b>`limine bios-install [/dev/sdX] [partition_number]`<br><b>Install Limine to a disk image file</b>`limine bios-install [path/to/image.iso]`<br><b>Install Limine for modern UEFI systems (requires the limine-entry-tool package)</b>`limine-install`<br><b>Update boot entries after a kernel upgrade (requires the limine-entry-tool package)</b>`limine-update`<br><b>Scan for other operating systems to add to the boot menu (requires the limine-entry-tool package)</b>`limine-scan`


title: TLDR
content:
<b>Search for the package and reset the properties of a file</b>`pacrepairfile [path/to/file] --package`<br><b>Reset a file quietly</b>`pacrepairfile [package_name] --quiet --package`<br><b>Reset specific file properties (mode, owner UID, group GID, or modification time)</b>`pacrepairfile [package_name] --[mode|gid|mtime|uid] --package`<br><b>Display help</b>`pacrepairfile --help`<br><b>Display version</b>`pacrepairfile --version`


title: TLDR
content:
<b>Perform a basic repair on a specific package</b>`pacrepairdb [package_name]`<br><b>Update the database entries without extracting or removing any packages</b>`pacrepairdb [package_name] --dbonly`<br><b>Display the packages to be repaired and the cache packages to be used without making any changes</b>`pacrepairdb [package_name] --print-only`<br><b>Display additional progress and debug information</b>`pacrepairdb [package_name] --verbose`<br><b>Display help</b>`pacrepairdb --help`<br><b>Display version</b>`pacrepairdb --version`


title: TLDR
content:
<b>Open a PDF file</b>`evince [path/to/file.pdf]`<br><b>Open multiple documents</b>`evince [file1.pdf file2.pdf ...]`<br><b>Open in fullscreen mode</b>`evince [[-f|--fullscreen]] [path/to/file.pdf]`<br><b>Open in presentation mode</b>`evince [[-s|--presentation]] [path/to/file.pdf]`<br><b>Open a specific page number</b>`evince [[-i|--page-index]] [5] [path/to/file.pdf]`


title: SYNOPSIS
content:
<b>pulseaudio-ctl</b> [<i>OPTIONS</i>] <i>COMMAND</i> [<i>ARGUMENTS</i>]<br><br><b>Examples:</b><br>pulseaudio-ctl up<br>pulseaudio-ctl --volume-step=2 down<br>pulseaudio-ctl mute<br>pulseaudio-ctl set 50<br>pulseaudio-ctl default-sink list


title: PARAMETERS
content:
<b>up</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Increases the master volume of the default sink by the specified step (default 5%).<br><br><b>down</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Decreases the master volume of the default sink by the specified step (default 5%).<br><br><b>mute</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Toggles the mute state of the default sink.<br><br><b>set <i><volume></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the master volume of the default sink to a specific percentage (e.g., 'set 75').<br><br><b>stat</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the current volume, mute status, and default sink/source information.<br><br><b>default-sink [list|<i><name></i>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists available sinks or sets the default sink to the specified <i><name></i> or ID.<br><br><b>default-source [list|<i><name></i>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists available sources or sets the default source to the specified <i><name></i> or ID.<br><br><b>pactl <i><arguments></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Passes raw <i><arguments></i> directly to the underlying `pactl` command for advanced control.<br><br><b>--volume-step=<i><percentage></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the volume increment/decrement step for 'up' and 'down' commands (default is 5%).<br><br><b>--volume-max=<i><percentage></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the maximum allowed volume percentage (default is 100%). Prevents over-amplification.<br><br><b>--min-volume=<i><percentage></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the minimum allowed volume percentage (default is 0%).<br><br><b>--id=<i><id></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the PulseAudio sink or source ID to operate on instead of the default.<br><br><b>--alsa-card=<i><name></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the ALSA card name to operate on. Requires mapping to a PulseAudio sink/source.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the help message and exits.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version information and exits.<br><br>


title: DESCRIPTION
content:
<b>pulseaudio-ctl</b> is a convenient command-line tool designed for easily managing PulseAudio sound servers. It simplifies common audio tasks such as adjusting the master volume, muting/unmuting output, and switching default audio devices. Unlike directly using <i>pactl</i>, <b>pulseaudio-ctl</b> provides a more user-friendly interface with concise commands for everyday audio manipulation. It's particularly useful for scripting, keyboard shortcuts, or terminal-based environments where graphical volume mixers are not available or preferred.<br><br>The tool intelligently handles volume increments/decrements, prevents over-amplification beyond configurable limits, and can operate on specific sinks or sources. It acts as a wrapper around <i>pactl</i>, abstracting away much of its complexity for typical use cases.


title: CAVEATS
content:
<b>pulseaudio-ctl</b> relies on the PulseAudio server being active and accessible. It primarily controls the <i>default</i> sink or source unless explicitly specified with `--id` or `--alsa-card`. Advanced PulseAudio features like per-application volume or specific stream manipulation are better handled directly by <i>pactl</i> or graphical mixers. Its functionality is inherently limited by the capabilities of the underlying <i>pactl</i> utility.


title: <I>SCRIPTING AND KEYBOARD SHORTCUTS</I>
content:
Due to its straightforward syntax, <b>pulseaudio-ctl</b> is an excellent tool for integration into shell scripts or for assigning to global keyboard shortcuts. For example, <code>bindsym XF86AudioRaiseVolume exec pulseaudio-ctl up</code> can be used in window managers like i3wm or Sway to control volume with media keys without complex scripting.


title: <I>DEFAULT DEVICE CONTROL</I>
content:
The <b>default-sink</b> and <b>default-source</b> commands are particularly useful for users with multiple audio devices (e.g., headphones and speakers) who frequently need to switch their primary output or input without opening a graphical sound settings panel, enhancing workflow efficiency.


title: HISTORY
content:
<b>pulseaudio-ctl</b> emerged as a user-friendly wrapper script to simplify interactions with the PulseAudio sound server, which itself gained widespread adoption in Linux distributions in the late 2000s and early 2010s. Its development aimed to provide a more intuitive command-line interface compared to the more verbose <i>pactl</i> or interactive <i>pacmd</i> tools, especially for common tasks like volume control and device switching, making it a popular choice for custom keybindings and terminal workflows.


title: TLDR
content:
<b>Increase volume by 5%</b>`pulseaudio-ctl up`<br><b>Increase volume by a specific amount</b>`pulseaudio-ctl up [amount]`<br><b>Decrease volume by 5%</b>`pulseaudio-ctl down`<br><b>Decrease volume by a specific amount</b>`pulseaudio-ctl down [amount]`<br><b>Set volume to a specific percentage</b>`pulseaudio-ctl set [percentage]`<br><b>Set volume to a specific percentage if the current volume is higher than the provided value</b>`pulseaudio-ctl atmost [percentage]`<br><b>Toggle mute</b>`pulseaudio-ctl mute`<br><b>Toggle microphone mute</b>`pulseaudio-ctl mute-input`


title: PARAMETERS
content:
<b>--all, -a</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show all loaded units, regardless of their active state. By default, only active and 'failed' units are shown.<br><br><b>--legend, -l</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show the legend at the bottom of the output, explaining the column headers.<br><br><b>--no-legend</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not show the legend at the bottom of the output.<br><br><b>--no-pager</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not pipe output into a pager. Useful for scripting or capturing full output.<br><br><b>--full, -f</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not ellipsize unit names or truncate them in any other way in the output.<br><br><b>--output=FORMAT</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Change the output format for units listed. Possible formats include <i>json</i>, <i>json-pretty</i>, <i>yaml</i>, <i>properties</i>, <i>value</i>, and <i>table</i> (default).<br><br><b>PATTERN...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;One or more glob patterns to filter the units by name. Only units matching these patterns will be displayed.<br><br>


title: DESCRIPTION
content:
The <b>systemctl list-automounts</b> command displays a comprehensive list of all active automount units currently managed by <i>systemd</i>. Automount units are special <i>systemd</i> units ('.automount' files) designed to automatically mount filesystems only when they are first accessed. This 'on-demand' mounting strategy helps reduce boot times and system resource consumption by not mounting all filesystems upfront.<br><br>The output typically includes the unit name, its load state, active state, sub-state, and a descriptive message. This command is crucial for administrators to inspect which filesystems are configured for lazy mounting and their current status, aiding in troubleshooting or verifying system configuration related to network shares, removable media, or infrequently accessed local partitions.


title: CAVEATS
content:
This command only lists automount units managed by <i>systemd</i>. Filesystems mounted manually or via other mechanisms (e.g., <i>/etc/fstab</i> entries without a corresponding <i>.automount</i> unit) will not appear here unless <i>systemd</i> has explicitly created and manages an automount point for them.<br><br>The 'active' state of an automount unit usually means it's ready to trigger a mount, not that the filesystem is currently mounted. The actual mount unit will only become active when the automount point is accessed.


title: WHAT IS AN AUTOMOUNT UNIT?
content:
An automount unit (<i>.automount</i>) defines an automount point in the filesystem hierarchy. Instead of mounting a filesystem at boot, the automount unit sets up a trigger. When a process attempts to access the directory specified by the automount point, <i>systemd</i> intercepts this access and then dynamically mounts the associated filesystem (<i>.mount</i> unit). This significantly improves boot times and reduces resource usage for infrequently accessed resources like network shares (NFS, Samba) or removable media.


title: RELATIONSHIP WITH .MOUNT UNITS
content:
Every <i>.automount</i> unit typically has a corresponding <i>.mount</i> unit. The <i>.automount</i> unit is responsible for <i>when</i> the mount happens (on-demand), while the <i>.mount</i> unit defines <i>how</i> the filesystem is mounted (source, target, type, options). <b>list-automounts</b> shows the automount triggers, while <b>list-mounts</b> shows the currently active mounts.


title: HISTORY
content:
The <b>list-automounts</b> command is part of the <b>systemctl</b> utility, which is the primary control interface for <i>systemd</i>. <i>systemd</i> was first introduced in Fedora 15 in 2011 and has progressively replaced the traditional SysVinit and Upstart systems across most major Linux distributions. As <i>systemd</i> took over the management of system services, mounts, sockets, and other resources, commands like <b>list-automounts</b> became essential for managing and inspecting the new declarative unit-based system. It provides a modern and unified way to interact with <i>systemd's</i> automount capabilities, which were previously managed by tools like <i>autofs</i>.


title: SEE ALSO
content:
systemctl(1), systemctl list-units(1), systemctl list-mounts(1), systemd.automount(5), mount(8), fstab(5)


title: TLDR
content:
<b>List automount units currently in memory</b>`systemctl list-automounts`<br><b>List all automount units, including inactive ones</b>`systemctl list-automounts [[-a|--all]]`<br><b>Filter automount units by state</b>`systemctl list-automounts --state [active|inactive|failed|...]`<br><b>Filter automount units by name pattern</b>`systemctl list-automounts [pattern1 pattern2 ...]`


title: PARAMETERS
content:
<b><b>-b</b>, <b>--bytes</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print the memory sizes in bytes rather than human-readable format. This can be useful for scripting or precise calculations.<br><br><b><b>-J</b>, <b>--json</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use the JSON output format. This allows for easy parsing of <b>lsmem</b>'s output by other programs and scripts.<br><br><b><b>-o</b> <i>&lt;list&gt;</i>, <b>--output</b> <i>&lt;list&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify which output columns to print. The <i>&lt;list&gt;</i> is a comma-separated list of column names. Use <b>--help</b> to see a list of all supported columns. Common columns include <i>RANGE</i>, <i>SIZE</i>, <i>STATE</i>, <i>BLOCK</i>, <i>NODE</i>, and <i>REMOVABLE</i>.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a help message and exit. This provides a quick reference to the command's options and usage.<br><br><b><b>-V</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display version information and exit. This shows the version of <b>lsmem</b> being used.<br><br>


title: DESCRIPTION
content:
The <b>lsmem</b> command, part of the <i>util-linux</i> package, provides a comprehensive overview of the system's memory architecture. It lists the ranges of available memory, their current online status, and key attributes such as memory block size, total available memory, and information related to NUMA (Non-Uniform Memory Access) nodes.<br><br><b>lsmem</b> gathers its information by reading data from the <i>/sys/devices/system/memory/</i> directory, offering a structured and machine-readable view of the memory topology. This is particularly useful for administrators and developers who need to understand memory layout, identify memory hotplug capabilities, or analyze NUMA node configurations without parsing raw kernel output or less structured files like <i>/proc/meminfo</i>.


title: CAVEATS
content:
The information presented by <b>lsmem</b> is derived from the kernel's view of the memory subsystem, primarily via the <i>/sys</i> filesystem. Its accuracy and detail depend on the kernel's support for memory hotplug, NUMA, and proper hardware reporting. Systems without advanced memory management features might show less detailed output. Memory ranges might not always appear contiguous due to hardware or virtualization configurations.


title: OUTPUT COLUMNS
content:
When using the <b>--output</b> option, <b>lsmem</b> can display various columns providing specific details about memory regions. Key columns include:<br><br><I>RANGE</I>: The start and end address of the memory range.<br><I>SIZE</I>: The size of the memory range.<br><I>STATE</I>: The current state of the memory range (e.g., 'online', 'offline').<br><I>BLOCK</I>: The memory block size.<br><I>NODE</I>: The NUMA node to which the memory range belongs.<br><I>REMOVABLE</I>: Indicates if the memory is hot-removable.


title: NUMA AWARENESS
content:
One of <b>lsmem</b>'s significant features is its NUMA awareness. It helps in understanding how memory is distributed across different NUMA nodes, which is critical for optimizing performance in multi-processor systems. By showing which memory ranges belong to which NUMA node, administrators and developers can make informed decisions about process affinity and memory allocation strategies to reduce latency and improve resource utilization.


title: HISTORY
content:
<b>lsmem</b> is a relatively modern addition to the <i>util-linux</i> project, which provides a large set of essential system utilities for Linux. It was developed to address the need for a more structured and machine-readable way to present memory topology information, especially in light of increasing adoption of NUMA architectures and memory hotplug capabilities in server environments. Its design focuses on leveraging the <i>sysfs</i> interface to provide detailed memory block and node information that is crucial for optimizing application performance and managing system resources effectively.


title: TLDR
content:
<b>List memory information</b>`lsmem`<br><b>List memory information in JSON format</b>`lsmem [[-J|--json]]`<br><b>List memory information with size in bytes</b>`lsmem [[-b|--bytes]]`


title: PARAMETERS
content:
<b>daemon-reload</b><br>&nbsp;&nbsp;&nbsp;&nbsp;This is a subcommand for <b>systemctl</b> that instructs the <i>systemd</i> manager to re-read all unit files and rebuild its dependency tree. It does not accept additional options or arguments directly.<br><br>


title: DESCRIPTION
content:
The <b>systemctl daemon-reload</b> command instructs the <i>systemd</i> manager to re-read its configuration files from disk, including all unit files (like service files, mount files, socket files, etc.) that define how services and other system resources are managed. This command is crucial after creating new unit files, modifying existing ones, or installing new packages that include <i>systemd</i> unit definitions.<br><br>It <b>does not restart any services</b>; it merely tells <i>systemd</i> to update its internal representation of the available units and their dependencies. After a <i>daemon-reload</i>, subsequent <b>systemctl</b> commands (such as <b>start</b>, <b>stop</b>, <b>enable</b>, <b>disable</b>) will operate on the newly loaded or modified configurations. Without running this command, <i>systemd</i> might continue to use outdated configurations, leading to unexpected behavior or a failure to recognize new services or changes.


title: CAVEATS
content:
<ul><li><b>systemctl daemon-reload</b> only reloads the <i>systemd</i> manager's configuration; it <b>does not restart or stop any running services</b>. If a service's unit file has been modified and you want those changes to take effect for a running service, you <b>must</b> follow <b>daemon-reload</b> with <b>systemctl restart &lt;service&gt;</b> or <b>systemctl try-restart &lt;service&gt;</b>.</li><li>It's possible for <i>systemd</i> to encounter issues during reload if unit files contain syntax errors. While it attempts to gracefully handle errors, it's good practice to validate unit files (e.g., with <b>systemd-analyze verify &lt;unit_file&gt;</b>) before reloading.</li><li>This command typically requires root privileges (or equivalent via <b>sudo</b>) to execute successfully.</li></ul>


title: WHEN TO USE
content:
This command is essential after:<br><i>- Creating a new <i>systemd</i> unit file (e.g., a new service, timer, or mount).</i><br><i>- Modifying an existing <i>systemd</i> unit file (e.g., changing <b>ExecStart</b> path, dependencies, or environment variables).</i><br><i>- Installing a package that includes new or updated <i>systemd</i> unit files.</i><br><i>- Removing a <i>systemd</i> unit file.</i>


title: PERMISSIONS
content:
Running <b>systemctl daemon-reload</b> typically requires administrative privileges. Users will generally execute this command with <b>sudo</b> (e.g., <b>sudo systemctl daemon-reload</b>).


title: HISTORY
content:
The <b>systemctl</b> command is an integral part of <i>systemd</i>, which was introduced in 2010 to replace traditional <i>SysVinit</i> and <i>Upstart</i> init systems in Linux distributions. As <i>systemd</i> gained widespread adoption across major Linux distributions (such as Fedora, RHEL, Debian, Ubuntu, openSUSE, Arch Linux) starting around 2011-2015, <b>systemctl</b> became the de facto standard command-line utility for interacting with the <i>systemd</i> manager. The <b>daemon-reload</b> subcommand has been a fundamental part of <b>systemctl</b> since its inception, addressing the crucial need to dynamically update the manager's view of unit configurations without requiring a full system reboot or a restart of the <i>systemd</i> daemon itself.


title: SEE ALSO
content:
systemctl(1), systemd(1), systemctl enable(1), systemctl start(1), systemctl restart(1), systemctl status(1), journalctl(1)


title: PARAMETERS
content:
<b><b>list</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the current list of all versionlocked packages, showing their full NVR (Name-Version-Release) strings.<br><br><b><b>add</b> <I>package-spec...</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds one or more packages to the versionlock list. Packages can be specified by name (e.g., <i>httpd</i>), or by their full NVR string (e.g., <i>kernel-4.18.0-372.9.1.el8.x86_64</i>), optionally including epoch and architecture. Globs are also supported (e.g., <i>kernel-*</i>).<br><br><b><b>exclude</b> <I>package-spec...</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;An alias for the <b>add</b> command, effectively adding packages to be excluded from updates. It works identically to <b>add</b>.<br><br><b><b>delete</b> <I>package-spec...</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes one or more packages from the versionlock list. Accepts the same package specification format as <b>add</b>.<br><br><b><b>remove</b> <I>package-spec...</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;An alias for the <b>delete</b> command.<br><br><b><b>clear</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Clears the entire versionlock list, removing all previously added entries. Use with caution as this will unblock all previously locked packages.<br><br><b><b>status</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows whether the <b>versionlock</b> DNF plugin is currently enabled or disabled.<br><br><b><b>enable</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables the <b>versionlock</b> DNF plugin. Once enabled, DNF will respect the versionlock list during updates and other package operations.<br><br><b><b>disable</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables the <b>versionlock</b> DNF plugin. When disabled, DNF will ignore the versionlock list, and packages will be updated normally, regardless of any versionlock entries.<br><br><b><I>package-spec</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A package specification, which can be a simple package name (e.g., <i>httpd</i>), or a full NVR (Name-Version-Release) string (e.g., <i>kernel-4.18.0-372.9.1.el8.x86_64</i>), or a glob (e.g., <i>kernel-*</i>). This is used with <b>add</b>, <b>exclude</b>, <b>delete</b>, and <b>remove</b> commands.<br><br>


title: DESCRIPTION
content:
The <b>dnf-versionlock</b> command is a plugin for DNF (Dandified YUM) that allows administrators to prevent specific packages from being updated to newer versions. This is crucial for maintaining system stability, ensuring application compatibility, or adhering to specific software requirements. When a package is "versionlocked," DNF's <b>update</b> or <b>upgrade</b> commands will ignore newer versions of that package, effectively keeping the installed version intact. It operates by maintaining a list of package name and version specifications that DNF should not touch. This command replaces the functionality previously offered by <b>yum-versionlock</b> for YUM-based systems. It supports various operations like adding, deleting, listing, and clearing versionlocks, as well as enabling or disabling the plugin itself.


title: CAVEATS
content:
<ul><li><b>Security Implications:</b> Versionlocking can prevent critical security updates for locked packages. Use with caution and regularly review locked packages to avoid known vulnerabilities.</li><li><b>Dependency Conflicts:</b> If a package is locked, its dependencies might also need to be locked to prevent DNF from attempting to remove the locked package due to dependency conflicts during updates.</li><li><b>Specificity:</b> Be precise with package specifications. <i>dnf versionlock add kernel-*</i> will lock all kernel packages, while <i>dnf versionlock add kernel-4.18.0-372.9.1.el8</i> locks a specific kernel version.</li><li><b>Plugin Status:</b> The <b>versionlock</b> plugin must be enabled for the locks to take effect. Always check with <i>dnf versionlock status</i>.</li></ul>


title: CONFIGURATION FILE
content:
The versionlock entries are typically stored in <i>/etc/dnf/plugins/versionlock.list</i> or a similar location, which is a plain text file. Each line in this file corresponds to a locked package specification. Editing this file directly is possible but using the <b>dnf versionlock</b> commands is recommended.


title: PERSISTENCE
content:
Once a package is versionlocked using <b>dnf versionlock add</b>, the setting persists across reboots and subsequent <b>dnf update</b> operations until explicitly removed using <b>dnf versionlock delete</b> or <b>dnf versionlock clear</b>.


title: HISTORY
content:
The concept of version locking packages has been a critical feature for package managers. In the YUM era, this functionality was provided by the <b>yum-versionlock</b> plugin. With the transition to DNF as the default package manager for Fedora, RHEL 8+, and CentOS Stream 8+, the <b>dnf-versionlock</b> plugin emerged to provide the same essential capability, maintaining compatibility and consistency for system administrators accustomed to YUM's features. It is typically included as part of the <b>dnf-plugins-core</b> package.


title: TLDR
content:
<b>List the current versionlock entries</b>`dnf versionlock`<br><b>Add a versionlock for all available packages matching the spec</b>`dnf versionlock add [package]`<br><b>Add an exclude (within versionlock) for the available packages matching the spec</b>`dnf versionlock exclude [package]`<br><b>Remove any matching versionlock entries</b>`dnf versionlock delete [package]`<br><b>Remove all versionlock entries</b>`dnf versionlock clear`


title: TLDR
content:
<b>Monitor the whole network for state changes</b>`ip [[mo|monitor]]`<br><b>Specify the type to monitor</b>`ip [[mo|monitor]] [link|address|route|neigh|rule|maddress|...]`<br><b>Replay an event file (can be generated with rtmon)</b>`ip [[mo|monitor]] [[f|file]] [path/to/file]`


title: SYNOPSIS
content:
<B>newrole</B> [<I>-r role</I>] [<I>-t type</I>] [<I>-l level</I>] [<I>-c command</I> [<I>arg ...</I>]] [<I>-</I>] [<I>--</I>] [<I>args</I>]


title: PARAMETERS
content:
<b><B>-r</B> <I>role</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the target <I>SELinux role</I> to assume for the new session or command.<br><br><b><B>-t</B> <I>type</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the target <I>SELinux type</I> for the new role's domain. Rarely used directly.<br><br><b><B>-l</B> <I>level</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the target <I>SELinux sensitivity level</I> (e.g., <I>s0:c0.c0</I>) for <I>MLS/MCS</I> systems.<br><br><b><B>-c</B> <I>command</I> [<I>arg ...</I>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Execute a specific <I>command</I> with the new role's security context. If omitted, a new interactive shell is started.<br><br><b><B>-</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Resets the environment variables, similar to a login shell, before starting the new shell or command.<br><br><b><B>--</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Indicates the end of <B>newrole</B> options, allowing subsequent arguments to be passed directly to the command or shell.<br><br><b><I>args</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Arguments to be passed to the new shell or the specified <I>command</I>.<br><br>


title: DESCRIPTION
content:
The <B>newrole</B> command is an essential utility in <I>Security-Enhanced Linux (SELinux)</I> environments. It allows a logged-in user to assume a different <I>SELinux role</I>, thereby changing their security context for the current session. This capability is critical for fine-grained privilege management, enabling users to perform specific tasks with elevated or restricted permissions defined by a particular role. When a user executes <B>newrole</B>, <I>SELinux policy</I> checks if the user is authorized to transition to the specified role. If authorized, a new shell or process is started under the security context of the new role. This provides a secure way to compartmentalize tasks, ensuring that actions are performed with the minimum necessary privileges, enhancing the overall security posture of the system. It is often used by system administrators to temporarily switch to administrative roles to perform maintenance or configuration tasks without logging in as root.


title: CAVEATS
content:
<B>newrole</B> requires that the <I>SELinux policy</I> explicitly authorizes the user to transition to the specified role.<br>The user might be prompted for their password if <I>PAM</I> is configured for authentication.<br>It only changes the <I>SELinux context</I>, not the user ID (<I>UID</I>) or group ID (<I>GID</I>).<br>Its functionality is entirely dependent on an active and correctly configured <I>SELinux</I> system.


title: <I>SELINUX</I> CONTEXT
content:
The new <I>SELinux</I> context typically consists of user, role, type, and sensitivity level (e.g., <I>unconfined_u:system_r:system_t:s0</I>). <B>newrole</B> primarily focuses on changing the <I>role</I> component, and potentially the <I>type</I> and <I>level</I>, as defined by policy.


title: <I>PAM</I> INTEGRATION
content:
<B>newrole</B> often uses <I>Pluggable Authentication Modules (PAM)</I> to authenticate users before allowing them to assume a new role. This means users might be prompted for their password even if they are already logged in, adding an extra layer of security.


title: POLICY DEPENDENCE
content:
The success of <B>newrole</B> depends entirely on the <I>SELinux policy</I> loaded on the system. The policy defines which users can assume which roles and what types are associated with those roles. If the policy does not permit a transition, <B>newrole</B> will fail.


title: HISTORY
content:
The <B>newrole</B> command is an integral part of the <I>Security-Enhanced Linux (SELinux)</I> project, which originated from the <I>National Security Agency (NSA)</I>. It was developed as a mandatory access control (<I>MAC</I>) mechanism to enhance the security of Linux systems. <B>newrole</B> specifically emerged as a utility to facilitate <I>role-based access control (RBAC)</I> within the <I>SELinux framework</I>. Its development parallels the broader integration of <I>SELinux</I> into mainstream Linux distributions, particularly <I>Fedora</I> and <I>Red Hat Enterprise Linux</I>, where it became a standard tool for administrators managing security contexts and user privileges in an <I>SELinux</I>-enabled environment. Its design reflects the need for granular control over processes and resources, allowing users to transition between predefined security roles without altering their actual user ID, thus maintaining a clear separation of duties and improving auditability.


title: SEE ALSO
content:
<B>su</B>(1), <B>sudo</B>(8), <B>runcon</B>(1), <B>chcon</B>(1), <B>semanage</B>(8), <B>getcon</B>(1)


title: TLDR
content:
<b>Start a new shell with a specific SELinux role</b>`newrole [[-r|--role]] [role_name]`<br><b>Start a new shell with a specific SELinux type</b>`newrole [[-t|--type]] [type_name]`<br><b>Start a new shell with a specific SELinux level (format: s0-s0:c0.c1023 where levels range from s0 to s15, - indicates level range, categories start with c, : separates level from categories, . indicates category range)</b>`newrole [[-l|--level]] [s0-s0:c0.c1023]`<br><b>Display the current SELinux context</b>`id [[-Z|--context]]`<br><b>Start a new shell with both role and type</b>`newrole [[-r|--role]] [role_name] [[-t|--type]] [type_name]`


title: SYNOPSIS
content:
<code>limine-scan [<i>OPTIONS</i>...] [<i>DEVICE</i>...]</code><br>Example: <code>limine-scan --verbose /dev/sda</code>


title: PARAMETERS
content:
<b>--help, -h</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a help message and exit.<br><br><b>--version, -V</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display version information and exit.<br><br><b>--verbose, -v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Produce more detailed and verbose output, including scan progress and additional findings.<br><br><b>--no-colour, --no-color</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disable coloured output, useful for terminals that do not support ANSI escape codes or for logging.<br><br><b><i>DEVICE</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify one or more block devices (e.g., <b>/dev/sda</b>, <b>/dev/nvme0n1</b>) to scan. If no devices are specified, <code>limine-scan</code> will attempt to scan all available devices on the system.<br><br>


title: DESCRIPTION
content:
<code>limine-scan</code> is a utility distributed as part of the <i>Limine bootloader</i> suite. Its primary function is to scan all available storage devices and partitions for the presence of the <i>Limine bootloader configuration file</i>, typically named <b>limine.cfg</b>. This command is instrumental for users and system administrators in verifying whether a Limine installation is correctly configured and discoverable by the bootloader itself. When run, it probes various file systems on block devices, searching for the specific configuration file. Upon discovery, it reports the device, partition, and exact path where the <b>limine.cfg</b> file was found. This diagnostic capability is crucial during the installation, debugging, or troubleshooting phases of a Limine-based boot setup, ensuring that the bootloader can locate its instructions and present boot entries to the user. It helps confirm that the bootloader has access to its configuration, which is essential for a successful boot process.


title: CAVEATS
content:
<i>Privilege Requirements</i>: <code>limine-scan</code> often requires root privileges (e.g., by using <code>sudo</code>) to access raw block devices and perform a thorough scan of all partitions and file systems.<br><i>Scope Limitation</i>: This command is specifically designed for the Limine bootloader ecosystem. While it scans file systems, its output is only relevant for systems utilizing or intending to utilize Limine as their bootloader.<br><i>Output Variability</i>: The output will significantly vary depending on the system's disk layout, the number of installed Limine configurations, and the specified verbosity level.


title: CORE FUNCTIONALITY
content:
The command's core functionality revolves around systematically probing block devices and their partitions for file systems, then searching within those file systems for the <b>limine.cfg</b> file. This file contains crucial directives for the Limine bootloader, defining available boot entries, kernel paths, and other boot-time parameters. Finding this file is paramount for Limine to correctly present boot options to the user.


title: USE CASES
content:
Common use cases include verifying a new Limine installation, diagnosing why Limine might not be presenting expected boot entries, or confirming the location of a specific <b>limine.cfg</b> when multiple configurations might exist on a system. It serves as a rapid check to ensure that the bootloader's configuration is where it needs to be and is accessible.


title: HISTORY
content:
The <code>limine-scan</code> utility is an integral part of the <i>Limine bootloader project</i>, which began its development as a modern, open-source bootloader aiming for simplicity, flexibility, and broad hardware compatibility. <code>limine-scan</code> was developed alongside the core bootloader to provide a crucial diagnostic and verification tool for users. Its existence reflects the need for an easy way to confirm the discoverability of the <b>limine.cfg</b> file, which is central to Limine's operation. As Limine gained traction in custom OS development, bare-metal programming, and among enthusiasts seeking alternatives to GRUB, the <code>limine-scan</code> command became an essential component for ensuring correct installation and troubleshooting boot issues, evolving with the bootloader's feature set.


title: TLDR
content:
<b>Search for all SELinux AVC denial events</b>`sudo ausearch [[-m|--message]] avc`<br><b>Search for events related to a specific executable</b>`sudo ausearch [[-c|--comm]] [httpd]`<br><b>Search for events from a specific user</b>`sudo ausearch [[-ui|--uid]] [1000]`<br><b>Search for events in the last 10 minutes</b>`sudo ausearch [[-ts|--start]] recent`<br><b>Search for failed login attempts</b>`sudo ausearch [[-m|--message]] user_login [[-sv|--success]] no`<br><b>Search for events related to a specific file</b>`sudo ausearch [[-f|--file]] [path/to/file]`<br><b>Display results in raw format for further processing</b>`sudo ausearch [[-m|--message]] avc --raw`


title: TLDR
content:
<b>List available drivers</b>`mhwd [[-l|--list]]`<br><b>List installed drivers</b>`mhwd [[-li|--listinstalled]]`<br><b>Install a driver</b>`mhwd [[-i|--install]] [pci|usb] [driver_name]`<br><b>Remove a driver</b>`mhwd [[-r|--remove]] [pci|usb] [driver_name]`<br><b>Display detailed information about detected hardware</b>`mhwd [[-l|--list]] [[-d|--detail]]`<br><b>Automatically install best available driver for the detected graphics card</b>`mhwd [[-a|--auto]] pci [free|nonfree] 0300`


title: PARAMETERS
content:
<b><i>&lt;limine_config_file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the Limine configuration file to be enrolled and made bootable.<br><br><b>-d <i>&lt;ESP_DIR&gt;</i>, --esp-directory=<i>&lt;ESP_DIR&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the mount point of the EFI System Partition (ESP). This is crucial for creating or updating EFI boot entries.<br><br><b>-o <i>&lt;NAME&gt;</i>, --entry-name=<i>&lt;NAME&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the display name for the Limine boot entry as it appears in the system's boot menu.<br><br><b>-t <i>&lt;SECONDS&gt;</i>, --timeout=<i>&lt;SECONDS&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the timeout in seconds for the boot menu before a default entry is automatically selected.<br><br><b>-v, --verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, providing more detailed information and debug messages about the enrollment process.<br><br><b>--append-cmdline=<i>&lt;ARGS&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Appends additional kernel command-line arguments to the boot entry, which will be passed to the kernel upon boot.<br><br><b>--efi-only</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Instructs the command to only manage EFI boot entries, skipping any interaction with GRUB configuration.<br><br><b>--grub-only</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Instructs the command to only manage GRUB configuration, skipping any interaction with EFI boot entries.<br><br><b>--bootloader-id=<i>&lt;ID&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the Bootloader ID for EFI boot entries, useful for systems with multiple bootloaders or for specific systemd-boot setups.<br><br>


title: DESCRIPTION
content:
The <b>limine-enroll-config</b> command is a utility within the Limine bootloader project designed to simplify the process of making a Limine configuration file bootable on a system. Instead of manually editing bootloader configuration files (like <i>/boot/grub/grub.cfg</i>) or using low-level tools (like <b>efibootmgr</b>), this command automates the integration of a specified Limine configuration file into the system's boot environment.<br><br>It handles the creation or modification of boot entries to point to the Limine bootloader, which in turn reads the provided configuration file. This includes support for various boot mechanisms, such as updating GRUB entries, creating EFI System Partition (ESP) boot entries, or interacting with <b>systemd-boot</b>. Its primary goal is to ensure that a Limine installation can correctly find and use a desired configuration, streamlining setup and reducing the potential for manual errors.


title: CAVEATS
content:
This command typically requires root privileges (or sudo) to modify system boot entries and files within the EFI System Partition or GRUB configuration. Incorrect usage or a malformed Limine configuration file can lead to an unbootable system. It is designed for systems where Limine is already installed or intended to be the primary bootloader, and its effects on other bootloaders should be understood before execution.


title: CONFIGURATION FILE FORMAT
content:
The <b>limine-enroll-config</b> command expects the provided <i>&lt;limine_config_file&gt;</i> to adhere to Limine's specific configuration syntax. This file defines boot entries, kernel paths, initramfs, command-line arguments, and other boot-time parameters. Users should consult the Limine documentation for the correct syntax and available directives.


title: BOOTLOADER INTERACTION
content:
While <b>limine-enroll-config</b> itself is a Limine utility, it interacts with existing boot managers on the system. For UEFI systems, it modifies EFI variables via tools like <b>efibootmgr</b>. For systems using GRUB, it generates or modifies GRUB configuration snippets to chainload Limine. Understanding the underlying boot mechanism of your system is beneficial when using this command.


title: HISTORY
content:
Limine is a modern, lightweight, and open-source bootloader developed with a focus on simplicity and speed. The <b>limine-enroll-config</b> utility emerged as a crucial component to streamline the integration of Limine into diverse boot environments. Its development reflects a need to automate the often complex and error-prone process of manually configuring boot entries across different systems (UEFI, BIOS, GRUB, systemd-boot), making Limine more accessible and user-friendly for system administrators and users alike since its inception.


title: TLDR
content:
<b>Embed a config file's BLAKE2B hash into the Limine EFI executable</b>`limine-enroll-config [path/to/BOOTX64.EFI] [blake2b_hash]`<br><b>Remove the enrolled hash from the executable, disabling the config integrity check</b>`limine-enroll-config --reset [path/to/BOOTX64.EFI]`<br><b>Display help</b>`limine-enroll-config --help`


title: TLDR
content:
<b>Save all network state changes to a file</b>`sudo rtmon [[f|file]] [path/to/file]`<br><b>Specify the type of change to log</b>`sudo rtmon [[f|file] [link|address|route]`


title: SYNOPSIS
content:
<i><b>`pacfile` is not a standard Linux command.</b> It refers to <b>Proxy Auto-Configuration files</b> (typically ending with the <b>.pac</b> extension), which are JavaScript scripts used by web browsers and network clients to determine proxy settings dynamically. There is no executable `pacfile` program in common Linux distributions.</i>


title: PARAMETERS
content:
<b>N/A</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>As `pacfile` refers to a file type and a concept, not a command, it does not have options or parameters in the traditional sense. Configuration of systems to use a PAC file is done via browser settings, system-wide network configurations (e.g., NetworkManager), or environment variables.</i><br><br>


title: DESCRIPTION
content:
<i>Proxy Auto-Configuration (PAC) files are crucial components in network environments, particularly for web browsing. A PAC file is a JavaScript file that web browsers and other user agents can use to determine the appropriate proxy server for fetching a given URL. Instead of manually configuring proxy settings for various destinations, an operating system or browser can be pointed to a PAC file URL. The browser then executes the JavaScript function `FindProxyForURL(url, host)` defined within the PAC file for every request. This function returns a string specifying which proxy to use (e.g., `PROXY proxy.example.com:8080`), or `DIRECT` to connect to the destination directly. PAC files offer flexibility, allowing administrators to implement complex routing rules, load balancing, and failover logic based on destination hostname, URL, or even time of day. They simplify proxy management in large organizations, ensuring consistent and dynamic proxy usage across all client machines.</i>


title: CAVEATS
content:
<i><b>Not a Command:</b> The most important caveat is that `pacfile` is not an executable Linux command. Any reference to `pacfile` in a command context likely refers to the Proxy Auto-Configuration file specification or the file itself. <br> <b>Security Risks:</b> PAC files are JavaScript, and if sourced from an untrusted location, they can pose significant security risks. Malicious PAC files could redirect traffic, leak information, or be used for phishing attacks. <br> <b>Debugging Difficulty:</b> Debugging issues with PAC files can be challenging, as the logic is executed within the browser or client, and errors might not be immediately apparent. <br> <b>Performance Overhead:</b> For every request, the JavaScript function in the PAC file must be executed, which can introduce a minor performance overhead, though usually negligible in modern systems.</i>


title: HOW PAC FILES WORK
content:
<i>A PAC file contains a single JavaScript function, `FindProxyForURL(url, host)`. When a client (e.g., a web browser) needs to fetch a URL, it calls this function, passing the full URL and the hostname as arguments. The function's return value dictates how the client should proceed: `DIRECT` to connect without a proxy, `PROXY hostname:port` to use a specific proxy server, or `SOCKS hostname:port` for a SOCKS proxy. Multiple proxies can be specified in a comma-separated list for failover. For example, `PROXY proxy1.example.com:8080; PROXY backup.example.com:8080; DIRECT` instructs the client to try `proxy1`, then `backup`, and finally go direct if both fail.</i>


title: EXAMPLE PAC FILE CONTENT
content:
<i>A basic PAC file (`proxy.pac`) might look like this:<br><br><b>function FindProxyForURL(url, host) {</b><br><b>  // Direct connection for local addresses</b><br><b>  if (isPlainHostName(host) ||</b><br><b>      shExpMatch(host, "*.local") ||</b><br><b>      isInNet(dnsResolve(host), "10.0.0.0", "255.0.0.0") ||</b><br><b>      isInNet(dnsResolve(host), "172.16.0.0", "255.240.0.0") ||</b><br><b>      isInNet(dnsResolve(host), "192.168.0.0", "255.255.0.0")) {</b><br><b>    return "DIRECT";</b><br><b>  }</b><br><br><b>  // Use proxy for all other traffic</b><br><b>  return "PROXY proxy.example.com:8080";</b><br><b>}</b><br><br><i>This example demonstrates conditional logic based on hostname and IP ranges, a common use case for PAC files. Standard JavaScript functions like `isPlainHostName`, `shExpMatch`, `isInNet`, and `dnsResolve` are typically provided by the client's PAC parser.</i>


title: HISTORY
content:
<i>The concept of Proxy Auto-Configuration (PAC) files was originally introduced by Netscape Navigator in 1996. It was designed to provide a flexible and centralized way for network administrators to manage proxy settings for a large number of client machines. The specification quickly became a de facto standard, adopted by most major web browsers and operating systems, including Microsoft Internet Explorer, Mozilla Firefox, Google Chrome, and Apple Safari, as well as various Linux desktop environments and network tools. Its longevity stems from its simplicity and the power of JavaScript to define complex proxy logic.</i>


title: TLDR
content:
<b>List all available packages</b>`pacfile [path/to/file_or_directory]`<br><b>Compare database values to the file system</b>`pacfile [path/to/file_or_directory] --check`<br><b>Display help</b>`pacfile --help`<br><b>Display version</b>`pacfile --version`


title: TLDR
content:
<b>List all login mappings</b>`sudo semanage login [[-l|--list]]`<br><b>Add a login mapping (map Linux user to SELinux user)</b>`sudo semanage login [[-a|--add]] [[-s|--seuser]] [selinux_user] [linux_username]`<br><b>Delete a login mapping</b>`sudo semanage login [[-d|--delete]] [linux_username]`<br><b>Modify an existing login mapping</b>`sudo semanage login [[-m|--modify]] [[-s|--seuser]] [selinux_user] [linux_username]`<br><b>Add a login mapping with a specific MLS/MCS range</b>`sudo semanage login [[-a|--add]] [[-s|--seuser]] [user_u] [[-r|--range]] [s0-s0:c0.c1023] [linux_username]`<br><b>List only customized login mappings</b>`sudo semanage login [[-l|--list]] [[-C|--locallist]]`


title: SYNOPSIS
content:
limine-entry-tool <I>options</I> <I>EFI_FILE</I><br>limine-entry-tool --ls <I>EFI_FILE</I><br>limine-entry-tool --add <I>NAME</I> <I>PATH</I> <I>EFI_FILE</I><br>limine-entry-tool --rm <I>NAME</I> <I>EFI_FILE</I>


title: PARAMETERS
content:
<b><I>EFI_FILE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the Limine EFI binary (e.g., <I>BOOTX64.EFI</I> or <I>BOOTIA32.EFI</I>) to be modified or inspected.<br><br><b>--ls</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all currently registered entry points, showing their internal names and target paths, within the specified EFI file.<br><br><b>--add <I>NAME</I> <I>PATH</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds a new entry point. <I>NAME</I> is a unique identifier for the entry, and <I>PATH</I> is the file path (relative to the EFI System Partition root) that Limine will chainload or boot to.<br><br><b>--rm <I>NAME</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes the entry point identified by <I>NAME</I> from the specified EFI file.<br><br>


title: DESCRIPTION
content:
The `limine-entry-tool` is a utility provided as part of the <I>Limine bootloader</I> project. Its primary function is to inspect, add, or remove entry points directly within a Limine EFI image, such as `BOOTX64.EFI` or `BOOTIA32.EFI`. This tool is indispensable for scenarios requiring custom boot configurations, such as chainloading other bootloaders, integrating custom payloads, or managing multiple operating systems directly from the Limine binary. It offers a command-line interface to interact with the internal structure of the Limine EFI file, providing a flexible and robust solution for various boot environments, especially where firmware-agnostic configuration is desired. Users can list existing entries, add new ones with specified names and paths, or remove previously configured entries, making it a powerful tool for advanced bootloader management.


title: CAVEATS
content:
Modifying EFI files directly can be risky; always backup the original EFI file before making changes. The tool requires write permissions to the <I>EFI_FILE</I> for `--add` and `--rm` operations. Paths provided with `--add` are relative to the EFI System Partition (ESP) root, not the local filesystem root. Incorrectly configured entries can lead to boot failures. This tool is specific to Limine EFI binaries and will not work with other bootloaders' EFI files.


title: USE CASES
content:
This tool is particularly valuable for:<br><b>Chainloading</b>: Seamlessly adding entries to boot other bootloaders or operating systems.<br><b>Custom Boot Entries</b>: Integrating custom payloads, utilities, or diagnostics tools directly into the Limine EFI image.<br><b>Firmware-Agnostic Configuration</b>: Storing crucial boot options directly within the bootloader itself, thereby reducing reliance on potentially volatile or limited UEFI firmware variables.


title: OUTPUT OF --LS
content:
When the `--ls` option is used, the `limine-entry-tool` outputs a clear list of all embedded entry points. This list typically includes the internal <I>name</I> of each entry and the <I>path</I> (relative to the ESP root) that Limine is configured to boot. This feature allows users to easily inspect and verify the current boot configuration stored within the Limine EFI file.


title: HISTORY
content:
The `limine-entry-tool` is an integral part of the Limine bootloader project, which emerged as a modern, modular, and performant open-source bootloader. Its development is intertwined with the evolution of the Limine project itself, continuously adapting to support diverse boot scenarios across various architectures, including x86-64 and AArch64. The tool's design reflects Limine's core philosophy of offering robust and flexible configuration options that are embedded directly within the bootloader binary, enhancing its utility for complex multi-boot environments.


title: TLDR
content:
<b>Scan for other active UEFI boot entries and add them to the Limine menu</b>`limine-entry-tool --scan`<br><b>Add a new kernel boot entry with an initramfs and a kernel file</b>`limine-entry-tool --add "[kernel_name]" "[path/to/initramfs]" "[path/to/vmlinuz]"`<br><b>Add a new Unified Kernel Image (UKI) boot entry</b>`limine-entry-tool --add-uki "[kernel_name]" "[path/to/uki.efi]"`<br><b>Remove a kernel boot entry and its associated files from the ESP</b>`limine-entry-tool --remove "[kernel_name]"`<br><b>Remove an entire OS entry by its name or machine ID</b>`limine-entry-tool --remove-os "[OS_name|machine_id]"`<br><b>Add an EFI boot entry for an alternative bootloader (e.g., Windows)</b>`limine-entry-tool --add-efi "[EFI_entry_name]" "[path/to/loader.efi]"`


title: DESCRIPTION
content:
The <b>selinuxenabled</b> command is a simple utility designed to determine whether SELinux (Security-Enhanced Linux) is currently enabled on the system. It does not modify the SELinux state; its sole purpose is to report the current status by exiting with a specific status code.<br><br>This command is particularly useful in shell scripts or automated processes where conditional logic depends on the SELinux enforcement status. If SELinux is enabled and active, the command exits with a status of 0 (success). If SELinux is disabled or not supported by the kernel, it exits with a non-zero status, typically 1 for disabled or 2 for an error.<br><br>Unlike <i>sestatus</i> or <i>getenforce</i>, <b>selinuxenabled</b> produces no standard output, making it ideal for direct use in <i>if</i> statements or other conditional constructs where only the exit code matters. It provides a quick and efficient way to check the policy enforcement without parsing textual output.


title: CAVEATS
content:
<b>selinuxenabled</b> only reports the current kernel-level SELinux status; it does not indicate whether SELinux is merely installed or configured to be enabled on reboot. It provides no information about the current enforcement mode (e.g., enforcing, permissive). For more detailed SELinux status information, commands like <i>sestatus(8)</i> or <i>getenforce(8)</i> should be used.


title: EXIT STATUS
content:
The exit status of <b>selinuxenabled</b> is crucial for its utility in scripting:<br><b>0</b> - SELinux is enabled and running.<br><b>1</b> - SELinux is disabled.<br><b>2</b> - An error occurred, possibly indicating SELinux is not installed or the kernel does not support it.


title: HISTORY
content:
The <b>selinuxenabled</b> command is part of the <i>libselinux</i> development libraries and utilities, which provide the foundational components for managing SELinux on Linux systems. It emerged as a practical tool for scripting alongside the broader adoption of SELinux in enterprise-grade Linux distributions, notably Red Hat Enterprise Linux and its derivatives. Its simple design reflects the need for a straightforward, programmatic way to check SELinux's operational status without requiring complex output parsing, making it a stable utility since its introduction as part of the SELinux tools.


title: TLDR
content:
<b>Check if SELinux is enabled (no output; check exit code with echo $?)</b>`selinuxenabled`<br><b>Check if SELinux is enabled and print the result</b>`selinuxenabled && echo "SELinux is enabled" || echo "SELinux is disabled"`<br><b>Use in a shell script to conditionally execute commands</b>`if selinuxenabled; then echo "SELinux is running"; fi`


title: TLDR
content:
<b>Mount a block device or file system image to a mount point</b>`grub-mount [/dev/sdXY] [/mnt]`<br><b>Mount an entire disk image's second partition, -r specifies the partition number in the image</b>`grub-mount [[-r|--root]] [2] [disk.img] [/mnt]`<br><b>Mount an encrypted device and prompt for a passphrase</b>`grub-mount [[-C|--crypto]] [/dev/sdXY] [/mnt]`<br><b>Load a ZFS encryption key from a file</b>`grub-mount [[-K|--zfs-key]] /[path/to/zfs.key] [/dev/sdX] [/mnt]`<br><b>Show debugging output for a matching category</b>`grub-mount [[-d|--debug]] [string] [image] [/mnt]`<br><b>Enable verbose output</b>`grub-mount [[-v|--verbose]] [image] [/mnt]`<br><b>Display help</b>`grub-mount [[-?|--help]]`<br><b>Display version</b>`grub-mount --version`


title: TLDR
content:
<b>Lock the database</b>`paclock`<br><b>Write the lock file path to stdout (without locking the database)</b>`paclock --print`<br><b>Unlock the database</b>`paclock --unlock`<br><b>Display help</b>`paclock --help`<br><b>Display version</b>`paclock --version`


title: PARAMETERS
content:
<b>-s, --signal=<I>SIGNAL</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the signal to send to the processes. Common signals include <b>SIGTERM</b> (default for graceful shutdown), <b>SIGKILL</b> (forceful termination), or <b>SIGHUP</b> (often for reloads).<br><br><b>-p, --kill-who=<I>WHO</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Determines which processes of the unit should receive the signal. Possible values include <b>main</b> (the main process of the unit), <b>control</b> (the control process), or <b>all</b> (all processes in the unit's control group, which is the default).<br><br><b>--kill-others</b><br>&nbsp;&nbsp;&nbsp;&nbsp;If specified, also kill processes belonging to other units but associated with the unit's control group. Rarely needed for typical service management.<br><br>


title: DESCRIPTION
content:
The <b>systemctl kill</b> command is a powerful utility within the systemd ecosystem designed to send specific signals to processes belonging to one or more systemd units. Unlike directly using the <b>kill</b> command with process IDs, <b>systemctl kill</b> operates at the service level, targeting the control group associated with a unit. This ensures that all relevant processes of a service, or specific subsets of them, receive the intended signal.<br><br>By default, it sends a <b>SIGTERM</b> signal, which requests a graceful shutdown, but it can be configured to send any valid signal, such as <b>SIGKILL</b> for an immediate, non-graceful termination. This makes it invaluable for situations where a service is unresponsive and needs to be forcefully stopped, or when specific signals are required for reloads or other operational tasks. It provides a structured and consistent way to manage process termination for systemd-managed services, leveraging cgroups for precise targeting.


title: CAVEATS
content:
Using <b>SIGKILL</b> should be a last resort as it prevents the service from performing cleanup operations, potentially leading to data corruption or inconsistent states. Always try <b>SIGTERM</b> first and wait for a short period before resorting to <b>SIGKILL</b>.<br><br>The command targets processes within systemd's control groups; processes not managed by systemd or outside the unit's cgroup will not be affected.


title: DIFFERENCE FROM SYSTEMCTL STOP
content:
While <b>systemctl stop</b> attempts a graceful shutdown by executing the service's defined stop command, which might internally send <b>SIGTERM</b>, <b>systemctl kill</b> directly sends the specified signal to the target processes. This bypasses any service-specific stop logic and is used for more direct or forceful termination, especially when a service is unresponsive to conventional stop commands.


title: HISTORY
content:
The <b>kill</b> subcommand is an integral part of <b>systemctl</b>, which itself was introduced with systemd as the primary service manager for Linux systems. systemd replaced older init systems like SysVinit and Upstart, bringing cgroup-based process management and declarative unit files. The <b>kill</b> subcommand specifically leverages these capabilities to provide a robust and controlled way to send signals to service processes, aligning with systemd's philosophy of centralized and efficient system management.


title: TLDR
content:
<b>Send the SIGTERM signal to a unit to terminate it</b>`systemctl kill [unit]`<br><b>Send a specific signal to a unit</b>`systemctl kill [[-s|--signal]] [signal_number|signal_name] [unit]`<br><b>Send a SIGHUP signal to only the main process of a unit</b>`systemctl kill [[-s|--signal]] SIGHUP --kill-whom main [unit]`<br><b>List all available signals</b>`systemctl kill [[-s|--signal]] help`


title: TLDR
content:
<b>Rename an LV using full paths</b>`sudo lvrename [/dev/vg_name/old_lv] [/dev/vg_name/new_lv]`<br><b>Rename an LV using the volume group and names</b>`sudo lvrename [vg_name] [old_lv] [new_lv]`<br><b>Answer "yes" to any prompts</b>`sudo lvrename [[-y|--yes]] [/dev/vg_name/old_lv] [/dev/vg_name/new_lv]`


title: TLDR
content:
<b>Print LVM on-disk headers and structures (label, PV header, MDA header, metadata area)</b>`sudo pvck [/dev/sdXN] --dump headers`<br><b>Print the current VG metadata text</b>`sudo pvck [/dev/sdXN] --dump metadata`<br><b>List all metadata versions found in the metadata area</b>`sudo pvck [/dev/sdXN] --dump metadata_all`<br><b>Search common locations for metadata when headers may be damaged, and save it to a file</b>`sudo pvck [/dev/sdXN] --dump metadata_search [[-f|--file]] [path/to/metadata.txt]`<br><b>Select the second metadata area (mda2) when printing metadata</b>`sudo pvck [/dev/sdXN] --dump metadata --settings "mda_num=2"`<br><b>Repair headers and metadata using a metadata input file (use with care)</b>`sudo pvck [/dev/sdXN] --repair [[-f|--file]] [path/to/metadata_file]`<br><b>Repair only the PV header and label header</b>`sudo pvck [/dev/sdXN] --repairtype pv_header`


title: PARAMETERS
content:
<b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message and exits, showing available options and their usage.<br><br><b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the version information of the <b>spa-inspect</b> utility and exits.<br><br><b><b>-L</b>, <b>--list-plugins</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all available SPA plugins that PipeWire can load and utilize.<br><br><b><b>-F</b>, <b>--list-factory-types</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all available SPA factory types (e.g., Audio/Sink, Video/Source) supported by the system.<br><br><b><b>-i</b> <i>&lt;name|id&gt;</i>, <b>--inspect-plugin=</b><i>&lt;name|id&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Inspects a specific SPA plugin, identified either by its unique name or its numeric ID. Provides detailed information about its capabilities.<br><br><b><b>-n</b> <i>&lt;id&gt;</i>, <b>--inspect-node=</b><i>&lt;id&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Inspects a specific active PipeWire node, identified by its numeric ID. This shows the current state and properties of a running node.<br><br><b><b>-p</b>, <b>--properties</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;When used with <b>--inspect-plugin</b> or <b>--inspect-node</b>, displays the properties (parameters and settings) associated with the specified plugin or node.<br><br><b><b>-m</b>, <b>--methods</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;When used with <b>--inspect-plugin</b> or <b>--inspect-node</b>, displays the methods (callable functions or operations) that can be performed on the specified plugin or node.<br><br><b><b>-e</b>, <b>--events</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;When used with <b>--inspect-plugin</b> or <b>--inspect-node</b>, displays the events (notifications or signals) that the specified plugin or node can emit.<br><br><b><b>-l</b>, <b>--long</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays output in a long, more detailed format, providing additional context and information for listings or inspections.<br><br>


title: DESCRIPTION
content:
<b>spa-inspect</b> is a powerful utility provided as part of the <B>PipeWire</B> multimedia framework. Its primary function is to inspect and provide detailed information about <B>SPA</B> (Simple Plugin API) plugins and active nodes within the PipeWire graph. SPA is a crucial component of PipeWire, defining the interface for audio and video processing plugins and their functionalities.<br><br>This command allows developers and power users to gain insights into the capabilities, properties, and parameters of these plugins and nodes without directly interacting with the PipeWire daemon. It can list all available plugins, show the factory types they implement (e.g., source, sink, filter), and delve into the specific features, properties, methods, and events supported by individual plugins or active nodes. <b>spa-inspect</b> is an invaluable tool for debugging, understanding plugin behavior, and configuring complex PipeWire setups, offering a transparent view into the underlying audio and video processing components.


title: CAVEATS
content:
Using <b>spa-inspect</b> to inspect active nodes (with <i>-n</i>) requires the PipeWire daemon to be running. The command's output can be quite verbose, especially with the <i>-l</i> (long) option or when inspecting complex plugins, which may require careful parsing or filtering. A basic understanding of PipeWire and SPA concepts is beneficial for interpreting the detailed output.


title: <B>INSPECTING PLUGINS VS. NODES</B>
content:
When using <i>--inspect-plugin</i>, <b>spa-inspect</b> queries the available SPA factories to show what a plugin <i>can</i> do, essentially its blueprint. In contrast, when using <i>--inspect-node</i>, it inspects an active, running instance of a node within the live PipeWire graph, reflecting its current state, properties, and connections.


title: <B>OUTPUT DETAILS</B>
content:
The detailed output for plugins typically includes information such as the plugin's name, version, author, copyright, description, and importantly, its factory types. For properties, methods, and events, it lists their identifiers, types, and default values or possible ranges, which is crucial for understanding how to interact with or configure these multimedia components programmatically or through other tools.


title: HISTORY
content:
<b>spa-inspect</b> is an integral part of the <B>PipeWire</B> project, which was initiated by Wim Taymans (Red Hat) and first publicly announced in 2017. PipeWire aims to be a next-generation multimedia server for Linux, unifying audio, video, and hardware access. <b>spa-inspect</b> was developed as a fundamental diagnostic and introspection tool alongside PipeWire's core development, providing a window into the <B>Simple Plugin API</B> (SPA) components that form the building blocks of PipeWire's processing capabilities. Its usage grew as PipeWire gained adoption, becoming essential for developers and users to understand and troubleshoot the intricate multimedia graphs managed by the system, ensuring transparent control over audio and video streams.


title: TLDR
content:
<b>Restore VG metadata from last backup.</b>`sudo vgcfgrestore [vg_name]`<br><b>Restore VG metadata from specified backup-file</b>`sudo vgcfgrestore [[-f|--file]] [path/to/file] [vg_name]`<br><b>List all VG metadata backups</b>`sudo vgcfgrestore [[-l|--list]] [vg_name]`<br><b>List one VG metadata backup file</b>`sudo vgcfgrestore [[-l|--list]] [[-f|--file]] [path/to/file] [vg_name]`


title: PARAMETERS
content:
<b><b>--repoid</b>=<i>&lt;repoid&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the <i>ID</i> of the repository to synchronize. This option can be used multiple times to sync several repositories.<br><br><b><b>--download-path</b>=<i>&lt;path&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<b>Mandatory</b> option. The <i>directory</i> where the synchronized repositories and their contents will be downloaded.<br><br><b><b>--remote-src</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Download source RPMs (SRPMs) in addition to the binary packages. Useful for development or auditing purposes.<br><br><b><b>--delete</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Remove local files and packages that are no longer present in the remote repository. This helps maintain an exact mirror and frees up disk space.<br><br><b><b>--newest-only</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Download only the newest versions of packages for each repository. This can save disk space and synchronization time if older versions are not required.<br><br><b><b>--norepopath</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevent the creation of a subdirectory named after the repository <i>ID</i> within the specified download path. By default, <b>dnf-reposync</b> creates such subdirectories.<br><br><b><b>--download-metadata</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Download all available repository metadata files (e.g., <i>repomd.xml</i>, <i>primary.xml.gz</i>, <i>filelists.xml.gz</i>). This is essential for a functional local repository.<br><br><b><b>--arch</b>=<i>&lt;arch&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify particular package architectures to download (e.g., <i>x86_64</i>, <i>aarch64</i>). This option can be used multiple times for multiple architectures.<br><br><b><b>--url</b>=<i>&lt;url&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Synchronize a repository directly from the given <i>base URL</i>. This allows syncing repositories not defined in DNF configuration. Can be used multiple times.<br><br><b><b>--mirrorlist</b>=<i>&lt;url&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Synchronize a repository using the provided <i>mirror list URL</i>. Similar to <b>--url</b>, for unconfigured repositories. Can be used multiple times.<br><br>


title: DESCRIPTION
content:
<b>dnf-reposync</b> is a powerful plugin for the <b>DNF</b> package manager, designed to synchronize remote <b>DNF</b> repositories to a local directory on your system. This utility is invaluable for creating local mirrors of official distribution repositories, enabling offline package installation, or preparing content for systems with restricted internet access. It downloads all necessary RPM packages, along with their associated metadata (like <i>repomd.xml</i>, <i>primary.xml.gz</i>, etc.), ensuring a complete and functional local copy of the chosen repositories. <br><br>The command allows for fine-grained control over the synchronization process, including specifying which repositories to sync, which architectures to include, and whether to download source RPMs. It also supports incremental synchronization, efficiently updating only new or changed packages and metadata on subsequent runs, thus saving bandwidth and time. This makes <b>dnf-reposync</b> an essential tool for system administrators managing enterprise environments, development teams needing consistent package sets, or users simply wanting reliable access to packages without constant internet reliance.


title: CAVEATS
content:
Using <b>dnf-reposync</b> requires significant disk space, especially for large distribution repositories. The initial synchronization can be time-consuming and consume considerable network bandwidth. It's important to ensure your filesystem has enough free space before starting. While <b>dnf-reposync</b> downloads remote metadata, if you intend to serve this local mirror and later <i>modify</i> its contents (e.g., add custom packages), you will likely need to use <b>createrepo_c</b> to regenerate the repository metadata locally.


title: USAGE CONTEXT
content:
<b>dnf-reposync</b> is a critical tool for maintaining secure and consistent software environments. It is widely used in enterprise settings for creating internal mirror servers, facilitating reproducible builds, supporting disconnected operations (air-gapped systems), and ensuring reliable access to package updates without external internet dependencies. It provides the foundation for robust infrastructure management.


title: INCREMENTAL SYNCHRONIZATION
content:
A key feature of <b>dnf-reposync</b> is its ability to perform incremental synchronizations. After the initial download, subsequent runs will efficiently fetch only new or updated packages and metadata, significantly reducing bandwidth usage and execution time. This makes it practical for regular maintenance of local mirrors.


title: HISTORY
content:
<b>dnf-reposync</b> emerged as the modern successor to the `reposync` command from the `yum-utils` package, adapting its functionality for the <b>DNF</b> package manager ecosystem. With the transition from YUM to <b>DNF</b> as the default package manager in Fedora and RHEL-based distributions, `dnf-reposync` was developed as a <b>DNF</b> plugin, becoming part of the `dnf-plugins-core` package. It leverages <b>DNF</b>'s robust capabilities for dependency resolution and repository handling while providing dedicated features for local repository mirroring.


title: TLDR
content:
<b>Synchronize all packages from the repository with id repo_name to a subdirectory repo_name of the current working directory</b>`dnf reposync --repoid [repo_name]`<br><b>Synchronize all packages and define a custom save location</b>`dnf reposync --repoid [repo_name] [[-p|--download-path]] [path/to/directory]`<br><b>Synchronize all packages and metadata</b>`dnf reposync --repoid [repo_name] --download-metadata`<br><b>Download only newest packages per-repo</b>`dnf reposync --repoid [repo_name] [[-n|--newest-only]]`<br><b>Just print URLs of what would be downloaded, don't download</b>`dnf reposync --repoid [repo_name] [[-u|--urls]]`<br><b>Try to set the timestamps of the downloaded files to those on the remote side</b>`dnf reposync --repoid [repo_name] --remote-time`


title: SYNOPSIS
content:
Information regarding the standard syntax for 'scrun' is unavailable as it is not a recognized command.


title: DESCRIPTION
content:
The command 'scrun' is not a recognized utility in standard Linux operating systems. <br>It does not appear in common command lists, manual pages, or package repositories across typical distributions like Debian, Ubuntu, Fedora, or CentOS. <br>Therefore, its specific functionality, options, and usage cannot be definitively described as a standard component of Linux. <br>Users attempting to execute 'scrun' will typically encounter a 'command not found' error unless it has been custom-installed, aliased, or created as a script on their specific system. <br>It is possible that 'scrun' refers to a custom script developed for a particular purpose, an alias configured by a user or system administrator, a typo for another well-known command (e.g., 'screen' for terminal multiplexing or 'cron' for job scheduling), or a utility specific to a highly specialized or proprietary computing environment, such as a high-performance computing (HPC) cluster management tool or an embedded system. <br>Without further context, treating 'scrun' as a standard Linux command is inaccurate.


title: CAVEATS
content:
The 'scrun' command is <i>not a standard Linux utility</i>. Users should not expect to find it installed by default or documented in typical Linux environments. If encountered, it is likely a custom script, an alias, or a component of a specific, non-standard software package or system.


title: POSSIBLE INTERPRETATIONS
content:
Given the 'scrun' naming convention, it could hypothetically refer to a 'script runner', 'screen runner', or a 'scheduled run' utility in a custom environment. <br>However, without specific context or documentation, any interpretation of its intended function is speculative.


title: TROUBLESHOOTING 'SCRUN' ERRORS
content:
If you encounter a 'command not found' error when trying to run 'scrun', verify if it's a typo for commands like <b>screen</b> (for terminal multiplexing) or <b>cron</b> (for scheduling jobs). <br>Alternatively, check if a custom script or alias named 'scrun' exists in your shell's configuration or system's PATH.


