Parser非默认目录构建和安装

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

猜你喜欢

转载自blog.csdn.net/phmatthaus/article/details/130292634