MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
インストール - 差分ツールのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
インストール - 差分ツール
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == <br><br> == KDiff3 == ==== パッケージ管理システムからインストール ==== KDiff3をインストールする。 sudo zypper install kdiff3 <br> ==== ソースコードからインストール ==== [https://github.com/KDE/kdiff3/tags KDiff3のGithub]にアクセスして、KDiff3のソースコードをダウンロードする。<br> ダウンロードしたファイルを解凍する。<br> tar xf kdiff3-<バージョン>.tar.gz cd kdiff3-<バージョン> <br> KDiff3のビルドに必要なライブラリをインストールする。<br> * Qt 5.12以降 * KDE Framework 5.50以降 * GCC 8.0以降またはClang 7以降 * CMake 3.1以降 * ECM 1.8以降 * Boost 1.66以降 sudo zypper install cmake gcc11 gettext-runtime gettext-tools extra-cmake-modules libboost_system1_66_0 libboost_headers1_66_0-devel \ ki18n-devel kcoreaddons-devel kiconthemes-devel kparts-devel kdoctools-devel kcrash-devel \ libqt5-qtbase-devel <br> KDiff3のビルドディレクトリを作成する。<br> mkdir build && cd build <br> KDiff3をビルドおよびインストールする。<br> cmake -DCMAKE_C_COMPILER=<GCC 8.2以降のgccのパス> -DCMAKE_CXX_COMPILER=<GCC 8.2以降のg++のパス> \ -DCMAKE_INSTALL_PREFIX=<KDiff3のインストールディレクトリ> -DCMAKE_BUILD_TYPE=Release \ -DBOOST_ROOT=<Boostのインストールディレクトリ> \ # Boostのインストールディレクトリを指定する場合 -DBoost_INCLUDE_DIRS=/<Boostのインストールディレクトリ>/include \ # Boostのインストールディレクトリを指定する場合 .. make -j $(nproc) make install <br><br> == Meld == ==== パッケージ管理システムからインストール ==== sudo zypper install meld <br> ==== インストールせずにソースコードから直接実行 ==== [https://github.com/GNOME/meld/tags MeldのGithub]にアクセスして、Meldのソースコードをダウンロードする。<br> ダウンロードしたファイルを解凍する。<br> tar xf meld-<バージョン>.tar.gz mv meld-<バージョン> meld mv Meld <Meldのインストールディレクトリ> <br> Meldを任意のディレクトリ(ホームディレクトリ等)にした場合は、~/.profileファイル等に環境変数PATHの設定を追記する。<br> vi ~/.profile <br> # ~/.profileファイル export PATH="/<Meldのインストールディレクトリ>/bin:$PATH" <br> デスクトップエントリファイルを作成する。<br> vi ~/.local/share/applications/Meld.desktop <br> # ~/.local/share/applications/Meld.desktopファイル [Desktop Entry] Type=Application Name=Meld GenericName=Diff Viewer Comment=Compare and merge your files Exec=/<Meldのインストールディレクトリ>/bin/meld %F Icon=org.gnome.Meld Terminal=false MimeType=application/x-meld-comparison; Categories=GTK;Development; Keywords=diff;merge; StartupNotify=true <br> ==== ソースコードからインストール ==== Meldのビルドに必要な依存関係のライブラリをインストールする。<br> sudo zypper install glib2-devel gtk3 gtk3-devel python3 python3-devel python3-pycairo python3-pycairo-devel python3-gobject-cairo \ python3-gobject python3-gobject-devel python3-gobject-Gdk libgtksourceview-4-0 gtksourceview4-devel \ meson ninja gettext itstool libpango-1_0-0 wayland-devel wayland-protocols-devel <br> [https://github.com/GNOME/meld/tags MeldのGithub]にアクセスして、Meldのソースコードをダウンロードする。<br> ダウンロードしたファイルを解凍する。<br> tar xf meld-<バージョン>.tar.gz cd meld-<バージョン> <br> Meldをビルドおよびインストールする。<br> meson build --prefix=<Meldのインストールディレクトリ> ninja -C build ninja -C build install ninja -C build install update-po # または ninja -C build install meld-update-po <br> <u>Meldを任意のディレクトリ(ホームディレクトリ等)にインストールした場合は、Meldの実行ファイルをラッピングするためのシェルを作成する。</u><br> <u>これは、Meldの実行に必要なPythonモジュールのパスを指定する必要があるためである。</u><br> vi /<Meldのインストールディレクトリ>/bin/meld.sh <br> <syntaxhighlight lang="sh"> # /<Meldのインストールディレクトリ>/bin/meld.shファイル #!/usr/bin/env sh appname="meld" # use -f to make the readlink path absolute dirname="$(dirname -- "$(readlink -f -- "${0}")" )" if [ "$dirname" = "." ]; then dirname="$PWD/$dirname" fi # Initialize interpreter path export PYTHONPATH="$dirname/../lib/python3.6/site-packages" export XDG_DATA_DIRS="$dirname/../share:$XDG_DATA_DIRS" # Run Meld binary "$dirname/$appname" "$@" </syntaxhighlight> <br> Meldの実行に必要な依存関係のパッケージをインストールする。<br> sudo zypper install python3 python3-pycairo python3-gobject python3-gobject-cairo python3-gobject-Gdk \ libgtksourceview-4-0 typelib-1_0-GtkSource-4 gettext itstool libpango-1_0-0 <br> Meldを任意のディレクトリ(ホームディレクトリ等)にした場合は、~/.profileファイル等に環境変数PATHの設定を追記する。<br> vi ~/.profile <br> # ~/.profileファイル export PATH="/<Meldのインストールディレクトリ>/bin:$PATH" <br> デスクトップエントリファイルを作成する。<br> vi ~/.local/share/applications/Meld.desktop <br> # ~/.local/share/applications/Meld.desktopファイル [Desktop Entry] Type=Application Name=Meld GenericName=Diff Viewer Comment=Compare and merge your files Exec=meld %F # /usr/binディレクトリや/usr/local/binディレクトリにインストールした場合 Exec=/<Meldのインストールディレクトリ>/bin/meld.sh %F # 任意のディレクトリ(ホームディレクトリ等)にインストールした場合 Icon=org.gnome.Meld Terminal=false MimeType=application/x-meld-comparison; Categories=GTK;Development; Keywords=diff;merge; StartupNotify=true <br> ==== DolphinとMeldの連携 ==== DolphinのコンテキストメニューにMeldを追加する。<br> vi ~/.local/share/kservices5/CompareMeld.desktop <br> <syntaxhighlight lang="ini"> # ~/.local/share/kservices5/CompareMeld.desktopファイル [Desktop Entry] Type=Service ServiceTypes=KonqPopupMenu/Plugin Name=Compare using Meld TryExec=meld MimeType=inode/directory;application/octet-stream; Icon=/<Meldのアイコンがあるディレクトリ>/meld X-KDE-StartupNotify=false X-KDE-Priority=TopLevel X-KDE-Submenu=Compare using Meld Actions=setArg1;diff;diffsudo;_SEPARATOR_;selected;selectedsudo; [Desktop Action setArg1] Icon=/<Meldのアイコンがあるディレクトリ>/document-compareleft Exec=echo "%U" > /tmp/meld-menu-arg1 Name=Mark for use in left column [Desktop Action diff] Icon=/<Meldのアイコンがあるディレクトリ>/document-compareright Exec=ARG1=$(cat /tmp/meld-menu-arg1);meld "$ARG1" %U; rm /tmp/meld-menu-arg1; Name=Use in right column and compare [Desktop Action diffsudo] Icon=/<Meldのアイコンがあるディレクトリ>/document-compareright Exec=ARG1=$(cat /tmp/meld-menu-arg1); rm /tmp/meld-menu-arg1; if [ "$XDG_SESSION_TYPE" = "wayland" ]; then xhost +si:localuser:root && pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY KDE_SESSION_VERSION=5 KDE_FULL_SESSION=true dbus-launch meld "$ARG1" %U && xhost -si:localuser:root; else pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY KDE_SESSION_VERSION=5 KDE_FULL_SESSION=true /<Meldのインストールディレクトリ>/meld "$ARG1" %U; fi; Name=Use in right column and compare as root [Desktop Action selected] Icon=/<Meldのアイコンがあるディレクトリ>/kr_comparedirs Exec=/<Meldのインストールディレクトリ>/meld %U; rm /tmp/meld-menu-arg1; Name=Compare selected (highlighted) files/folders [Desktop Action selectedsudo] Icon=/<Meldのアイコンがあるディレクトリ>/kr_comparedirs # Exec=sudo meld %U; rm /tmp/meld-menu-arg1; Exec=if [ "$XDG_SESSION_TYPE" = "wayland" ]; then xhost +si:localuser:root && pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY KDE_SESSION_VERSION=5 KDE_FULL_SESSION=true dbus-launch meld %U && \ xhost -si:localuser:root; else pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY KDE_SESSION_VERSION=5 KDE_FULL_SESSION=true /<Meldのインストールディレクトリ>/meld %U; fi; Name=Compare selected (highlighted) files/folders as root </syntaxhighlight> <br><br> == patchコマンドとdiffコマンド == ==== patchコマンドとdiffコマンドとは ==== <code>patch</code>コマンドは、テキストファイルに差分を適用するコマンドである。<br> 古いファイルと差分ファイルを基に、新しいファイルを作成する。<br> <br> 差分ファイルは、<code>diff</code>コマンドを実行して作成する。<br> <br> ==== patchコマンドの書式 ==== patch <オプション> <元のファイル> <差分ファイル> # または patch -p <数字> < <差分ファイル> <br> ==== patchコマンドの主なオプション ==== <center> {| class="wikitable" | style="background-color:#fefefe;" |+ 差分ファイル関連のオプション |- ! style="background-color:#66CCFF;" | オプション ! style="background-color:#66CCFF;" | 説明 |- | -i <ファイル名><br>--input=<ファイル名> || 差分を指定したファイルから読み取る。(デフォルトは標準入力) |- | -n<br>--normal || 差分をdiffのデフォルト出力による差分として解釈する。 |- | -c<br>--context || 差分を<code>diff -c</code>コマンドで出力した差分として解釈する。 |- | -u<br>--unified || 差分を<code>diff -u</code>コマンドで出力した差分として解釈する。 |- | -F <行数><br>--fuzz=<行数> || <code>diff -c</code>コマンドに対し、適用する位置を探す際に無視できる行数を指定する。(デフォルトは2)<br><code>diff -c</code>コマンドで出力した際の行数(デフォルトは3)より大きな数を指定しないよう注意する。<br>数字が大きい場合、間違った箇所に適用される場合が多くなる。 |- | --binary || 全てのファイルをバイナリモードで読み書きする。<br>(<code>diff -a --binary</code>コマンドで作成した差分を対象とする) |- | -e<br>--ed || 差分をedスクリプトとして解釈する。 |- | -D <プリプロセッサ名><br>--ifdef=<プリプロセッサ名> || 差分を<code>#ifdef "<プリプロセッサ名>" #endif</code>形式で適用する。 |} </center> <br> <center> {| class="wikitable" | style="background-color:#fefefe;" |+ 差分適用時の処理に関連するオプション |- ! style="background-color:#66CCFF;" | オプション ! style="background-color:#66CCFF;" | 説明 |- | -d <ディレクトリのパス> --directory=<ディレクトリのパス> || 指定したディレクトリへ移動した後に他の処理を行う。 |- | -p <個数><br>--strip=<個数> || 差分に記載されたファイル名から指定した個数分のパス指定を取り除く。 |- | -R<br>--reverse || 新旧のファイルが反転していると見なす。 |- | -N<br>--forward || 反転していると思われる差分や適用済みと思われる差分を無視する。 |- | -l<br>--ignore-whitespace || 空白の個数の違いや行末の空白の有無による違いを無視する。 |- | -E<br>--remove-empty-files || 差分を適用した結果が空になったファイルを削除する。 |- | -o <ファイル名><br>--output=<ファイル名> || 指定した名前のファイルに出力する(デフォルトは同名のファイルで置き換える。 |- | -r <ファイル名><br>--reject-file=<ファイル名> || 適用できなかった差分(リジェクト)を出力するファイル名を指定する。<br>未指定の場合は、<u>元のファイル名.rej</u>ファイルに出力する。 |- | -Z<br>--set-utc || 差分の適用で内容が書き換わった場合、<br>適用後のファイルの変更日時とアクセス日時を<br>コンテキスト差分ファイルのヘッダに書かれているタイムスタンプに設定する。<br>(時刻はUTCであるものと見なす) |- | -T<br>--set-time || 差分の適用で内容が書き換わった場合、<br>適用後のファイルの変更日時とアクセス日時を<br>コンテキスト差分ファイルのヘッダに書かれているタイムスタンプに設定する。<br>(ヘッダはローカルの時刻を使っていると見なすため、非推奨) |- | --quoting-style=<スタイル> || ファイル名を出力するスタイルを以下から指定する。<br>デフォルトは、環境変数<code>QUOTING_STYLE</code>で指定可能である。<br>未指定の場合は<code>shell</code>となる。<br><br><code>literal</code> : ファイル名をそのまま出力する。<br><code>shell</code> : 必要に応じて、シェル用の引用符を付けて出力する。<br><code>shell-always</code> : 常にシェル用の引用符を付けて出力する。<br><code>c</code> : C言語文字列と同様な引用符を付けて出力する。<br><code>escape</code> : <code>c</code>と同様に引用符を付ける。ただし、最初と最後の二重引用符は省略する。 |} </center> <br> <center> {| class="wikitable" | style="background-color:#fefefe;" |+ バックアップに関連するオプション |- ! style="background-color:#66CCFF;" | オプション ! style="background-color:#66CCFF;" | 説明 |- | -b<br>--backup || バックアップファイルを作成する。<br>(バックアップファイル名を決める場合は、<code>-V</code>オプションで指定する) |- | --backup-if-mismatch || 適用できない差分があり、かつ、バックアップが指定されていない場合、ファイルをバックアップする。<br>(POSIXに準拠していない場合のデフォルト) |- | --no-backup-if-mismatch || 適用できない差分があり、かつ、バックアップが指定されていないファイルは、バックアップしない。<br>(POSIX準拠時のデフォルト) |- | -V <命名法><br>--version-control=<命名法> || バックアップファイル名を決定する方法を以下から指定する。<br>デフォルトは環境変数<code>PATCH_VERSION_CONTROL</code>または<code>VERSION_CONTROL</code>で指定できる。<br>未指定の場合は、<code>existing</code>となる。<br><br><code>existing</code> または <code>nil</code><br>番号付きのバックアップがある場合はバックアップに番号を付加するが、無い場合は簡易バックアップを作成する。<br><br><code>numbered</code> または <code>t</code><br>バックアップに番号を付加する。(例 : <u>file.txt</u>の場合、<u>file.txt.~1~</u>のようになる)<br><br><code>simple</code> または <code>never</code><br>簡易バックアップ(ファイル名は、<code>-B</code>、<code>-Y</code>、<code>-z</code>のいずれかで指定する。<br>未指定の場合は、環境変数<code>SIMPLE_BACKUP_SUFFIX</code>を指定する。<br>いずれも指定していない場合は、ファイル名の末尾に.origを付ける) |- | -B <文字列><br>--prefix=<文字列> || 簡易バックアップファイル名で、元のファイル名の前に文字列を付ける。<br><br>例 : <code>-B /junk/</code>と指定する場合、<u>src/file.c</u>ファイルのバックアップは<u>/junk/src/file.c</u>となる。 |- | -Y <文字列><br>--basename-prefix=<文字列> || 簡易バックアップファイル名で、ファイル名のベース名に文字列を付ける。<br><br>例 : <code>-Y .del/</code>と指定する場合、<u>src/file.c</u>ファイルのバックアップは<u>src/.del/file.c</u>となる。 |- | -z <文字列><br>--suffix=<文字列> || 簡易バックアップファイル名で、元のファイルの末尾に文字列を付ける。<br><br>例 :<br><code>-z ~</code>と指定する場合、<u>src/file.c</u>のバックアップは<u>src/file.c~</u>となる。<br>これは、環境変数<code>SIMPLE_BACKUP_SUFFIX</code>でも指定可能である。 |} </center> <br> <center> {| class="wikitable" | style="background-color:#fefefe;" |+ 全体的な動作に関連するオプション |- ! style="background-color:#66CCFF;" | オプション ! style="background-color:#66CCFF;" | 説明 |- | --dry-run || 差分を当てた場合の結果を表示する。(実際には、ファイルの変更を行わない) |- | -s<br>--silent<br>--quiet || エラーメッセージ以外は出力しない。 |- | --verbose || 処理中の情報を出力する。 |- | -t<br>--batch || ユーザに問い合わせずに処理を行う。<br><br> * ヘッダにファイル名を含まない差分ファイルはスキップする。(<code>-f</code>オプションと同様) * ファイルのバージョンが差分中の<u>Prereq:</u>の行に記述されたバージョンと異なる場合でも差分を適用して、差分が反転しているように見える場合は反転していると見なす。 |- | -f<br>--force || ユーザに問い合わせずに処理を行う。<br><br> * ヘッダにファイル名を含まない差分ファイルはスキップする。(<code>-t</code>オプションと同様) * ファイルのバージョンが差分中の<u>Prereq:</u>の行に記述されたバージョンと異なる場合でも差分を適用して、差分が反転しているように見えても反転していないと見なす。 * <code>-T</code>オプション、<code>-Z</code>オプション指定時において、ファイルの内容が書き換わらない場合もタイムスタンプを強制的に変更する。 |- | --posix || POSIX標準に従う。<br><br>例 :<br>差分を適用した結果空になったファイルを削除しない。<br>適用できなかった差分があった場合もファイルをバックアップしない。 |} </center> <br> ==== 差分の適用 ==== 元のファイルに差分を適用する。<br> patch <元のファイル> <差分ファイル> <br><br> __FORCETOC__ [[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]][[カテゴリ:PinePhone]]
インストール - 差分ツール
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse