こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Linux パッチの適用方法。

Linux Debian 9 の環境下において、パッチの適用方法を教えください。
あるサイトに下記の構文を、パッチしてくださいとあります。


diff --git a/init.d/sysfs.in b/init.d/sysfs.in
index 9f39fb57..23e8821c 100644
--- a/init.d/sysfs.in
+++ b/init.d/sysfs.in
@@ -150,6 +150,16 @@ cgroup1_controllers()
return 0
}

+cgroup2_base()
+{
+local base
+base="$(cgroup2_find_path)"
+mkdir -p "${base}"
+mount -t cgroup2 none -o "${sysfs_opts},nsdelegate" "${base}" 2> /dev/null ||
+mount -t cgroup2 none -o "${sysfs_opts}" "${base}"
+return 0
+}
+
cgroup2_controllers()
{
local active cgroup_path x y
@@ -169,13 +179,12 @@ cgroup2_controllers()

cgroups_hybrid()
{
-grep -qw cgroup /proc/filesystems &&
-grep -qw cgroup2 /proc/filesystems ||
-return 0
+grep -qw cgroup /proc/filesystems || return 0
cgroup1_base
-mkdir /sys/fs/cgroup/unified
-mount -t cgroup2 none -o "${sysfs_opts},nsdelegate" /sys/fs/cgroup/unified
-cgroup2_controllers
+if grep -qw cgroup2 /proc/filesystems; then
+cgroup2_base
+cgroup2_controllers
+fi
cgroup1_controllers
return 0
}
@@ -190,8 +199,8 @@ cgroups_legacy()

cgroups_unified()
{
-grep -qw cgroup2 /proc/filesystems || return 0
-mount -t cgroup2 none -o "${sysfs_opts},nsdelegate" /sys/fs/cgroup
+cgroup2_base
+cgroup2_controllers
return 0
}

diff --git a/sh/rc-cgroup.sh.in b/sh/rc-cgroup.sh.in
index 930eeefc..9e93d841 100644
--- a/sh/rc-cgroup.sh.in
+++ b/sh/rc-cgroup.sh.in
@@ -146,10 +146,12 @@ cgroup_set_limits()

cgroup2_find_path()
{
-case "${rc_cgroup_mode:-hybrid}" in
-hybrid) printf "/sys/fs/cgroup/unified" ;;
-unified) printf "/sys/fs/cgroup" ;;
+if grep -qw cgroup2 /proc/filesystems; then
+case "${rc_cgroup_mode:-hybrid}" in
+hybrid) printf "/sys/fs/cgroup/unified" ;;
+unified) printf "/sys/fs/cgroup" ;;
esac
+fi
return 0
}

@@ -180,7 +182,7 @@ cgroup2_set_limits()
{
local cgroup_path
cgroup_path="$(cgroup2_find_path)"
-[ -z "${cgroup_path}" ] && return 0
+[ -d "${cgroup_path}" ] || return 0
rc_cgroup_path="${cgroup_path}/${RC_SVCNAME}"
local OIFS="$IFS"
IFS="


上記のテキストを、パッチを当てるとはどのような手順になるでしょうか?
どのようなファイルを作成し、反映させるのでしょうか?
よろしくお願いします。

*

投稿日時 - 2018-06-02 11:20:11

QNo.9504347

すぐに回答ほしいです

質問者が選んだベストアンサー

> can't find file to patch at input line 5

と言ってますから、5行目に書かれているファイルパスにファイルが無いと言う事でしょう。
ご自身の環境とパッチ提供者の環境が異なる場合は、適宜調整が必要です。

投稿日時 - 2018-06-03 13:29:51

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

その差分(diff の結果)をテキストファイルとして保存し patch コマンドを使って適用させます。

http://www.atmarkit.co.jp/ait/articles/1704/28/news028.html

投稿日時 - 2018-06-02 11:35:13

補足

t_ohta様 ご回答有り難うございます。

質問内にある構文を0.txtとして保存し、root権限で、
# patch -u < 0.txt
と入力してみました。

root@G2:# patch -u < 0.txt
can't find file to patch at input line 5
Perhaps you should have used the -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git a/init.d/sysfs.in b/init.d/sysfs.in
|index 9f39fb57..23e8821c 100644
|--- a/init.d/sysfs.in
|+++ b/init.d/sysfs.in
--------------------------
File to patch:

上記の結果となります。
入力コマンドなど、誤っている点をお教えいただけますでしょうか。

*

投稿日時 - 2018-06-02 12:25:29

あなたにオススメの質問