Где лучше всего найти источники стандартных инструментов командной строки Linux? [закрыто]


10

Into: я люблю учиться, читая источники. Но надоело искать их в интернете, разбитых по множеству сайтов разных проектов. Мне бы очень хотелось увидеть централизованное репо с возможностью просмотра и просмотра множества разных приложений в одном месте.

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

Есть ли репозиторий, содержащий источники большинства инструментов в одном месте? - так же, как manсодержит документацию или исходные коды ядра Linux Cross .

Я имею в виду что-то для «быстрой» проверки «по требованию», как все реализовано. (Да, я знаю Google -> но я устал от рутины: 1. поиск по сайту проекта 2. просмотр репо или еще хуже -> проверка его репо 3. удаление после завершения)

Замечание:

Я подчеркнул, я хотел бы проверить инструменты: быстро, быстро, по требованию.

Это означает: я не хочу устанавливать целое приложение с его источниками, просто чтобы взглянуть на его источники. (Кстати, веб-ресурс предпочтительнее, поэтому я мог проверить источники со многих компьютеров - у меня нет администратора на всех из них)


3
Большинство дистрибутивов позволяют устанавливать исходные коды для пакетов с помощью менеджера пакетов.
Джиппи

3
Для Debian вы можете просто запустить apt-get source $PACKAGE-NAMEпосле того, как вы добавили исходный репозиторий
Ulrich Dangel

Пакеты обычно отвечают другим библиотекам для выполнения своих функций
маргаритка

Я не хочу устанавливать каждое приложение, которое хочу проверить.
Гжегож Вежовецкий

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 от arch). NetBSD и DragonFly используют pkgsrc из репозитория NetBSD. OpenBSD и FreeBSD имеют эти платформы в своих соответствующих репозиториях.

Другие репо, интересные для вашей цели:


Отличный ответ. Спасибо вам за поддержку для сравнения - сравнение различных подходов является познавательным. Не могли бы вы расширить свой ответ некоторыми репозиториями Linux? Базы кода BSD интересны, но я боюсь, что могут быть важные различия в syscall и т. Д., Поэтому репозитории Linux будут отличным дополнением к вашему списку.
Гжегож Вежовецкий

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

Уважение к различиям BSD против Linux. API-интерфейсы аналогичны и обычно совместимы с POSIX и другими стандартами. Разница заключается во внутренней реализации каждого API. Фактически, инструменты из GNU работают на * BSD, а инструменты из * BSD работают на Linux. Например: Debian ( packages.debian.org ) имеет некоторые инструменты * BSD, а * BSD имеют доступные coreutils и другие проекты GNU.
Руфо Эль Магуфо

2

Так как нет центрального места для разработки с открытым исходным кодом, нет центрального хранилища, содержащего большинство программного обеспечения с открытым исходным кодом. Некоторые используют GitHub, BitBucket, частные серверы, Sourceforge, Launchpad и т. Д. Таким образом, это действительно распределенная среда, и нет никакого непосредственного преимущества, если один репозиторий просто копирует исходный код.

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

Примеры того, как загрузить исходный пакет из вашего дистрибутива:

yumdownloader --source packagename
apt-get source packagename

Для Arch взгляните на ответы на ответы на аналогичный вопрос по stackoverflow.

Если вы просто хотите скачать исходный код, вы можете использовать packages.debian.org, например, ссылку для coreutils . Это обеспечит ссылку для загрузки исходного пакета ( orig.*или очищенного источника для некоторых пакетов dsfg.*). Вы можете сделать то же самое со списком пакетов Arch Linux, например: страница arch coreutils . Download from MirrorСкачает пакет.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.