我有一个需求,需要将一个服务从 Ubuntu 镜像迁移到 centos 镜像。我在安装服务时遇到了问题yum install avahi-daemon libnss-mdns
。我通过以下方式找到了 avahi-daemon 在 centos 上的安装包名称命令未找到网站,但我没找到 的名字libnss-mdns
。
有没有其他方便的方法来查找不同服务器中各个服务的安装包名,至少是包libnss-mdns
名?
我非常感谢任何对此提供的帮助。
需要迁移的部分Dockerfile内容:
...
# ubtuntu Dockerfile
RUN set -ex \
&& DEPS="avahi-daemon libnss-mdns" \
&& apt-get update && apt-get install -y --no-install-recommends $DEPS \
# Disable nss-mdns's two-label limit heuristic so that host names
# with multiple labels can be resolved.
# E.g. redis-12000.rediscluster.local, which has 3 labels.
# (https://github.com/lathiat/nss-mdns#etcmdnsallow)
&& echo '*' > /etc/mdns.allow \
# Configure NSSwitch to use the mdns4 plugin so mdns.allow is respected
&& sed -i "s/hosts:.*/hosts: files mdns4 dns/g" /etc/nsswitch.conf \
# We run a `avahi-daemon` without `dbus` so that we can start it as a
# non-root user. `dbus` requires root permissions to start. And
# anyway, there's a way to run `avahi-daemon` without `dbus` so why
# shouldn't we use it. https://linux.die.net/man/5/avahi-daemon.conf
&& printf "[server]\nenable-dbus=no\n" >> /etc/avahi/avahi-daemon.conf \
&& chmod 777 /etc/avahi/avahi-daemon.conf \
# We create the directory because when the first time `avahi-daemon`
# is run, the directory doesn't exist and the `avahi-daemon` must have
# permissions to create the directory under `/var`.
&& mkdir -p /var/run/avahi-daemon \
# Change the permissions of the directories avahi will use.
&& chown avahi:avahi /var/run/avahi-daemon \
&& chmod 777 /var/run/avahi-daemon
...
答案1
有没有其他方便的方法来找到不同服务器中各个服务的安装包名,至少有libnss-mdns包?
在旧系统上,列出包中包含的文件(使用
dpkg -L
或rpm -ql
)并尝试找出重要的文件。对于 libnss-mdns,它将是libnss_mdns.so.2
,由 glibc 加载的“名称服务”模块。在新系统上,使用包管理器的“提供什么”或“按文件搜索”功能(例如
yum whatprovides
或apt-file search
)来确定哪个包提供该文件。(我没有 CentOS 机器来检查结果。)