Software repository: Difference between revisions

Content deleted Content added
m Removing link(s) undefined (XFDcloser)
m rm contraction
 
(6 intermediate revisions by 5 users not shown)
Line 28:
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 the [[R (programming language)|R programming language]], the [[CRAN (R programming language)|Comprehensive R Archive Network (CRAN)]] runs tests routinely.
 
To understand how this is valuable, imagine a situation with two developers, Sally and John. 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 details may provide enough input to allow enable a fix for the error, even if she cannot replicate it with her current hardware and software. 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.
Line 184:
|-
|[[Homebrew (package manager)|Homebrew]]
|A package installer for MacOS that allows one to install packages Apple didn'tdid not<ref>{{Cite web|url=https://brew.sh/|title=Homebrew|website=Homebrew|language=en|access-date=2019-11-22|archive-date=2022-10-05|archive-url=https://web.archive.org/web/20221005114956/https://brew.sh/|url-status=live}}</ref>
|-
|[[vcpkg]]
Line 197:
 
== Repository managers ==
In an enterprise environment, a software repository is usually used to store artifacts, or to mirror external repositories which may be inaccessible due to security restrictions. Such repositories may provide additional functionality, like access control, versioning, security checks for uploaded software, cluster functionality etc. and typically support a variety of formats in one package, so as to cater for all the needs in an enterprise, and thus aiming to provide a single point of truth. PopularOne examplesexample are [[JFrog Artifactory]],<ref>{{Cite web|url=https://www.wikieduonline.com/wiki/JFrog_Artifactory|title=JFrog Artifactory - wikieduonline|access-date=2021-04-25|archive-date=2021-03-05|archive-url=https://web.archive.org/web/20210305194720/https://www.wikieduonline.com/wiki/Jfrog_artifactory|url-status=live}}</ref><ref>{{Cite web|url=https://jfrog.com/artifactory/|title=Artifactory - Universal Artifact Management|access-date=2021-04-25|archive-date=2021-05-01|archive-url=https://web.archive.org/web/20210501195901/https://jfrog.com/artifactory/|url-status=live}}</ref>is [[Sonatype Nexus Repository]].<ref>{{Cite web|url=https://www.sonatype.com/products/repository-pro|title=Nexus Repository &#124; Software Component Management|access-date=2021-04-25|archive-date=2021-04-25|archive-url=https://web.archive.org/web/20210425085038/https://www.sonatype.com/products/repository-pro|url-status=live}}</ref> and [[Cloudsmith]],<ref>{{Cite web|url=https://www.cloudsmith.com/|title=Cloudsmith artifact repository|access-date=2023-09-11|archive-date=2023-07-16|archive-url=https://web.archive.org/web/20230716121932/https://cloudsmith.com/|url-status=live}}</ref> a cloud-based product.
 
At server side, a software repository is typically managed by source control or repository managers. Some of the repository managers allow to aggregate other repository ___location into one URL and provide a caching proxy. When doing continuous builds many artifacts are produced and often centrally stored, so automatically deleting the ones which are not released is important.