Де найкраще знайти джерела стандартних інструментів командного рядка Linux? [зачинено]


10

В: Я люблю вчитися, читаючи джерела. Але дуже втомлює їх пошук через Інтернет на багатьох різних проектах. Я хотів би бачити в одному місці центральну репортаж із джерелами багатьох програм.

  • Коли хто - то хоче знайти документацію по якому - то інструменту Linux, краще місце: man toolname.
  • Коли я хочу переглядати джерела Linux "за запитом", я завжди можу перейти до: Linux Cross Reference .
  • Коли я хочу знайти найпоширеніший персонал, я можу знайти всі джерела в Coreutils .
  • Коли я хочу перевірити, як щось побудувати, я можу (наприклад) заскочити на сторінку http://www.archlinux.org/packages/ і перевірити, чи це pkgbuild.

Чи є репо, які містять джерела більшості інструментів в одному місці? - так само, як manмістить документацію або джерела ядра Linux Cross Reference .

Я маю на увазі щось для "швидкої" перевірки "на вимогу", як реалізуються речі. (Так, я знаю google -> але я втомився від рутини: 1. пошук на сайті проекту 2. перегляд репо або ще гірше -> перевірка його репо 3. видалення після завершення)

ПАМ’ЯТАЙТЕ:

Я підкреслив, я хотів би перевірити інструменти: швидко, швидко, на вимогу.

Це означає: я не хочу встановлювати цілий додаток із його джерелами, аби лише розглянути його джерела. (Більш бажаний веб-ресурс, тому я можу перевірити джерела з багатьох комп’ютерів - у мене немає адміністратора на всіх)


3
Більшість дистрибутивів дозволяють встановлювати джерела для пакетів за допомогою диспетчера пакетів.
джиппі

3
Для debian ви можете просто запуститись apt-get source $PACKAGE-NAMEпісля додавання вихідного сховища
Ульріха Дангела

Пакети зазвичай відповідають іншим бібліотекам, щоб виконати свої функції
Дейзі

Я не хочу встановлювати кожен додаток, який я хочу перевірити.
Grzegorz Wierzowiecki

3
@GrzegorzWierzowiecki вам не потрібно встановлювати додаток, щоб переглянути джерело, принаймні, apt-get sourceви можете виконати цю команду як звичайний користувач.
Ульріх Дангель

Відповіді:


6

Дозвольте мені відповісти на ваше запитання альтернативною відповіддю. Я думаю, ви хочете прочитати код для традиційних інструментів командного рядка Unix, а не тільки їх версії GNU. Читання коду подібних інструментів з різних проектів є хорошою практикою для вивчення різних ідей та реалізацій.

У GNU є приємний веб-інтерфейс для репо Coreutils: http://git.savannah.gnu.org/cgit/coreutils.git

Сімейство BSD має аналогічні веб-інтерфейси для репостів:

Кодова база BSD цікава тим, що зазвичай використовується менше коду для одних і тих же інструментів, тобто: підтримує лише традиційні параметри, без додаткових опцій, sh - справжня оболонка і не просто посилання на інші великі оболонки (bash) тощо. Інструменти, подібні до coreutils знаходяться в межах bin, sbin, usr.bin та usr.sbin.

Ви також можете переглядати ті самі веб-інтерфейси, якщо хочете прочитати код для створення програмного забезпечення сторонніх виробників (подібно до pkgbuild арки). NetBSD і DragonFly використовують pkgsrc від репортажу NetBSD. OpenBSD і FreeBSD мають ці рамки у відповідних репостах.

Інші цікаві для вашої мети репости:


Чудова відповідь. Дякую за заохочення для порівняння - порівняння різних підходів є навчальним. Чи можете ви розширити свою відповідь деякими репортами Linux? Бази даних коду BSD цікаві, але я боюся, що можуть бути важливі відмінності в системі syscall тощо, тому репост Linux буде чудовим доповненням до вашого списку.
Grzegorz Wierzowiecki

Однією з переваг * BSD є те, що весь код знаходиться в межах одного репо. Проблема з Linux полягає в тому, що кожен пакет має різне походження. Corepotils repo (і bash repo для вбудованої функціональності git.savannah.gnu.org/cgit/bash.git/tree ) охоплює майже всі традиційні інструменти. Репозиції "linux distro" містять лише рамки для створення сторонніх пакетів та деяких патчів; репозиції не містять реального коду (містять лише код інструментів дистрибутива).
Руфо Ель Магуфо

Повага до відмінностей BSD проти Linux. API схожі та звично сумісні з POSIX та іншими стандартами. Різниця полягає у внутрішній реалізації кожного API. Насправді інструменти від GNU працюють на * BSD, а інструменти від * BSD працюють в Linux. Наприклад: Debian ( пакети.debian.org ) має деякі інструменти * BSD, а * BSD мають доступні основні програми та інші проекти GNU.
Руфо Ель Магуфо

2

Оскільки немає центрального місця для розробки з відкритим кодом, не існує центрального сховища, що містить більшість програм з відкритим кодом. Деякі використовують GitHub, BitBucket, приватні сервери, Sourceforge, Launchpad і т. Д. Отже, це справді розподілене середовище, і немає негайної користі мати одне сховище просто копіювати джерело.

З іншого боку, бінарні дистрибутиви (відправник бінарних файлів замість вихідного коду) зазвичай надають джерело для більшості своїх пакетів і надають їх усім користувачам. Тож ваш найкращий шанс - використовувати інфраструктуру, надану дистрибутивами. Зауважте, що вони не обов'язково містять останні зміни та виправлення і можуть бути застарілими.

Приклади завантаження вихідного пакету з вашого дистрибутива:

yumdownloader --source packagename
apt-get source packagename

Для Arch подивіться на відповіді на відповіді на аналогічне запитання про stackoverflow.

Якщо ви просто хочете завантажити вихідний код, ви можете скористатися пакетами.debian.org, наприклад, посиланням на coreutils . Це забезпечить посилання для завантаження до оригінального пакета ( orig.*або очищеного джерела для деяких пакетів dsfg.*). Ви можете зробити те ж саме зі списком пакетів Arch Linux, наприклад: сторінка arch coreutils . Download from MirrorЗавантажить пакет.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.