Skip to main content

Simple symlink-based package manager for local installations (without sudo)

Project description


image image Documentation Status

Simple symlink-based package manager for local installations (without sudo)


Meant for Debian-based distributions: such as Debian / Ubuntu / Linux Mint and so on.

This package is born out of the frustration of a typical grad student who has no admin-rights over the machine, and has to rely on the system-admin over and over for installation of that "X" package.


  • Debian-based OS or atleast dpkg, apt-get and apt-cache installed
  • GNU Stow: HTTP | FTP | Git | CPAN

If Stow is not available in the system you may use this script to install it.


This is an experimental project, and often results in hit-or-miss situation. The advantages with apt-local is a lightweight installation and installing packages requires no compilation. If you want a more robust package manager use one of the following:

  • NixOS/nix
  • conda/conda
  • fsquillace/junest
  • bpkg/bpkg

Quick start

Install the package using either of the following commands

python install --user  # with the source code
pip install apt-local --user  # without the source code

To get started choose a local directory where you would like the package to be installed. For example ~/.local or <path-to-scratch-directory>/.local and a directory called apt-cache (name can be anything) under it (very important!). This can simply be done as:

apt-local set-path ~/.local/apt-cache
apt-local show-path

Installing a .deb package is made as simple as:

usage: apt-local install [-h] pkg

positional arguments:

For example apt-local install wget.


The subcommands serve self-explanatory purposes. The subcommands set-path and show-path are used to configure path and display the configured path respectively.

usage: apt-local [-h] {install,uninstall,list,set-path,show-path} ...

positional arguments:

optional arguments:
  -h, --help            show this help message and exit

Make your installation useable by setting up environment variables such as PATH, LD_LIBRARY_PATH, CPATH etc. in the ~/.profile or ~/.bashrc. The following snippet can be adapted:

export PATH=$PATH:$HOME/.local/bin
export CPATH=$CPATH:$HOME/.local/include


This package was created with Cookiecutter and the ashwinvis/cookiecutter-pypackage project template.


0.0.2b1 (2019-09-04)

  • Option -y for install and uninstall

0.0.2b0 (2019-05-15)

  • No need to change directory
  • Now supports uninstall, list and other configuration option
  • Flattten usr dir
  • Avoid duplicate dependencies
  • Add search subcommand
  • Refactor to use src/ layout using cookiecutter

0.0.1b0 (2018-01-19)

  • First release, simple install option alone

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

apt_local-0.0.2b1.tar.gz (16.5 kB view hashes)

Uploaded source

Built Distribution

apt_local-0.0.2b1-py2.py3-none-any.whl (8.0 kB view hashes)

Uploaded py2 py3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page