Software repository

Software repository

A software repository is a storage location from which software packages may be retrieved and installed on a computer.

Contents

Discussion

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

A package management system is different from a package development process. A typical use of the former 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

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 Windows and has only tested it there. At more or less regular intervals, CRAN tests Sally's contribution under a dozen combinations of operating system and version of the core R language software. If one of them generates an error, she gets that error message. With luck, that error message may be sufficient to allow her to fix the error, even if she cannot replicated 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: The strength is that CRAN supports this kind of automated testing of contributed packages. The weakness is that packages contributed to CRAN need not specify the versions of other contributed packages that they use. There are procedures for requesting specific versions of packages, but they might not be used.

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 How to install Collaborative development platform Autochecks
C++ Boost
Haskell Common Architecture for Building Applications and Libraries (CABAL) Hackage [1]
Perl CPAN
PHP PEAR PECL
Python PyPI Python Package Manager
R R CMD check process[2][3] CRAN install.packages R-Forge Roughly weekly on 12 platforms or combinations of different version of R (devel, prerel, patched, release) with up to 7 different operating systems (different versions of Linux, Windows, and Mac).
Bioconductor BiocLite.R
Ruby RubyGems Ruby Application Archive RubyForge
TeX, LaTeX CTAN

(Parts of this table were copied from [2].)

See also

References

  1. ^ itmWEB: Coping with Computer Viruses
  2. ^ Leisch, Friedrich. "Creating R Packages: A Tutorial". http://cran.r-project.org/doc/contrib/Leisch-CreatingPackages.pdf. 
  3. ^ Graves, Spencer B.; Dorai-Raj, Sundar. "Creating R Packages, Using CRAN, R-Forge, And Local R Archive Networks And Subversion (SVN) Repositories". http://cran.r-project.org/doc/contrib/Graves+DoraiRaj-RPackageDevelopment.pdf. 

External links


Wikimedia Foundation. 2010.

Игры ⚽ Поможем решить контрольную работу

Look at other dictionaries:

  • Repository — commonly refers to a location for storage, often for safety or preservation. Repository may also refer to: Repository clone, concept from distributed revision control Repository (publishing), real or virtual facility for the deposit of academic… …   Wikipedia

  • Software Distributor — (SD) is the Hewlett Packard company s name for their HP UX software package management system.SD provides a set of tools for creating packages that will install software on a system running the HP UX operating system. The packages can be grouped… …   Wikipedia

  • Repository — Ein Repository (engl. für Lager, Depot, Quellen oder Archiv, Plural Repositories), auch Repositorium, ist ein verwaltetes Verzeichnis zur Speicherung und Beschreibung von digitalen Objekten. Bei den verwalteten Objekten kann es sich… …   Deutsch Wikipedia

  • Repository clone — A Repository clone is a concept from distributed revision control which represents the cloning of a remote software repository to a local copy .emanticsA clone operation is performed when a developer want to start working on an existing… …   Wikipedia

  • Software testing — is an empirical investigation conducted to provide stakeholders with information about the quality of the product or service under test [ [http://www.kaner.com/pdfs/ETatQAI.pdf Exploratory Testing] , Cem Kaner, Florida Institute of Technology,… …   Wikipedia

  • Software art — refers to works of art where the creation of software, or concepts from software, play an important role; for example software applications which were created by artists and which were intended as artworks. Although video games are also software… …   Wikipedia

  • Software design pattern — In software engineering, a design pattern is a general reusable solution to a commonly occurring problem within a given context in software design. A design pattern is not a finished design that can be transformed directly into code. It is a… …   Wikipedia

  • Repository Open Service Interface Definition — ummaryThe Repository Open Service Interface Definition (OSID) is an O.K.I. specification which defines the storing and retrieving of digital content, referred to as Assets . OSIDs are programmatic interfaces which comprise a Service Oriented… …   Wikipedia

  • Software quality — Contents 1 Motivation for Defining Software Quality 2 Definition 3 Alternative Approaches to Software Quality Defin …   Wikipedia

  • Software framework — A software framework, in computer programming, is an abstraction in which common code providing generic functionality can be selectively overridden or specialized by user code providing specific functionality.Frameworks are similar to software… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”