alpm-conf


Namealpm-conf JSON
Version 0.5 PyPI version JSON
download
home_pageNone
SummaryArchLinux tool to manage /etc configuration files using git.
upload_time2025-08-17 08:48:17
maintainerNone
docs_urlNone
authorNone
requires_python<4,>=3.12
licenseNone
keywords archlinux pacman alpm
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            .. image:: images/coverage.png
   :alt: [alpm-conf test coverage]

`alpm-conf`_ is an ArchLinux tool to manage /etc configuration files using
``git``. It is implemented as a Python package.

Overview
--------

Packages installed by ``pacman`` whose etc files have been changed in the last
pacman upgrade and that have been changed by the ``root`` user [#]_ in the /etc
directory are tracked in the *master* branch of the git repository created by
the *alpm-conf* ``create`` subcommand.

Using the same algorithm that is used by pacman to select files that are
installed with a *.pacnew* extension [#]_, the ``update`` subcommand
cherry-picks the changes (i.e. merges the changes) made to etc files by the
pacman upgrade into the files on a temporary *master-tmp* branch [#]_ created by
the subcommand as a descendant of the *master* branch. The ``merge`` subcommand
merges the *master-tmp* branch into the *master* branch and copies those files
to the /etc directory. This completes the transaction and the temporary branch
is deleted.

*alpm-conf* also tracks the changes in files that are created in /etc by the
root user such as *netctl* profiles for example. The files must be added first
and commited to the *master* branch by the *alpm-conf* user in order to be
tracked afterward by alpm-conf.

The ``diff`` subcommand is a standalone utility that uses a temporary alpm-conf
repository to print [4]_ the differences between the etc files of installed
pacman package archives and the corresponding files modified in the /etc
directory. The command takes less than 2 seconds to complete on a plain laptop
with 1212 installed packages.

Git commands allow to:

 * list the names of files created in /etc by the root user and tracked in the
   *master* branch
 * print [#]_ the changes made in the *master-tmp* branch before running the
   ``merge`` subcommand
 * print [4]_ the changes made by the last *alpm-conf* ``merge`` subcommand
 * print [4]_ the differences between the etc files of installed pacman package
   archives and the corresponding files modified in the /etc directory

Documentation
-------------

The documentation is hosted at `Read the Docs`_:

 - The `stable documentation`_ of the last released version.
 - The `latest documentation`_ of the current GitLab development version.

To access the documentation as a pdf document one must click on the icon at the
down-right corner of any page. It allows to switch between stable and latest
versions and to select the corresponding pdf document.

Requirements
------------

The ArchLinux packages that are required by *alpm-conf* are installed with the
command:

.. code-block:: text

  # pacman -Sy git util-linux alpm-mtree python pyalpm python-zstandard

``pyalpm`` and ``alpm-mtree`` are used to access the ArchLinux local
database, ``util-linux`` provides *setpriv* allowing to run *alpm-conf* as root
while running git commands as the creator of the git repository.

Installation
------------

Install the `python-alpm-conf`_ package from the AUR.

Or install *alpm-conf* with pip::

  $ python -m pip install alpm-conf


.. _alpm-conf: https://gitlab.com/xdegaye/alpm-conf
.. _Read the Docs: https://about.readthedocs.com/
.. _stable documentation: https://alpm-conf.readthedocs.io/en/stable/
.. _latest documentation: https://alpm-conf.readthedocs.io/en/latest/
.. _python-alpm-conf: https://aur.archlinux.org/packages/python-alpm-conf

.. rubric:: Footnotes

.. [#] Packaged files that are modified by a package scriptlet are considered as
       files modified by the root user.
.. [#] See the **HANDLING CONFIG FILES** section in the pacman man page.
.. [#] The ``update`` subcommand also creates the *etc-tmp* and *packages-tmp*
       temporary branches. These branches as well as the *etc* and *packages*
       branches are used internally by alpm-conf. The three temporary branches
       are deleted upon completion of the ``merge`` and ``reset`` subcommands.
.. [#] Or show the changes or differences using an editor such as vim or emacs
       if a git difftool has been configured.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "alpm-conf",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4,>=3.12",
    "maintainer_email": null,
    "keywords": "Archlinux, pacman, alpm",
    "author": null,
    "author_email": "Xavier de Gaye <xdegaye@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/36/45/cf6fbf883cf513f9f5318c7fb8bab0ec5bb13f3cb209050edf6000991115/alpm_conf-0.5.tar.gz",
    "platform": null,
    "description": ".. image:: images/coverage.png\n   :alt: [alpm-conf test coverage]\n\n`alpm-conf`_ is an ArchLinux tool to manage /etc configuration files using\n``git``. It is implemented as a Python package.\n\nOverview\n--------\n\nPackages installed by ``pacman`` whose etc files have been changed in the last\npacman upgrade and that have been changed by the ``root`` user [#]_ in the /etc\ndirectory are tracked in the *master* branch of the git repository created by\nthe *alpm-conf* ``create`` subcommand.\n\nUsing the same algorithm that is used by pacman to select files that are\ninstalled with a *.pacnew* extension [#]_, the ``update`` subcommand\ncherry-picks the changes (i.e. merges the changes) made to etc files by the\npacman upgrade into the files on a temporary *master-tmp* branch [#]_ created by\nthe subcommand as a descendant of the *master* branch. The ``merge`` subcommand\nmerges the *master-tmp* branch into the *master* branch and copies those files\nto the /etc directory. This completes the transaction and the temporary branch\nis deleted.\n\n*alpm-conf* also tracks the changes in files that are created in /etc by the\nroot user such as *netctl* profiles for example. The files must be added first\nand commited to the *master* branch by the *alpm-conf* user in order to be\ntracked afterward by alpm-conf.\n\nThe ``diff`` subcommand is a standalone utility that uses a temporary alpm-conf\nrepository to print [4]_ the differences between the etc files of installed\npacman package archives and the corresponding files modified in the /etc\ndirectory. The command takes less than 2 seconds to complete on a plain laptop\nwith 1212 installed packages.\n\nGit commands allow to:\n\n * list the names of files created in /etc by the root user and tracked in the\n   *master* branch\n * print [#]_ the changes made in the *master-tmp* branch before running the\n   ``merge`` subcommand\n * print [4]_ the changes made by the last *alpm-conf* ``merge`` subcommand\n * print [4]_ the differences between the etc files of installed pacman package\n   archives and the corresponding files modified in the /etc directory\n\nDocumentation\n-------------\n\nThe documentation is hosted at `Read the Docs`_:\n\n - The `stable documentation`_ of the last released version.\n - The `latest documentation`_ of the current GitLab development version.\n\nTo access the documentation as a pdf document one must click on the icon at the\ndown-right corner of any page. It allows to switch between stable and latest\nversions and to select the corresponding pdf document.\n\nRequirements\n------------\n\nThe ArchLinux packages that are required by *alpm-conf* are installed with the\ncommand:\n\n.. code-block:: text\n\n  # pacman -Sy git util-linux alpm-mtree python pyalpm python-zstandard\n\n``pyalpm`` and ``alpm-mtree`` are used to access the ArchLinux local\ndatabase, ``util-linux`` provides *setpriv* allowing to run *alpm-conf* as root\nwhile running git commands as the creator of the git repository.\n\nInstallation\n------------\n\nInstall the `python-alpm-conf`_ package from the AUR.\n\nOr install *alpm-conf* with pip::\n\n  $ python -m pip install alpm-conf\n\n\n.. _alpm-conf: https://gitlab.com/xdegaye/alpm-conf\n.. _Read the Docs: https://about.readthedocs.com/\n.. _stable documentation: https://alpm-conf.readthedocs.io/en/stable/\n.. _latest documentation: https://alpm-conf.readthedocs.io/en/latest/\n.. _python-alpm-conf: https://aur.archlinux.org/packages/python-alpm-conf\n\n.. rubric:: Footnotes\n\n.. [#] Packaged files that are modified by a package scriptlet are considered as\n       files modified by the root user.\n.. [#] See the **HANDLING CONFIG FILES** section in the pacman man page.\n.. [#] The ``update`` subcommand also creates the *etc-tmp* and *packages-tmp*\n       temporary branches. These branches as well as the *etc* and *packages*\n       branches are used internally by alpm-conf. The three temporary branches\n       are deleted upon completion of the ``merge`` and ``reset`` subcommands.\n.. [#] Or show the changes or differences using an editor such as vim or emacs\n       if a git difftool has been configured.\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "ArchLinux tool to manage /etc configuration files using git.",
    "version": "0.5",
    "project_urls": {
        "Changelog": "https://alpm-conf.readthedocs.io/en/stable/history.html",
        "Documentation": "https://alpm-conf.readthedocs.io/en/stable/",
        "Source": "https://gitlab.com/xdegaye/alpm-conf"
    },
    "split_keywords": [
        "archlinux",
        " pacman",
        " alpm"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "1d62f2d672de95db53d271ce175f373b6bbada4c20d03da2fdd644bd32dfd452",
                "md5": "558df253964d2a6113b136137ad04b6f",
                "sha256": "6f94b44e08c75ce881c9f952374ca9e6946475b174060df6d0ee21106f9578ec"
            },
            "downloads": -1,
            "filename": "alpm_conf-0.5-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "558df253964d2a6113b136137ad04b6f",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4,>=3.12",
            "size": 34011,
            "upload_time": "2025-08-17T08:48:15",
            "upload_time_iso_8601": "2025-08-17T08:48:15.500859Z",
            "url": "https://files.pythonhosted.org/packages/1d/62/f2d672de95db53d271ce175f373b6bbada4c20d03da2fdd644bd32dfd452/alpm_conf-0.5-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "3645cf6fbf883cf513f9f5318c7fb8bab0ec5bb13f3cb209050edf6000991115",
                "md5": "90cba92030b7b9981e03ef9843a90832",
                "sha256": "9ba854586c6af9a74c00ed62e9956a87dc9a9ac12b9d93c164c1980b93943295"
            },
            "downloads": -1,
            "filename": "alpm_conf-0.5.tar.gz",
            "has_sig": false,
            "md5_digest": "90cba92030b7b9981e03ef9843a90832",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4,>=3.12",
            "size": 112624,
            "upload_time": "2025-08-17T08:48:17",
            "upload_time_iso_8601": "2025-08-17T08:48:17.652929Z",
            "url": "https://files.pythonhosted.org/packages/36/45/cf6fbf883cf513f9f5318c7fb8bab0ec5bb13f3cb209050edf6000991115/alpm_conf-0.5.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-17 08:48:17",
    "github": false,
    "gitlab": true,
    "bitbucket": false,
    "codeberg": false,
    "gitlab_user": "xdegaye",
    "gitlab_project": "alpm-conf",
    "lcname": "alpm-conf"
}
        
Elapsed time: 1.18979s