libvirt零知识学习5 —— libvirt源码编译安装(3)
接前一篇文章libvirt零知识学习4 —— libvirt源码编译安装(2)
在上篇文章及上上篇文章中构建libvirt的时候遇到了一个问题“ERROR: Problem encountered: YAJL 2 is required to build QEMU driver”。上篇文章讲到即使安装了相应的YAJL库仍然不能解决问题,本篇文章就来继续对此问题进行深入分析和解决。
首先,笔者尝试了网上提到的一些方法,比如libvirt编译运行问题总结_mltrees的博客-CSDN博客
中提到的以下解决方法,但是仍然无效。
echo "/usr/local/lib" | sudo tee /etc/ld.so.conf.d/libyajl.conf
sudo ldconfig
没有更好的办法,只能抠一下源码,仔细分析查找问题到底出在了哪里。
根据构建信息中给出的相关提示:
Run-time dependency readline found: YES 8.1
Run-time dependency libsanlock_client found: NO (tried pkgconfig and cmake)
Run-time dependency libsasl2 found: NO (tried pkgconfig and cmake)
Run-time dependency libselinux found: NO (tried pkgconfig and cmake)
Run-time dependency threads found: YES
Run-time dependency libudev found: YES 251
Library util found: YES
Run-time dependency wireshark found: NO (tried pkgconfig and cmake)
Run-time dependency yajl found: NO (tried pkgconfig and cmake)
Program pkcheck found: YES (/usr/bin/pkcheck)
Run-time dependency xenlight found: NO (tried pkgconfig and cmake)
Checking if "lxc support" compiles: YES meson.build:1625:6: ERROR: Problem encountered: YAJL 2 is required to build QEMU driverA full log can be found at /home/penghao/libvirt/libvirt-8.10.0/build/meson-logs/meson-log.txt
可以看到错误的具体位置在meson.build文件的1625行,上下文如下:

yail_dep相关代码也在meson.build中,如下:
yajl_version = '2.0.3'
yajl_dep = dependency('yajl', version: '>=' + yajl_version, required: get_option('yajl'))
if yajl_dep.found()# Kludge for yajl include path on non-Linux## As of 2.1.0, upstream yajl.pc has -I${includedir}/yajl among# its Cflags, which is clearly wrong. This does not affect Linux# because ${includedir} is already part of the default include path,# but on other platforms that's not the case and the result is that# <yajl/yajl.h> can't be located, causing the build to fail.## Since upstream development for yajl has stopped years ago, there's# little hope of this issue getting fixed by a new upstream release.# Some non-Linux operating systems such as FreeBSD have elected to# carry a small downstream patch, but in the case of Homebrew on# macOS this approach has been rejected[1] and so we're left with no# choice but to work around the issue ourselves.## [1] https://github.com/Homebrew/homebrew-core/pull/74516if host_machine.system() != 'linux'yajl_includedir = yajl_dep.get_variable(pkgconfig : 'includedir')if yajl_includedir.contains('include/yajl')rc = run_command('python3', '-c','print("@0@".replace("@1@", "@2@"))'.format(yajl_includedir, 'include/yajl', 'include',),check: true,)yajl_includedir = rc.stdout().strip()yajl_dep = declare_dependency(compile_args: [ '-I' + yajl_includedir ],dependencies: [ yajl_dep ],)endifendifconf.set('WITH_YAJL', 1)
endif
参考Reference manual中的Functions:
dependency()
Finds an external dependency (usually a library installed on your system) with the given name with
pkg-configand with CMake ifpkg-configfails. Additionally, frameworks (OSX only) and library-specific fallback detection logic are also supported.Since 0.60.0 more than one name can be provided, they will be tried in order and the first name to be found will be used. The fallback subproject will be used only if none of the names are found on the system. Once one of the name has been found, all other names are added into the cache so subsequent calls for any of those name will return the same value. This is useful in case a dependency could have different names, such as
pngandlibpng.
- Since 0.64.0 a dependency fallback can be provided by WrapDB. Simply download the database locally using
meson wrap update-dbcommand and Meson will automatically fallback to subprojects provided by WrapDB if the dependency is not found on the system and the project does not ship their own.wrapfile.Dependencies can also be resolved in two other ways:
if the same name was used in a
meson.override_dependencyprior to the call todependency, the overriding dependency will be returned unconditionally; that is, the overriding dependency will be used independent of whether an external dependency is installed in the system. Typically,meson.override_dependencywill have been used by a subproject.by a fallback subproject which, if needed, will be brought into the current build specification as if subproject() had been called. The subproject can be specified with the
fallbackargument. Alternatively, if thefallbackargument is absent, since 0.55.0 Meson can automatically identify a subproject as a fallback if a wrap file provides the dependency, or if a subproject has the same name as the dependency. In the latter case, the subproject must usemeson.override_dependencyto specify the replacement, or Meson will report a hard error. See the Wrap documentation for more details. This automatic search can be controlled using theallow_fallbackkeyword argument.If
dependency_nameis'', the dependency is always not found. So withrequired: false, this always returns a dependency object for which thefound()method returnsfalse, and which can be passed like any other dependency to thedependencies:keyword argument of abuild_target. This can be used to implement a dependency which is sometimes not required e.g. in some branches of a conditional, or with afallback:kwarg, can be used to declare an optional dependency that only looks in the specified subproject, and only if that's allowed by--wrap-mode.The returned object dep also has additional methods.
简单地说就是添加依赖。
参考以下博客:
meson和pkg-config-CSDN博客
其中提到了已经安装了相应的包但仍然提示找不到的情况,与我们遇到的很相似。
首先,使用pkg-config命令查看是否有YAJL包:
$ pkg-config --list-all | grep -i "yajl"
$
可见,系统中查不到YAJL包。
然后,用以下代码查看pkg-config执行时搜索的文件:
$ pkg-config --variable pc_path pkg-config
/usr/lib/pkgconfig:/usr/share/pkgconfig
在这些目录下添加自己编写的针对于YAJL包的pc文件即可。
在/usr/lib/pkgconfig/下创建YAJL.pc文件,并输入以下内容并保存退出:
prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
sharedlibdir=${libdir}
includedir=${prefix}/includeName: YAML
Description: Yet Another Jason Library
Version: 2.1.0Requires:
Libs: -L${libdir} -L${sharedlibdir} -lz
Cflags: -I${includedir}
再次执行以下命令就可以看到YAJL了:
$ pkg-config --list-all | grep -i "yajl"
YAJL YAJL - Yet Another Jason Library
再次执行meson build命令,命令及结果如下所示:
……
Run-time dependency readline found: YES 8.1
Run-time dependency libsanlock_client found: NO (tried pkgconfig and cmake)
Run-time dependency libsasl2 found: NO (tried pkgconfig and cmake)
Run-time dependency libselinux found: NO (tried pkgconfig and cmake)
Run-time dependency threads found: YES
Run-time dependency libudev found: YES 251
Library util found: YES
Run-time dependency wireshark found: NO (tried pkgconfig and cmake)
Run-time dependency yajl found: NO (tried pkgconfig and cmake)
Program pkcheck found: YES (/usr/bin/pkcheck)
Run-time dependency xenlight found: NO (tried pkgconfig and cmake)
Checking if "lxc support" compiles: YES meson.build:1625:6: ERROR: Problem encountered: YAJL 2 is required to build QEMU driverA full log can be found at /home/penghao/libvirt/libvirt-8.10.0/build/meson-logs/meson-log.txt
还是同样的问题!为什么?难道一开始方向就错了?
凭借多年的经验,这次方向是正确的,应该是有一些小地方导致问题依旧。仔细想想可能是哪里的问题,最有可能的地方就是YAML.pc这个文件的名字。于是将YAJL.pc改为yajl.pc,命令如下:
$ sudo mv /usr/lib/pkgconfig/YAJL.pc /usr/lib/pkgconfig/yajl.pc
再次执行以下命令,可以看到YAJL变为jajl了:
$ pkg-config --list-all | grep -i "yajl"
yajl YAJL - Yet Another Jason Library
此时再次执行meson build命令,命令及结果如下所示:
$ meson build -Dsystem=true -Ddriver_qemu=enabled
The Meson build system
Version: 0.62.2
Source dir: /home/penghao/libvirt/libvirt-8.10.0
Build dir: /home/penghao/libvirt/libvirt-8.10.0/build
Build type: native build
Project name: libvirt
Project version: 8.10.0
C compiler for the host machine: cc (gcc 12.1.0 "cc (GCC) 12.1.0")
C linker for the host machine: cc ld.bfd 2.38
Host machine cpu family: x86_64
Host machine cpu: x86_64
Configuring configmake.h using configuration
Checking for size of "ptrdiff_t" : 8
Checking for size of "size_t" : 8
Compiler for C supports arguments -fasynchronous-unwind-tables: YES
Compiler for C supports arguments -fexceptions: YES
Compiler for C supports arguments -fipa-pure-const: YES
Compiler for C supports arguments -fno-common: YES
Compiler for C supports arguments -Wabsolute-value: YES
Compiler for C supports arguments -Waddress: YES
Compiler for C supports arguments -Waddress-of-packed-member: YES
Compiler for C supports arguments -Waggressive-loop-optimizations: YES
Compiler for C supports arguments -Walloc-size-larger-than=9223372036854775807: YES
Compiler for C supports arguments -Walloca: YES
Compiler for C supports arguments -Warray-bounds=2: YES
Compiler for C supports arguments -Wattribute-alias=2: YES
Compiler for C supports arguments -Wattribute-warning: YES
Compiler for C supports arguments -Wattributes: YES
Compiler for C supports arguments -Wbool-compare: YES
Compiler for C supports arguments -Wbool-operation: YES
Compiler for C supports arguments -Wbuiltin-declaration-mismatch: YES
Compiler for C supports arguments -Wbuiltin-macro-redefined: YES
Compiler for C supports arguments -Wcannot-profile: YES
Compiler for C supports arguments -Wcast-align: YES
Compiler for C supports arguments -Wcast-align=strict: YES
Compiler for C supports arguments -Wno-cast-function-type: YES
Compiler for C supports arguments -Wchar-subscripts: YES
Compiler for C supports arguments -Wclobbered: YES
Compiler for C supports arguments -Wcomment: YES
Compiler for C supports arguments -Wcomments: YES
Compiler for C supports arguments -Wcoverage-mismatch: YES
Compiler for C supports arguments -Wcpp: YES
Compiler for C supports arguments -Wdangling-else: YES
Compiler for C supports arguments -Wdate-time: YES
Compiler for C supports arguments -Wdeclaration-after-statement: YES
Compiler for C supports arguments -Wdeprecated-declarations: YES
Compiler for C supports arguments -Wdesignated-init: YES
Compiler for C supports arguments -Wdiscarded-array-qualifiers: YES
Compiler for C supports arguments -Wdiscarded-qualifiers: YES
Compiler for C supports arguments -Wdiv-by-zero: YES
Compiler for C supports arguments -Wduplicated-cond: YES
Compiler for C supports arguments -Wduplicate-decl-specifier: YES
Compiler for C supports arguments -Wempty-body: YES
Compiler for C supports arguments -Wendif-labels: YES
Compiler for C supports arguments -Wexpansion-to-defined: YES
Compiler for C supports arguments -Wformat-contains-nul: YES
Compiler for C supports arguments -Wformat-extra-args: YES
Compiler for C supports arguments -Wno-format-nonliteral: YES
Compiler for C supports arguments -Wformat-overflow=2: YES
Compiler for C supports arguments -Wformat-security: YES
Compiler for C supports arguments -Wno-format-truncation: YES
Compiler for C supports arguments -Wformat-y2k: YES
Compiler for C supports arguments -Wformat-zero-length: YES
Compiler for C supports arguments -Wframe-address: YES
Compiler for C supports arguments -Wframe-larger-than=4096: YES
Compiler for C supports arguments -Wfree-nonheap-object: YES
Compiler for C supports arguments -Whsa: YES
Compiler for C supports arguments -Wif-not-aligned: YES
Compiler for C supports arguments -Wignored-attributes: YES
Compiler for C supports arguments -Wignored-qualifiers: YES
Compiler for C supports arguments -Wimplicit: YES
Compiler for C supports arguments -Wimplicit-fallthrough=5: YES
Compiler for C supports arguments -Wimplicit-function-declaration: YES
Compiler for C supports arguments -Wimplicit-int: YES
Compiler for C supports arguments -Wincompatible-pointer-types: YES
Compiler for C supports arguments -Winit-self: YES
Compiler for C supports arguments -Winline: YES
Compiler for C supports arguments -Wint-conversion: YES
Compiler for C supports arguments -Wint-in-bool-context: YES
Compiler for C supports arguments -Wint-to-pointer-cast: YES
Compiler for C supports arguments -Winvalid-memory-model: YES
Compiler for C supports arguments -Winvalid-pch: YES
Compiler for C supports arguments -Wjump-misses-init: YES
Compiler for C supports arguments -Wlogical-not-parentheses: YES
Compiler for C supports arguments -Wlogical-op: YES
Compiler for C supports arguments -Wmain: YES
Compiler for C supports arguments -Wmaybe-uninitialized: YES
Compiler for C supports arguments -Wmemset-elt-size: YES
Compiler for C supports arguments -Wmemset-transposed-args: YES
Compiler for C supports arguments -Wmisleading-indentation: YES
Compiler for C supports arguments -Wmissing-attributes: YES
Compiler for C supports arguments -Wmissing-braces: YES
Compiler for C supports arguments -Wmissing-declarations: YES
Compiler for C supports arguments -Wmissing-field-initializers: YES
Compiler for C supports arguments -Wmissing-include-dirs: YES
Compiler for C supports arguments -Wmissing-parameter-type: YES
Compiler for C supports arguments -Wmissing-profile: YES
Compiler for C supports arguments -Wmissing-prototypes: YES
Compiler for C supports arguments -Wmultichar: YES
Compiler for C supports arguments -Wmultistatement-macros: YES
Compiler for C supports arguments -Wnarrowing: YES
Compiler for C supports arguments -Wnested-externs: YES
Compiler for C supports arguments -Wnonnull: YES
Compiler for C supports arguments -Wnonnull-compare: YES
Compiler for C supports arguments -Wnormalized=nfc: YES
Compiler for C supports arguments -Wnull-dereference: YES
Compiler for C supports arguments -Wodr: YES
Compiler for C supports arguments -Wold-style-declaration: YES
Compiler for C supports arguments -Wold-style-definition: YES
Compiler for C supports arguments -Wopenmp-simd: YES
Compiler for C supports arguments -Woverflow: YES
Compiler for C supports arguments -Woverride-init: YES
Compiler for C supports arguments -Wpacked-bitfield-compat: YES
Compiler for C supports arguments -Wpacked-not-aligned: YES
Compiler for C supports arguments -Wparentheses: YES
Compiler for C supports arguments -Wpointer-arith: YES
Compiler for C supports arguments -Wpointer-compare: YES
Compiler for C supports arguments -Wpointer-sign: YES
Compiler for C supports arguments -Wpointer-to-int-cast: YES
Compiler for C supports arguments -Wpragmas: YES
Compiler for C supports arguments -Wpsabi: YES
Compiler for C supports arguments -Wrestrict: YES
Compiler for C supports arguments -Wreturn-local-addr: YES
Compiler for C supports arguments -Wreturn-type: YES
Compiler for C supports arguments -Wscalar-storage-order: YES
Compiler for C supports arguments -Wsequence-point: YES
Compiler for C supports arguments -Wshadow: YES
Compiler for C supports arguments -Wshift-count-negative: YES
Compiler for C supports arguments -Wshift-count-overflow: YES
Compiler for C supports arguments -Wshift-negative-value: YES
Compiler for C supports arguments -Wshift-overflow=2: YES
Compiler for C supports arguments -Wno-sign-compare: YES
Compiler for C supports arguments -Wsizeof-array-argument: YES
Compiler for C supports arguments -Wsizeof-pointer-div: YES
Compiler for C supports arguments -Wsizeof-pointer-memaccess: YES
Compiler for C supports arguments -Wstrict-aliasing: YES
Compiler for C supports arguments -Wstrict-prototypes: YES
Compiler for C supports arguments -Wstringop-overflow=2: YES
Compiler for C supports arguments -Wstringop-truncation: YES
Compiler for C supports arguments -Wsuggest-attribute=cold: YES
Compiler for C supports arguments -Wno-suggest-attribute=const: YES
Compiler for C supports arguments -Wsuggest-attribute=format: YES
Compiler for C supports arguments -Wsuggest-attribute=noreturn: YES
Compiler for C supports arguments -Wno-suggest-attribute=pure: YES
Compiler for C supports arguments -Wsuggest-final-methods: YES
Compiler for C supports arguments -Wsuggest-final-types: YES
Compiler for C supports arguments -Wswitch: YES
Compiler for C supports arguments -Wswitch-bool: YES
Compiler for C supports arguments -Wswitch-enum: YES
Compiler for C supports arguments -Wswitch-unreachable: YES
Compiler for C supports arguments -Wsync-nand: YES
Compiler for C supports arguments -Wtautological-compare: YES
Compiler for C supports arguments -Wtrampolines: YES
Compiler for C supports arguments -Wtrigraphs: YES
Compiler for C supports arguments -Wtype-limits: YES
Compiler for C supports arguments -Wno-typedef-redefinition: NO
Compiler for C supports arguments -Wuninitialized: YES
Compiler for C supports arguments -Wunknown-pragmas: YES
Compiler for C supports arguments -Wunused: YES
Compiler for C supports arguments -Wunused-but-set-parameter: YES
Compiler for C supports arguments -Wunused-but-set-variable: YES
Compiler for C supports arguments -Wunused-const-variable=2: YES
Compiler for C supports arguments -Wunused-function: YES
Compiler for C supports arguments -Wunused-label: YES
Compiler for C supports arguments -Wunused-local-typedefs: YES
Compiler for C supports arguments -Wunused-parameter: YES
Compiler for C supports arguments -Wunused-result: YES
Compiler for C supports arguments -Wunused-value: YES
Compiler for C supports arguments -Wunused-variable: YES
Compiler for C supports arguments -Wvarargs: YES
Compiler for C supports arguments -Wvariadic-macros: YES
Compiler for C supports arguments -Wvector-operation-performance: YES
Compiler for C supports arguments -Wvla: YES
Compiler for C supports arguments -Wvolatile-register-var: YES
Compiler for C supports arguments -Wwrite-strings: YES
Compiler for C supports arguments -fstack-protector-strong: YES
First supported argument: -fstack-protector-strong
Checking if "-Wdouble-promotion" compiles: YES
Compiler for C supports arguments -Wsuggest-attribute=format: YES (cached)
Compiler for C supports arguments -Wframe-larger-than=262144: YES
Compiler for C supports link arguments -Wl,-z,relro: YES
Compiler for C supports link arguments -Wl,-z,now: YES
Compiler for C supports link arguments -Wl,-z,nodelete: YES
Compiler for C supports link arguments -Wl,-z,defs: YES
Compiler for C supports link arguments -Wl,--no-copy-dt-needed-entries: YES
Compiler for C supports link arguments -Wl,--version-script=/home/penghao/libvirt/libvirt-8.10.0/src/libvirt_qemu.syms: YES
Compiler for C supports link arguments -Wl,-export-dynamic: YES
First supported link argument: -Wl,-export-dynamic
Checking for function "elf_aux_info" : NO
Checking for function "fallocate" : YES
Checking for function "getauxval" : YES
Checking for function "getegid" : YES
Checking for function "geteuid" : YES
Checking for function "getgid" : YES
Checking for function "getifaddrs" : YES
Checking for function "getmntent_r" : YES
Checking for function "getpwuid_r" : YES
Checking for function "getrlimit" : YES
Checking for function "getuid" : YES
Checking for function "getutxid" : YES
Checking for function "if_indextoname" : YES
Checking for function "mmap" : YES
Checking for function "newlocale" : YES
Checking for function "pipe2" : YES
Checking for function "posix_fallocate" : YES
Checking for function "posix_memalign" : YES
Checking for function "prlimit" : YES
Checking for function "sched_setscheduler" : YES
Checking for function "setgroups" : YES
Checking for function "setrlimit" : YES
Checking for function "symlink" : YES
Checking for function "sysctlbyname" : NO
Checking for function "__lxstat" : YES
Checking for function "__lxstat64" : YES
Checking for function "__xstat" : YES
Checking for function "__xstat64" : YES
Checking for function "lstat" : YES
Checking for function "lstat64" : YES
Checking for function "stat" : YES
Checking for function "stat64" : YES
Header <sys/stat.h> has symbol "__lxstat" : NO
Header <sys/stat.h> has symbol "__lxstat64" : NO
Header <sys/stat.h> has symbol "__xstat" : NO
Header <sys/stat.h> has symbol "__xstat64" : NO
Header <sys/stat.h> has symbol "lstat" : YES
Header <sys/stat.h> has symbol "lstat64" : NO
Header <sys/stat.h> has symbol "stat" : YES
Header <sys/stat.h> has symbol "stat64" : NO
Has header "asm/hwcap.h" : NO
Has header "ifaddrs.h" : YES
Has header "libtasn1.h" : YES
Has header "linux/kvm.h" : YES
Has header "linux/magic.h" : YES
Has header "mntent.h" : YES
Has header "net/ethernet.h" : YES
Has header "net/if.h" : YES
Has header "pty.h" : YES
Has header "pwd.h" : YES
Has header "sched.h" : YES
Has header "sys/auxv.h" : YES
Has header "sys/ioctl.h" : YES
Has header "sys/mount.h" : YES
Has header "sys/syscall.h" : YES
Has header "sys/ucred.h" : NO
Has header "syslog.h" : YES
Has header "util.h" : NO
Has header "xlocale.h" : NO
Has header "linux/devlink.h" : YES
Has header "linux/param.h" : YES
Has header "linux/sockios.h" : YES
Has header "linux/if_bridge.h" : YES
Has header "linux/if_tun.h" : YES
Header <endian.h> has symbol "htole64" : YES
Header <linux/ethtool.h> has symbol "ETH_FLAG_TXVLAN" : YES
Header <linux/ethtool.h> has symbol "ETH_FLAG_NTUPLE" : YES
Header <linux/ethtool.h> has symbol "ETH_FLAG_RXHASH" : YES
Header <linux/ethtool.h> has symbol "ETH_FLAG_LRO" : YES
Header <linux/ethtool.h> has symbol "ETHTOOL_GGSO" : YES
Header <linux/ethtool.h> has symbol "ETHTOOL_GGRO" : YES
Header <linux/ethtool.h> has symbol "ETHTOOL_GFLAGS" : YES
Header <linux/ethtool.h> has symbol "ETHTOOL_GFEATURES" : YES
Header <linux/ethtool.h> has symbol "ETHTOOL_SCOALESCE" : YES
Header <linux/ethtool.h> has symbol "ETHTOOL_GCOALESCE" : YES
Header <linux/if_vlan.h> has symbol "GET_VLAN_VID_CMD" : YES
Header <unistd.h> has symbol "SEEK_HOLE" : YES
Header <net/if_dl.h> has symbol "link_addr" : NO
Header <sched.h> has symbol "cpu_set_t" : YES
Header <linux/devlink.h> has symbol "DEVLINK_CMD_ESWITCH_GET" : YES
Header <linux/vhost.h> has symbol "VHOST_VSOCK_SET_GUEST_CID" : YES
Header <linux/bpf.h> has symbol "BPF_PROG_QUERY" : YES
Header <linux/bpf.h> has symbol "BPF_CGROUP_DEVICE" : YES
Header <net/if_bridgevar.h> has symbol "BRDGSFD" : NO
Header <sys/cpuset.h> has symbol "cpuset_getaffinity" : NO
Header <mach/clock.h> has symbol "clock_serv_t" : NO
Checking for type "struct ifreq" : YES
Checking for type "struct sockpeercred" : NO
Checking whether type "struct ifreq" has member "ifr_newname" : YES
Checking whether type "struct ifreq" has member "ifr_ifindex" : YES
Checking whether type "struct ifreq" has member "ifr_index" : NO
Checking whether type "struct ifreq" has member "ifr_hwaddr" : YES
Checking for size of "long" : 8
Program perl found: YES (/usr/bin/perl)
Program python3 found: YES (/usr/bin/python3)
Program xmllint found: YES (/usr/bin/xmllint)
Program xsltproc found: YES (/usr/bin/xsltproc)
Program rpcgen found: YES (/usr/bin/rpcgen)
Program augparse found: NO
Program dmidecode found: YES (/usr/sbin/dmidecode)
Program ebtables found: YES (/usr/sbin/ebtables)
Program flake8 found: NO
Program ip found: YES (/usr/sbin/ip)
Program ip6tables found: YES (/usr/sbin/ip6tables)
Program iptables found: YES (/usr/sbin/iptables)
Program iscsiadm found: NO
Program mdevctl found: NO
Program mm-ctl found: NO
Program modprobe found: YES (/usr/sbin/modprobe)
Program ovs-vsctl found: NO
Program pdwtags found: NO
Program rmmod found: YES (/usr/sbin/rmmod)
Program scrub found: NO
Program tc found: YES (/usr/sbin/tc)
Program udevadm found: YES (/usr/bin/udevadm)
Found pkg-config: /usr/bin/pkg-config (0.29.2)
Run-time dependency libtirpc found: YES 1.3.2
Library acl found: YES
Found CMake: /usr/bin/cmake (3.23.2)
Run-time dependency libapparmor found: NO (tried pkgconfig and cmake)
Library attr found: YES
Run-time dependency audit found: NO (tried pkgconfig and cmake)
Run-time dependency bash-completion found: YES 2.11.0
Run-time dependency blkid found: YES 2.38.0
Run-time dependency libcap-ng found: NO (tried pkgconfig and cmake)
Run-time dependency libcurl found: YES 7.84.0
Run-time dependency devmapper found: YES 1.02.185
Library dl found: YES
Has header "dlfcn.h" : YES
Run-time dependency fuse3 found: NO (tried pkgconfig and cmake)
Run-time dependency fuse found: YES 2.9.9
Run-time dependency glib-2.0 found: YES 2.72.3
Run-time dependency gobject-2.0 found: YES 2.72.3
Run-time dependency gio-unix-2.0 found: YES 2.72.3
Run-time dependency glusterfs-api found: NO (tried pkgconfig and cmake)
Run-time dependency gnutls found: YES 3.7.3
Run-time dependency libiscsi found: NO (tried pkgconfig and cmake)
Run-time dependency libnl-3.0 found: YES 3.5.0
Run-time dependency libnl-route-3.0 found: YES 3.5.0
Run-time dependency libparted found: YES 3.5
pcap-config found: NO need ['>=1.5.0']
Run-time dependency pcap found: NO (tried pkgconfig and config-tool)
Run-time dependency libssh found: NO (tried pkgconfig and cmake)
Run-time dependency libssh2 found: NO (tried pkgconfig and cmake)
Run-time dependency libxml-2.0 found: YES 2.9.14
Library m found: YES
Run-time dependency netcf found: NO (tried pkgconfig and cmake)
Checking for function "gettext" : YES
Has header "libintl.h" : YES
Program xgettext found: YES (/usr/bin/xgettext)
Program msgfmt found: YES (/usr/bin/msgfmt)
Program msgmerge found: YES (/usr/bin/msgmerge)
Library numa found: NO
Run-time dependency openwsman found: NO (tried pkgconfig and cmake)
Run-time dependency parallels-sdk found: NO (tried pkgconfig and cmake)
Run-time dependency pciaccess found: YES 0.16
Library rbd found: NO
Library rados found: NO
Run-time dependency readline found: YES 8.1
Run-time dependency libsanlock_client found: NO (tried pkgconfig and cmake)
Run-time dependency libsasl2 found: NO (tried pkgconfig and cmake)
Run-time dependency libselinux found: NO (tried pkgconfig and cmake)
Run-time dependency threads found: YES
Run-time dependency libudev found: YES 251
Library util found: YES
Run-time dependency wireshark found: NO (tried pkgconfig and cmake)
Run-time dependency yajl found: YES 2.1.0
Program pkcheck found: YES (/usr/bin/pkcheck)
Run-time dependency xenlight found: NO (tried pkgconfig and cmake)
Checking if "lxc support" compiles: YES
Program qemu-bridge-helper found: NO
Program qemu-pr-helper found: NO
Program slirp-helper found: NO
Program dbus-daemon found: YES (/usr/bin/dbus-daemon)
Has header "mntent.h" : YES (cached)
Program mount found: YES (/usr/bin/mount)
Program umount found: YES (/usr/bin/umount)
Program mkfs found: YES (/usr/sbin/mkfs)
Program showmount found: NO
Program pvcreate found: YES (/usr/sbin/pvcreate)
Program vgcreate found: YES (/usr/sbin/vgcreate)
Program lvcreate found: YES (/usr/sbin/lvcreate)
Program pvremove found: YES (/usr/sbin/pvremove)
Program vgremove found: YES (/usr/sbin/vgremove)
Program lvremove found: YES (/usr/sbin/lvremove)
Program lvchange found: YES (/usr/sbin/lvchange)
Program vgchange found: YES (/usr/sbin/vgchange)
Program vgscan found: YES (/usr/sbin/vgscan)
Program pvs found: YES (/usr/sbin/pvs)
Program vgs found: YES (/usr/sbin/vgs)
Program lvs found: YES (/usr/sbin/lvs)
Program dtrace found: NO
Program systemctl found: YES (/usr/bin/systemctl)
Has header "nss.h" : YES
Checking for type "struct gaih_addrtuple" : YES
Checking for type "ns_mtab" : NO
Program apibuild.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/apibuild.py)
Program augeas-gentest.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/augeas-gentest.py)
Program check-aclperms.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/check-aclperms.py)
Program check-aclrules.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/check-aclrules.py)
Program check-driverimpls.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/check-driverimpls.py)
Program check-drivername.py found: YES (/usr/bin/python3.10 /home/penghao/libvirt/libvirt-8.10.0/scripts/check-drivername.py)
Program check-file-access.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/check-file-access.py)
Program check-html-references.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/check-html-references.py)
Program check-remote-protocol.py found: YES (/usr/bin/python3.10 /home/penghao/libvirt/libvirt-8.10.0/scripts/check-remote-protocol.py)
Program check-symfile.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/check-symfile.py)
Program check-symsorting.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/check-symsorting.py)
Program dtrace2systemtap.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/dtrace2systemtap.py)
Program esx_vi_generator.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/esx_vi_generator.py)
Program genaclperms.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/genaclperms.py)
Program genpolkit.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/genpolkit.py)
Program gensystemtap.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/gensystemtap.py)
Program group-qemu-caps.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/group-qemu-caps.py)
Program header-ifdef.py found: YES (/usr/bin/python3.10 /home/penghao/libvirt/libvirt-8.10.0/scripts/header-ifdef.py)
Program hvsupport.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/hvsupport.py)
Program hyperv_wmi_generator.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/hyperv_wmi_generator.py)
Program meson-dist.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/meson-dist.py)
Program meson-gen-authors.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/meson-gen-authors.py)
Program meson-gen-def.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/meson-gen-def.py)
Program meson-gen-sym.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/meson-gen-sym.py)
Program meson-install-dirs.py found: YES (/usr/bin/python3.10 /home/penghao/libvirt/libvirt-8.10.0/scripts/meson-install-dirs.py)
Program meson-install-symlink.py found: YES (/usr/bin/python3.10 /home/penghao/libvirt/libvirt-8.10.0/scripts/meson-install-symlink.py)
Program meson-install-web.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/meson-install-web.py)
Program meson-python.sh found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/meson-python.sh)
Program meson-timestamp.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/meson-timestamp.py)
Program mock-noinline.py found: YES (/usr/bin/python3.10 /home/penghao/libvirt/libvirt-8.10.0/scripts/mock-noinline.py)
Program prohibit-duplicate-header.py found: YES (/usr/bin/python3.10 /home/penghao/libvirt/libvirt-8.10.0/scripts/prohibit-duplicate-header.py)
Configuring libvirt-common.h using configuration
Program /home/penghao/libvirt/libvirt-8.10.0/src/keycodemapdb/tools/keymap-gen found: YES (/home/penghao/libvirt/libvirt-8.10.0/src/keycodemapdb/tools/keymap-gen)
Program genprotocol.pl found: YES (/home/penghao/libvirt/libvirt-8.10.0/src/rpc/genprotocol.pl)
Program gendispatch.pl found: YES (/home/penghao/libvirt/libvirt-8.10.0/src/rpc/gendispatch.pl)
Configuring libvirtd.conf.tmp with command
Configuring libvirtd.aug.tmp with command
Configuring test_libvirtd.aug.tmp with command
Configuring virtd.conf.tmp with command
Configuring virtd.aug.tmp with command
Configuring test_virtd.aug.tmp with command
Configuring libvirtd.qemu.logrotate using configuration
Configuring libvirtd.lxc.logrotate using configuration
Configuring libvirtd.libxl.logrotate using configuration
Configuring libvirtd.logrotate using configuration
Configuring qemu.conf using configuration
Configuring test_libvirtd_qemu.aug.tmp using configuration
Configuring libvirtd.conf using configuration
Configuring libvirtd.aug using configuration
Configuring test_libvirtd.aug.tmp using configuration
Configuring virtproxyd.conf using configuration
Configuring virtproxyd.aug using configuration
Configuring test_virtproxyd.aug.tmp using configuration
Configuring virtinterfaced.conf using configuration
Configuring virtinterfaced.aug using configuration
Configuring test_virtinterfaced.aug.tmp using configuration
Configuring virtnetworkd.conf using configuration
Configuring virtnetworkd.aug using configuration
Configuring test_virtnetworkd.aug.tmp using configuration
Configuring virtnodedevd.conf using configuration
Configuring virtnodedevd.aug using configuration
Configuring test_virtnodedevd.aug.tmp using configuration
Configuring virtnwfilterd.conf using configuration
Configuring virtnwfilterd.aug using configuration
Configuring test_virtnwfilterd.aug.tmp using configuration
Configuring virtsecretd.conf using configuration
Configuring virtsecretd.aug using configuration
Configuring test_virtsecretd.aug.tmp using configuration
Configuring virtstoraged.conf using configuration
Configuring virtstoraged.aug using configuration
Configuring test_virtstoraged.aug.tmp using configuration
Configuring virtlxcd.conf using configuration
Configuring virtlxcd.aug using configuration
Configuring test_virtlxcd.aug.tmp using configuration
Configuring virtchd.conf using configuration
Configuring virtchd.aug using configuration
Configuring test_virtchd.aug.tmp using configuration
Configuring virtqemud.conf using configuration
Configuring virtqemud.aug using configuration
Configuring test_virtqemud.aug.tmp using configuration
Configuring virtvboxd.conf using configuration
Configuring virtvboxd.aug using configuration
Configuring test_virtvboxd.aug.tmp using configuration
Configuring libvirtd.service using configuration
Configuring libvirtd.socket using configuration
Configuring libvirtd-ro.socket using configuration
Configuring libvirtd-admin.socket using configuration
Configuring libvirtd-tcp.socket using configuration
Configuring libvirtd-tls.socket using configuration
Configuring virtproxyd.service using configuration
Configuring virtproxyd.socket using configuration
Configuring virtproxyd-ro.socket using configuration
Configuring virtproxyd-admin.socket using configuration
Configuring virtproxyd-tcp.socket using configuration
Configuring virtproxyd-tls.socket using configuration
Configuring virtinterfaced.service using configuration
Configuring virtinterfaced.socket using configuration
Configuring virtinterfaced-ro.socket using configuration
Configuring virtinterfaced-admin.socket using configuration
Configuring virtlockd.service using configuration
Configuring virtlockd.socket using configuration
Configuring virtlockd-admin.socket using configuration
Configuring virtlogd.service using configuration
Configuring virtlogd.socket using configuration
Configuring virtlogd-admin.socket using configuration
Configuring virtnetworkd.service using configuration
Configuring virtnetworkd.socket using configuration
Configuring virtnetworkd-ro.socket using configuration
Configuring virtnetworkd-admin.socket using configuration
Configuring virtnodedevd.service using configuration
Configuring virtnodedevd.socket using configuration
Configuring virtnodedevd-ro.socket using configuration
Configuring virtnodedevd-admin.socket using configuration
Configuring virtnwfilterd.service using configuration
Configuring virtnwfilterd.socket using configuration
Configuring virtnwfilterd-ro.socket using configuration
Configuring virtnwfilterd-admin.socket using configuration
Configuring virtsecretd.service using configuration
Configuring virtsecretd.socket using configuration
Configuring virtsecretd-ro.socket using configuration
Configuring virtsecretd-admin.socket using configuration
Configuring virtstoraged.service using configuration
Configuring virtstoraged.socket using configuration
Configuring virtstoraged-ro.socket using configuration
Configuring virtstoraged-admin.socket using configuration
Configuring virtlxcd.service using configuration
Configuring virtlxcd.socket using configuration
Configuring virtlxcd-ro.socket using configuration
Configuring virtlxcd-admin.socket using configuration
Configuring virtchd.service using configuration
Configuring virtchd.socket using configuration
Configuring virtchd-ro.socket using configuration
Configuring virtchd-admin.socket using configuration
Configuring virtqemud.service using configuration
Configuring virtqemud.socket using configuration
Configuring virtqemud-ro.socket using configuration
Configuring virtqemud-admin.socket using configuration
Configuring virtvboxd.service using configuration
Configuring virtvboxd.socket using configuration
Configuring virtvboxd-ro.socket using configuration
Configuring virtvboxd-admin.socket using configuration
Configuring libvirt-lxc.pc using configuration
Configuring libvirt-qemu.pc using configuration
Configuring libvirt.pc using configuration
Configuring virt-xml-validate using configuration
Configuring virt-pki-validate using configuration
Configuring libvirt-guests.sh using configuration
Configuring libvirt-guests.service using configuration
Configuring virsh using configuration
Configuring virt-admin using configuration
Configuring cpu-baseline.rng using configuration
Configuring device.rng using configuration
Configuring privatedata.rng using configuration
Library tasn1 found: YES
Program libvirtd-fail found: YES (/home/penghao/libvirt/libvirt-8.10.0/tests/libvirtd-fail)
Program libvirtd-pool found: YES (/home/penghao/libvirt/libvirt-8.10.0/tests/libvirtd-pool)
Program virsh-auth found: YES (/home/penghao/libvirt/libvirt-8.10.0/tests/virsh-auth)
Program virsh-checkpoint found: YES (/home/penghao/libvirt/libvirt-8.10.0/tests/virsh-checkpoint)
Program virsh-cpuset found: YES (/home/penghao/libvirt/libvirt-8.10.0/tests/virsh-cpuset)
Program virsh-define-dev-segfault found: YES (/home/penghao/libvirt/libvirt-8.10.0/tests/virsh-define-dev-segfault)
Program virsh-int-overflow found: YES (/home/penghao/libvirt/libvirt-8.10.0/tests/virsh-int-overflow)
Program virsh-optparse found: YES (/home/penghao/libvirt/libvirt-8.10.0/tests/virsh-optparse)
Program virsh-output found: YES (/home/penghao/libvirt/libvirt-8.10.0/tests/virsh-output)
Program virsh-read-bufsiz found: YES (/home/penghao/libvirt/libvirt-8.10.0/tests/virsh-read-bufsiz)
Program virsh-read-non-seekable found: YES (/home/penghao/libvirt/libvirt-8.10.0/tests/virsh-read-non-seekable)
Program virsh-schedinfo found: YES (/home/penghao/libvirt/libvirt-8.10.0/tests/virsh-schedinfo)
Program virsh-self-test found: YES (/home/penghao/libvirt/libvirt-8.10.0/tests/virsh-self-test)
Program virsh-snapshot found: YES (/home/penghao/libvirt/libvirt-8.10.0/tests/virsh-snapshot)
Program virsh-start found: YES (/home/penghao/libvirt/libvirt-8.10.0/tests/virsh-start)
Program virsh-undefine found: YES (/home/penghao/libvirt/libvirt-8.10.0/tests/virsh-undefine)
Program virsh-uriprecedence found: YES (/home/penghao/libvirt/libvirt-8.10.0/tests/virsh-uriprecedence)
Program virsh-vcpupin found: YES (/home/penghao/libvirt/libvirt-8.10.0/tests/virsh-vcpupin)
Program virt-admin-self-test found: YES (/home/penghao/libvirt/libvirt-8.10.0/tests/virt-admin-self-test)
Program msgfmt found: YES (/usr/bin/msgfmt)
Program msginit found: YES (/usr/bin/msginit)
Program msgmerge found: YES (/usr/bin/msgmerge)
Program xgettext found: YES (/usr/bin/xgettext)
Program rst2html5 rst2html5.py rst2html5-3 found: NOdocs/meson.build:176:2: ERROR: Program 'rst2html5 rst2html5.py rst2html5-3' not found or not executableA full log can be found at /home/penghao/libvirt/libvirt-8.10.0/build/meson-logs/meson-log.txt
可以看到,虽然还是有错误,但是并不是yajl的问题了。从上边的log中可以看到,yajl已经找到了:
Library util found: YES
Run-time dependency wireshark found: NO (tried pkgconfig and cmake)
Run-time dependency yajl found: YES 2.1.0
Program pkcheck found: YES (/usr/bin/pkcheck)
对于新出现的问题,将在后续文章中进行分析和解决。
相关文章:
libvirt零知识学习5 —— libvirt源码编译安装(3)
接前一篇文章libvirt零知识学习4 —— libvirt源码编译安装(2) 在上篇文章及上上篇文章中构建libvirt的时候遇到了一个问题“ERROR: Problem encountered: YAJL 2 is required to build QEMU driver”。上篇文章讲到即使安装了相应的YAJL库仍然不能解决问…...
Nmap 的使用教程
Nmap是一个网络侦测和安全审计工具。它可以用于发现网络上的主机和服务,并提供广泛的信息,其中包括操作系统类型和版本、应用程序和服务的详细信息等。在本文中,我们将介绍如何使用Nmap扫描网络主机,识别开放端口以及进行操作系统…...
async与await异步编程
ECMA2017中新加入了两个关键字async与await 简单来说它们是基于promise之上的的语法糖,可以让异步操作更加地简单明了 首先我们需要用async关键字,将函数标记为异步函数 async function f() {} f()异步函数就是指:返回值为promise对象的函…...
移动应用架构设计:如何转变开发流程
移动应用架构设计:如何转变开发流程 2023 年掌握移动应用程序架构的指南(附案例研究) 如果他们要解决这个问题,开发人员需要了解移动架构设计的最佳实践,使他们能够构建用户喜欢的优化应用程序。其中一些做法包括使用…...
NX二次开发 图层函数总结
简介: NX二次开发 图层相关的总结。 函数: uc5007()uc5008()uc5009()UF_LAYER_ask_category_info()获取图层类别的信息UF_LAYER_ask_category_tag()根据图层分类名称查询其图层分类标识UF_LAYER_ask_status()UF_LAYER_ask_work_layer()UF_LAYER_create…...
windows微服务部署
windows部署一.nginx部署1.nginx 官网下载2. 配置nginx3.配置nigix 防止nigix刷新404不生效二.配置redis部署成服务1.在系统配置中 配置为系统变量2.打开快捷登录服务管理#3. 开启redis三.windows部署jar包一.nginx部署 1.nginx 官网下载 地址 官网地址 安装 windows版本 可安…...
Java四种内部类(看这一篇就够了)
🎉🎉🎉点进来你就是我的人了 博主主页:🙈🙈🙈戳一戳,欢迎大佬指点!人生格言:当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友一起加油喔🦾&am…...
蓝桥杯刷题第二十天
第一题:纸张尺寸问题描述在 ISO 国际标准中定义了 A0 纸张的大小为 1189mm 841mm, 将 A0 纸 沿长边对折后为 A1 纸, 大小为 841mm 594mm, 在对折的过程中长度直接取 下整 (实际裁剪时可能有损耗)。将 A1 纸沿长边对折后为 A2 纸, 依此类推。输入纸张的名称, 请输出…...
如何通过命令行查看CentOS版本信息和linux系统信息
1.如何查看已安装的CentOS版本信息: 1.cat /proc/version 2.uname -a 3.uname -r 4.cat /etc/centos-release 5.lsb_release -a 6.hostnamectl1. 第一种方式输出的结果是: Linux version 3.10.0-1127.el7.x86_64 (mockbuildkbuilder.bsys.centos.org) …...
oracle查询表空间大小以及每个表所占空间的大小
1、查询数据库中所有的表空间以及表空间所占空间的大小,直接执行语句就可以了: select tablespace_name, sum(bytes)/1024/1024 from dba_data_files group by tablespace_name; 2、查看表空间物理文件的名称及大小 select tablespace_name, file_id, …...
C语言通讯录应用程序:从设计到实现
hello,这期给大家带来C语言实现静态通讯录,主要也是建立起创建大项目的思维,与往期这两篇博客有点类似 C语言实现三子棋 C语言实现扫雷 文章目录🤓通讯录介绍😶🌫️效果演示🤠主题框架头文件测试文件函数…...
银河麒麟v10sp2安装nginx
nginx官网下载:http://nginx.org/download/ 银河麒麟系统请先检查yum源是否配置,若没有配置请参考:https://qdhhkj.blog.csdn.net/article/details/129680789 一、安装 1、yum安装依赖 yum install gcc gcc-c make unzip pcre pcre-devel …...
华为笔试题OD
华为笔试题OD 1题 华为od-2022.11.5-k优雅阈值 题目内容 如果一个数组中出现次数最多的元素出现大于等于 �k 次, 被称为 �−优雅数组k−优雅数组 , �k 也可以被称为优雅阈值。 例如,数组 [1,2,3,1,2,3,…...
Win10+Anconda安装.whl文件到指定环境——以pycocotools为例
Anconda安装.whl文件到指定环境1.Whl文件2.pycocotools安装前言:本篇文章主要记录了两个问题: (1)Win10环境下,利用Anconda安装.whl文件到指定环境的方法; (2)Win10系统安装pycocoto…...
全自动托盘四向穿梭车|拥有输送系统提升机AGV的托盘四向穿梭车立体库的软硬件配置系统
托盘四向穿梭车一般是在两向穿梭车的结构上设计改进而来的,托盘两向穿梭车在取货时可以实现“先进先出”或“先入后出”模式,多用于量大且品种少的行业。但是随着市场的不断迅速发展,各大企业、商家不仅对于小批量、多批次的需求越来越大&…...
【Linux】进程概念二
文章目录进程概念二1. 进程状态2. 进程状态查看3. 僵尸进程3.1 僵尸进程的危害4. 孤儿进程5. 环境变量5.1 常见环境变量5.2 查看环境变量的方法5.3 测试PATH5.4 环境变量相关的命令5.5 环境变量的组织方式5.6 通过代码获取环境变量6. 程序地址空间7. 进程地址空间8. 扩展8.1 为…...
如何用C语言实现渣男通讯录
注意:纯属玩笑,博大家一乐,切勿当真📖首先我们要知道一个渣男通讯录有哪些信息要包含哪些功能1.你的通讯录要装多少个女朋友你得规定吧;2.每个女朋友的姓名,年龄,电话,爱好这些要有吧…...
【从零开始的C语言】操作符详解
文章目录前言一、操作符分类二、算术操作符三、移位操作符3.1 左移3.2 右移四、位操作符(重要)五、赋值操作符六、单目操作符七、关系操作符八、逻辑操作符九、条件操作符十、逗号表达式前言 本篇文章开始,我将开设《从零开始的C语言》专栏&…...
黑马在线教育数仓实战1
1. 教育项目的架构说明 项目的架构: 基于cloudera manager大数据统一管理平台, 在此平台之上构建大数据相关的软件(zookeeper,HDFS,YARN,HIVE,OOZIE,SQOOP,HUE...), 除此以外, 还使用FINEBI实现数据报表展示 各个软件相关作用: zookeeper: 集群管理工具, 主要服务于…...
python中pandas模块数据处理小案例
内容目录1. 添加随机日期2. 聚合求和3.聚合求和排序4. 聚合求和排序取前十5. 聚合取极值6. 重新赋值7. 按条件赋值pandas作为数据处理的得力工具,简便了数据开发过程,之前串联了pandas的使用方法,现在用几个小案例巩固一下常用的pandas方法。…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...
【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...
最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
