- A software repository, colloquially known as a 'repo' for short, is a storage location from which software packages may be retrieved and installed on a computer. These repositories often house metadata about the packages stored in the repository. One can often install or update local software using a given package manager installed on the local machine by accessing the packages stored on the repository through it.
- Linux Software Repositories Overview Google’s Linux software packages will automatically configure the repository settings necessary to keep your Google Linux applications up-to-date.
- Best Linux Software Repositories
- Linux Distributions Software Repositories
- Linux Software Repository Gentoo
- Find Linux Software Repositories
A software repository, colloquially known as a 'repo' for short, is a storage location from which software packages may be retrieved and installed on a computer. These repositories often house metadata about the packages stored in the repository. One can often install or update local software using a given package manager installed on the local machine by accessing the packages stored on the repository through it.
Overview[edit]
Many software publishers and other organizations maintain servers on the Internet for this purpose, either free of charge or for a subscription fee. Repositories may be solely for particular programs, such as CPAN for the Perl programming language, or for an entire operating system. Operators of such repositories typically provide a package management system, tools intended to search for, install and otherwise manipulate software packages from the repositories. For example, many Linux distributions use Advanced Packaging Tool (APT), commonly found in Debian based distributions, or yum found in Red Hat based distributions. There are also multiple independent package management systems, such as pacman, used in Arch Linux and equo, found in Sabayon Linux.
As software repositories are designed to include useful packages, major repositories are designed to be malware free. If a computer is configured to use a digitally signed repository from a reputable vendor, and is coupled with an appropriate permissions system, this significantly reduces the threat of malware to these systems. As a side effect, many systems that have these capabilities do not require anti-malware software such as anti-virus software.[1]
Most major Linux distributions have many repositories around the world that mirror the main repository.
Package management system vs. package development process[edit]
Best Linux Software Repositories
A package management system is different from a package development process.
As mentioned in the previous chapter, the package manager installs software by fetching packages from software repositories, therefore the software available for easy installation via the package manager depends on the configured repositories. A software repository is a collection of RPM packages (the openSUSE packaging format) and metadata for the available packages. Repositories make installing software on Linux significantly easier. Now, when instructed to add a repository on your Linux machine, you'll know exactly what that means. Open Source Weekly Newsletter. Any additional repositories added to the Kali sources.list file will most likely BREAK YOUR KALI LINUX INSTALL. Regular repositories. On a standard, clean install of Kali Linux, you should have the following entry present in /etc/apt/sources.list: You can find a list of official Kali Linux mirrors here. Remi Collet maintains a large collection of updated and extra packages at Remi’s RPM repository. Install EPEL first as Remi’s repo depends on it. The CentOS wiki has a list of additional third-party repositories to use, and some to avoid. Learn more about Linux through the free “Introduction to Linux” course from The Linux Foundation and edX.
Linux Distributions Software Repositories
A typical use of a package management system is to facilitate the integration of code from possibly different sources into a coherent stand-alone operating unit. Thus, a package management system might be used to produce a distribution of Linux, possibly a distribution tailored to a specific restricted application.
A package development process, by contrast, is used to manage the co-development of code and documentation of a collection of functions or routines with a common theme, producing thereby a package of software functions that typically will not be complete and usable by themselves. A good package development process will help users conform to good documentation and coding practices, integrating some level of unit testing. The table below provides examples of package development processes.
Selected repositories[edit]
The following table lists a few languages with repositories for contributed software. The 'Autochecks' column describes the routine checks done.
Very few people have the ability to test their software under multiple operating-systems with different versions of the core code and with other contributed packages they may use. For R, the Comprehensive R Archive Network (CRAN) runs tests routinely. To see how this is valuable, suppose Sally contributes a package A. Sally only runs the current version of the software under one version of Microsoft Windows, and has only tested it in that environment. At more or less regular intervals, CRAN tests Sally's contribution under a dozen combinations of operating systems and versions of the core R language software. If one of them generates an error, she gets that error message. With luck, that error message may suffice to allow her to fix the error, even if she cannot replicate it with the hardware and software she has. Next, suppose John contributes to the repository a package B that uses a package A. Package B passes all the tests and is made available to users. Later, Sally submits an improved version of A, which unfortunately, breaks B. The autochecks make it possible to provide information to John so he can fix the problem.
This example exposes both a strength and a weakness in the R contributed-package system: CRAN supports this kind of automated testing of contributed packages, but packages contributed to CRAN need not specify the versions of other contributed packages that they use. Procedures for requesting specific versions of packages exist, but contributors might not use those procedures.
Beyond this, a repository such as CRAN running regular checks of contributed packages actually provides an extensive if ad hoc test suite for development versions of the core language. If Sally (in the example above) gets an error message she does not understand or thinks is inappropriate, especially from a development version of the language, she can (and often does with R) ask the core development-team for the language for help. In this way, the repository can contribute to improving the quality of the core language software.
Language / purpose | Package Development Process | Repository | Install methods | Collaborative development platform | Autochecks |
---|---|---|---|---|---|
Haskell | Common Architecture for Building Applications and Libraries[2] | Hackage | |||
Java | Maven[3] | ||||
Julia[4] | |||||
Common Lisp | Quicklisp[5] | ||||
.NET | NuGet | NuGet[6] | |||
Node.js | NPM[7] | ||||
Perl | CPAN | PPM[8] | |||
PHP | PEAR, Composer | PECL, Packagist | |||
Python | Setuptools | PyPI | pip, EasyInstall, PyPM, Anaconda | ||
R | R CMD check process[9][10] | CRAN[11] | install.packages[12] | R-Forge[13] | Roughly weekly on 12 platforms or combinations of different versions of R (devel, prerel, patched, release) with up to 7 different operating systems (different versions of Linux, Windows, and Mac). |
Ruby | RubyGems | Ruby Application Archive | RubyForge | ||
Rust | Cargo[14] | Crates[15] | Cargo[14] | ||
TeX, LaTeX | CTAN |
(Parts of this table were copied from a 'List of Top Repositories by Programming Language' on Stack Overflow[16])
Many other programming languages, among them C, C++, and Fortran, do not possess a central software repository with universal scope. Notable repositories with limited scope include:
Linux Software Repository Gentoo
- Netlib, mainly mathematical routines for Fortran and C, historically one of the first open software repositories;
- Boost, a strictly curated collection of high-quality libraries for C++; some code developed in Boost later became part of the C++ standard library.
Repository managers[edit]
Software to manage repositories (repository managers) includes:
- Apache Archiva – 'repository management software [for a] build artifact repository'[17]
- Inedo's ProGet – 'Universal Package Manager. World-class features. Accessible for everyone.'[18]
- JFrog's Artifactory – 'managing binaries throughout the development cycle'[19]
- MyGet – 'continuous delivery service hosting 1000s of NuGet, Bower and NPM package repositories'[20]
- Packagecloud – 'A unified, developer friendly interface for all of your artifacts.'[21]
- Package Drone – 'a package manager repository for OSGi'[22]
- Sonatype's Nexus – : works with build tools like Ant, Ivy, Gradle, Maven, SBT among others.[23]
- Pulp – 'free and open source platform for managing repositories of software packages and making it available to large numbers of consumers. Supported types: RPM, Python, Puppet, Docker and OSTree.'[24]
See also[edit]
References[edit]
- ^itmWEB: Coping with Computer VirusesArchived October 14, 2007, at the Wayback Machine
- ^'The Haskell Cabal | Overview'. www.haskell.org. Retrieved 2019-03-25.
- ^'Maven – Welcome to Apache Maven'. maven.apache.org. Retrieved 2019-03-25.
- ^'Julia Package Listing'. pkg.julialang.org. Retrieved 2019-03-25.
- ^'Quicklisp beta'. www.quicklisp.org. Retrieved 2019-03-25.
- ^karann-msft. 'NuGet Package Manager UI Reference'. docs.microsoft.com. Retrieved 2019-03-25.
- ^'npm'. www.npmjs.com. Retrieved 2019-03-25.
- ^'Installing Perl Modules - www.cpan.org'. www.cpan.org. Retrieved 2019-03-25.
- ^Leisch, Friedrich. 'Creating R Packages: A Tutorial'(PDF).
- ^Graves, Spencer B.; Dorai-Raj, Sundar. 'Creating R Packages, Using CRAN, R-Forge, And Local R Archive Networks And Subversion (SVN) Repositories'(PDF).
- ^'The Comprehensive R Archive Network'. cran.r-project.org. Retrieved 2019-03-25.
- ^'R Installation and Administration'. cran.r-project.org. Retrieved 2019-03-25.
- ^'R-Forge: Welcome'. r-forge.r-project.org. Retrieved 2019-03-25.
- ^ ab'The Cargo Book'. Documentation. Rust Programming Language. Retrieved 2019-08-26.
- ^'Rust Package Registry'. crates.io. Retrieved 2019-08-26.
- ^'List of Top Repositories by Programming Language'. Stack Overflow. Retrieved 2010-04-14.
- ^'Apache Archiva: The Build Artifact Repository Manager'. The Apache Software Foundation. Retrieved 2013-04-17.
Apache Archiva[...] is an extensible repository management software that helps taking care of your own personal or enterprise-wide build artifact repository.
- ^'ProGet'. Inedo. Retrieved 2016-02-11.
Consistency, continuity, compliance – all in one centralized universal package manager with ProGet.
- ^'Artifactory. Manage Your Binaries'. JFrog. Retrieved 2014-10-20.
As the first Binary Repository Management solution, Artifactory has changed the way binaries are controlled, stored and managed throughout the software release cycle.
- ^'MyGet: Hosted NuGet, NPM, Bower and Vsix'. MyGet. Retrieved 2013-03-13.
MyGet hosts thousands of NuGet, Bower and NPM repositories used by companies and individual developers worldwide. MyGet comes with built-in Build Services, and also provides friction-free integration with GitHub, BitBucket and Visual Studio Online.
- ^Canals, Armando (2018-06-25). 'Continuous package publishing, part I: introduction to package management in CI/CD'. circleci.com.
[packagecloud] hosts private and public package repositories for many different package types and works seamlessly with different package managers.
- ^'Package Drone'. Retrieved 2015-01-23.
The idea is to have a workflow of Tycho Compile -> publish to repo -> Tycho Compile (using deployed artifacts). And some repository tools like cleanup, freezing, validation.
- ^'Nexus Repository Manager'. Sonatype. Retrieved 2014-05-21.
Nexus Pro gives you more information, more control, and better collaboration across your team than ever before. And it works with build tools like Ant, Ivy, Gradle, Maven, SBT and others. Use Nexus as the foundation for your complete Component Lifecycle Management approach.
- ^'Pulp | software repository management'. pulpproject.org. Retrieved 2017-07-11.
Installing software on Linux involves package managers and software repositories, not downloading and running .exe files from websites like on Windows. If you’re new to Linux, this can seem like a dramatic culture shift.
While you can compile and install everything yourself on Linux, package managers are designed to do all the work for you. Using a package manager makes installing and updating software easier than on Windows.
Linux vs. Windows
Find Linux Software Repositories
There are a wide variety of Linux distributions and a wide variety of package managers. Linux is built from open-source software, which means that each Linux distribution compiles its own software with its desired library versions and compilation options. Compiles Linux applications generally don’t run on every distribution – even if they could, installation would be hindered by competing package formats.If you locate a Linux application’s website, you’ll likely see a variety of download links for different package formats and Linux distributions – assuming the application’s website provides pre-compiled versions at all. The application may tell you to download the source code and compile it yourself.
Software Repositories
Linux users don’t normally download and install applications from the applications’ websites, like Windows users do. Instead, each Linux distribution hosts their own software repositories. These repositories contain software packages specially compiled for each Linux distribution and version. For example, if you’re using Ubuntu 12.04, the repositories you use contain packages specially compiled for Ubuntu 12.04. A Fedora user uses a repository full of packages specially compiled for their version of Fedora.
Package Managers
Think of a package manager like a mobile app store – except they were around long before app stores. Tell the package manager to install software and it will automatically download the appropriate package from its configured software repositories, install it, and set it up – all without you having to click through wizards or hunt down .exe files on websites. When an update is released, your package manager notices and downloads the appropriate update. Unlike on Windows, where each application must have its own updater to receive automatic updates, the package manager handles updates for all installed software — assuming they were installed from the software repositories.
What’s a Package?
Unlike on Windows, where applications come in .exe installer files that can do anything they like to the system, Linux uses special package formats. There are a variety of package types – most notably DEB on Debian and Ubuntu and RPM on Fedora, Red Hat, and others. These packages are essentially archives containing a list of files. The package manager opens the archive and installs the files to the location the package specifies. The package manager remains aware of which files belong to which packages – when you uninstall a package, the package manager knows exactly which files on the system belong to it. Windows has no idea what files belong to an installed application – it lets application installers manage installation and uninstallation themselves.
Packages can also contain scripts that run when the package is installed and removed, although these are generally used for system setup and not moving files to arbitrary locations.

Installing Software on Linux
To install software on Linux, open your package manager, search for the software, and tell the package manager to install it. Your package manager will do the rest. Linux distributions often offer a variety of frontends to the package manager. For example, on Ubuntu, the Ubuntu Software Center, Update Manager, Synaptic application, and apt-get command all use apt-get and dpkg to download and install DEB packages. You can use any utility you like – they just provide different interfaces. You’ll generally find a simple, graphical package manager in your Linux distribution’s menus.
Update Delays
One thing new Linux users often notice with package managers and repositories is a delay before new software versions reach their systems. For example, when a new version of Mozilla Firefox is released, Windows and Mac users will acquire it from Mozilla. On Linux, your Linux distribution must package the new version and push it out as an update. If you open Firefox’s preferences window on Linux, you’ll note that Firefox has no ability to automatically update itself (assuming you’re using the version of Firefox from your Linux distribution’s repositories).
You can also download and install the application yourself – for example, downloading Firefox directly from Mozilla — but this may require compiling and installing the software from source and removes the benefits of package managers, such as automatic, centralized security updates.
While new versions of Firefox are a priority because they contain security updates, other applications may not be delivered as quickly. For example, a major new version of the LibreOffice office suite may not ever be released as an update for the current version of your Linux distribution. To avoid potential instability and allow time for testing, this version may not be available until the next major release of your Linux distribution – for example, Ubuntu 12.10 – when it becomes the default version in the distribution’s software repositories.
To fix this problem, some Linux distributions, such as Arch Linux, offer “rolling release cycles,” where new versions of software are pushed into the main software repositories. This may cause problems – while you may want new versions of desktop applications, you probably don’t care about new versions of low-level system utilities, which could potentially introduce instability.
Ubuntu offers the backports repository to bring newer versions of significant packages to older distributions, although not all new versions make it into the backports repository.
Other Repositories
While Linux distributions ship with their own repositories pre-configured, you can also add other repositories to your system. Once you have, you can install software repositories from that repository and receive updates from it using your package manager. The repository you add must be designed for your Linux distribution and package manager.
For example, Ubuntu offers a wide variety of personal package archives (PPAs), which contain software compiled by individuals and teams. Ubuntu doesn’t vouch for the stability or security of the packages in these repositories, but you can add PPAs from trusted individuals to download packages not yet in Ubuntu’s repository – or download newer versions of existing packages.
Some third-party applications also use their own software repositories. For example, when you install Google Chrome on Ubuntu, it adds its own apt repository to your system. This ensures you receive updates to Google Chrome through Ubuntu’s Update Manager and standard software installation tools.
READ NEXT- › How to Use Text Editing Gestures on Your iPhone and iPad
- › Windows 10’s BitLocker Encryption No Longer Trusts Your SSD
- › How to Disable or Enable Tap to Click on a PC’s Touchpad
- › How HTTP/3 and QUIC Will Speed Up Your Web Browsing
- › Motherboards Explained: What Are ATX, MicroATX, and Mini-ITX?