我基本上正在使用一个具有复杂结构的 tomcat web 应用程序,在多个位置有许多 jar 和类,我想生成一个带有jlink其--add-modules选项的 JRE,以减少我使用的二进制文件的重量和攻击面。
澄清一下,如果我包含所有模块,jlink --add-modules ALL-MODULE-PATH一切都会顺利进行。
我已经对此进行了几次尝试:
\njdeps在整个目录上运行我需要分析的目标是一个经典的 tomcat 结构,其中包含多个位置的 jar 和类。
\n> tree -L 1 /usr/local/tomcat/ \n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 LICENSE\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 NOTICE\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 RELEASE-NOTES\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 bin\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 conf\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 db.sh\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 favicon.ico\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 lib\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 logs\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 run\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 save.sh\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 start.sh\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 stop.sh\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 temp\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 webapps\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 work\n\n> find . -name "*.jar" -o -name "*.class" | wc -l \n 938\nRun Code Online (Sandbox Code Playgroud)\n我一直在尝试以多种方式使用 jdeps,但文档并不是非常有帮助。下面是唯一返回类似于我期望的内容的命令:
\n> jdeps --recursive --print-module-deps --ignore-missing-deps /usr/local/tomcat/\njava.base,java.compiler,java.desktop,java.management,java.naming,java.scripting,java.sql\nRun Code Online (Sandbox Code Playgroud)\n这种工作符合预期,但似乎只考虑了课程。如果没有--print-module-deps我会得到一大堆像这样的未知依赖项 …
我的用例如下:
pg_dump -F p我有用(纯文本 SQL 脚本文件)制作的 PostgreSQL 转储,我无法控制它们的制作方式pg_restore灵活性(--no-owner、--data-only、--clean 等)我知道我应该使用psql纯文本 SQL 转储,但是有什么方法可以将 SQL 转储转换为 PostgreSQL 自定义格式转储,以便我可以使用 pg_restore 或某种获取其所有选项的方法?
感谢您的关注。