소프트웨어 저장소
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
소프트웨어 저장소는 소프트웨어 패키지를 중앙 집중식으로 저장하고 관리하는 위치이다. 저장소는 특정 프로그램 전용이거나 전체 운영 체제를 위한 것일 수 있으며, 사용자가 소프트웨어 패키지를 검색, 설치 및 관리할 수 있도록 패키지 관리 시스템을 제공한다. 주요 저장소는 악성 코드가 없도록 설계되었으며, 다양한 프로그래밍 언어와 목적에 따라 여러 종류가 존재한다. 주요 소프트웨어 저장소로는 R의 CRAN, Python의 PyPI, Node.js의 npm 등이 있으며, 기업 환경에서는 저장소 관리자를 사용하여 아티팩트 저장, 접근 제어, 버전 관리, 보안 검사 등의 기능을 제공한다.
더 읽어볼만한 페이지
소프트웨어 저장소 | |
---|---|
소프트웨어 저장소 | |
정의 | 소프트웨어 패키지를 저장하고 관리하는 저장소 |
목적 | 소프트웨어 패키지의 중앙 집중식 저장, 관리 및 배포 |
특징 | 소프트웨어 패키지 및 메타데이터 저장 패키지 검색 및 다운로드 기능 제공 종속성 관리 지원 버전 관리 지원 접근 제어 및 보안 기능 제공 |
유형 | 로컬 저장소 원격 저장소 공용 저장소 사설 저장소 |
예시 | APT (데비안, 우분투) RPM (레드햇, CentOS) Pacman (아치 리눅스) Homebrew (macOS) NuGet (닷넷 프레임워크) PyPI (파이썬) Maven (자바) npm (Node.js) |
용어 | |
영문 명칭 | Software repository |
일본어 명칭 | ソフトウェアリポジトリ (Sofutowea Ripojitori) |
2. 소프트웨어 저장소의 개념 및 기능
소프트웨어 저장소는 프로그램 코드, 라이브러리, 관련 데이터 등 소프트웨어 패키지를 저장하고 관리하는 중앙 집중식 위치이다. 다양한 소프트웨어를 모아두고 사용자가 쉽게 찾아 설치할 수 있도록 하는 일종의 '소프트웨어 보관소'라고 할 수 있다.
소프트웨어 저장소는 단순히 파일을 저장하는 것뿐만 아니라, 다음과 같은 중요한 기능도 수행한다.
- 패키지 관리: 저장소는 패키지 관리 시스템과 연동하여 소프트웨어 설치, 업데이트, 제거 등을 자동화한다.
- 보안: 주요 저장소는 악성 코드가 없는 안전한 소프트웨어를 제공하며, 디지털 서명을 통해 신뢰성을 보장한다.
- 접근성: 전 세계에 분산된 미러 저장소를 통해 사용자는 빠르고 안정적으로 소프트웨어를 다운로드할 수 있다.
패키지 관리 시스템은 패키지 개발 프로세스와는 다르다. 패키지 관리 시스템은 다양한 소스의 코드를 일관된 독립 실행형 운영 단위로 통합하기 쉽게 만들며, 리눅스 배포판을 만드는 데 사용될 수 있다. 반면, 패키지 개발 프로세스는 공통 주제를 가진 함수 또는 루틴 컬렉션의 코드와 문서를 공동 개발하는 데 사용되며, 일반적으로 완전하지 않고 그 자체로는 사용할 수 없는 소프트웨어 함수 패키지를 생성한다. 훌륭한 패키지 개발 프로세스는 사용자가 훌륭한 문서와 코딩 기법을 준수하고, 단위 테스트를 통합하는 데 도움이 된다.
언어 / 목적 | 패키지 개발 프로세스 | 저장소 | 설치 방식 | 협업 개발 플랫폼 | 자동 검사 |
---|---|---|---|---|---|
C++ | Boost | ||||
하스켈 | [http://www.haskell.org/cabal CABAL] | 하스켈 | [http://haskell.org/haskellwiki/Cabal/How_to_install_a_Cabal_package] | ||
자바 | 메이븐 | [http://maven.apache.org/] | |||
줄리아 | [http://pkg.julialang.org/] | ||||
커먼 리스프 | Quicklisp | [https://www.quicklisp.org/beta/] | |||
닷넷 프레임워크 | NuGet | NuGet | [http://docs.nuget.org/docs/start-here/managing-nuget-packages-using-the-dialog#Installing_a_Package] | ||
Node.js | NPM | [http://npmjs.org/] | |||
펄 | CPAN | PPM[78] | |||
PHP | PEAR, 컴포저 | PECL, Packagist | |||
파이썬 | Setuptools | PyPI | pip, 이지인스톨, PyPM | ||
R | R CMD 체크 프로세스[76][77] | [https://cran.r-project.org/ CRAN] | [https://cran.r-project.org/doc/manuals/R-admin.html#Installing-packages install.packages] | [http://r-forge.r-project.org/ R-Forge] | 12개 플랫폼 또는 각기 다른 버전의 R(devel, prerel, patched, release)의 조합으로 약 1주에 한 번, 최대 7개의 운영 체제까지(리눅스, 윈도우, 맥의 각기 다른 버전) |
바이오컨덕터 | [http://www.bioconductor.org/docs/install BiocLite.R] | ||||
루비 | RubyGems | 루비 애플리케이션 아카이브 | 루비포지 | ||
TeX, LaTeX | CTAN |
2. 1. 패키지 관리 시스템과의 관계
소프트웨어 게시자 및 기타 여러 조직은 이러한 목적으로 인터넷 상에 서버를 운영하며, 무료 또는 구독료를 받고 서비스를 제공한다. 저장소는 펄 프로그래밍 언어를 위한 CPAN과 같이 특정 프로그램 전용이거나 전체 운영 체제를 위한 것일 수 있다. 이러한 저장소 운영자는 일반적으로 해당 저장소에서 소프트웨어 패키지를 검색, 설치 및 조작하기 위한 도구인 패키지 관리 시스템을 제공한다.[1] 예를 들어, 많은 리눅스 배포판은 데비안 기반 배포판에서 흔히 사용되는 Advanced Packaging Tool (APT) 또는 레드햇 기반 배포판에서 사용되는 Yellowdog Updater, Modified (yum)을 사용한다. 또한 Arch Linux에서 사용되는 pacman, Sabayon Linux에서 사용되는 equo와 같은 여러 독립적인 패키지 관리 시스템도 있다.[1]소프트웨어 저장소는 유용한 패키지를 포함하도록 설계되었으므로, 주요 저장소는 악성 코드가 없도록 설계되었다. 컴퓨터가 신뢰할 수 있는 공급업체의 디지털 서명된 저장소를 사용하도록 구성되어 있고 적절한 파일 시스템 권한 시스템과 결합된 경우, 이러한 시스템에 대한 악성 코드의 위협을 크게 줄일 수 있다. 부수적으로 이러한 기능을 갖춘 많은 시스템은 안티 바이러스 소프트웨어와 같은 악성 코드 방지 소프트웨어가 필요하지 않다.[1]
대부분의 주요 리눅스 배포판은 전 세계에 메인 저장소를 미러링하는 여러 저장소를 가지고 있다. 클라이언트 측에서 패키지 관리자는 저장소에서 설치하고 업데이트하는 데 도움을 준다.
2. 2. 저장소의 이점
소프트웨어 저장소는 중앙 집중식으로 소프트웨어를 관리하여 여러 이점을 제공한다.저장소 운영자는 일반적으로 패키지 관리 시스템이라는 도구를 제공하여 사용자가 저장소에서 소프트웨어 패키지를 검색, 설치 및 조작할 수 있도록 돕는다. 예를 들어, 많은 리눅스 배포판은 데비안 기반의 APT나 레드햇 기반의 yum과 같은 패키지 관리 시스템을 사용한다. Arch Linux의 pacman, Sabayon Linux의 equo와 같이 독립적인 패키지 관리 시스템도 존재한다.
소프트웨어 저장소는 유용한 패키지를 포함하도록 설계되며, 주요 저장소는 악성코드가 없도록 설계된다. 신뢰할 수 있는 공급업체의 디지털 서명된 저장소를 사용하고, 적절한 파일 시스템 권한 시스템을 함께 사용하면 악성 코드의 위협을 크게 줄일 수 있다. 이러한 기능을 갖춘 시스템은 안티 바이러스 소프트웨어와 같은 악성 코드 방지 소프트웨어가 필요하지 않은 경우가 많다.[1]
대부분의 주요 리눅스 배포판은 전 세계에 여러 미러 저장소를 운영하여 사용자가 더 빠르게 소프트웨어를 내려받을 수 있도록 지원한다.
엔터프라이즈 환경에서는 소프트웨어 저장소가 아티팩트를 저장하거나, 보안 제한으로 인해 접근할 수 없는 외부 저장소를 미러링하는 데 사용된다. 이러한 저장소는 접근 제어, 버전 관리, 업로드된 소프트웨어의 보안 검사, 클러스터 기능 등 추가 기능을 제공하며, 일반적으로 기업의 모든 요구 사항을 충족하기 위해 다양한 형식을 지원하는 단일 패키지로 제공되어 신뢰할 수 있는 유일한 정보 소스 역할을 한다. Artifactory와 Nexus 등이 널리 사용된다.
클라이언트 측에서는 패키지 관리자가 저장소에서 설치 및 업데이트를 지원하고, 서버 측에서는 소프트웨어 저장소가 일반적으로 소스 관리 또는 저장소 관리자에 의해 관리된다. 일부 저장소 관리자는 여러 저장소의 위치를 하나의 URL로 통합하고 캐시 프록시를 제공하기도 한다. 지속적 빌드를 수행하는 경우, 많은 아티팩트가 생성되어 중앙에 저장되므로 릴리스되지 않은 아티팩트를 자동으로 삭제하는 것이 중요하다.
3. 주요 소프트웨어 저장소
프로그래밍 언어별 주요 저장소들을 비교 분석하고, 각 저장소의 특징과 장단점을 설명한다.
언어 / 목적 | 패키지 개발 프로세스 | 저장소 | 설치 방식 | 협업 개발 플랫폼 | 자동 검사 |
---|---|---|---|---|---|
C++ | Boost | ||||
하스켈 | [http://www.haskell.org/cabal CABAL] | 하스켈 | [http://haskell.org/haskellwiki/Cabal/How_to_install_a_Cabal_package] | ||
자바 | 메이븐 | [http://maven.apache.org/] | |||
줄리아 | [http://pkg.julialang.org/] | ||||
커먼 리스프 | Quicklisp | [https://www.quicklisp.org/beta/] | |||
닷넷 프레임워크 | NuGet | NuGet | [http://docs.nuget.org/docs/start-here/managing-nuget-packages-using-the-dialog#Installing_a_Package] | ||
Node.js | NPM | [http://npmjs.org/] | |||
펄 | CPAN | PPM[http://www.cpan.org/modules/INSTALL.html] | |||
PHP | PEAR, 컴포저 | PECL, Packagist | |||
파이썬 | Setuptools | PyPI | pip, 이지인스톨, PyPM | ||
R | R CMD 체크 프로세스[76][77] | [https://cran.r-project.org/ CRAN] | [https://cran.r-project.org/doc/manuals/R-admin.html#Installing-packages install.packages] | [http://r-forge.r-project.org/ R-Forge] | 12개 플랫폼 또는 각기 다른 버전의 R(devel, prerel, patched, release)의 조합으로 약 1주에 한 번, 최대 7개의 운영 체제까지(리눅스, 윈도우, 맥의 각기 다른 버전) |
바이오컨덕터 | [http://www.bioconductor.org/docs/install BiocLite.R] | ||||
루비 | RubyGems | 루비 애플리케이션 아카이브 | 루비포지 | ||
TeX, LaTeX | CTAN |
(이 표의 일부는 스택 오버플로의 "List of Top Repositories by Programming Language"에서 가져온 것이다[78])
위 표는 기여된 소프트웨어 저장소를 가진 몇몇 언어를 나열하며, "자동 점검" 열은 수행되는 일상적인 점검을 설명한다.
대부분의 개발자는 자신의 소프트웨어를 여러 운영 체제, 다양한 핵심 코드 버전, 그리고 사용할 수 있는 다른 기여된 패키지에서 모두 테스트하기 어렵다. R의 경우, CRAN에서 일상적으로 테스트를 실행하여 이러한 문제를 해결한다.
R CRAN의 자동 점검 시스템의 가치를 설명하기 위해 샐리와 존의 예를 들 수 있다.
- 샐리의 경우: 샐리는 패키지 A를 개발하여 CRAN에 기여했다. 샐리는 Microsoft Windows 한 버전에서 현재 버전의 R 소프트웨어만 실행하여 테스트를 진행했다. 하지만 CRAN은 샐리의 패키지를 다양한 운영 체제 및 R 버전 조합에서 자동으로 테스트한다. 만약 특정 조합에서 오류가 발생하면, 샐리는 오류 메시지를 받게 된다. 이 메시지는 샐리가 자신의 환경에서 오류를 재현할 수 없더라도, 문제를 해결하는 데 필요한 정보를 제공할 수 있다.
- 존의 경우: 존은 샐리의 패키지 A를 사용하는 패키지 B를 개발하여 CRAN에 기여했다. 패키지 B는 모든 테스트를 통과하여 사용자에게 제공되었다. 그러나 샐리가 패키지 A를 업데이트하면서 패키지 B에 문제가 발생하게 되었다. CRAN의 자동 점검 시스템은 존에게 이 문제를 알리고, 존은 문제 해결에 필요한 정보를 얻을 수 있다.
이 예시는 R 기여 패키지 시스템의 장점과 약점을 모두 보여준다. CRAN은 자동 테스트를 지원하여 패키지 간의 잠재적 충돌이나 오류를 조기에 발견하고 개발자에게 피드백을 제공한다. 이는 R 핵심 언어 소프트웨어의 품질 개선에도 기여한다. 하지만 CRAN에 기여된 패키지가 반드시 다른 패키지의 특정 버전을 명시해야 하는 것은 아니므로, 패키지 간 호환성 문제가 발생할 수 있다.
C, C++, 포트란 등은 중앙 집중식 소프트웨어 저장소가 없는 경우가 많다. 제한적인 범위를 가진 주목할 만한 저장소는 다음과 같다.
- Netlib: 주로 포트란과 C용 수학 루틴을 제공하며, 역사적으로 최초의 오픈 소스 소프트웨어 저장소 중 하나이다.
- Boost: C++를 위한 고품질 라이브러리의 엄격하게 큐레이션된 모음이다. Boost에서 개발된 일부 코드는 나중에 C++ 표준 라이브러리의 일부가 되었다.
3. 1. 범용 프로그래밍 언어
C++, 자바, .NET, Node.js, 펄, PHP, 파이썬, R, 루비, 러스트, 고, 다트, 하스켈, Common Lisp, 줄리아 등 다양한 프로그래밍 언어는 각자의 패키지 저장소를 가지고 있다. 이러한 저장소들은 개발자들이 코드를 공유하고 재사용하는 데 중요한 역할을 한다.각 언어별 주요 저장소는 다음과 같다.
언어 | 저장소 | 설명 |
---|---|---|
C++ | Boost, vcpkg | Boost는 C++ 표준 라이브러리를 확장하는 기능을 제공한다.[78] vcpkg는 패키지 관리자이다. |
자바 | 메이븐 | 자바용 패키지 개발 프로세스 저장소이다.[78] |
.NET | NuGet | 닷넷 프레임워크 환경에서 사용되는 주요 저장소이다.[78] |
Node.js | NPM | Node.js 개발에 필요한 다양한 모듈을 제공한다.[78] |
펄 | CPAN(Comprehensive Perl Archive Network) | 펄 프로그래밍 언어를 위한 방대한 양의 모듈과 라이브러리를 제공한다. |
PHP | PEAR, 컴포저, Packagist | |
파이썬 | PyPI | 파이썬 패키지를 저장하고 관리하는 주요 저장소이다. |
R | CRAN, 바이오컨덕터 | CRAN은 R 패키지의 공식 저장소이며, 바이오컨덕터는 생물정보학 분야 R 패키지 저장소이다. |
루비 | RubyGems | 루비 애플리케이션 아카이브 저장소이다.[78] |
러스트 | Crates.io | 러스트 커뮤니티의 중앙 패키지 저장소이다.[78] |
고 | (정보 없음) | 주어진 원본 문서에 정보가 없다. |
다트 | pub.dev | 다트 프로그래밍 언어 관련 생태계를 구성한다. |
하스켈 | CABAL | 하스켈 응용 프로그램 및 라이브러리 구축을 위한 공통 아키텍처이다.[78] |
Common Lisp | Quicklisp | 커먼 리스프 생태계의 주요 저장소 중 하나이다. |
줄리아 | [http://pkg.julialang.org/] | 줄리아 패키지를 관리한다.[78] |
3. 1. 1. C/C++
C++Boost는 C++ 표준 라이브러리를 확장하는 다양한 기능을 제공하는 라이브러리이다.[78] Boost는 많은 C++ 개발 프로젝트에서 활용된다.최근에는 vcpkg와 같은 패키지 관리자를 활용하여 C++ 라이브러리를 관리하기도 한다.
3. 1. 2. 자바 (Java)
메이븐은 자바용 패키지 개발 프로세스 저장소이다.[78]3. 1. 3. 닷넷 (.NET)
닷넷 프레임워크 환경에서 사용되는 주요 저장소는 NuGet이다.[78] NuGet을 통해 패키지를 설치할 수 있다.3. 1. 4. Node.js
Node.js는 서버 측 자바스크립트 실행 환경으로, NPM을 주요 패키지 저장소로 사용한다.[78] NPM은 Node.js 개발에 필요한 다양한 모듈을 제공하며, 한국의 웹 개발 환경에서도 널리 활용되고 있다. NPM은 방대한 양의 오픈 소스 패키지를 제공하여 개발 생산성을 향상시키고, 다양한 라이브러리와 프레임워크를 쉽게 사용할 수 있게 해준다.
3. 1. 5. 펄 (Perl)
펄은 CPAN(Comprehensive Perl Archive Network)이라는 주요 저장소를 가지고 있으며, 펄 프로그래밍 언어를 위한 방대한 양의 모듈과 라이브러리를 제공한다. CPAN은 펄 생태계의 핵심적인 부분이다.펄 모듈 설치는 PPM을 통해 이루어진다.[42]
3. 1. 6. PHP
PHP는 PEAR, 컴포저를 패키지 개발 프로세스로 이용하며, PECL, Packagist를 저장소로 사용한다.3. 1. 7. 파이썬 (Python)
파이썬은 Setuptools를 이용하여 패키지를 개발하며, PyPI를 주요 저장소로 사용한다. pip, 이지인스톨, PyPM, Anaconda 등의 도구를 통해 패키지를 설치할 수 있다.[40]파이썬은 한국에서 데이터 과학, 머신 러닝, 웹 개발 등 다양한 분야에서 널리 활용되고 있다. 이러한 분야의 발전과 함께 관련 패키지를 쉽게 설치하고 관리할 수 있도록 돕는 PyPI, pip, Anaconda와 같은 저장소 및 패키지 관리자의 중요성도 커지고 있다.
3. 1. 8. R
R은 통계 계산과 그래픽을 위한 프로그래밍 언어이자 소프트웨어 환경이다. R은 다양한 통계 기법(선형 및 비선형 모델링, 고전 통계 검정, 시계열 분석, 분류, 군집 등)과 그래픽 기법을 제공하며, 확장성이 뛰어나다.[76][77]R의 주요 저장소는 다음과 같다:
- CRAN(Comprehensive R Archive Network, 종합 R 아카이브 네트워크): R 패키지의 공식 저장소이다. 새로운 패키지나 업데이트된 패키지가 CRAN에 제출되면, 다양한 운영 체제와 R 버전에서 자동으로 테스트를 거쳐 문제가 없을 경우 사용자에게 제공된다.[12] 12개 플랫폼 또는 각기 다른 버전의 R(devel, prerel, patched, release)의 조합으로 약 1주에 한 번, 최대 7개의 운영 체제(리눅스, 윈도우, 맥의 각기 다른 버전)까지 자동 검사를 수행한다.[76][77] `install.packages` 함수를 사용하여 패키지를 설치할 수 있다.[13]
- 바이오컨덕터: 생물정보학 분야에서 사용되는 R 패키지 저장소이다. 유전체 데이터 분석, 시퀀스 분석, 마이크로어레이 데이터 분석 등 생물학 연구에 특화된 도구들을 제공한다.
R 패키지 개발 과정은 'R CMD check' 프로세스를 통해 이루어진다.[76][77] 깃허브와 같은 협업 개발 플랫폼을 통해 R 패키지 개발이 이루어지기도 한다.[15]
CRAN의 자동 검사 시스템은 R 생태계의 안정성과 신뢰성을 유지하는 데 중요한 역할을 한다. 샐리와 존의 예시에서 볼 수 있듯이, 패키지 간의 잠재적인 충돌이나 오류를 조기에 발견하여 개발자에게 피드백을 제공함으로써 문제 해결을 돕는다. 이는 R 핵심 언어 소프트웨어의 품질 개선에도 기여한다.
하지만, CRAN에 제출되는 패키지가 반드시 다른 패키지의 특정 버전을 명시해야 하는 것은 아니다. 이는 패키지 간의 호환성 문제를 야기할 수 있다.
3. 1. 9. 루비 (Ruby)
루비는 RubyGems를 통해 루비 애플리케이션 아카이브 저장소를 사용하며, 루비포지를 통해 협업 개발을 지원한다.[78]3. 1. 10. 러스트 (Rust)
러스트는 Crates.io를 통해 패키지를 공유하고 재사용한다. Crates.io는 러스트 커뮤니티의 중앙 패키지 저장소 역할을 하며, 개발자들이 자신의 패키지를 게시하고 다른 사람들이 이를 활용할 수 있도록 돕는다.[78]3. 1. 11. 고 (Go)
고(Go) 프로그래밍 언어 관련 저장소는 주어진 원본 문서에 명시적으로 나타나 있지 않다. 따라서 해당 섹션에는 추가할 내용이 없다.3. 1. 12. 다트 (Dart)
다트 프로그래밍 언어 관련 생태계는 pub.dev를 중심으로 구성되어 있다.3. 1. 13. D
(D에 대한 정보는 제공된 소스에 없습니다. 따라서 해당 섹션은 비워 둡니다.)3. 1. 14. 하스켈 (Haskell)
CABAL (Common Architecture for Building Applications and Libraries)은 하스켈 응용 프로그램 및 라이브러리 구축을 위한 공통 아키텍처이다.[78]3. 1. 15. 커먼 리스프 (Common Lisp)
커먼 리스프 생태계에는 Quicklisp과 같은 주요 저장소가 있다.패키지 개발 프로세스 | 저장소 | 설치 방식 | 협업 개발 플랫폼 | 자동 검사 |
---|---|---|---|---|
Quicklisp | Quicklisp 설치 |
3. 1. 16. 줄리아 (Julia)
줄리아의 패키지는 [http://pkg.julialang.org/]에서 관리된다.[78]3. 2. 특수 목적 프로그래밍 언어
특정 분야에 특화된 프로그래밍 언어의 저장소는 다음과 같다.언어 / 목적 | 패키지 개발 프로세스 | 저장소 | 설치 방식 | 협업 개발 플랫폼 | 자동 검사 |
---|---|---|---|---|---|
C++ | Boost | ||||
하스켈 | [http://www.haskell.org/cabal CABAL] (Common Architecture for Building Applications and Libraries) | 하스켈 | [http://haskell.org/haskellwiki/Cabal/How_to_install_a_Cabal_package] | ||
자바 | 메이븐 | [http://maven.apache.org/] | |||
줄리아 | [http://pkg.julialang.org/] | ||||
커먼 리스프 | Quicklisp | [https://www.quicklisp.org/beta/] | |||
닷넷 프레임워크 | NuGet | NuGet | [http://docs.nuget.org/docs/start-here/managing-nuget-packages-using-the-dialog#Installing_a_Package] | ||
Node.js | NPM | [http://npmjs.org/] | |||
펄 | CPAN | PPM[http://www.cpan.org/modules/INSTALL.html] | |||
PHP | PEAR, 컴포저 | PECL, Packagist | |||
파이썬 | Setuptools | PyPI | pip, 이지인스톨, PyPM | ||
R | R CMD 체크 프로세스[76][77] | [https://cran.r-project.org/ CRAN] | [https://cran.r-project.org/doc/manuals/R-admin.html#Installing-packages install.packages] | [http://r-forge.r-project.org/ R-Forge] | 12개 플랫폼 또는 각기 다른 버전의 R(devel, prerel, patched, release)의 조합으로 약 1주에 한 번, 최대 7개의 운영 체제까지(리눅스, 윈도우, 맥의 각기 다른 버전) |
바이오컨덕터 | [http://www.bioconductor.org/docs/install BiocLite.R] | ||||
루비 | RubyGems | 루비 애플리케이션 아카이브 | 루비포지 | ||
TeX, LaTeX | CTAN[78] |
이 표의 일부는 스택 오버플로의 "List of Top Repositories by Programming Language"에서 가져온 것이다.[78]
3. 2. 1. TeX/LaTeX
TeX, LaTeX 관련 저장소로는 CTAN이 있다.[78]4. 패키지 관리 시스템
소프트웨어 게시자와 기타 여러 조직은 인터넷 상에 서버를 운영하며, 무료 또는 구독료를 받고 소프트웨어 저장소 서비스를 제공한다. 저장소는 펄(Perl) 프로그래밍 언어를 위한 CPAN과 같이 특정 프로그램 전용이거나 전체 운영 체제를 위한 것일 수 있다. 이러한 저장소 운영자는 일반적으로 해당 저장소에서 소프트웨어 패키지를 검색, 설치 및 조작하기 위한 도구인 패키지 관리 시스템을 제공한다.[1]
예를 들어, 많은 리눅스 배포판은 데비안 기반 배포판에서 흔히 사용되는 APT 또는 레드햇 기반 배포판에서 사용되는 Yellowdog Updater, Modified (yum)을 사용한다. 또한 Arch Linux에서 사용되는 pacman, Sabayon Linux에서 사용되는 equo와 같은 여러 독립적인 패키지 관리 시스템도 있다.
소프트웨어 저장소는 유용한 패키지를 포함하도록 설계되었으므로, 주요 저장소는 악성 코드가 없도록 설계되었다. 컴퓨터가 신뢰할 수 있는 공급업체의 디지털 서명된 저장소를 사용하도록 구성되어 있고 적절한 파일 시스템 권한 시스템과 결합된 경우, 이러한 시스템에 대한 악성 코드의 위협을 크게 줄일 수 있다. 부수적으로 이러한 기능을 갖춘 많은 시스템은 안티 바이러스 소프트웨어와 같은 악성 코드 방지 소프트웨어가 필요하지 않다.
대부분의 주요 리눅스 배포판은 전 세계에 메인 저장소를 미러링하는 여러 저장소를 가지고 있다. 클라이언트 측에서 패키지 관리자는 저장소에서 설치하고 업데이트하는 데 도움을 준다.
패키지 관리 시스템은 패키지 개발 프로세스와는 다르다. 패키지 관리 시스템은 다양한 소스의 코드를 일관된 독립 실행형 운영 단위로 통합하기 쉽게 만든다. 따라서 패키지 관리 시스템을 사용하여 리눅스 배포판을 만들 수 있다.
반면에, 패키지 개발 프로세스는 공통 주제를 가진 함수 또는 루틴 컬렉션의 코드와 문서를 공동 개발하기 위해 사용되며, 이를 통해 일반적으로 완전하지 않고 그 자체로는 사용할 수 없는 소프트웨어 함수 패키지를 생성한다. 훌륭한 패키지 개발 프로세스는 사용자가 훌륭한 문서와 코딩 기법을 준수하고, 어느 정도의 단위 테스트를 통합하는 데 도움이 된다.
4. 1. 주요 패키지 관리 시스템
패키지 관리자는 저장소를 관리하고 배포하는 데 도움을 준다. 저장소가 업데이트되면 패키지 관리자는 일반적으로 사용자가 패키지 관리자를 통해 해당 저장소를 업데이트할 수 있도록 한다. 또한 다른 소프트웨어 저장소 간의 종속성 등과 같은 사항을 관리하는 데도 도움이 된다.패키지 관리 시스템 | 설명 |
---|---|
npm | Node.js용 패키지 관리자[21] |
pip | 파이썬용 패키지 설치 관리자[22] |
apt | 데비안 패키지 관리[23] |
Homebrew | 애플이 제공하지 않는 패키지를 설치할 수 있는 macOS용 패키지 설치 관리자[24] |
vcpkg | C 및 C++++용 패키지 관리자[25][26] |
yum 및 dnf | 페도라 및 레드햇 엔터프라이즈 리눅스용 패키지 관리자[27] |
pacman | 아치 리눅스용 패키지 관리자[28] |
5. 저장소 관리자 (Repository Managers)
기업 환경에서 소프트웨어 저장소는 아티팩트를 저장하거나 보안 제한으로 인해 접근할 수 없는 외부 저장소를 미러링하는 데 사용된다. 이러한 저장소는 접근 제어, 버전 관리, 업로드된 소프트웨어에 대한 보안 검사, 클러스터 기능과 같은 추가 기능을 제공한다.
서버 측에서 소프트웨어 저장소는 일반적으로 소스 제어 또는 저장소 관리자에 의해 관리된다. 일부 저장소 관리자는 다른 저장소 위치를 하나의 URL로 집계하고 캐싱 프록시를 제공할 수 있다. 지속적인 빌드를 수행할 때 많은 아티팩트가 생성되어 종종 중앙에서 저장되므로 릴리스되지 않은 아티팩트를 자동으로 삭제하는 것이 중요하다.[29][30][31][32]
많은 조직은 소프트웨어 발행자 등 무료 또는 구독료를 받고 인터넷상에 콘텐츠 저장소를 위한 서버를 운영하고 있다. 저장소는 Perl 프로그래밍 언어의 CPAN과 같이 특정 프로그램 전용, 운영 체제 전체 전용인 것이 있다. 저장소 운영자는 일반적으로 저장소에서 소프트웨어 패키지를 검색, 설치 및 기타 방식으로 조작하기 위한 목적으로 패키지 관리 시스템이라고 하는 도구를 제공한다. 예를 들어, 많은 리눅스 배포판은 Debian 기반 배포판에서 일반적으로 볼 수 있는 Advanced Packaging Tool (APT), 또는 레드햇 기반 배포판에서 볼 수 있는 yum과 같은 패키지 관리 시스템을 사용하고 있다. 또한 Arch Linux나 equo, Sabayon Linux에서 사용되는 pacman과 같은 독립적인 패키지 관리 시스템도 있다.[35]
5. 1. 저장소 관리자의 기능
기업 환경에서 소프트웨어 저장소는 보통 아티팩트를 저장하거나, 보안 제한 때문에 접근할 수 없는 외부 저장소를 미러링하는 데 사용된다. 이러한 저장소는 접근 제어, 버전 관리, 업로드된 소프트웨어에 대한 보안 검사, 클러스터 기능과 같은 추가 기능을 제공할 수 있다.저장소 관리자는 일반적으로 기업의 모든 요구 사항을 충족하기 위해 다양한 형식을 지원하는 하나의 패키지로 제공되므로, 단일 진실점(single point of truth)을 제공하는 것을 목표로 한다. 널리 사용되는 저장소 관리자로는 JFrog Artifactory[29][30], Sonatype Nexus Repository[31], 그리고 클라우드 기반 제품인 Cloudsmith[32]가 있다.
서버 측에서 소프트웨어 저장소는 일반적으로 소스 제어나 저장소 관리자에 의해 관리된다. 일부 저장소 관리자는 다른 저장소 위치를 하나의 URL로 모으고 캐싱 프록시를 제공할 수 있다. 지속적인 빌드를 수행하면 많은 아티팩트가 생성되어 중앙에 저장되는 경우가 많으므로, 릴리스되지 않은 아티팩트를 자동으로 삭제하는 것이 중요하다.
5. 2. 지속적 통합(CI)과의 관계
개발 수명 주기의 일부로, 소스 코드는 지속적 통합을 사용하여 바이너리 아티팩트로 지속적으로 빌드된다. 이는 개발자가 저장소에서 아티팩트를 가져와서 빌드를 푸시하는 방식과 유사하게 바이너리 저장소 관리자와 상호 작용할 수 있다. CI 서버와의 긴밀한 통합은 다음과 같은 중요한 메타데이터의 저장을 가능하게 한다.- 어떤 사용자가 빌드를 트리거했는지 (수동으로 또는 리비전 관리에 커밋하여)
- 어떤 모듈이 빌드되었는지
- 어떤 소스가 사용되었는지 (커밋 ID, 리비전, 브랜치)
- 사용된 종속성
- 환경 변수
- 설치된 패키지
5. 3. 주요 저장소 관리자
기업 환경에서 소프트웨어 저장소는 아티팩트를 저장하거나 보안 제한으로 인해 접근할 수 없는 외부 저장소를 미러링하는 데 사용된다. 이러한 저장소는 접근 제어, 버전 관리, 업로드된 소프트웨어에 대한 보안 검사, 클러스터 기능과 같은 추가 기능을 제공하며, 기업의 모든 요구 사항을 충족하기 위해 다양한 형식을 지원하는 단일 진실점(single point of truth)을 제공하는 것을 목표로 한다. 널리 사용되는 예로는 JFrog Artifactory[29][30], Sonatype Nexus Repository[31] 및 클라우드 기반 제품인 Cloudsmith[32]가 있다.소프트웨어 저장소를 관리하기 위한 소프트웨어(저장소 관리자)는 다음과 같다.
6. 한국 소프트웨어 개발 환경과 저장소
(이전 출력이 없으므로, 수정할 내용이 없습니다. 원본 소스를 제공해주시면 해당 섹션 내용을 작성해 드릴 수 있습니다.)
참조
[1]
웹아카이브
itmWEB: Coping with Computer Viruses
http://www.itmweb.co[...]
2007-10-14
[2]
웹사이트
The Haskell Cabal {{!}} Overview
https://www.haskell.[...]
2019-03-25
[3]
웹사이트
Maven – Welcome to Apache Maven
http://maven.apache.[...]
2019-03-25
[4]
웹사이트
Julia Package Listing
https://pkg.julialan[...]
2019-03-25
[5]
웹사이트
Quicklisp beta
https://www.quicklis[...]
2019-03-25
[6]
웹사이트
NuGet Package Manager UI Reference
https://docs.microso[...]
2019-03-25
[7]
웹사이트
npm
https://www.npmjs.co[...]
2019-03-25
[8]
웹사이트
Installing Perl Modules - www.cpan.org
http://www.cpan.org/[...]
2019-03-25
[9]
웹사이트
Poetry
https://python-poetr[...]
2024-05-22
[10]
뉴스
Creating R Packages: A Tutorial
https://cran.r-proje[...]
2016-07-19
[11]
뉴스
Creating R Packages, Using CRAN, R-Forge, And Local R Archive Networks And Subversion (SVN) Repositories
https://cran.r-proje[...]
2016-07-19
[12]
웹사이트
The Comprehensive R Archive Network
https://cran.r-proje[...]
2019-03-25
[13]
웹사이트
R Installation and Administration
https://cran.r-proje[...]
2019-03-25
[14]
서적
R Packages
O'Reilly
2020-11-20
[15]
서적
Proceedings of the 2015 European Conference on Software Architecture Workshops
2021-10-26
[16]
웹사이트
RubyGems.org your community gem host
https://rubygems.org[...]
2022-02-03
[17]
웹사이트
Bundler: The best way to manage a Ruby application's gems
https://bundler.io/
2022-02-03
[18]
웹사이트
The Cargo Book
https://doc.rust-lan[...]
2019-08-26
[19]
웹사이트
Rust Package Registry
https://crates.io/
2019-08-26
[20]
웹사이트
List of Top Repositories by Programming Language
https://stackoverflo[...]
2010-04-14
[21]
웹사이트
npm About
https://www.npmjs.co[...]
2019-11-21
[22]
웹사이트
pip: The PyPA recommended tool for installing Python packages.
https://pip.pypa.io/
2019-11-21
[23]
웹사이트
Apt - Debian Wiki
https://wiki.debian.[...]
2019-11-22
[24]
웹사이트
Homebrew
https://brew.sh/
2019-11-22
[25]
뉴스
Yelp launches Yelp Fusion, Microsoft creates Vcpkg tool, and the new Touch Sense SDK for Android developers
https://sdtimes.com/[...]
2020-11-19
[26]
뉴스
Microsoft's C++ library manager now available for Linux and macOS
https://sdtimes.com/[...]
2020-11-19
[27]
웹사이트
Linux package management with YUM and RPM
https://www.redhat.c[...]
2020-04-22
[28]
웹사이트
pacman - ArchWiki
https://wiki.archlin[...]
2021-04-11
[29]
웹사이트
JFrog Artifactory - wikieduonline
https://www.wikieduo[...]
2021-04-25
[30]
웹사이트
Artifactory - Universal Artifact Management
https://jfrog.com/ar[...]
2021-04-25
[31]
웹사이트
Nexus Repository | Software Component Management
https://www.sonatype[...]
2021-04-25
[32]
웹사이트
Cloudsmith artifact repository
https://cloudsmith.c[...]
2023-09-11
[33]
논문
Optimal Package Install/Uninstall Manager
http://cseweb.ucsd.e[...]
UC San Diego
2011-09-14
[34]
웹사이트
Linux repository classification schemes
http://braintickle.b[...]
braintickle.blogspot.com
2008-03-01
[35]
웹아카이브
itmWEB: Coping with Computer Viruses
http://www.itmweb.co[...]
2007-10-14
[36]
웹사이트
The Haskell Cabal {{!}} Overview
https://www.haskell.[...]
2019-03-25
[37]
웹사이트
Maven – Welcome to Apache Maven
http://maven.apache.[...]
2019-03-25
[38]
웹사이트
Julia Package Listing
https://pkg.julialan[...]
2019-03-25
[39]
웹사이트
Quicklisp beta
https://www.quicklis[...]
2019-03-25
[40]
웹사이트
NuGet Package Manager UI Reference
https://docs.microso[...]
2019-03-25
[41]
웹사이트
npm
https://www.npmjs.co[...]
2019-03-25
[42]
웹사이트
Installing Perl Modules - www.cpan.org
http://www.cpan.org/[...]
2019-03-25
[43]
뉴스
Creating R Packages: A Tutorial
https://cran.r-proje[...]
[44]
뉴스
Creating R Packages, Using CRAN, R-Forge, And Local R Archive Networks And Subversion (SVN) Repositories
https://cran.r-proje[...]
[45]
웹사이트
The Comprehensive R Archive Network
https://cran.r-proje[...]
2019-03-25
[46]
웹사이트
R Installation and Administration
https://cran.r-proje[...]
2019-03-25
[47]
서적
R Packages
O'Reilly
[48]
논문
On the Development and Distribution of R Packages: An Empirical Analysis of the R Ecosystem
2015-01-01
[49]
웹사이트
The Cargo Book
https://doc.rust-lan[...]
2019-08-26
[50]
웹사이트
Rust Package Registry
https://crates.io/
2019-08-26
[51]
웹사이트
List of Top Repositories by Programming Language
https://stackoverflo[...]
2010-04-14
[52]
웹사이트
npm About
https://www.npmjs.co[...]
2019-11-21
[53]
웹사이트
pip: The PyPA recommended tool for installing Python packages.
https://pip.pypa.io/
2019-11-21
[54]
웹사이트
Apt - Debian Wiki
https://wiki.debian.[...]
2019-11-22
[55]
웹사이트
Homebrew
https://brew.sh/
2019-11-22
[56]
뉴스
Yelp launches Yelp Fusion, Microsoft creates Vcpkg tool, and the new Touch Sense SDK for Android developers
https://sdtimes.com/[...]
2016-09-20
[57]
뉴스
Microsoft’s C++ library manager now available for Linux and macOS
https://sdtimes.com/[...]
2018-04-25
[58]
논문
Optimal Package Install/Uninstall Manager
http://cseweb.ucsd.e[...]
UC San Diego
2007-03-15
[59]
웹사이트
Linux repository classification schemes
http://braintickle.b[...]
braintickle.blogspot.com
2008-03-01
[60]
웹사이트
Apache Archiva: The Build Artifact Repository Manager
http://archiva.apach[...]
The Apache Software Foundation
2013-04-17
[61]
웹사이트
ProGet
http://inedo.com/pro[...]
Inedo
2016-02-11
[62]
웹사이트
Jfrog Artifactory
https://www.wikieduo[...]
Wikieduonline
2020-12-21
[63]
웹사이트
Artifactory. Manage Your Binaries.
http://www.jfrog.com[...]
JFrog
2014-10-20
[64]
웹사이트
Package Drone
http://packagedrone.[...]
2015-01-23
[65]
웹사이트
Nexus Repository Manager
http://www.sonatype.[...]
Sonatype
2014-05-21
[66]
웹사이트
Pulp {{!}} software repository management
http://pulpproject.o[...]
2017-07-11
[67]
웹사이트
Artipie: binary artifact management tool
https://www.artipie.[...]
Artipie
2020-12-30
[68]
웹사이트
CloudRepo
https://www.cloudrep[...]
CloudRepo
2017-01-01
[69]
웹사이트
Cloudsmith
https://cloudsmith.c[...]
Cloudsmith
2020-05-20
[70]
웹사이트
Dist
https://www.dist.clo[...]
Dist
2020-03-04
[71]
웹사이트
Package Hosting and Distribution
https://feedz.io
feedz.io
2020-02-10
[72]
웹사이트
Introducing GitHub Package Registry
https://github.blog/[...]
[73]
웹사이트
Packages & Registries {{!}} GitLab
https://docs.gitlab.[...]
2021-01-11
[74]
웹사이트
MyGet: Hosted NuGet, NPM, Bower and Vsix
https://www.myget.or[...]
MyGet
2013-03-13
[75]
웹사이트
Continuous package publishing, part I: introduction to package management in CI/CD
https://circleci.com[...]
2020-12-21
[76]
뉴스
Creating R Packages: A Tutorial
https://cran.r-proje[...]
[77]
뉴스
Creating R Packages, Using CRAN, R-Forge, And Local R Archive Networks And Subversion (SVN) Repositories
https://cran.r-proje[...]
[78]
웹인용
List of Top Repositories by Programming Language
https://stackoverflo[...]
2010-04-14
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com