Coder Social home page Coder Social logo

altadvilchez / deb-get Goto Github PK

View Code? Open in Web Editor NEW

This project forked from wimpysworld/deb-get

1.0 0.0 0.0 783 KB

apt-get functionality for .debs published in 3rd party repositories or via direct download πŸ“¦

License: MIT License

Shell 98.28% Io 0.91% Roff 0.81%

deb-get's Introduction

Hacktoberfest 2022 mini-event

We want you! πŸ’ͺ

We're running a Hacktoberfest πŸŽƒ mini-event. The idea is simple. Land documentation πŸ“ in projects that deb-get already supports that explain how users of Debian and Ubuntu based distros can install and update the packages published by those projects.

deb-get
deb-get

apt-get functionality for .debs published in 3rd party repositories or via direct download. It works on Debian, Ubuntu and their derivative distributions.
Made with πŸ’ for &

Introduction

deb-get makes it easy to install and update .debs published in 3rd party apt repositories or made available via direct download on websites or GitHub release pages.

Install

Use deb-get to install deb-get.

sudo apt install curl
curl -sL https://raw.githubusercontent.com/wimpysworld/deb-get/main/deb-get | sudo -E bash -s install deb-get

Alternatively, you can download the .deb of deb-get from the releases page and install it manually with

sudo apt-get install ./path/to/deb-get_<version>.deb

Usage

Here's an example of how to install Google Chrome.

deb-get install google-chrome-stable

You can see what applications are supported by using deb-get list or you can search the available applications with deb-get search <app>.

You can upgrade packages installed using deb-get by running deb-get upgrade.


deb-get {update [--repos-only] | upgrade | show <pkg list> | install <pkg list>
        | reinstall <pkg list> | remove <pkg list> | purge <pkg list>
        | search <regex> | cache | clean
        | list [--raw|--installed|--not-installed] | prettylist [<repo>]
        | csvlist [<repo>] | fix-installed [--old-apps] | help | version}

deb-get provides a high-level commandline interface for the package management
system to easily install and update packages published in 3rd party apt
repositories or via direct download.

update
    update is used to resynchronize the package index files from their sources.
    When --repos-only is provided, only initialize and update deb-get's
    external repositories, without updating apt or looking for updates of
    installed packages.

upgrade
    upgrade is used to install the newest versions of all packages currently
    installed on the system.

install
    install is followed by one package (or a space-separated list of packages)
    desired for installation or upgrading.

reinstall
    reinstall is followed by one package (or a space-separated list of
    packages) desired for reinstallation.

remove
    remove is identical to install except that packages are removed instead of
    installed.

purge
    purge is identical to remove except that packages are removed and purged
    (any configuration files are deleted too).

clean
    clean clears out the local repository (/var/cache/deb-get) of retrieved
    package files.

search
    search for the given regex(7) term(s) from the list of available packages
    supported by deb-get and display matches.

show
    show information about the given package (or a space-separated list of
    packages) including their install source and update mechanism.

list
    list the packages available via deb-get. When no option is provided, list
    all packages and tell which ones are installed (slower). When --raw is
    provided, list all packages and do not tell which ones are installed
    (faster). When --installed is provided, only list the packages installed
    (faster). When --not-installed is provided, only list the packages not
    installed (faster).

prettylist
    markdown formatted list the packages available in repo. repo defaults to
    01-main. If repo is 00-builtin or 01-main the packages from 00-builtin are
    included. Use this to update README.md.

csvlist
    csv formatted list the packages available in repo. repo defaults to
    01-main. If repo is 00-builtin or 01-main the packages from 00-builtin are
    included. Use this with 3rd party wrappers.

cache
    list the contents of the deb-get cache (/var/cache/deb-get).

fix-installed
    fix installed packages whose definitions were changed. When --old-apps is
    provided, transition packages to new format. This command is only intended
    for internal use.

help
    show this help.

version
    show deb-get version.

Why?

3rd party apt repositories exist. They are not going away.

Some application vendors and projects express their support for Debian/Ubuntu by publishing .debs of their software as direct downloads or via their own apt repositories. deb-get makes it easy to find, install and update .debs published in this way.

  • Perhaps you want to use software that is not (yet) officially packaged for Debian/Ubuntu.
  • Perhaps you want to use software that is fast moving and newer versions are available from the vendor/project.
  • Perhaps you want to use some non-free software that Debian/Ubuntu cannot distribute due to licensing restrictions.

deb-get tries to remedy this by providing a curated index of software available for Ubuntu that is published by the project or vendor. deb-get is inspired by Software Boutique, a graphical application I co-authored that does much the same thing and has been included in Ubuntu MATE since 2015.

Supported Software

The list of the software that can be installed, updated and removed using deb-get's main repository is available at 01-main/README.

How do package updates work?

3rd party apt repositories and PPAs

If packages are available via a 3rd party apt repository or a Launchpad PPA , then those packages will be updated/upgraded when using sudo apt-get update and sudo apt-get upgrade.

GitHub Releases and direct downloads

For .deb packages that are only available via GitHub Releases or direct download , then those packages can only be updated/upgraded by using deb-get update and deb-get upgrade.

GitHub API Rate Limits

deb-get uses the GitHub REST API for some functionality when applications are provided via GitHub Releases and for unauthenticated interactions this API is rate-limited to 60 calls per hour per source (IP Address). This is vital for keeping the API responsive and available to all users, but can be inconvenient if you have a lot of GitHub releases being handled by deb-get (or need to update several times in a short period to test your contribution) and will result in, for example, temporary failures to be able to upgrade or install applications via GitHub Releases .

If you have a GitHub account you can authenticate your GitHub API usage to increase your rate-limit to 5000 requests per hour per authenticated user. To do this you will need to use a Personal Access Token (PAT). Once you have created a token within GitHub (or identified an appropriate existing token) you should insert it into an environment variable (DEBGET_TOKEN) for deb-get to pick up and use to authenticate to the GitHub API.

e.g.:

export DEBGET_TOKEN=<my-secret-token>
deb-get update
deb-get upgrade

Adding Software

For information on what is acceptable as suggestion for new packages and instructions on how to open a PR to add a new package to the main repository, head to 01-main/CONTRIBUTING.

Adding external repositories

It is possible to also add a deb-get-compatible external repository, and supplement the list of supported packages, typically because you need to:

  1. Add something which does not meet any of the general guidelines of the main repository; or
  2. Change the definition of a package from the main repository.

For information on how to create and maintain a deb-get-compatible external repository, head to EXTREPO.

How to use:

  • Manually create the file /etc/deb-get/<priority>-<repo>.repo, containing in its first line the base URL of the repository.
    • The <priority> value is a two-digit number between 00 and 99 that defines the order in which the repositories will be loaded (00 first, 99 last), so if any conflicting definitions are found, the one from the repository with the highest priority will be used (the builtin definitions from the deb-get script itself have priority 00, the main repository has priority 01 and the custom user includes have priority 99).
    • The <repo> value can be anything, but it should preferably be unique and easy to remember.
  • Run deb-get update, so the manifest file and the package definition files are downloaded.

Custom User Includes

As a more advanced feature, it is possible to also add your own local customizations or overrides, and supplement the list of packages supported by the main repository. This feature is especially useful so that your local copy of the main repository can remain unmodified and always be kept fully up to date by moving your customizations out in a seperate folder away from the main repository.

Typically because:

  1. You are waiting on a pending request for a new software package, which has been submitted for consideration but has not been reviewed / accepted / merged / released yet; or
  2. You need to add something which does not meet any of the general guidelines of the main repository, for whatever various reason(s).

How to use:

  • Manually create the folder /etc/deb-get/99-local.d/ if it does not exist already. By default, deb-get does not create this folder unless your specific distribution has packaged it that way.
  • Any files directly within this folder will be bash sourced e.g. . /etc/deb-get/99-local.d/appname1.
  • The name of the added file must match exactly the name of the package being defined.
  • For information on how to create a package definition file, head to EXTREPO.
  • Your user custom package definition files are then loaded after the package definitions from any added repository.
  • A recommendation message is printed for any new user added definitions, with a URL link to open a request.
  • Warning messages are then also printed for any conflicts detected for overriden definitions (of same name), which then take priority over existing ones.

For the last situation, this is most often meant as a helpful reminder to remove your custom definition once it has been successfully merged upstream into the main repository, so after the main repository updates itself you are properly notified. It also avoids keeping lots of duplicate definitions around.

We really hope that you will enjoy the convenience and flexibility of the user overrides feature, so please consider in return to open new issues and pull requests, for any new package definitions you create, so that we can share those back with the wider community. Many thanks for your consideration!

Related projects

  • App Outlet: A Universal linux app store
  • bin-get: Script to easily and safely fetch binaries from Github Releases/tags
  • makedeb: A simplicity-focused packaging tool for Debian archives
  • MakeResolveDeb: Install DaVinci Resolve or DaVinci Resolve Studio on Debian
  • pacstall: The AUR alternative for Ubuntu
  • Ubuntu Make: Easy setup of common tools for developers on Ubuntu.
  • unsnap: Quickly migrate from using snap packages to flatpaks

In the media

deb-get's People

Contributors

flexiondotorg avatar natanjunges avatar philclifford avatar ymauray avatar kingeejit avatar kz6fittycent avatar lyzardking avatar ohmymndy avatar xmetalfanx avatar dhitchcock avatar fuseteam avatar arif-ali avatar torusjkl avatar dreamcat4 avatar forage avatar dchubar-fj avatar marosg42 avatar luislavena avatar chriswayg avatar ghmusicalcoder avatar takov751 avatar sparkiegeek avatar mrm48 avatar matifali avatar n0rbert avatar nshalman avatar elniko7777 avatar pauloimon avatar pep-sanwer avatar sonulohani avatar

Stargazers

zzzzzz avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.