{
"info": {
"author": "Sviatoslav Abakumov",
"author_email": "dust.harvesting@gmail.com",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 4 - Beta",
"Environment :: Console",
"License :: OSI Approved :: BSD License",
"Operating System :: POSIX :: Linux",
"Programming Language :: Python :: 2",
"Programming Language :: Python :: 2.7",
"Topic :: System :: Installation/Setup",
"Topic :: System :: Systems Administration",
"Topic :: Utilities"
],
"description": "======\nsteeve\n======\n\nTiny `GNU Stow `__\u2013based package manager.\n\n.. contents::\n\n\nSummary\n=======\n\n*steeve* is not a replacement for any full-fledged package manager like *dpkg*\nor *yum*, but instead an addition, designed to handle manually built software\nand binary distributions. Instead of polluting ``/usr/local`` with binaries\nand libraries that aren't tracked by any package manager and thus cannot be\nsafely removed or upgraded, *steeve* provides a structured approach that allows\nfor managing multiple software versions in a matter of a command.\n\n\nPackages\n========\n\nBy default packages live in ``/usr/local/stow``. This location is configured\neither via environment variable ``STEEVE_DIR`` or command-line option ``-d``,\n``--dir``. A package consists of one or multiple subdirectories named after\nversion. Each version has directories with files that will be linked into\n*target directory*, which is ``/usr/local`` by default. Target directory can\nbe changed via environment variable ``STEEVE_TARGET`` or command-line option\n``-t``, ``--target``. The prominent part of a package is symbolic link named\n``current`` that points to current version.\n\nHere's an example of a valid package tree:\n\n.. code-block:: bash\n\n $ tree /usr/local/stow/tig\n /usr/local/stow/tig\n \u251c\u2500\u2500 2.1\n \u2502\u00a0\u00a0 \u251c\u2500\u2500 bin\n \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 tig\n \u2502\u00a0\u00a0 \u2514\u2500\u2500 etc\n \u2502\u00a0\u00a0 \u2514\u2500\u2500 tigrc\n \u251c\u2500\u2500 2.1.1\n \u2502\u00a0\u00a0 \u251c\u2500\u2500 bin\n \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 tig\n \u2502\u00a0\u00a0 \u2514\u2500\u2500 etc\n \u2502\u00a0\u00a0 \u2514\u2500\u2500 tigrc\n \u2514\u2500\u2500 current -> /usr/local/stow/tig/2.1.1\n\n 7 directories, 4 files\n\n\nTree Folding\n============\n\nThe main gotcha is GNU Stow's tree folding mechanism. Please, get accustomed\nto it by reading chapter `Installing Packages\n`__ of\nGNU Stow manual. You can disable folding by setting environment variable\n``STEEVE_NO_FOLDING`` or passing ``--no-folding`` option.\n\n\nDependencies\n============\n\n- Python 2.7\n- GNU Stow 2.2\n\n\nInstallation\n============\n\nGet the package from PyPI:\n\n.. code-block:: bash\n\n $ pip install steeve\n\nOr get the latest development version:\n\n.. code-block:: bash\n\n $ git clone https://github.com/Perlence/steeve.git\n $ cd steeve\n $ pip install --editable .\n\nTo install bash completion, download the `script\n`__ and\nsource it from your ``.bashrc``.\n\nTo install fish completion, download the `script\n`__ and\nput it in ``~/.config/fish/completions``.\n\n\nUsage\n=====\n\nRun *steeve* with ``--help`` option to see the list of commands:\n\n.. code-block:: bash\n\n $ steeve --help\n\nTo see usage of a command, run:\n\n.. code-block:: bash\n\n $ steeve COMMAND --help\n\n*steeve* helps you install manually built programs. For example, to install\n`tig `__, text-mode interface for git, first\ndownload the release tarball:\n\n.. code-block:: bash\n\n $ curl -O -L http://jonas.nitro.dk/tig/releases/tig-2.1.1.tar.gz\n\nThen configure, make and install with prefix:\n\n.. code-block:: bash\n\n $ ./configure\n $ make prefix=/usr/local\n $ sudo make install prefix=/usr/local/stow/tig/2.1.1\n\nFinally, stow tig 2.1.1 into ``/usr/local`` with *steeve*:\n\n.. code-block:: bash\n\n $ sudo steeve stow tig 2.1.1\n\nUnder the covers ``steeve stow`` creates a symbolic link to current version and\nruns ``stow`` to link contents of ``current`` into ``/usr/local``:\n\n.. code-block:: bash\n\n $ sudo ln -s /usr/local/stow/tig/2.1.1 /usr/local/stow/tig/current\n $ sudo stow -t /usr/local -d tig current\n\nTo restow symbolic links, simply run ``steeve stow``:\n\n.. code-block:: bash\n\n $ sudo steeve stow tig\n\nAlso *steeve* can manage binary distributions. For instance, let's install\np4merge binaries:\n\n.. code-block:: bash\n\n $ curl -O -L http://cdist2.perforce.com/perforce/r15.2/bin.linux26x86_64/p4v.tgz\n $ tar xf p4v.tgz\n $ ls p4v-2015.2.1315639\n bin/ lib/\n\nNow, install p4merge from directory with ``steeve install``:\n\n.. code-block:: bash\n\n $ sudo steeve install p4v 2015.2.1315639 ./p4v-2015.2.1315639\n\nThis will copy folder contents to ``/usr/local/stow/p4v/2015.2.1315639``,\ndelete stowed files from current version if any, link 2015.2.1315639 to\ncurrent, and stow files into ``/usr/local``.\n\nIf you forgot to install some files, you can ``install`` the package once\nagain:\n\n.. code-block:: bash\n\n $ sudo steeve install p4v 2015.2.1315639 ./p4v-2015.2.1315639\n\nIt's achieved by uninstalling the package followed by installing it again, so\n*steeve* will prompt you before reinstalling.\n\nTo delete stowed files, run *steeve* with command ``unstow``:\n\n.. code-block:: bash\n\n $ sudo steeve unstow tig\n\nTo list packages, run command ``ls`` without arguments:\n\n.. code-block:: bash\n\n $ steeve ls\n node\n tig\n\nTo list package version, run command ``ls`` with package name:\n\n.. code-block:: bash\n\n $ steeve ls tig\n 2.1\n * 2.1.1\n\n*steeve* marks current version with an asterisk as seen above.\n\nTo remove specific version of a package, run command ``uninstall`` with package\nname and version:\n\n.. code-block:: bash\n\n $ sudo steeve uninstall tig 2.1.1\n\nThis will delete stowed files if version 2.1.1 is current, and remove folder\n``2.1.1``.\n\nFinally, to remove package with all its versions, run command ``uninstall``\nwith only a package name:\n\n.. code-block:: bash\n\n $ sudo steeve uninstall tig\n\n\nThanks\n======\n\nThanks to authors of `GoboLinux `__ from which I\nborrowed the idea of package structure.\n\nThanks to Armin Ronacher and contributors for `Click\n`__ which is *\\*click\\** nice.",
"description_content_type": null,
"docs_url": null,
"download_url": "https://github.com/Perlence/steeve/archive/master.zip",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/Perlence/steeve",
"keywords": "",
"license": "",
"maintainer": "",
"maintainer_email": "",
"name": "steeve",
"package_url": "https://pypi.org/project/steeve/",
"platform": "UNKNOWN",
"project_url": "https://pypi.org/project/steeve/",
"project_urls": {
"Download": "https://github.com/Perlence/steeve/archive/master.zip",
"Homepage": "https://github.com/Perlence/steeve"
},
"release_url": "https://pypi.org/project/steeve/0.2/",
"requires_dist": [
"click (>=5,<6)",
"whichcraft"
],
"requires_python": "",
"summary": "Tiny GNU Stow\u2013based package manager",
"version": "0.2"
},
"last_serial": 1881657,
"releases": {
"0.1": [
{
"comment_text": "",
"digests": {
"md5": "986bebe82dca0671b92b6b8dbc6ea91a",
"sha256": "44fe3909cc98ccb086bbc899a99000e03ecc9446c50f09ce3c9eea15149e8234"
},
"downloads": -1,
"filename": "steeve-0.1-py2-none-any.whl",
"has_sig": false,
"md5_digest": "986bebe82dca0671b92b6b8dbc6ea91a",
"packagetype": "bdist_wheel",
"python_version": "py2",
"requires_python": null,
"size": 8377,
"upload_time": "2015-09-02T20:54:00",
"url": "https://files.pythonhosted.org/packages/04/83/a39dfe50c6ceabd43e2e3f1a05a3b7d6aa800f0dd378a197dc5f825cd983/steeve-0.1-py2-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "3d8a10a456013e270a93983f406e1264",
"sha256": "d5eeceb136ee8994727a6da6da4d9f0140348e8fee1fdb370be2098be9bd3b32"
},
"downloads": -1,
"filename": "steeve-0.1.tar.gz",
"has_sig": false,
"md5_digest": "3d8a10a456013e270a93983f406e1264",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5584,
"upload_time": "2015-09-02T20:54:08",
"url": "https://files.pythonhosted.org/packages/d2/f0/0526fe96029a2fa172d1d36308d2467e4206b7ffacecf05dee062eb75019/steeve-0.1.tar.gz"
}
],
"0.1.1": [
{
"comment_text": "",
"digests": {
"md5": "6770b6fb6d298c92b759cb5df9df2e12",
"sha256": "fc285f58082426ea6a4072fe2236d856356486c47cc5444df97dd6c9b6a031b6"
},
"downloads": -1,
"filename": "steeve-0.1.1-py2-none-any.whl",
"has_sig": false,
"md5_digest": "6770b6fb6d298c92b759cb5df9df2e12",
"packagetype": "bdist_wheel",
"python_version": "py2",
"requires_python": null,
"size": 8697,
"upload_time": "2015-12-24T13:27:39",
"url": "https://files.pythonhosted.org/packages/20/0d/3961f2224d1d1b6566be1568463c368298517d961376d424d08b66c05de7/steeve-0.1.1-py2-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "fa72b1af7d1f2455714becdffbc9ea6d",
"sha256": "c9386bf2ed732cbb58d673f8554eb74429ec64917fcef6c9918da91b44ce9ba4"
},
"downloads": -1,
"filename": "steeve-0.1.1.tar.gz",
"has_sig": false,
"md5_digest": "fa72b1af7d1f2455714becdffbc9ea6d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5738,
"upload_time": "2015-12-24T13:27:49",
"url": "https://files.pythonhosted.org/packages/7a/14/3a5fb7a65df4cb9972a5a8729bd9aa65cef0542703d49bcc76d2bdeec6f4/steeve-0.1.1.tar.gz"
}
],
"0.2": [
{
"comment_text": "",
"digests": {
"md5": "42573c9def47aa4b0c061ba4fef63220",
"sha256": "97a31911f5b089a0e06f8fd71c76a6e7c01416a6710164e368655d0f4d650825"
},
"downloads": -1,
"filename": "steeve-0.2-py2-none-any.whl",
"has_sig": false,
"md5_digest": "42573c9def47aa4b0c061ba4fef63220",
"packagetype": "bdist_wheel",
"python_version": "py2",
"requires_python": null,
"size": 8904,
"upload_time": "2015-12-29T21:35:45",
"url": "https://files.pythonhosted.org/packages/ea/e2/a7476c53405dbc93fc59d9777d8df8a06ddcd085c47d247c1d41c4be2218/steeve-0.2-py2-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "9a155c4443311df87884a142cd6393d6",
"sha256": "ddcfabfd07853c59104d9e10de9eb025fde5368db1fd28edad1fdb3bc55ead4f"
},
"downloads": -1,
"filename": "steeve-0.2.tar.gz",
"has_sig": false,
"md5_digest": "9a155c4443311df87884a142cd6393d6",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 6247,
"upload_time": "2015-12-29T21:35:53",
"url": "https://files.pythonhosted.org/packages/0b/c4/cbc91438d780cba8abe162b479b594f9fd94c92bc92659ad479b4af2d6e1/steeve-0.2.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "42573c9def47aa4b0c061ba4fef63220",
"sha256": "97a31911f5b089a0e06f8fd71c76a6e7c01416a6710164e368655d0f4d650825"
},
"downloads": -1,
"filename": "steeve-0.2-py2-none-any.whl",
"has_sig": false,
"md5_digest": "42573c9def47aa4b0c061ba4fef63220",
"packagetype": "bdist_wheel",
"python_version": "py2",
"requires_python": null,
"size": 8904,
"upload_time": "2015-12-29T21:35:45",
"url": "https://files.pythonhosted.org/packages/ea/e2/a7476c53405dbc93fc59d9777d8df8a06ddcd085c47d247c1d41c4be2218/steeve-0.2-py2-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "9a155c4443311df87884a142cd6393d6",
"sha256": "ddcfabfd07853c59104d9e10de9eb025fde5368db1fd28edad1fdb3bc55ead4f"
},
"downloads": -1,
"filename": "steeve-0.2.tar.gz",
"has_sig": false,
"md5_digest": "9a155c4443311df87884a142cd6393d6",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 6247,
"upload_time": "2015-12-29T21:35:53",
"url": "https://files.pythonhosted.org/packages/0b/c4/cbc91438d780cba8abe162b479b594f9fd94c92bc92659ad479b4af2d6e1/steeve-0.2.tar.gz"
}
]
}