AppArmor ゼロ知識学習 6、ソースコード構築(3)では、libapparmor の構築手順を詳しく紹介していますが、公式サイトで与えられているデフォルトのパラメータはすべて使用しています。デフォルトの /usr ではなく、指定したディレクトリにターゲット ファイルを生成する必要がある場合は、いくつかの変更を行う必要があります。この記事では、変更の方法について詳しく説明します。
次の 2 点を明記する必要があります。
(1) Binary Utilities の構築は、前の手順 (環境変数の構成と libapparmor の構築) に基づいて実行する必要があります。これらの 2 つの手順については、AppArmor のゼロ知識学習 4. ソース コードの構築 (1)およびAppArmor のゼロ知識学習 5. ソース コードの構築 (2)を参照してください。
(2) 上記のlibapparmor のデフォルト以外のディレクトリの構築とインストールの手順は、パッケージを作成するために使用されますが、/usr/local 以下にターゲット ファイルを配置しないため、実際には機能しません。実際に機能するのは、デフォルトのパラメーターに従って以前にビルドされた libapparmor 関連のコンポーネントです。
次に、Binary Utilities カスタム インストール ディレクトリのビルドとインストールを開始します。
(1)入るbinutils目录
cd コマンドを使用して、apparmor ソース コードのルート ディレクトリの下のディレクトリに入りますbinutils
。実際のコマンドと結果は次のとおりです。
penghao@Ding-Perlis-MP260S48:~/AppArmor/apparmor_2/apparmor$ cd binutils/
penghao@Ding-Perlis-MP260S48:~/AppArmor/apparmor_2/apparmor/binutils$ pwd
/home/penghao/AppArmor/apparmor_2/apparmor/binutils
penghao@Ding-Perlis-MP260S48:~/AppArmor/apparmor_2/apparmor/binutils$ ls
aa-enabled aa_enabled.c aa-exec aa_exec.c aa-features-abi aa_features_abi.c aa-status aa_status.c cJSON.c cJSON.o po
aa-enabled.1 aa-enabled.pod aa-exec.1 aa-exec.pod aa-features-abi.1 aa-features-abi.pod aa-status.8 aa-status.pod cJSON.h Makefile
(2) コンパイル
make コマンドを実行してコンパイルします。実際のコマンドと結果は次のとおりです。
$ make
cc -L../libraries/libapparmor//src/.libs -g -O2 -pipe -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -DPACKAGE=\"aa-binutils\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor//include -o aa-enabled aa_enabled.c -Wl,-Bstatic -lapparmor -Wl,-Bdynamic -lpthread
cc -L../libraries/libapparmor//src/.libs -g -O2 -pipe -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -DPACKAGE=\"aa-binutils\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor//include -o aa-exec aa_exec.c -Wl,-Bstatic -lapparmor -Wl,-Bdynamic -lpthread
cc -L../libraries/libapparmor//src/.libs -g -O2 -pipe -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -DPACKAGE=\"aa-binutils\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor//include -o aa-features-abi aa_features_abi.c -Wl,-Bstatic -lapparmor -Wl,-Bdynamic -lpthread
cc -g -O2 -pipe -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -DPACKAGE=\"aa-binutils\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor//include -c -o cJSON.o cJSON.c
cc -L../libraries/libapparmor//src/.libs -g -O2 -pipe -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -DPACKAGE=\"aa-binutils\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor//include -o aa-status aa_status.c -Wl,-Bstatic -lapparmor -Wl,-Bdynamic -lpthread cJSON.o
/usr/bin/pod2man aa-enabled.pod --release="AppArmor 3.1.0" --center=AppArmor --stderr --section=1 > aa-enabled.1
/usr/bin/pod2man aa-exec.pod --release="AppArmor 3.1.0" --center=AppArmor --stderr --section=1 > aa-exec.1
/usr/bin/pod2man aa-features-abi.pod --release="AppArmor 3.1.0" --center=AppArmor --stderr --section=1 > aa-features-abi.1
/usr/bin/pod2man aa-status.pod --release="AppArmor 3.1.0" --center=AppArmor --stderr --section=8 > aa-status.8
make[1]: 进入目录“/home/penghao/AppArmor/apparmor_2/apparmor/binutils/po”
msgfmt -c -o af.mo af.po
af.po:7: 警告:头部缺少文件头“Language”
msgfmt -c -o de.mo de.po
msgfmt -c -o en_GB.mo en_GB.po
msgfmt -c -o es.mo es.po
es.po:7: 警告:头部缺少文件头“Language”
msgfmt -c -o fa.mo fa.po
fa.po:7: 警告:头部缺少文件头“Language”
msgfmt -c -o fi.mo fi.po
fi.po:7: 警告:头部缺少文件头“Language”
msgfmt -c -o id.mo id.po
msgfmt -c -o pt.mo pt.po
msgfmt -c -o ro.mo ro.po
ro.po:7: 警告:头部缺少文件头“Language”
msgfmt -c -o ru.mo ru.po
msgfmt -c -o sv.mo sv.po
sv.po:7: 警告:头部缺少文件头“Language”
msgfmt -c -o sw.mo sw.po
sw.po:7: 警告:头部缺少文件头“Language”
msgfmt -c -o tr.mo tr.po
tr.po:7: 警告:头部缺少文件头“Language”
make[1]: 离开目录“/home/penghao/AppArmor/apparmor_2/apparmor/binutils/po”
(3)チェック
make check コマンドを実行して確認します。実際のコマンドと結果は次のとおりです。
$ make check
LANG=C podchecker -warning -warning *.pod
aa-enabled.pod pod syntax OK.
aa-exec.pod pod syntax OK.
aa-features-abi.pod pod syntax OK.
aa-status.pod pod syntax OK.
no tests atm
(4) インストール
make install コマンドを実行してインストールします。実際のコマンドと結果は次のとおりです (DESTDIR= のパラメーターに注意してください)。
$ make install DESTDIR=/home/penghao/AppArmor/apparmor_2/output2
make[1]: 进入目录“/home/penghao/AppArmor/apparmor_2/apparmor/binutils/po”
make[1]: 对“all”无需做任何事。make[1]: 离开目录“/home/penghao/AppArmor/apparmor_2/apparmor/binutils/po”
make -C po install NAME=aa-binutils DESTDIR=/home/penghao/AppArmor/apparmor_2/output2
make[1]: 进入目录“/home/penghao/AppArmor/apparmor_2/apparmor/binutils/po”
mkdir -p /home/penghao/AppArmor/apparmor_2/output2//usr/share/locale
for lang in af de en_GB es fa fi id pt ro ru sv sw tr ; do \
mkdir -p /home/penghao/AppArmor/apparmor_2/output2//usr/share/locale/${lang}/LC_MESSAGES ; \
install -m 644 ${lang}.mo /home/penghao/AppArmor/apparmor_2/output2//usr/share/locale/${lang}/LC_MESSAGES/aa-binutils.mo ; \
done
make[1]: 离开目录“/home/penghao/AppArmor/apparmor_2/apparmor/binutils/po”
make install_manpages DESTDIR=/home/penghao/AppArmor/apparmor_2/output2
make[1]: 进入目录“/home/penghao/AppArmor/apparmor_2/apparmor/binutils”
install -d /home/penghao/AppArmor/apparmor_2/output2//usr/share/man/man1 ; install -m 644 aa-enabled.1 aa-exec.1 aa-features-abi.1 /home/penghao/AppArmor/apparmor_2/output2//usr/share/man/man1; install -d /home/penghao/AppArmor/apparmor_2/output2//usr/share/man/man8 ; install -m 644 aa-status.8 /home/penghao/AppArmor/apparmor_2/output2//usr/share/man/man8;
make[1]: 离开目录“/home/penghao/AppArmor/apparmor_2/apparmor/binutils”
ln -sf aa-status.8 /home/penghao/AppArmor/apparmor_2/output2//usr/share/man/man8/apparmor_status.8
install -m 755 -d /home/penghao/AppArmor/apparmor_2/output2/usr/bin
install -m 755 aa-enabled aa-exec aa-features-abi /home/penghao/AppArmor/apparmor_2/output2/usr/bin
install -m 755 -d /home/penghao/AppArmor/apparmor_2/output2/usr/sbin
ln -sf aa-status /home/penghao/AppArmor/apparmor_2/output2/usr/sbin/apparmor_status
install -m 755 aa-status /home/penghao/AppArmor/apparmor_2/output2/usr/sbin
(5) 生成されたコンテンツを表示する
make DESTDIR=/home/penghao/AppArmor/apparmor_2/output2 を構成した後、実際に生成されたファイルとパスを確認します。
usr
penghao@Ding-Perlis-MP260S48:~/AppArmor/apparmor_2/apparmor/binutils$ ls ../../output2/usr/
bin sbin share
penghao@Ding-Perlis-MP260S48:~/AppArmor/apparmor_2/apparmor/binutils$ tree ../../output2/
../../output2/
└── usr
├── bin
│ ├── aa-enabled
│ ├── aa-exec
│ └── aa-features-abi
├── sbin
│ ├── aa-status
│ └── apparmor_status -> aa-status
└── share
├── locale
│ ├── af
│ │ └── LC_MESSAGES
│ │ └── aa-binutils.mo
│ ├── de
│ │ └── LC_MESSAGES
│ │ └── aa-binutils.mo
│ ├── en_GB
│ │ └── LC_MESSAGES
│ │ └── aa-binutils.mo
│ ├── es
│ │ └── LC_MESSAGES
│ │ └── aa-binutils.mo
│ ├── fa
│ │ └── LC_MESSAGES
│ │ └── aa-binutils.mo
│ ├── fi
│ │ └── LC_MESSAGES
│ │ └── aa-binutils.mo
│ ├── id
│ │ └── LC_MESSAGES
│ │ └── aa-binutils.mo
│ ├── pt
│ │ └── LC_MESSAGES
│ │ └── aa-binutils.mo
│ ├── ro
│ │ └── LC_MESSAGES
│ │ └── aa-binutils.mo
│ ├── ru
│ │ └── LC_MESSAGES
│ │ └── aa-binutils.mo
│ ├── sv
│ │ └── LC_MESSAGES
│ │ └── aa-binutils.mo
│ ├── sw
│ │ └── LC_MESSAGES
│ │ └── aa-binutils.mo
│ └── tr
│ └── LC_MESSAGES
│ └── aa-binutils.mo
└── man
├── man1
│ ├── aa-enabled.1
│ ├── aa-exec.1
│ └── aa-features-abi.1
└── man8
├── aa-status.8
└── apparmor_status.8 -> aa-status.8
34 directories, 23 files
ここでは、Binary Utilities によって生成されるコンテンツを明確に確認するために、生成ターゲットを output2 フォルダーの下に配置します。最後に、以前の出力ディレクトリにインストールする必要があります。
DESTDIR= パラメータを変更した後に再度インストールすると、実際のコマンドと結果は次のようになります。
$ make install DESTDIR=/home/penghao/AppArmor/apparmor_2/output
make[1]: 进入目录“/home/penghao/AppArmor/apparmor_2/apparmor/binutils/po”
make[1]: 对“all”无需做任何事。make[1]: 离开目录“/home/penghao/AppArmor/apparmor_2/apparmor/binutils/po”
make -C po install NAME=aa-binutils DESTDIR=/home/penghao/AppArmor/apparmor_2/output
make[1]: 进入目录“/home/penghao/AppArmor/apparmor_2/apparmor/binutils/po”
mkdir -p /home/penghao/AppArmor/apparmor_2/output//usr/share/locale
for lang in af de en_GB es fa fi id pt ro ru sv sw tr ; do \
mkdir -p /home/penghao/AppArmor/apparmor_2/output//usr/share/locale/${lang}/LC_MESSAGES ; \
install -m 644 ${lang}.mo /home/penghao/AppArmor/apparmor_2/output//usr/share/locale/${lang}/LC_MESSAGES/aa-binutils.mo ; \
done
make[1]: 离开目录“/home/penghao/AppArmor/apparmor_2/apparmor/binutils/po”
make install_manpages DESTDIR=/home/penghao/AppArmor/apparmor_2/output
make[1]: 进入目录“/home/penghao/AppArmor/apparmor_2/apparmor/binutils”
install -d /home/penghao/AppArmor/apparmor_2/output//usr/share/man/man1 ; install -m 644 aa-enabled.1 aa-exec.1 aa-features-abi.1 /home/penghao/AppArmor/apparmor_2/output//usr/share/man/man1; install -d /home/penghao/AppArmor/apparmor_2/output//usr/share/man/man8 ; install -m 644 aa-status.8 /home/penghao/AppArmor/apparmor_2/output//usr/share/man/man8;
make[1]: 离开目录“/home/penghao/AppArmor/apparmor_2/apparmor/binutils”
ln -sf aa-status.8 /home/penghao/AppArmor/apparmor_2/output//usr/share/man/man8/apparmor_status.8
install -m 755 -d /home/penghao/AppArmor/apparmor_2/output/usr/bin
install -m 755 aa-enabled aa-exec aa-features-abi /home/penghao/AppArmor/apparmor_2/output/usr/bin
install -m 755 -d /home/penghao/AppArmor/apparmor_2/output/usr/sbin
ln -sf aa-status /home/penghao/AppArmor/apparmor_2/output/usr/sbin/apparmor_status
install -m 755 aa-status /home/penghao/AppArmor/apparmor_2/output/usr/sbin
Binary Utilities をインストールする前後の出力の変化を比較します。
取り付け前
$ tree ../../output
../../output
└── usr
└── local
├── include
│ ├── aalogparse
│ │ └── aalogparse.h
│ └── sys
│ ├── apparmor.h
│ └── apparmor_private.h
├── lib
│ ├── libapparmor.a
│ ├── libapparmor.la
│ ├── libapparmor.so -> libapparmor.so.1.12.2
│ ├── libapparmor.so.1 -> libapparmor.so.1.12.2
│ ├── libapparmor.so.1.12.2
│ ├── perl5
│ │ └── 5.36
│ │ ├── core_perl
│ │ │ └── perllocal.pod
│ │ └── vendor_perl
│ │ ├── auto
│ │ │ └── LibAppArmor
│ │ │ └── LibAppArmor.so
│ │ └── LibAppArmor.pm
│ ├── pkgconfig
│ │ └── libapparmor.pc
│ └── python3.10
│ └── site-packages
│ ├── LibAppArmor
│ │ ├── __init__.py
│ │ ├── _LibAppArmor.cpython-310-x86_64-linux-gnu.so
│ │ ├── LibAppArmor.py
│ │ └── __pycache__
│ │ ├── __init__.cpython-310.pyc
│ │ └── LibAppArmor.cpython-310.pyc
│ └── LibAppArmor-3.1.0-py3.10.egg-info
│ ├── dependency_links.txt
│ ├── PKG-INFO
│ ├── SOURCES.txt
│ └── top_level.txt
└── share
└── man
├── man2
│ ├── aa_change_hat.2
│ ├── aa_change_profile.2
│ ├── aa_find_mountpoint.2
│ ├── aa_getcon.2
│ ├── aa_query_label.2
│ └── aa_stack_profile.2
└── man3
├── aa_features.3
├── aa_kernel_interface.3
├── aa_policy_cache.3
└── aa_splitcon.3
22 directories, 31 files
インストール後
$ tree ../../output
../../output
└── usr
├── bin
│ ├── aa-enabled
│ ├── aa-exec
│ └── aa-features-abi
├── local
│ ├── include
│ │ ├── aalogparse
│ │ │ └── aalogparse.h
│ │ └── sys
│ │ ├── apparmor.h
│ │ └── apparmor_private.h
│ ├── lib
│ │ ├── libapparmor.a
│ │ ├── libapparmor.la
│ │ ├── libapparmor.so -> libapparmor.so.1.12.2
│ │ ├── libapparmor.so.1 -> libapparmor.so.1.12.2
│ │ ├── libapparmor.so.1.12.2
│ │ ├── perl5
│ │ │ └── 5.36
│ │ │ ├── core_perl
│ │ │ │ └── perllocal.pod
│ │ │ └── vendor_perl
│ │ │ ├── auto
│ │ │ │ └── LibAppArmor
│ │ │ │ └── LibAppArmor.so
│ │ │ └── LibAppArmor.pm
│ │ ├── pkgconfig
│ │ │ └── libapparmor.pc
│ │ └── python3.10
│ │ └── site-packages
│ │ ├── LibAppArmor
│ │ │ ├── __init__.py
│ │ │ ├── _LibAppArmor.cpython-310-x86_64-linux-gnu.so
│ │ │ ├── LibAppArmor.py
│ │ │ └── __pycache__
│ │ │ ├── __init__.cpython-310.pyc
│ │ │ └── LibAppArmor.cpython-310.pyc
│ │ └── LibAppArmor-3.1.0-py3.10.egg-info
│ │ ├── dependency_links.txt
│ │ ├── PKG-INFO
│ │ ├── SOURCES.txt
│ │ └── top_level.txt
│ └── share
│ └── man
│ ├── man2
│ │ ├── aa_change_hat.2
│ │ ├── aa_change_profile.2
│ │ ├── aa_find_mountpoint.2
│ │ ├── aa_getcon.2
│ │ ├── aa_query_label.2
│ │ └── aa_stack_profile.2
│ └── man3
│ ├── aa_features.3
│ ├── aa_kernel_interface.3
│ ├── aa_policy_cache.3
│ └── aa_splitcon.3
├── sbin
│ ├── aa-status
│ └── apparmor_status -> aa-status
└── share
├── locale
│ ├── af
│ │ └── LC_MESSAGES
│ │ └── aa-binutils.mo
│ ├── de
│ │ └── LC_MESSAGES
│ │ └── aa-binutils.mo
│ ├── en_GB
│ │ └── LC_MESSAGES
│ │ └── aa-binutils.mo
│ ├── es
│ │ └── LC_MESSAGES
│ │ └── aa-binutils.mo
│ ├── fa
│ │ └── LC_MESSAGES
│ │ └── aa-binutils.mo
│ ├── fi
│ │ └── LC_MESSAGES
│ │ └── aa-binutils.mo
│ ├── id
│ │ └── LC_MESSAGES
│ │ └── aa-binutils.mo
│ ├── pt
│ │ └── LC_MESSAGES
│ │ └── aa-binutils.mo
│ ├── ro
│ │ └── LC_MESSAGES
│ │ └── aa-binutils.mo
│ ├── ru
│ │ └── LC_MESSAGES
│ │ └── aa-binutils.mo
│ ├── sv
│ │ └── LC_MESSAGES
│ │ └── aa-binutils.mo
│ ├── sw
│ │ └── LC_MESSAGES
│ │ └── aa-binutils.mo
│ └── tr
│ └── LC_MESSAGES
│ └── aa-binutils.mo
└── man
├── man1
│ ├── aa-enabled.1
│ ├── aa-exec.1
│ └── aa-features-abi.1
└── man8
├── aa-status.8
└── apparmor_status.8 -> aa-status.8
55 directories, 54 files