표준 Linux 명령 행 도구의 소스를 찾는 가장 좋은 곳은 어디입니까? [닫은]


10

: 소스를 읽음으로써 배우는 것을 좋아합니다. 그러나 많은 다른 프로젝트 사이트에서 인터넷을 통해 검색하는 데 어려움을 겪고 있습니다. 한 곳에서 많은 앱의 소스가있는 중앙 탐색 가능한 리포지토리 를보고 싶습니다 .

  • 누군가가 일부 Linux 도구의 설명서를 찾으려면 가장 좋은 위치는 다음과 같습니다 man toolname.
  • "주문형"Linux 소스를 찾아 보려면 항상 다음으로 이동하십시오. Linux Cross Reference .
  • 가장 일반적인 직원을 찾으려면 Coreutils 에서 모든 소스를 찾을 수 있습니다 .
  • 무언가를 만드는 방법을 확인하고 싶을 때 (예를 들어) http://www.archlinux.org/packages/ 로 이동하여 pkgbuild인지 확인할 수 있습니다.

대부분의 툴 소스를 한곳에 보유하고있는 레포가 있습니까? - man문서 나 Linux Cross Reference 커널 소스를 보유하고 있는 것처럼 .

나는 물건이 어떻게 구현되는지 검사하는 "빠른" "주문형"을 의미합니다. (예, Google은 알고 있지만 일상에 지쳤습니다. 1. 프로젝트 사이트 검색 2. 저장소 탐색 또는 더 나쁜 탐색-> 저장소 확인 3. 완료되면 삭제)

말:

스트레스를 받고 도구를 확인하고 싶습니다. 신속하고 빠르며 주문형입니다.

의미 : 소스를 살펴보기 위해 소스가있는 전체 앱을 설치하고 싶지 않습니다. (btw. 웹 리소스가 선호되므로 많은 컴퓨터의 소스를 확인할 수 있습니다-모든 컴퓨터에 관리자가 없습니다)


3
대부분의 배포판에서는 패키지 관리자를 사용하여 패키지 소스를 설치할 수 있습니다.
jippie

3
데비안의 apt-get source $PACKAGE-NAME경우 소스 리포지토리를 추가 한 후에 실행할 수 있습니다
Ulrich Dangel

패키지는 일반적으로 다른 라이브러리에 응답하여 기능을 완료합니다.
데이지

확인하려는 각 앱을 설치하고 싶지 않습니다.
Grzegorz Wierzowiecki

3
@GrzegorzWierzowiecki 소스를 살펴보기 위해 응용 프로그램을 설치할 필요는 없습니다. 최소한 apt-get source이 명령을 일반 사용자로 실행할 수 있습니다.
Ulrich Dangel

답변:


6

다른 답변으로 귀하의 질문에 답변하겠습니다. GNU 버전뿐만 아니라 전통적인 Unix 명령 행 도구의 코드를 읽고 싶을 것 같습니다. 다른 프로젝트에서 유사한 도구의 코드를 읽는 것은 다른 아이디어와 구현을 배우는 좋은 습관입니다.

GNU는 coreutils의 저장소를위한 멋진 웹 인터페이스를 가지고 있습니다 : http://git.savannah.gnu.org/cgit/coreutils.git

BSD 제품군은 repos와 비슷한 웹 인터페이스를 가지고 있습니다 :

BSD 코드베이스는 일반적으로 동일한 도구에 대해 더 적은 코드를 사용하기 때문에 흥미 롭습니다. 즉, 기존 옵션 만 지원하고 추가 옵션은 지원하지 않으며 sh는 실제 쉘이며 다른 큰 쉘 (bash)에 대한 링크는 아닙니다. bin, sbin, usr.bin 및 usr.sbin 내에 있습니다.

타사 소프트웨어 (아치의 pkgbuild와 유사)를 빌드하기위한 코드를 읽으려는 경우 동일한 웹 인터페이스를 탐색 할 수도 있습니다. NetBSD와 DragonFly는 NetBSD 저장소의 pkgsrc를 사용합니다. OpenBSD와 FreeBSD는 각각의 저장소 내에 이러한 프레임 워크를 가지고 있습니다.

귀하의 목적에 흥미로운 다른 repos는 다음과 같습니다.


좋은 대답입니다. 비교를 장려 해 주셔서 감사합니다. 서로 다른 접근법을 비교하는 것이 교육적입니다. 리눅스 리포지토리로 답을 넓힐 수 있습니까? BSD 코드베이스는 흥미롭지 만 syscall 등에서 중요한 차이점이있을 까봐 걱정되므로 Linux 저장소가 목록에 추가 될 것입니다.
Grzegorz Wierzowiecki 2018 년

* BSD의 장점 중 하나는 모든 코드가 하나의 저장소 내에 있다는 것입니다. Linux의 문제점은 각 패키지의 출처가 다르다는 것입니다. coreutils 저장소 (및 내장 기능인 git.savannah.gnu.org/cgit/bash.git/tree 의 bash 저장소 )는 거의 모든 기존 도구를 다룹니다. "linux distro"repos에는 타사 패키지 및 일부 패치를 빌드하기위한 프레임 워크 만 포함되며 repos에는 실제 코드가 포함되지 않습니다 (distro 도구 용 코드 만 포함).
Rufo El Magufo 2016 년

BSD와 Linux의 차이점에 대한 존중. API는 POSIX 및 기타 표준과 유사하며 습관적으로 호환됩니다. 차이점은 각 API의 내부 구현입니다. 실제로 GNU의 도구는 * BSD에서 작동하고 * BSD의 도구는 Linux에서 작동합니다. 예 : Debian ( packages.debian.org )에는 * BSD 도구가 있으며 * BSD에는 coreutils 및 기타 GNU 프로젝트가 있습니다.
Rufo El Magufo 2016 년

2

오픈 소스 개발을위한 중앙 장소가 없기 때문에 대부분의 오픈 소스 소프트웨어를 포함하는 중앙 저장소는 없습니다. 일부는 GitHub, BitBucket, 개인 서버, Sourceforge, Launchpad 등을 사용합니다. 따라서 이것은 실제로 분산 된 환경이므로 소스를 복사하는 하나의 저장소 만 있으면 즉각적인 이점이 없습니다.

반면 바이너리 배포판 (소스 코드 대신 배송 바이너리)은 일반적으로 대부분의 패키지에 대한 소스를 제공하고 모든 사용자에게 제공합니다. 따라서 가장 좋은 기회는 Distributions에서 제공하는 인프라를 사용하는 것입니다. 최신 변경 사항 및 수정 사항을 반드시 포함 할 필요는 없으며 구식 일 수도 있습니다.

배포판에서 소스 패키지를 다운로드하는 방법의 예 :

yumdownloader --source packagename
apt-get source packagename

Arch의 경우 stackoverflow 에 대한 비슷한 질문대한 답변을 살펴보십시오 .

소스 코드를 다운로드하려면 packages.debian.org를 사용할 수 있습니다 (예 : link for coreutils) . 원본 패키지 ( orig.*또는 일부 패키지의 정리 된 소스)에 대한 다운로드 링크를 제공합니다 dsfg.*. Arch Linux 패키지 목록 (예 : arch coreutils page)으로 동일한 작업을 수행 할 수 있습니다. 는 Download from Mirror패키지를 다운로드합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.