Когда вы устанавливаете некоторые программы, вы можете установить их в своем собственном пользовательском пространстве (i. е. self -содержится в вашем домашнем каталоге ), а не в системе -. Таким образом, у вас не запрашиваются привилегии суперпользователя, потому что они вам не нужны для установки программы для собственного использования одним пользователем. Программа, установленная таким образом, действительно не сможет получить доступ к файлам, которым не предоставлено разрешение «не -владелец, не -члены группы могут читать это» при отсутствии повышения привилегий.
Команда patch
по умолчанию по крайней мере в Debian (, но, предположительно, и в большинстве других дистрибутивов Linux )— GNU patch
.
"Домашняя страница" проекта GNU patch
- этоhttps://www.gnu.org/software/patch/
Эта страница содержит ссылки на репозитории программного обеспечения и загружаемые архивы дистрибутива .
Зеркало репозитория программного обеспечения на Github доступно по адресуhttps://github.com/mirror/patch
Системы BSD имеют альтернативную реализацию. Реализацию OpenBSD можно посмотреть по адресу https://cvsweb.openbsd.org/src/usr.bin/patch/
.Существует несколько реализаций команды patch
. busybox
, например, поставляется со своим собственным. Вы, вероятно, ищете исходный код patch
, поставляемый с вашей системой. Чтобы найти исходный код вы должны знать, что вы ищете. Ты нужно проверить, какой пакет предоставляет команду patch
и где вверх по течению. Вы не указали, какую ОС вы используете, но в Debian вы можете делать:
root@64ee32ea5ee6:/# dpkg -S "$(command -v patch)"
patch: /usr/bin/patch
root@64ee32ea5ee6:/# dpkg -s patch
Package: patch
Status: install ok installed
Priority: standard
Section: vcs
Installed-Size: 238
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: amd64
Multi-Arch: foreign
Version: 2.7.6-2ubuntu1.1
Depends: libc6 (>= 2.17)
Suggests: ed, diffutils-doc
Description: Apply a diff file to an original
Patch will take a patch file containing any of the four forms
of difference listing produced by the diff program and apply
those differences to an original file, producing a patched
version.
Homepage: http://savannah.gnu.org/projects/patch/
Original-Maintainer: Laszlo Boszormenyi (GCS) <gcs@debian.org>
И, например, в Slackware:
$ grep $(sed 's,^/,,' <<< "$(command -v patch)" ) /var/log/packages/* | cut -d: -f1
/var/log/packages/metamail-2.7-x86_64-7
/var/log/packages/patch-2.7.6-x86_64-3
/var/log/packages/patchelf-0.10-x86_64-1
$ cat /var/log/packages/patch-2.7.6-x86_64-3
PACKAGE NAME: patch-2.7.6-x86_64-3
COMPRESSED PACKAGE SIZE: 116K
UNCOMPRESSED PACKAGE SIZE: 290K
PACKAGE LOCATION:./patch-2.7.6-x86_64-3.txz
PACKAGE DESCRIPTION:
patch: patch (apply a diff file to an original file or files)
patch:
patch: Patch is a utility used to apply diffs (or patches) to files, which
patch: are usually source code.
patch:
patch: Larry Wall wrote the original version of patch. Paul Eggert removed
patch: patch's arbitrary limits; added support for binary files, setting
patch: file times, and deleting files; and made it conform better to POSIX.
patch: Other contributors include Wayne Davison, who added unidiff support,
patch: and David MacKenzie, who added configuration and backup support.
patch:
В обоих случаях используется патч GNU и даже описание пакета Debian. содержит ссылку на домашнюю страницу проектаhttp://savannah.gnu.org/projects/patchно он не работает на момент.
Также возможно, что вы хотите получить источник patch
вашего в настоящее время используется в вашей системе со всеми исправлениями и комментариями, добавленными сопровождающие пакетов. В Debian вы можете сделать:
$ apt-get source patch
Если вы работаете в Linux, вы, скорее всего, используете патч GNU, см. http://www.gnu.org, но patch
имеет долгую историю и существует более чем в одном варианте:
patch
— это программа, первоначально написанная Ларри Уоллом в мае 1985 года. Он разместил исходный код версии 1.3 в формате shar в группе новостей Usenetmod.sources
.
Версия 2.0 была опубликована в 1986 году Ларри Уоллом в сообщении comp.sources.unix
(, поскольку mod.sources
позже было переименовано в ), а последняя версия Ларри Уолла была сделана в июне 1988 года.
Первоначальная лицензия от Ларри была:
* This program may be copied as long as you don't try to make any
* money off of it, or pretend that you wrote it.
, что не соответствует сегодняшним представлениям об OSS, поскольку запрещает «зарабатывать деньги» на этом.
Поскольку такая сложная программа, как patch
, требует внимания, существует несколько производных версий.
Люди из GNU придумали версию GPLd в 1990 году, но насколько я знаю, так и не удалось проверить, дал ли Ларри свое согласие на это изменение лицензии.
Версия с закрытым исходным кодом от IBM, HP, DEC и Sun была создана в 1990-х годах. Он был сделан совместимым с POSIX, но так и не исправил все известные ошибки.
Прибл. 10 лет назад варианты без кода GPLd были созданы OpenBSD и мной.
Прибл. 5 лет назад Ларри дал разрешение людям OpenBSD и мне использовать лицензию BSD с пунктом 1, чтобы сделать патч совместимым с OSS.
Несмотря на то, что мы с людьми из BSD обмениваемся мнениями об ошибках и проблемах безопасности, версия GNU существует отдельно.
Версия в schilytools
включает дорогостоящий набор тестов для исправления и сравнивает результаты с ожидаемыми результатами и с результатами локально установленной версии. Поскольку во многих случаях это (gpatch ), он должен включать некоторые обходные пути каждый раз, когда обнаруживает ошибку в установленной системе версии,-)
Справочную страницу версии schilytools можно найти здесь:http://schilytools.sourceforge.net/man/man1/patch.1.html
Учитывая, что OP заинтересован в QNX,исходный код OpenBSD его не интересует, поскольку этот исходный код не является переносимым. Инструменты schilytools обладают высокой переносимостью, несмотря на то, что с момента последнего отзыва о компиляции QNX прошло много времени. Поэтому, если он больше не компилируется на QNX, пришлите подсказку.
BTW :Исправление GNU противоречит некоторым требованиям POSIX.