Software repository
Encyclopedia
A software repository is a storage location from which software packages
Software package (installation)
In package management systems, which are commonly used with Linux-based operating systems, a package is a specific piece of software which the system can install and uninstall....

 may be retrieved and installed on a computer.

Discussion

Many software publishers and other organizations maintain servers on the Internet
Internet
The Internet is a global system of interconnected computer networks that use the standard Internet protocol suite to serve billions of users worldwide...

 for this purpose, either free of charge or for a subscription fee. Repositories may be solely for particular programs, such as CPAN
CPAN
CPAN, the Comprehensive Perl Archive Network, is an archive of nearly 100,000 modules of software written in Perl, as well as documentation for it. It has a presence on the World Wide Web at and is mirrored worldwide at more than 200 locations...

 for the Perl
Perl
Perl is a high-level, general-purpose, interpreted, dynamic programming language. Perl was originally developed by Larry Wall in 1987 as a general-purpose Unix scripting language to make report processing easier. Since then, it has undergone many changes and revisions and become widely popular...

 programming language, or for an entire operating system
Operating system
An operating system is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer system...

. Operators of such repositories typically provide a package management system
Package management system
In software, a package management system, also called package manager, is a collection of software tools to automate the process of installing, upgrading, configuring, and removing software packages for a computer's operating system in a consistent manner...

, tools intended to search for, install and otherwise manipulate software packages from the repositories. For example, many Linux distribution
Linux distribution
A Linux distribution is a member of the family of Unix-like operating systems built on top of the Linux kernel. Such distributions are operating systems including a large collection of software applications such as word processors, spreadsheets, media players, and database applications...

s use Advanced Packaging Tool
Advanced Packaging Tool
The Advanced Packaging Tool, or APT, is a free user interface that works with core libraries to handle the installation and removal of software on the Debian GNU/Linux distribution and its variants...

 (APT), commonly found in Debian
Debian
Debian is a computer operating system composed of software packages released as free and open source software primarily under the GNU General Public License along with other free software licenses. Debian GNU/Linux, which includes the GNU OS tools and Linux kernel, is a popular and influential...

 based distributions or yum, found in Red Hat
Red Hat
Red Hat, Inc. is an S&P 500 company in the free and open source software sector, and a major Linux distribution vendor. Founded in 1993, Red Hat has its corporate headquarters in Raleigh, North Carolina with satellite offices worldwide....

 based distributions. There are also multiple independent package management systems, such as pacman, used in Arch Linux
Arch Linux
Arch Linux is an independently developed, Linux-based operating system for i686 and x86-64 computers. It is composed predominantly of free and open source software, and supports community involvement....

 and equo, found in Sabayon Linux.

As software repositories are designed to include useful packages, major repositories are designed to be malware
Malware
Malware, short for malicious software, consists of programming that is designed to disrupt or deny operation, gather information that leads to loss of privacy or exploitation, or gain unauthorized access to system resources, or that otherwise exhibits abusive behavior...

 free. If a computer is configured to use a digitally signed repository from a reputable vendor, and is coupled with an appropriate permissions system
File system permissions
Most current file systems have methods of administering permissions or access rights to specific users and groups of users. These systems control the ability of the users to view or make changes to the contents of the filesystem....

, 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.

Most major Linux distribution
Linux distribution
A Linux distribution is a member of the family of Unix-like operating systems built on top of the Linux kernel. Such distributions are operating systems including a large collection of software applications such as word processors, spreadsheets, media players, and database applications...

s have many repositories around the world that mirror the main repository.

Package management system vs. package development process

A package management system
Package management system
In software, a package management system, also called package manager, is a collection of software tools to automate the process of installing, upgrading, configuring, and removing software packages for a computer's operating system in a consistent manner...

 is different from a package development process
Package development process
A Software Package development process is a system for developing software packages. Packages make it easier to reuse and share code, e.g., via a software repository. A formal system for package checking can help expose bugs, thereby potentially making it easier to produce trustworty software...

. 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
R (programming language)
R is a programming language and software environment for statistical computing and graphics. The R language is widely used among statisticians for developing statistical software, and R is widely used for statistical software development and data analysis....

, the Comprehensive R Archive Network (CRAN)
Cran
Cran may refer to:*CRAN , the Comprehensive R Archive Network for the R programming language*Cran , a measurement of uncleaned herring*Cranberry, a fruit...

 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++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...

Boost
Haskell
Haskell (programming language)
Haskell is a standardized, general-purpose purely functional programming language, with non-strict semantics and strong static typing. It is named after logician Haskell Curry. In Haskell, "a function is a first-class citizen" of the programming language. As a functional programming language, the...

Common Architecture for Building Applications and Libraries (CABAL) Hackage http://haskell.org/haskellwiki/Cabal/How_to_install_a_Cabal_package
Perl
Perl
Perl is a high-level, general-purpose, interpreted, dynamic programming language. Perl was originally developed by Larry Wall in 1987 as a general-purpose Unix scripting language to make report processing easier. Since then, it has undergone many changes and revisions and become widely popular...

CPAN
CPAN
CPAN, the Comprehensive Perl Archive Network, is an archive of nearly 100,000 modules of software written in Perl, as well as documentation for it. It has a presence on the World Wide Web at and is mirrored worldwide at more than 200 locations...

PHP
PHP
PHP is a general-purpose server-side scripting language originally designed for web development to produce dynamic web pages. For this purpose, PHP code is embedded into the HTML source document and interpreted by a web server with a PHP processor module, which generates the web page document...

PEAR
Pear
The pear is any of several tree species of genus Pyrus and also the name of the pomaceous fruit of these trees. Several species of pear are valued by humans for their edible fruit, but the fruit of other species is small, hard, and astringent....

PECL
Python
Python (programming language)
Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive...

PyPI Python Package Manager
Python Package Manager
Python Package Manager is a Python utility intended to simplify the tasks of locating, installing, upgrading and removing Python packages...

R
R (programming language)
R is a programming language and software environment for statistical computing and graphics. The R language is widely used among statisticians for developing statistical software, and R is widely used for statistical software development and data analysis....

R CMD check process 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
Bioconductor
Bioconductor is a free, open source and open development software project for the analysis and comprehension of genomic data generated by wet lab experiments in molecular biology....

BiocLite.R
Ruby
Ruby (programming language)
Ruby is a dynamic, reflective, general-purpose object-oriented programming language that combines syntax inspired by Perl with Smalltalk-like features. Ruby originated in Japan during the mid-1990s and was first developed and designed by Yukihiro "Matz" Matsumoto...

RubyGems
RubyGems
RubyGems is a package manager for the Ruby programming language that provides a standard format for distributing Ruby programs and libraries , a tool designed to easily manage the installation of gems, and a server for distributing them. It is analogous to EasyInstall for the Python programming...

Ruby Application Archive
Ruby Application Archive
Ruby Application Archive is a repository of applications for Ruby programming language development.As of June 2005, it had four categories:* Application: more than 400 projectsTools for development and network middleware, including web frameworks, games,...

RubyForge
RubyForge
RubyForge is a collaborative software development management system dedicated to projects related to the Ruby programming language. It was started in 2003 by Ruby Central in an effort to help the Ruby community by providing a home for open source Ruby projects....

TeX
TeX
TeX is a typesetting system designed and mostly written by Donald Knuth and released in 1978. Within the typesetting system, its name is formatted as ....

, LaTeX
LaTeX
LaTeX is a document markup language and document preparation system for the TeX typesetting program. Within the typesetting system, its name is styled as . The term LaTeX refers only to the language in which documents are written, not to the editor used to write those documents. In order to...

CTAN
CTAN
CTAN is an acronym for the Comprehensive TeX Archive Network.It is the authoritative place where TeX related material and software can be found for download...


(Parts of this table were copied from http://stackoverflow.com/questions/1693529.)

See also

  • Package management system
    Package management system
    In software, a package management system, also called package manager, is a collection of software tools to automate the process of installing, upgrading, configuring, and removing software packages for a computer's operating system in a consistent manner...

  • Synaptic
  • RPM Package Manager
    RPM Package Manager
    RPM Package Manager is a package management system. The name RPM variously refers to the .rpm file format, files in this format, software packaged in such files, and the package manager itself...

  • dpkg
    Dpkg
    dpkg is the software at the base of the Debian package management system. dpkg is used to install, remove, and provide information about .deb packages....

  • Simtel
    Simtel
    Simtel is an Internet-based archive of shareware for various operating systems, particularly Microsoft Windows and MS-DOS. The Simtel archive has been available on the public Internet since 1993, when its older ARPANET host was shut down....

  • APTonCD
    APTonCD
    APTonCD is a tool that can create one or more ISOs, CDs or DVDs with all of the packages the user downloaded via APT-GET or APTITUDE, creating a removable repository that the user can use on other computers....

  • RUNZ

External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK