Большая часть моей ежедневной работы является разработка программного обеспечения для использования на машинах с разными версиями одного и того же программного обеспечения, как bash
, find
, и grep
. При обнаружении функции, которая может быть полезна, например, для упрощения кода, важно знать, доступна ли эта функция в самых старых установленных инструментах. Для критических вещей было бы также полезно узнать, была ли эта функция новой или существовала годами в самых старых установленных инструментах.
Как быстро ответить на этот вопрос авторитетно для инструментов Linux, особенно для GNU Core Utils? Некоторые возможности в порядке уменьшения точности:
- Бинарный бинарный поиск (sic) с запуском разных версий, конечно, является окончательным ответом, но, безусловно, занимает больше всего времени. Старые установки часто недоступны по соображениям безопасности.
- Чтение кода почти так же хорошо, но оно может занимать слишком много времени, если функция имеет неопределенное имя, имя не соответствует непосредственно именам переменных / функций / объектов или было реализовано до того, как было включено.
- Журналы изменений , если они доступны, обычно связывают изменения функций с версиями программного обеспечения.
- Журналы фиксации могут содержать подсказки, но не знают, в какую версию они будут включены.
- на страницах руководства редко упоминаются даты.
- То же самое относится и к Google , и вам также будет трудно исключить все неавторизованные источники.
Ответы:
Как правило, есть список изменений. Фактически, это (или другие «заметные уведомления» об изменениях) требуется GPL! (По крайней мере, эффективно для всего с несколькими участниками - см. Раздел 2a GPLv2.)
Для пакета GNU coreutils - и почти для всего остального непосредственно из проекта GNU - этот файл определенно является первым местом, где нужно искать, и он должен отвечать на ваш вопрос 95% времени.
источник
ChangeLog.bz2
в/usr/share/doc/coreutils-8.10
моей системе Fedora, а запись сверху от2011-02-04
. Возможно также, что это - вилка RH - я проверю это позже сегодня.Почему бы не использовать контроль исходного кода, связанный с X, для поиска функции Y? Исходный репозиторий - лучший способ определить, когда была представлена конкретная функция.
Для coreutils вы можете перейти на http://git.savannah.gnu.org/cgit/coreutils.git и искать ключевые слова, связанные с Y, в сообщениях журнала или определенных строках кода, которые вы определили как принадлежащие Y. Вы можете сделать это на веб-интерфейс напрямую или, что еще лучше, клонирует исходный репозиторий на вашу станцию и выполняет поиск, используя git-bisect , git-blame и git-log --grep .
Затем используйте git- description, чтобы выяснить, является ли тег ближайшим к конкретному коммиту. Тэги используются в основном для номеров версий, поэтому они дадут вам версию, которая ввела коммит.
Вы можете адаптировать вышеописанный метод в зависимости от X и его контроля источника.
источник
На Debian и производных от Debian платформах, таких как Ubuntu :
предоставляет журнал изменений GNU Core Utilities вплоть до версии
4.5.1-1
.Не уверен, есть ли такие же удобные решения на других платформах.
источник
Проверьте файл NEWS для coreutils из его репозитория git .
источник