Linuxにはパッチコマンドのソースコードがありますか?

Linuxにはパッチコマンドのソースコードがありますか?

Linuxで使用されるパッチ命令のソースコードを探しています。利用可能かどうかを知っている人はいますか?

POSIX、特にQNX v7と互換性があるものを探しています。

ベストアンサー1

patchbusybox組み込みコマンドなど、コマンドの実際の実装がたくさんあります。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 <[email protected]>
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) <[email protected]>

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

おすすめ記事