在AppArmor零知识学习七、源码构建(4)中,详细介绍了Parser的构建步骤,但那完全使用的是官网给出的默认参数。如果需要将目标文件生成到指定目录而非默认的/usr,则需要进行一些修改,本文就来详述如何进行修改。
必须说明以下两点:
(1)Parser的构建必须在前述步骤(配置环境变量和libapparmor构建)的基础上才能进行。关于这两个步骤,请参阅:AppArmor零知识学习四、源码构建(1)和AppArmor零知识学习五、源码构建(2);
(2)前文libapparmor非默认目录构建和安装中的步骤是为了制作包时使用,由于其没有将目标文件放到/usr/local下,因此实际上并没有起作用。真正起作用的是之前按照默认参数构建的libapparmor相关组件。
接下来,开始Parser自定义安装目录的构建和安装。
(1)进入parser目录
通过cd命令进入apparmor源码根目录下的parser目录。实际命令及结果如下所示:
penghao@Ding-Perlis-MP260S48:~/AppArmor/apparmor_2/apparmor$ cd parser/
penghao@Ding-Perlis-MP260S48:~/AppArmor/apparmor_2/apparmor/parser$ pwd
/home/penghao/AppArmor/apparmor_2/apparmor/parser
penghao@Ding-Perlis-MP260S48:~/AppArmor/apparmor_2/apparmor/parser$ ls
aa-teardown apparmor.d.pod base_af_names.h dbus.cc libapparmor_re mqueue.cc parser.conf parser_main.c parser_variable.c profile.cc rc.apparmor.slackware signal.h
aa-teardown.pod apparmor_parser.pod base_cap_names.h dbus.h lib.c mqueue.h parser.h parser_merge.c parser_yacc.y profile.h README techdoc.tex
af_rule.cc apparmor.pod capability.h default_features.c lib.h network.c parser_include.c parser_misc.c po profile-load README.devel tst
af_rule.h apparmor.service common_optarg.c file_cache.h Makefile network.h parser_include.h parser_policy.c policy_cache.c ptrace.cc rule.cc unit_test.h
af_unix.cc apparmor.systemd common_optarg.h frob_slack_rc mount.cc parser_alias.c parser_interface.c parser_regex.c policy_cache.h ptrace.h rule.h userns.cc
af_unix.h apparmor_xattrs.pod COPYING.GPL immunix.h mount.h parser_common.c parser_lex.l parser_symtab.c policydb.h rc.apparmor.functions signal.cc userns.h
(2)编译
运行make命令进行编译。实际命令及结果如下:
$ make
which: no rpm in (/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/usr/jdk/bin:/usr/go/bin)
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o parser_common.o parser_common.c
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o parser_include.o parser_include.c
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o parser_interface.o parser_interface.c
bison -d --define=parse.error=verbose -o parser_yacc.c parser_yacc.y
flex -B -v --noyy_top_state -oparser_lex.c parser_lex.l
flex version 2.6.4 usage statistics:
scanner options: -svB8 -Cem -oparser_lex.c
1239/2000 NFA states
530/1000 DFA states (5537 words)
84 rules
Compressed tables always back-up
24/40 start conditions
656 epsilon states, 481 double epsilon states
133/200 character classes needed 4635/4750 words of storage, 0 reused
22223 state/nextstate pairs created
2389/19834 unique/duplicate transitions
641/1000 base-def entries created
4045/6000 (peak 8172) nxt-chk entries created
2220/7500 (peak 6216) template nxt-chk entries created
374 empty table entries
126 protos created
111 templates created, 279 uses
56/256 equivalence classes created
20/256 meta-equivalence classes created
0 (70 saved) hash collisions, 1908 DFAs equal
22 sets of reallocations needed
9684 total table entries needed
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o parser_lex.o parser_lex.c
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o parser_main.o parser_main.c
../common/list_capabilities.sh | LC_ALL=C sed -n -e "s/[ \\t]\\?CAP_\\([A-Z0-9_]\\+\\)/\{\"\\L\\1\", \\UCAP_\\1, NO_BACKMAP_CAP, CAPFLAG_BASE_FEATURE\},\\n/pg" > generated_cap_names.h
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o parser_misc.o parser_misc.c
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o parser_merge.o parser_merge.c
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o parser_symtab.o parser_symtab.c
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o parser_yacc.o parser_yacc.c
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o parser_regex.o parser_regex.c
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o parser_variable.o parser_variable.c
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o parser_policy.o parser_policy.c
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o parser_alias.o parser_alias.c
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o common_optarg.o common_optarg.c
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o lib.o lib.c
../common/list_af_names.sh > generated_af_names.h
cat base_af_names.h | diff -u - generated_af_names.h | grep -v '^.AF_MAX' | grep '^\+[^+]' ; \
if [ $? -eq 1 ] ; then \
cat base_af_names.h | LC_ALL=C sed -n -e 's/[ \t]\?AF_MAX[ \t]\+[0-9]\+,//g' -e 's/[ \t]\+\?AF_\([A-Z0-9_]\+\)[ \t]\+\([0-9]\+\),/#ifndef AF_\1\n# define AF_\1 \2\n#endif\nAA_GEN_NET_ENT("\L\1", \UAF_\1)\n/pg' > af_names.h ; \
cat base_af_names.h | LC_ALL=C sed -n -e 's/AF_MAX[ \t]\+\([0-9]\+\),\?.*/\n#define AA_AF_MAX \1\n/p' >> af_names.h ; \
else \
echo "Error: new AF names detected; please update base_af_names.h with values from generated_af_names.h" ; \
exit 1 ; \
fi
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o network.o network.c
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o mount.o mount.cc
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o dbus.o dbus.cc
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o profile.o profile.cc
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o rule.o rule.cc
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o signal.o signal.cc
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o ptrace.o ptrace.cc
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o af_rule.o af_rule.cc
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o af_unix.o af_unix.cc
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o policy_cache.o policy_cache.c
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o default_features.o default_features.c
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o userns.o userns.cc
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o mqueue.o mqueue.cc
make -C libapparmor_re CFLAGS="-g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x"
make[1]: 进入目录“/home/penghao/AppArmor/apparmor_2/apparmor/parser/libapparmor_re”
bison -o parse.cc parse.y
parse.y:63.1-21: 警告: 已弃用的指令:“%name-prefix "regex_"”,应使用 “%define api.prefix {regex_}” [-Wdeprecated]
63 | %name-prefix "regex_"
| ^~~~~~~~~~~~~~~~~~~~~
| %define api.prefix {regex_}
parse.y: 警告: fix-its can be applied. Rerun with option '--update'. [-Wother]
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -I../../libraries/libapparmor/include -c -o parse.o parse.cc
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -I../../libraries/libapparmor/include -c -o expr-tree.o expr-tree.cc
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -I../../libraries/libapparmor/include -c -o hfa.o hfa.cc
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -I../../libraries/libapparmor/include -c -o chfa.o chfa.cc
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -I../../libraries/libapparmor/include -c -o aare_rules.o aare_rules.cc
ar -rcs libapparmor_re.a parse.o expr-tree.o hfa.o chfa.o aare_rules.o
make[1]: 离开目录“/home/penghao/AppArmor/apparmor_2/apparmor/parser/libapparmor_re”
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -o apparmor_parser parser_common.o parser_include.o parser_interface.o parser_lex.o parser_main.o parser_misc.o parser_merge.o parser_symtab.o parser_yacc.o parser_regex.o parser_variable.o parser_policy.o parser_alias.o common_optarg.o lib.o network.o mount.o dbus.o profile.o rule.o signal.o ptrace.o af_rule.o af_unix.o policy_cache.o default_features.o userns.o mqueue.o \
libapparmor_re/libapparmor_re.a -static-libgcc -static-libstdc++ -L. -L../libraries/libapparmor/src/.libs -Wl,-Bstatic -lapparmor -Wl,-Bdynamic -lpthread
/usr/bin/pod2man apparmor.d.pod --release="AppArmor 3.1.0" --center=AppArmor --stderr --section=5 > apparmor.d.5
/usr/bin/pod2man apparmor.pod --release="AppArmor 3.1.0" --center=AppArmor --stderr --section=7 > apparmor.7
/usr/bin/pod2man apparmor_parser.pod --release="AppArmor 3.1.0" --center=AppArmor --stderr --section=8 > apparmor_parser.8
/usr/bin/pod2man aa-teardown.pod --release="AppArmor 3.1.0" --center=AppArmor --stderr --section=8 > aa-teardown.8
/usr/bin/pod2man apparmor_xattrs.pod --release="AppArmor 3.1.0" --center=AppArmor --stderr --section=7 > apparmor_xattrs.7
/usr/bin/pod2html --header --css apparmor.css --infile=apparmor.d.pod --outfile=apparmor.d.5.html
/usr/bin/pod2html --header --css apparmor.css --infile=apparmor.pod --outfile=apparmor.7.html
/usr/bin/pod2html --header --css apparmor.css --infile=apparmor_parser.pod --outfile=apparmor_parser.8.html
/usr/bin/pod2html --header --css apparmor.css --infile=aa-teardown.pod --outfile=aa-teardown.8.html
/usr/bin/pod2html --header --css apparmor.css --infile=apparmor_xattrs.pod --outfile=apparmor_xattrs.7.html
make[1]: 进入目录“/home/penghao/AppArmor/apparmor_2/apparmor/parser/po”
msgfmt -c -o af.mo af.po
msgfmt -c -o ar.mo ar.po
msgfmt -c -o bg.mo bg.po
msgfmt -c -o bn.mo bn.po
msgfmt -c -o bo.mo bo.po
bo.po:7: 警告:文件头“Last-Translator”仍然是默认值未改变bo.po:7: 警告:头部缺少文件头“Language”
msgfmt -c -o bs.mo bs.po
msgfmt -c -o ca.mo ca.po
msgfmt -c -o ce.mo ce.po
msgfmt -c -o cs.mo cs.po
msgfmt -c -o cy.mo cy.po
msgfmt -c -o da.mo da.po
msgfmt -c -o de.mo de.po
msgfmt -c -o el.mo el.po
msgfmt -c -o en_AU.mo en_AU.po
msgfmt -c -o en_CA.mo en_CA.po
msgfmt -c -o en_GB.mo en_GB.po
msgfmt -c -o es.mo es.po
msgfmt -c -o et.mo et.po
msgfmt -c -o fa.mo fa.po
fa.po:7: 警告:头部缺少文件头“Language”
msgfmt -c -o fi.mo fi.po
msgfmt -c -o fr.mo fr.po
msgfmt -c -o gl.mo gl.po
msgfmt -c -o gu.mo gu.po
msgfmt -c -o he.mo he.po
msgfmt -c -o hi.mo hi.po
msgfmt -c -o hr.mo hr.po
msgfmt -c -o hu.mo hu.po
msgfmt -c -o id.mo id.po
msgfmt -c -o it.mo it.po
msgfmt -c -o ja.mo ja.po
msgfmt -c -o ka.mo ka.po
msgfmt -c -o km.mo km.po
msgfmt -c -o ko.mo ko.po
msgfmt -c -o lo.mo lo.po
msgfmt -c -o lt.mo lt.po
msgfmt -c -o mk.mo mk.po
msgfmt -c -o mr.mo mr.po
msgfmt -c -o ms.mo ms.po
msgfmt -c -o nb.mo nb.po
msgfmt -c -o nl.mo nl.po
msgfmt -c -o oc.mo oc.po
msgfmt -c -o pa.mo pa.po
msgfmt -c -o pl.mo pl.po
msgfmt -c -o pt_BR.mo pt_BR.po
msgfmt -c -o pt.mo pt.po
msgfmt -c -o ro.mo ro.po
msgfmt -c -o ru.mo ru.po
msgfmt -c -o si.mo si.po
msgfmt -c -o sk.mo sk.po
msgfmt -c -o sl.mo sl.po
msgfmt -c -o sq.mo sq.po
msgfmt -c -o sr.mo sr.po
msgfmt -c -o sv.mo sv.po
msgfmt -c -o ta.mo ta.po
msgfmt -c -o th.mo th.po
msgfmt -c -o tr.mo tr.po
msgfmt -c -o ug.mo ug.po
msgfmt -c -o uk.mo uk.po
msgfmt -c -o vi.mo vi.po
msgfmt -c -o wa.mo wa.po
msgfmt -c -o xh.mo xh.po
msgfmt -c -o zh_CN.mo zh_CN.po
msgfmt -c -o zh_TW.mo zh_TW.po
msgfmt -c -o zu.mo zu.po
make[1]: 离开目录“/home/penghao/AppArmor/apparmor_2/apparmor/parser/po”
(3)检查
运行make check命令进行检查。实际命令及结果如下:
$ make
which: no rpm in (/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/usr/jdk/bin:/usr/go/bin)
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o parser_common.o parser_common.c
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o parser_include.o parser_include.c
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o parser_interface.o parser_interface.c
bison -d --define=parse.error=verbose -o parser_yacc.c parser_yacc.y
flex -B -v --noyy_top_state -oparser_lex.c parser_lex.l
flex version 2.6.4 usage statistics:
scanner options: -svB8 -Cem -oparser_lex.c
1239/2000 NFA states
530/1000 DFA states (5537 words)
84 rules
Compressed tables always back-up
24/40 start conditions
656 epsilon states, 481 double epsilon states
133/200 character classes needed 4635/4750 words of storage, 0 reused
22223 state/nextstate pairs created
2389/19834 unique/duplicate transitions
641/1000 base-def entries created
4045/6000 (peak 8172) nxt-chk entries created
2220/7500 (peak 6216) template nxt-chk entries created
374 empty table entries
126 protos created
111 templates created, 279 uses
56/256 equivalence classes created
20/256 meta-equivalence classes created
0 (70 saved) hash collisions, 1908 DFAs equal
22 sets of reallocations needed
9684 total table entries needed
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o parser_lex.o parser_lex.c
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o parser_main.o parser_main.c
../common/list_capabilities.sh | LC_ALL=C sed -n -e "s/[ \\t]\\?CAP_\\([A-Z0-9_]\\+\\)/\{\"\\L\\1\", \\UCAP_\\1, NO_BACKMAP_CAP, CAPFLAG_BASE_FEATURE\},\\n/pg" > generated_cap_names.h
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o parser_misc.o parser_misc.c
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o parser_merge.o parser_merge.c
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o parser_symtab.o parser_symtab.c
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o parser_yacc.o parser_yacc.c
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o parser_regex.o parser_regex.c
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o parser_variable.o parser_variable.c
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o parser_policy.o parser_policy.c
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o parser_alias.o parser_alias.c
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o common_optarg.o common_optarg.c
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o lib.o lib.c
../common/list_af_names.sh > generated_af_names.h
cat base_af_names.h | diff -u - generated_af_names.h | grep -v '^.AF_MAX' | grep '^\+[^+]' ; \
if [ $? -eq 1 ] ; then \
cat base_af_names.h | LC_ALL=C sed -n -e 's/[ \t]\?AF_MAX[ \t]\+[0-9]\+,//g' -e 's/[ \t]\+\?AF_\([A-Z0-9_]\+\)[ \t]\+\([0-9]\+\),/#ifndef AF_\1\n# define AF_\1 \2\n#endif\nAA_GEN_NET_ENT("\L\1", \UAF_\1)\n/pg' > af_names.h ; \
cat base_af_names.h | LC_ALL=C sed -n -e 's/AF_MAX[ \t]\+\([0-9]\+\),\?.*/\n#define AA_AF_MAX \1\n/p' >> af_names.h ; \
else \
echo "Error: new AF names detected; please update base_af_names.h with values from generated_af_names.h" ; \
exit 1 ; \
fi
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o network.o network.c
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o mount.o mount.cc
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o dbus.o dbus.cc
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o profile.o profile.cc
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o rule.o rule.cc
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o signal.o signal.cc
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o ptrace.o ptrace.cc
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o af_rule.o af_rule.cc
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o af_unix.o af_unix.cc
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o policy_cache.o policy_cache.c
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o default_features.o default_features.c
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o userns.o userns.cc
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -c -o mqueue.o mqueue.cc
make -C libapparmor_re CFLAGS="-g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x"
make[1]: 进入目录“/home/penghao/AppArmor/apparmor_2/apparmor/parser/libapparmor_re”
bison -o parse.cc parse.y
parse.y:63.1-21: 警告: 已弃用的指令:“%name-prefix "regex_"”,应使用 “%define api.prefix {regex_}” [-Wdeprecated]
63 | %name-prefix "regex_"
| ^~~~~~~~~~~~~~~~~~~~~
| %define api.prefix {regex_}
parse.y: 警告: fix-its can be applied. Rerun with option '--update'. [-Wother]
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -I../../libraries/libapparmor/include -c -o parse.o parse.cc
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -I../../libraries/libapparmor/include -c -o expr-tree.o expr-tree.cc
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -I../../libraries/libapparmor/include -c -o hfa.o hfa.cc
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -I../../libraries/libapparmor/include -c -o chfa.o chfa.cc
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -I../../libraries/libapparmor/include -c -o aare_rules.o aare_rules.cc
ar -rcs libapparmor_re.a parse.o expr-tree.o hfa.o chfa.o aare_rules.o
make[1]: 离开目录“/home/penghao/AppArmor/apparmor_2/apparmor/parser/libapparmor_re”
g++ -g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x -DHAVE_REALLOCARRAY=1 -DPACKAGE=\"apparmor-parser\" -DLOCALEDIR=\"/usr/share/locale\" -I../libraries/libapparmor/include -o apparmor_parser parser_common.o parser_include.o parser_interface.o parser_lex.o parser_main.o parser_misc.o parser_merge.o parser_symtab.o parser_yacc.o parser_regex.o parser_variable.o parser_policy.o parser_alias.o common_optarg.o lib.o network.o mount.o dbus.o profile.o rule.o signal.o ptrace.o af_rule.o af_unix.o policy_cache.o default_features.o userns.o mqueue.o \
libapparmor_re/libapparmor_re.a -static-libgcc -static-libstdc++ -L. -L../libraries/libapparmor/src/.libs -Wl,-Bstatic -lapparmor -Wl,-Bdynamic -lpthread
/usr/bin/pod2man apparmor.d.pod --release="AppArmor 3.1.0" --center=AppArmor --stderr --section=5 > apparmor.d.5
/usr/bin/pod2man apparmor.pod --release="AppArmor 3.1.0" --center=AppArmor --stderr --section=7 > apparmor.7
/usr/bin/pod2man apparmor_parser.pod --release="AppArmor 3.1.0" --center=AppArmor --stderr --section=8 > apparmor_parser.8
/usr/bin/pod2man aa-teardown.pod --release="AppArmor 3.1.0" --center=AppArmor --stderr --section=8 > aa-teardown.8
/usr/bin/pod2man apparmor_xattrs.pod --release="AppArmor 3.1.0" --center=AppArmor --stderr --section=7 > apparmor_xattrs.7
/usr/bin/pod2html --header --css apparmor.css --infile=apparmor.d.pod --outfile=apparmor.d.5.html
/usr/bin/pod2html --header --css apparmor.css --infile=apparmor.pod --outfile=apparmor.7.html
/usr/bin/pod2html --header --css apparmor.css --infile=apparmor_parser.pod --outfile=apparmor_parser.8.html
/usr/bin/pod2html --header --css apparmor.css --infile=aa-teardown.pod --outfile=aa-teardown.8.html
/usr/bin/pod2html --header --css apparmor.css --infile=apparmor_xattrs.pod --outfile=apparmor_xattrs.7.html
make[1]: 进入目录“/home/penghao/AppArmor/apparmor_2/apparmor/parser/po”
msgfmt -c -o af.mo af.po
msgfmt -c -o ar.mo ar.po
msgfmt -c -o bg.mo bg.po
msgfmt -c -o bn.mo bn.po
msgfmt -c -o bo.mo bo.po
bo.po:7: 警告:文件头“Last-Translator”仍然是默认值未改变bo.po:7: 警告:头部缺少文件头“Language”
msgfmt -c -o bs.mo bs.po
msgfmt -c -o ca.mo ca.po
msgfmt -c -o ce.mo ce.po
msgfmt -c -o cs.mo cs.po
msgfmt -c -o cy.mo cy.po
msgfmt -c -o da.mo da.po
msgfmt -c -o de.mo de.po
msgfmt -c -o el.mo el.po
msgfmt -c -o en_AU.mo en_AU.po
msgfmt -c -o en_CA.mo en_CA.po
msgfmt -c -o en_GB.mo en_GB.po
msgfmt -c -o es.mo es.po
msgfmt -c -o et.mo et.po
msgfmt -c -o fa.mo fa.po
fa.po:7: 警告:头部缺少文件头“Language”
msgfmt -c -o fi.mo fi.po
msgfmt -c -o fr.mo fr.po
msgfmt -c -o gl.mo gl.po
msgfmt -c -o gu.mo gu.po
msgfmt -c -o he.mo he.po
msgfmt -c -o hi.mo hi.po
msgfmt -c -o hr.mo hr.po
msgfmt -c -o hu.mo hu.po
msgfmt -c -o id.mo id.po
msgfmt -c -o it.mo it.po
msgfmt -c -o ja.mo ja.po
msgfmt -c -o ka.mo ka.po
msgfmt -c -o km.mo km.po
msgfmt -c -o ko.mo ko.po
msgfmt -c -o lo.mo lo.po
msgfmt -c -o lt.mo lt.po
msgfmt -c -o mk.mo mk.po
msgfmt -c -o mr.mo mr.po
msgfmt -c -o ms.mo ms.po
msgfmt -c -o nb.mo nb.po
msgfmt -c -o nl.mo nl.po
msgfmt -c -o oc.mo oc.po
msgfmt -c -o pa.mo pa.po
msgfmt -c -o pl.mo pl.po
msgfmt -c -o pt_BR.mo pt_BR.po
msgfmt -c -o pt.mo pt.po
msgfmt -c -o ro.mo ro.po
msgfmt -c -o ru.mo ru.po
msgfmt -c -o si.mo si.po
msgfmt -c -o sk.mo sk.po
msgfmt -c -o sl.mo sl.po
msgfmt -c -o sq.mo sq.po
msgfmt -c -o sr.mo sr.po
msgfmt -c -o sv.mo sv.po
msgfmt -c -o ta.mo ta.po
msgfmt -c -o th.mo th.po
msgfmt -c -o tr.mo tr.po
msgfmt -c -o ug.mo ug.po
msgfmt -c -o uk.mo uk.po
msgfmt -c -o vi.mo vi.po
msgfmt -c -o wa.mo wa.po
msgfmt -c -o xh.mo xh.po
msgfmt -c -o zh_CN.mo zh_CN.po
msgfmt -c -o zh_TW.mo zh_TW.po
msgfmt -c -o zu.mo zu.po
make[1]: 离开目录“/home/penghao/AppArmor/apparmor_2/apparmor/parser/po”
(4)安装
运行make install命令进行安装。实际命令及结果如下(注意DESTDIR=的参数):
$ make install DESTDIR=/home/penghao/AppArmor/apparmor_2/output2
which: no rpm in (/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/usr/jdk/bin:/usr/go/bin)
make install-indep
make[1]: 进入目录“/home/penghao/AppArmor/apparmor_2/apparmor/parser”
which: no rpm in (/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/usr/jdk/bin:/usr/go/bin)
make[2]: 进入目录“/home/penghao/AppArmor/apparmor_2/apparmor/parser/po”
make[2]: 对“all”无需做任何事。make[2]: 离开目录“/home/penghao/AppArmor/apparmor_2/apparmor/parser/po”
install -m 755 -d /home/penghao/AppArmor/apparmor_2/output2/etc/apparmor
install -m 644 parser.conf /home/penghao/AppArmor/apparmor_2/output2/etc/apparmor
install -m 755 -d /home/penghao/AppArmor/apparmor_2/output2/var/lib/apparmor
install -m 755 -d /home/penghao/AppArmor/apparmor_2/output2/lib/apparmor
install -m 755 rc.apparmor.functions /home/penghao/AppArmor/apparmor_2/output2/lib/apparmor
install -m 755 profile-load /home/penghao/AppArmor/apparmor_2/output2/lib/apparmor
make -C po install NAME=apparmor-parser DESTDIR=/home/penghao/AppArmor/apparmor_2/output2
make[2]: 进入目录“/home/penghao/AppArmor/apparmor_2/apparmor/parser/po”
mkdir -p /home/penghao/AppArmor/apparmor_2/output2//usr/share/locale
for lang in af ar bg bn bo bs ca ce cs cy da de el en_AU en_CA en_GB es et fa fi fr gl gu he hi hr hu id it ja ka km ko lo lt mk mr ms nb nl oc pa pl pt_BR pt ro ru si sk sl sq sr sv ta th tr ug uk vi wa xh zh_CN zh_TW zu ; 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/apparmor-parser.mo ; \
done
make[2]: 离开目录“/home/penghao/AppArmor/apparmor_2/apparmor/parser/po”
make install_manpages DESTDIR=/home/penghao/AppArmor/apparmor_2/output2
make[2]: 进入目录“/home/penghao/AppArmor/apparmor_2/apparmor/parser”
which: no rpm in (/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/usr/jdk/bin:/usr/go/bin)
install -d /home/penghao/AppArmor/apparmor_2/output2//usr/share/man/man5 ; install -m 644 apparmor.d.5 /home/penghao/AppArmor/apparmor_2/output2//usr/share/man/man5; install -d /home/penghao/AppArmor/apparmor_2/output2//usr/share/man/man7 ; install -m 644 apparmor.7 apparmor_xattrs.7 /home/penghao/AppArmor/apparmor_2/output2//usr/share/man/man7; install -d /home/penghao/AppArmor/apparmor_2/output2//usr/share/man/man8 ; install -m 644 apparmor_parser.8 aa-teardown.8 /home/penghao/AppArmor/apparmor_2/output2//usr/share/man/man8;
make[2]: 离开目录“/home/penghao/AppArmor/apparmor_2/apparmor/parser”
make[1]: 离开目录“/home/penghao/AppArmor/apparmor_2/apparmor/parser”
make install-arch
make[1]: 进入目录“/home/penghao/AppArmor/apparmor_2/apparmor/parser”
which: no rpm in (/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/usr/jdk/bin:/usr/go/bin)
make -C libapparmor_re CFLAGS="-g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x"
make[2]: 进入目录“/home/penghao/AppArmor/apparmor_2/apparmor/parser/libapparmor_re”
make[2]: 对“all”无需做任何事。make[2]: 离开目录“/home/penghao/AppArmor/apparmor_2/apparmor/parser/libapparmor_re”
install -m 755 -d /home/penghao/AppArmor/apparmor_2/output2/sbin
install -m 755 apparmor_parser /home/penghao/AppArmor/apparmor_2/output2/sbin
make[1]: 离开目录“/home/penghao/AppArmor/apparmor_2/apparmor/parser”
(5)查看生成内容
查看一下通过make DESTDIR=/home/penghao/AppArmor/apparmor_2/output2配置后实际的生成文件及路径:
$ tree ../../output2
../../output2
├── etc
│ └── apparmor
│ └── parser.conf
├── lib
│ └── apparmor
│ ├── profile-load
│ └── rc.apparmor.functions
├── sbin
│ └── apparmor_parser
├── usr
│ └── share
│ ├── locale
│ │ ├── af
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── ar
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── bg
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── bn
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── bo
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── bs
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── ca
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── ce
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── cs
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── cy
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── da
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── de
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── el
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── en_AU
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── en_CA
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── en_GB
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── es
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── et
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── fa
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── fi
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── fr
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── gl
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── gu
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── he
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── hi
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── hr
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── hu
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── id
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── it
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── ja
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── ka
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── km
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── ko
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── lo
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── lt
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── mk
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── mr
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── ms
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── nb
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── nl
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── oc
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── pa
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── pl
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── pt
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── pt_BR
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── ro
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── ru
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── si
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── sk
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── sl
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── sq
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── sr
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── sv
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── ta
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── th
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── tr
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── ug
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── uk
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── vi
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── wa
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── xh
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── zh_CN
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── zh_TW
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ └── zu
│ │ └── LC_MESSAGES
│ │ └── apparmor-parser.mo
│ └── man
│ ├── man5
│ │ └── apparmor.d.5
│ ├── man7
│ │ ├── apparmor.7
│ │ └── apparmor_xattrs.7
│ └── man8
│ ├── aa-teardown.8
│ └── apparmor_parser.8
└── var
└── lib
└── apparmor
143 directories, 73 files
这里将生成目标放到了output2文件夹下,是为了看清楚Parser都生成了哪些内容。最终还是要安装到之前的output目录下。
更换DESTDIR=参数后再次进行安装,实际命令及结果如下:
$ make install DESTDIR=/home/penghao/AppArmor/apparmor_2/output
which: no rpm in (/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/usr/jdk/bin:/usr/go/bin)
make install-indep
make[1]: 进入目录“/home/penghao/AppArmor/apparmor_2/apparmor/parser”
which: no rpm in (/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/usr/jdk/bin:/usr/go/bin)
make[2]: 进入目录“/home/penghao/AppArmor/apparmor_2/apparmor/parser/po”
make[2]: 对“all”无需做任何事。make[2]: 离开目录“/home/penghao/AppArmor/apparmor_2/apparmor/parser/po”
install -m 755 -d /home/penghao/AppArmor/apparmor_2/output/etc/apparmor
install -m 644 parser.conf /home/penghao/AppArmor/apparmor_2/output/etc/apparmor
install -m 755 -d /home/penghao/AppArmor/apparmor_2/output/var/lib/apparmor
install -m 755 -d /home/penghao/AppArmor/apparmor_2/output/lib/apparmor
install -m 755 rc.apparmor.functions /home/penghao/AppArmor/apparmor_2/output/lib/apparmor
install -m 755 profile-load /home/penghao/AppArmor/apparmor_2/output/lib/apparmor
make -C po install NAME=apparmor-parser DESTDIR=/home/penghao/AppArmor/apparmor_2/output
make[2]: 进入目录“/home/penghao/AppArmor/apparmor_2/apparmor/parser/po”
mkdir -p /home/penghao/AppArmor/apparmor_2/output//usr/share/locale
for lang in af ar bg bn bo bs ca ce cs cy da de el en_AU en_CA en_GB es et fa fi fr gl gu he hi hr hu id it ja ka km ko lo lt mk mr ms nb nl oc pa pl pt_BR pt ro ru si sk sl sq sr sv ta th tr ug uk vi wa xh zh_CN zh_TW zu ; 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/apparmor-parser.mo ; \
done
make[2]: 离开目录“/home/penghao/AppArmor/apparmor_2/apparmor/parser/po”
make install_manpages DESTDIR=/home/penghao/AppArmor/apparmor_2/output
make[2]: 进入目录“/home/penghao/AppArmor/apparmor_2/apparmor/parser”
which: no rpm in (/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/usr/jdk/bin:/usr/go/bin)
install -d /home/penghao/AppArmor/apparmor_2/output//usr/share/man/man5 ; install -m 644 apparmor.d.5 /home/penghao/AppArmor/apparmor_2/output//usr/share/man/man5; install -d /home/penghao/AppArmor/apparmor_2/output//usr/share/man/man7 ; install -m 644 apparmor.7 apparmor_xattrs.7 /home/penghao/AppArmor/apparmor_2/output//usr/share/man/man7; install -d /home/penghao/AppArmor/apparmor_2/output//usr/share/man/man8 ; install -m 644 apparmor_parser.8 aa-teardown.8 /home/penghao/AppArmor/apparmor_2/output//usr/share/man/man8;
make[2]: 离开目录“/home/penghao/AppArmor/apparmor_2/apparmor/parser”
make[1]: 离开目录“/home/penghao/AppArmor/apparmor_2/apparmor/parser”
make install-arch
make[1]: 进入目录“/home/penghao/AppArmor/apparmor_2/apparmor/parser”
which: no rpm in (/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/usr/jdk/bin:/usr/go/bin)
make -C libapparmor_re CFLAGS="-g -O2 -pipe -flto-partition=none -D_GNU_SOURCE -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -std=gnu++0x"
make[2]: 进入目录“/home/penghao/AppArmor/apparmor_2/apparmor/parser/libapparmor_re”
make[2]: 对“all”无需做任何事。make[2]: 离开目录“/home/penghao/AppArmor/apparmor_2/apparmor/parser/libapparmor_re”
install -m 755 -d /home/penghao/AppArmor/apparmor_2/output/sbin
install -m 755 apparmor_parser /home/penghao/AppArmor/apparmor_2/output/sbin
make[1]: 离开目录“/home/penghao/AppArmor/apparmor_2/apparmor/parser”
对比一下output在安装Binary Utilities前后的变化:
安装前
$ 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
安装后
$ tree ../../output
../../output
├── etc
│ └── apparmor
│ └── parser.conf
├── lib
│ └── apparmor
│ ├── profile-load
│ └── rc.apparmor.functions
├── sbin
│ └── apparmor_parser
├── 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
│ │ │ └── apparmor-parser.mo
│ │ ├── ar
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── bg
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── bn
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── bo
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── bs
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── ca
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── ce
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── cs
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── cy
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── da
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── de
│ │ │ └── LC_MESSAGES
│ │ │ ├── aa-binutils.mo
│ │ │ └── apparmor-parser.mo
│ │ ├── el
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── en_AU
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── en_CA
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── en_GB
│ │ │ └── LC_MESSAGES
│ │ │ ├── aa-binutils.mo
│ │ │ └── apparmor-parser.mo
│ │ ├── es
│ │ │ └── LC_MESSAGES
│ │ │ ├── aa-binutils.mo
│ │ │ └── apparmor-parser.mo
│ │ ├── et
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── fa
│ │ │ └── LC_MESSAGES
│ │ │ ├── aa-binutils.mo
│ │ │ └── apparmor-parser.mo
│ │ ├── fi
│ │ │ └── LC_MESSAGES
│ │ │ ├── aa-binutils.mo
│ │ │ └── apparmor-parser.mo
│ │ ├── fr
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── gl
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── gu
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── he
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── hi
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── hr
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── hu
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── id
│ │ │ └── LC_MESSAGES
│ │ │ ├── aa-binutils.mo
│ │ │ └── apparmor-parser.mo
│ │ ├── it
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── ja
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── ka
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── km
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── ko
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── lo
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── lt
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── mk
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── mr
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── ms
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── nb
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── nl
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── oc
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── pa
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── pl
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── pt
│ │ │ └── LC_MESSAGES
│ │ │ ├── aa-binutils.mo
│ │ │ └── apparmor-parser.mo
│ │ ├── pt_BR
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── ro
│ │ │ └── LC_MESSAGES
│ │ │ ├── aa-binutils.mo
│ │ │ └── apparmor-parser.mo
│ │ ├── ru
│ │ │ └── LC_MESSAGES
│ │ │ ├── aa-binutils.mo
│ │ │ └── apparmor-parser.mo
│ │ ├── si
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── sk
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── sl
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── sq
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── sr
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── sv
│ │ │ └── LC_MESSAGES
│ │ │ ├── aa-binutils.mo
│ │ │ └── apparmor-parser.mo
│ │ ├── sw
│ │ │ └── LC_MESSAGES
│ │ │ └── aa-binutils.mo
│ │ ├── ta
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── th
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── tr
│ │ │ └── LC_MESSAGES
│ │ │ ├── aa-binutils.mo
│ │ │ └── apparmor-parser.mo
│ │ ├── ug
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── uk
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── vi
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── wa
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── xh
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── zh_CN
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── zh_TW
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ └── zu
│ │ └── LC_MESSAGES
│ │ └── apparmor-parser.mo
│ └── man
│ ├── man1
│ │ ├── aa-enabled.1
│ │ ├── aa-exec.1
│ │ └── aa-features-abi.1
│ ├── man5
│ │ └── apparmor.d.5
│ ├── man7
│ │ ├── apparmor.7
│ │ └── apparmor_xattrs.7
│ └── man8
│ ├── aa-status.8
│ ├── aa-teardown.8
│ ├── apparmor_parser.8
│ └── apparmor_status.8 -> aa-status.8
└── var
└── lib
└── apparmor
169 directories, 127 files