Gdzie jest najlepsze miejsce na znalezienie źródeł standardowych narzędzi wiersza poleceń Linuksa? [Zamknięte]

10

W: Lubię naukę poprzez czytanie źródeł. Ale męczące jest ich przeszukiwanie przez Internet podzielone na wiele różnych stron projektów. Chciałbym zobaczyć centralne przeglądalne repozytorium ze źródłami wielu aplikacji w jednym miejscu.

  • Gdy ktoś chce znaleźć dokumentację jakiegoś narzędzia Linux, najlepszym miejscem jest: man toolname.
  • Kiedy chcę przeglądać źródła Linuksa „na żądanie”, zawsze mogę przejść do: Linux Cross Reference .
  • Kiedy chcę znaleźć najczęstszy personel, mogę znaleźć wszystkie źródła w Coreutils .
  • Kiedy chcę sprawdzić, jak coś zbudować, mogę (na przykład) przejść do strony http://www.archlinux.org/packages/ , sprawdzić, czy to pkgbuild.

Czy jest jakieś repozytorium, które przechowuje źródła większości narzędzi w jednym miejscu? - podobnie jak manzawiera dokumentację lub źródła jądra Linux Cross Reference .

Mam na myśli coś dla „szybkiego” „na żądanie” sprawdzenia, jak rzeczy są wdrażane. (Tak, znam google -> ale mam dość rutyny: 1. przeszukiwanie witryny projektu 2. przeglądanie repozytorium lub nawet gorzej -> sprawdzanie repozytorium 3. usuwanie po zakończeniu)

UWAGA:

Zestresowałem się, chciałbym sprawdzić narzędzia: szybko, szybko, na żądanie.

Oznacza to: Nie chcę instalować całej aplikacji z jej źródłami, aby tylko przejrzeć źródła. (btw. preferowany jest zasób sieciowy, więc mogłem sprawdzić źródła z wielu komputerów - nie mam administratora na wszystkich z nich)

Grzegorz Wierzowiecki
źródło
3
Większość dystrybucji pozwala instalować źródła pakietów za pomocą menedżera pakietów.
jippie
3
W przypadku Debiana możesz uruchomić apt-get source $PACKAGE-NAMEpo dodaniu repozytorium źródłowego
Ulrich Dangel
Pakiety zwykle odpowiadają na inne biblioteki w celu wykonania swoich funkcji
daisy
Nie chcę instalować każdej aplikacji, którą chcę sprawdzić.
Grzegorz Wierzowiecki
3
@GrzegorzWierzowiecki nie musisz instalować aplikacji, aby spojrzeć na źródło, przynajmniej apt-get sourcemożesz uruchomić to polecenie jako zwykły użytkownik.
Ulrich Dangel

Odpowiedzi:

6

Pozwól mi odpowiedzieć na twoje pytanie alternatywną odpowiedzią. Chyba chcesz przeczytać kod tradycyjnych narzędzi wiersza poleceń Uniksa, a nie tylko ich wersję GNU. Przeczytanie kodu podobnych narzędzi z różnych projektów to dobra praktyka do nauki różnych pomysłów i wdrożeń.

GNU ma ładny interfejs WWW do repozytorium coreutils: http://git.savannah.gnu.org/cgit/coreutils.git

Rodzina BSD ma podobne interfejsy sieciowe do repozytoriów:

Baza kodów BSD jest interesująca, ponieważ zwykle używa mniej kodu dla tych samych narzędzi, tj .: obsługuje tylko tradycyjne opcje, bez dodatkowych opcji, sh jest prawdziwą powłoką, a nie tylko linkiem do innej dużej powłoki (bash) itp. Narzędzia podobne do coreutils znajdują się w bin, sbin, usr.bin i usr.sbin.

Możesz także przeglądać te same interfejsy sieciowe, jeśli chcesz przeczytać kod do tworzenia oprogramowania innych firm (podobnie jak w pkgbuild archa). NetBSD i DragonFly używają pkgsrc z repozytorium NetBSD. OpenBSD i FreeBSD mają te struktury w swoich repozytoriach.

Innymi interesującymi dla Ciebie repozytoriami są:

Rufo El Magufo
źródło
Świetna odpowiedź. Dziękujemy za zachęcanie do porównania - porównywanie różnych podejść ma charakter edukacyjny. Czy możesz rozszerzyć swoją odpowiedź o niektóre repozytorium Linuxa? Bazy kodów BSD są interesujące, ale obawiam się, że mogą istnieć istotne różnice w syscall itp., Więc repozytorium Linux byłoby świetnym dodatkiem do twojej listy.
Grzegorz Wierzowiecki
Jedną z zalet * BSD jest to, że cały kod znajduje się w jednym repozytorium. Problem z Linuksem polega na tym, że każdy pakiet ma inne pochodzenie. Repozytorium coreutils (i repozytorium bash dla wbudowanej funkcjonalności git.savannah.gnu.org/cgit/bash.git/tree ) obejmuje prawie wszystkie tradycyjne narzędzia. Repozytoria „linux distro” zawierają jedynie ramy do budowania pakietów stron trzecich i niektóre łaty, repozytoria nie zawierają prawdziwego kodu (zawierają tylko kod narzędzi dystrybucji).
Rufo El Magufo
Poszanowanie różnic między BSD a Linuksem. Interfejsy API są podobne i zwykle zgodne z POSIX i innymi standardami. Różnica polega na wewnętrznej implementacji każdego interfejsu API. W rzeczywistości narzędzia z GNU działają na * BSD, a narzędzia z * BSD działają na Linuksie. Np .: Debian ( packages.debian.org ) ma niektóre narzędzia * BSD, a * BSD mają dostępne coreutils i inne projekty GNU.
Rufo El Magufo
2

Ponieważ nie ma centralnego miejsca dla rozwoju oprogramowania typu open source, nie ma centralnego repozytorium zawierającego większość oprogramowania typu open source. Niektórzy używają GitHub, BitBucket, prywatnych serwerów, Sourceforge, Launchpad itp. Więc jest to naprawdę rozproszone środowisko i nie ma natychmiastowej korzyści z posiadania jednego repozytorium po prostu kopiującego źródło.

Z drugiej strony Dystrybucje binarne (wysyłanie plików binarnych zamiast kodu źródłowego) zazwyczaj zapewniają źródło większości ich pakietów i zapewniają je wszystkim użytkownikom. Zatem twoją najlepszą szansą jest skorzystanie z infrastruktury zapewnianej przez Dystrybucje. Należy pamiętać, że niekoniecznie zawierają najnowsze zmiany i poprawki i mogą być nieaktualne.

Przykłady pobierania pakietu źródłowego z Twojej dystrybucji:

yumdownloader --source packagename
apt-get source packagename

Dla Arch spójrz na odpowiedzi przy odpowiedziach na podobne pytanie dotyczące stackoverflow.

Jeśli chcesz tylko pobrać kod źródłowy, możesz użyć Package.debian.org, np. Link do coreutils . Zapewni to link do pobrania oryginalnego pakietu ( orig.*lub oczyszczonego źródła dla niektórych pakietów dsfg.*). Możesz zrobić to samo z listą pakietów Arch Linux, np .: strona arch coreutils . Download from MirrorBędzie pobrać pakiet.

Ulrich Dangel
źródło