Binary Utilities のデフォルト以外のディレクトリのビルドとインストール

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

おすすめ

転載: blog.csdn.net/phmatthaus/article/details/130291708