我正试图将tcpkill安装/添加到我的pod中,但收到以下错误。即使是apk更新也没有给出想要的结果。
$ kubectl exec -it mypod-v003-ab2cd /bin/sh -n mynamespace
/ # apk add tcpkill
ERROR: unsatisfiable constraints:
tcpkill (missing):
required by: world[tcpkill]
/ #
/ #
/ #
/ # apk add dsniff
ERROR: unsatisfiable constraints:
dsniff (missing):
required by: world[dsniff]
/ #
/ #
/ # apk update
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/edge/testing/x86_64/APKINDEX.tar.gz
v3.9.5-11-ge3b5031082 [http://dl-cdn.alpinelinux.org/alpine/v3.9/main]
v3.9.5-3-gfaabae9a55 [http://dl-cdn.alpinelinux.org/alpine/v3.9/community]
v20200122-2407-g64931a5538 [http://dl-cdn.alpinelinux.org/alpine/edge/testing]
OK: 13818 distinct packages available
我在网上发现我可以添加包裹(https://pkgs.alpinelinux.org/contents?file=tcpkill&路径=&name=bash完成&分支=v3.9&repo=main&arch=x86_64(,但不确定如何实现。有人能帮忙吗?
此外,如果我转到/usr/share/bash-completion/completions/,我可以看到那里的tcpkill。
/ # ls -l /usr/share/bash-completion/completions/tc*
-rw-r--r-- 1 root root 1011 Dec 4 2018 /usr/share/bash-completion/completions/tcpdump
-rw-r--r-- 1 root root 441 Dec 4 2018 /usr/share/bash-completion/completions/tcpkill
-rw-r--r-- 1 root root 434 Dec 4 2018 /usr/share/bash-completion/completions/tcpnice
/ #
这个引用告诉您bash完成包的结构中有一个名为tcpkill的文件。此文件是用于bash完成的索引文件,用于自动完成tcpkill命令。
tcpkill实际上并不适用于alpine,所以如果你需要它,你必须从源代码编译它。
您可能想知道为什么bash完成包含对tcpkill的引用。之所以会发生这种情况,是因为它包含在源程序包中。
要了解如何编译它,请参阅本指南。
我也可以建议你使用另一个图像作为ubuntu。使用它,您只需运行apt-get install dsniff
,tcpkill即可使用。
如果这个解决方案适合你,也许你想创建自己的docker镜像,包括这些包,这样你就不需要每次创建pod时都安装它。为此,我向你推荐这个操作方法。