On Linux, you install software from package management applications like the Ubuntu Software Center. But not every piece of software is available in your Linux distribution’s 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.
You should only install software from sources you trust, just like on Windows. Much of this advice also applies to other Linux distributions, so we’ll note what’s Ubuntu-specific and what’s Linux-in-general.
DEB Package Files
Ubuntu software packages are in .deb file format. This includes packages you download from the Ubuntu Software Center and with apt-get — they’re all .deb files.
However, you can also install .deb packages from outside of Ubuntu’s software repositories. Many companies that produce software for Linux offer it in .deb format. For example, you can download .deb files for Google Chrome, Google Earth, Steam for Linux, Opera, and even Skype, from their official websites. Double-click the file and it will open in the Ubuntu Software Center, where you can install it.
Ubuntu is based on Debian, which created the .deb package format. Other Linux distributions will have their own package format if they’re not based on Debian. For example, Fedora and other Red Hat-based distributions use .rpm packages. Many companies that offer software for Linux offer it in a variety of package formats for different distributions.
Third-Party Package Repositories
Ubuntu runs its own package repositories full of open-source (and some closed-source) software compiled and packaged for Ubuntu. However, anyone can set up their own package repositories.
Third-party package repositories are often added to your system seamlessly. For example, when you install Google Chrome or Steam from a .deb file, the .deb file adds the official Google or Valve software repository to your system. When the package is updated in the repository, you’ll be notified of updates and can install them via the Software Updater application. Unlike on Windows, updates for all your installed software can be managed in one place.
You can view your software repositories and add more (if you know their details) from the Software Sources application included with Ubuntu.
Other Linux distributions also support third-party repositories, but repositories and the software they contain are distribution-specific.
Personal Package Archives (PPAs)
PPAs are another form of third-party package repositories. They’re hosted on Canonical’s Launchpad system, where anyone can create a PPA.
PPAs often contain experimental software that hasn’t been officially added to Ubuntu’s main, stable repositories. They may also contain newer versions of software that aren’t yet considered stable enough to make it to Ubuntu’s main repositories.
For example, Ubuntu’s Wine Team offers a PPA with the latest releases of the Wine software for running Windows applications on Linux. To add it, you would add the following line to the Software Sources application above:
ppa:ubuntu-wine/ppa
Each PPA page on Canonical’s Launchpad website includes instructions for adding the PPA to your system. Once a PPA is added to your system, you can install packages from the PPA using standard software like the Ubuntu Software Center, Software Updater, and apt-get command-line tool.
Compiling From Source
All binary software is compiled from source code. Ubuntu’s .deb packages contain software compiled specifically for the release of Ubuntu you’re using. These applications are compiled to use the software libraries available for your Ubuntu release.
The developers of a particular piece of software generally release the software in source code form. Linux distributions take the source code, compile it, and create packages for you. However, you can also download a program’s source code and compile it yourself. You shouldn’t normally need to do this on Ubuntu. Most experimental software you might want is probably in a PPA, where someone’s already done the hard work for you.
On other distributions, it may occasionally be necessary to compile a program to get the latest version you need or install a program that isn’t available in your repositories. However, the average Linux user — and even many geeky Linux users — will never have to compile something from source.
Source code files are generally distributed in .tar.gz format, but that’s just a type of archive — .tar.gz files could contain anything, just like .zip files can.
Binary Programs
Some programs are distributed in binary form, not source code form. This may be because the program is closed-source and the program’s distributer doesn’t want to do the hard work of packaging it for various distributions.
For example, Mozilla offers Linux downloads of Firefox binaries in .tar.bz2 format. (.tar.bz2 is just another archive format, like a zip file.) You can download this archive, extract it to a folder on your computer, and run the run-mozilla.sh script inside it (just double-click it) to run the downloaded Firefox binary.
However, you shouldn’t do this in the case of Firefox. Use the Firefox package that comes with your operating system — it’s probably better optimized, faster, and will update through your standard package management tools. Still, if you’re using an older distribution of Linux that comes with an outdated Firefox, you can download the Firefox binary to your computer and run it from a directory without needing any system-wide permissions to install it.
Suse Linux Software Repositories
Much closed-source software (particularly older, unsupported closed-source software) is distributed in unpackaged binary form. Software like the Linux ports of Doom 3, Quake 4, Unreal Tournament 2004, and Neverwinter Nights are distributed in binary packages and even have Windows-like installers. These installers are actually just programs that extract the game’s files to a folder and create application menu shortcuts.
Of course, there are other ways to install software on Ubuntu. The Zero Install (also known as 0install) project has been trying to change Linux software installation for over five years, creating a system for installing desktop software that works across all Linux distributions. However, the Zero Install project hasn’t gained much traction. Most Linux users are well-served by their Linux distribution’s package manager — particularly if they’re using Ubuntu, which most software is packaged for.
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?
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 Download
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]
Linux Software Applications
A package management system is different from a package development process.
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:
- 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.
Retrieved from 'https://en.wikipedia.org/w/index.php?title=Software_repository&oldid=915473759'