「インストール - 差分ツール」の版間の差分

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
ナビゲーションに移動 検索に移動
156行目: 156行目:
  vi ~/.local/share/kservices5/CompareMeld.desktop
  vi ~/.local/share/kservices5/CompareMeld.desktop
<br>
<br>
<syntaxhighlight lang="ini">
  # ~/.local/share/kservices5/CompareMeld.desktopファイル
  # ~/.local/share/kservices5/CompareMeld.desktopファイル
   
   
197行目: 198行目:
       xhost -si:localuser:root; else pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY KDE_SESSION_VERSION=5 KDE_FULL_SESSION=true /<Meldのインストールディレクトリ>/meld %U; fi;
       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
  Name=Compare selected (highlighted) files/folders as root
</syntaxhighlight>
<br><br>
<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>ファイルに出力する。
|-
|
|-
|
|-
|
|}
<br><br>


__FORCETOC__
__FORCETOC__
[[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]][[カテゴリ:PinePhone]]
[[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]][[カテゴリ:PinePhone]]

2023年12月15日 (金) 03:32時点における版

概要



KDiff3

パッケージ管理システムからインストール

KDiff3をインストールする。

sudo zypper install kdiff3


ソースコードからインストール

KDiff3のGithubにアクセスして、KDiff3のソースコードをダウンロードする。
ダウンロードしたファイルを解凍する。

tar xf kdiff3-<バージョン>.tar.gz
cd kdiff3-<バージョン>


KDiff3のビルドに必要なライブラリをインストールする。

  • 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


KDiff3のビルドディレクトリを作成する。

mkdir build && cd build


KDiff3をビルドおよびインストールする。

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



Meld

パッケージ管理システムからインストール

sudo zypper install meld


インストールせずにソースコードから直接実行

MeldのGithubにアクセスして、Meldのソースコードをダウンロードする。
ダウンロードしたファイルを解凍する。

tar xf meld-<バージョン>.tar.gz
mv meld-<バージョン> meld
mv Meld  <Meldのインストールディレクトリ>


Meldを任意のディレクトリ(ホームディレクトリ等)にした場合は、~/.profileファイル等に環境変数PATHの設定を追記する。

vi ~/.profile


# ~/.profileファイル

export PATH="/<Meldのインストールディレクトリ>/bin:$PATH"


デスクトップエントリファイルを作成する。

vi ~/.local/share/applications/Meld.desktop


# ~/.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


ソースコードからインストール

Meldのビルドに必要な依存関係のライブラリをインストールする。

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


MeldのGithubにアクセスして、Meldのソースコードをダウンロードする。
ダウンロードしたファイルを解凍する。

tar xf meld-<バージョン>.tar.gz
cd meld-<バージョン>


Meldをビルドおよびインストールする。

meson build --prefix=<Meldのインストールディレクトリ>
ninja -C build
ninja -C build install

ninja -C build install update-po
# または
ninja -C build install meld-update-po


Meldを任意のディレクトリ(ホームディレクトリ等)にインストールした場合は、Meldの実行ファイルをラッピングするためのシェルを作成する。
これは、Meldの実行に必要なPythonモジュールのパスを指定する必要があるためである。

vi /<Meldのインストールディレクトリ>/bin/meld.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" "$@"


Meldの実行に必要な依存関係のパッケージをインストールする。

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 


Meldを任意のディレクトリ(ホームディレクトリ等)にした場合は、~/.profileファイル等に環境変数PATHの設定を追記する。

vi ~/.profile


# ~/.profileファイル

export PATH="/<Meldのインストールディレクトリ>/bin:$PATH"


デスクトップエントリファイルを作成する。

vi ~/.local/share/applications/Meld.desktop


# ~/.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


DolphinとMeldの連携

DolphinのコンテキストメニューにMeldを追加する。

vi ~/.local/share/kservices5/CompareMeld.desktop


 # ~/.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



patchコマンドとdiffコマンド

patchコマンドとdiffコマンドとは

patchコマンドは、テキストファイルに差分を適用するコマンドである。
古いファイルと差分ファイルを基に、新しいファイルを作成する。

差分ファイルは、diffコマンドを実行して作成する。

patchコマンドの書式

patch <オプション> <元のファイル> <差分ファイル>
# または
patch -p <数字> < <差分ファイル>


patchコマンドの主なオプション

差分ファイル関連のオプション
オプション 説明
-i <ファイル名>
--input=<ファイル名>
差分を指定したファイルから読み取る。(デフォルトは標準入力)
-n
--normal
差分をdiffのデフォルト出力による差分として解釈する。
-c
--context
差分をdiff -cコマンドで出力した差分として解釈する。
-u
--unified
差分をdiff -uコマンドで出力した差分として解釈する。
-F <行数>
--fuzz=<行数>
diff -cコマンドに対し、適用する位置を探す際に無視できる行数を指定する。(デフォルトは2)
diff -cコマンドで出力した際の行数(デフォルトは3)より大きな数を指定しないよう注意する。
数字が大きい場合、間違った箇所に適用される場合が多くなる。
--binary 全てのファイルをバイナリモードで読み書きする。
diff -a --binaryコマンドで作成した差分を対象とする)
-e
--ed
差分をedスクリプトとして解釈する。
-D <プリプロセッサ名>
--ifdef=<プリプロセッサ名>
差分を#ifdef "<プリプロセッサ名>" #endif形式で適用する。


差分適用時の処理に関連するオプション
オプション 説明
-d <ディレクトリのパス> --directory=<ディレクトリのパス> 指定したディレクトリへ移動した後に他の処理を行う。
-p <個数>
--strip=<個数>
差分に記載されたファイル名から指定した個数分のパス指定を取り除く。
-R
--reverse
新旧のファイルが反転していると見なす。
-N
--forward
反転していると思われる差分や適用済みと思われる差分を無視する。
-l
--ignore-whitespace
空白の個数の違いや行末の空白の有無による違いを無視する。
-E
--remove-empty-files
差分を適用した結果が空になったファイルを削除する。
-o <ファイル名>
--output=<ファイル名>
指定した名前のファイルに出力する(デフォルトは同名のファイルで置き換える。
-r <ファイル名>
--reject-file=<ファイル名>
適用できなかった差分(リジェクト)を出力するファイル名を指定する。
未指定の場合は、元のファイル名.rejファイルに出力する。