• Debian如何定位到命令所在的包


      用过Centos的应该都知道,如果我们想知道某个命令是由哪个包提供的,可以通过yum provides commandname来查询到对应的安装包。那么,在Debian里,是否也可以做类似的操作呢?答案是当然可以,不过要比Centos麻烦些。
      就以我现在用的Debian/Deepin/Uos为例,我现在想知道nc命令所在的包,方便在另一台没有nc命令的电脑上安装对应包以使用nc命令。
      首先,通过whereis确定nc相关命令或文件所在的位置。
      我们看下whereis nc返回的结果

    lcz@lcz-PC:~/Desktop$ whereis nc
    nc: /usr/bin/nc /usr/bin/nc.openbsd /usr/share/man/man1/nc.1.gz
    lcz@lcz-PC:~/Desktop$ 

      这里可以看到/usr/bin/nc.openbsd,这个文件带.openbsd看起来有点奇怪,其实这个是可执行命令和nc命令是一样的功能。实际我们这里的nc命令使用的包也是带openbsd的,这里特意说明下,不知道是不是Uos版本特意独行用的这个包。我们来看下Redhat的nc命令所在的包,可以发现,包的命令规则也是不一样的,看起来是Redhat的包名比较简单明了,至于Uos为什么用待openbsd的包名,这个我们暂时不深究。

      接着通过dpkg-query确定都有哪些包提供nc相关的命令或者文件。为什么是grep 'bin/nc'?这个算是一个小技巧吧,因为常见的命令默认安装位置一般是在/bin/、/sbin/、/usr/bin/、/usr/sbin/这些目录下,为了提高过滤准确度,我就采用了其中的固定部分路径bin/再加上nc这个命令,不然只grep nc还是会返回很多结果

    lcz@lcz-PC:~/Desktop$ dpkg-query -S nc|grep 'bin/nc'
    libncurses-dev:amd64: /usr/bin/ncurses5-config
    bsdmainutils: /usr/bin/ncal
    libncurses-dev:amd64: /usr/bin/ncursesw6-config
    libncurses-dev:amd64: /usr/bin/ncurses6-config
    libncurses-dev:amd64: /usr/bin/ncursesw5-config
    netcat-openbsd: /bin/nc.openbsd
    lcz@lcz-PC:~/Desktop$ 

      可以看到,dpkg-query返回的结果里,最有可能的就是最后一个netcat-openbsd包
      做了一下测试,卸载netcat-openbsd后,就无法找到nc命令。重新安装netcat-openbsd后,nc命令即可正常使用

  • 相关阅读:
    剑指Offer_编程题_从尾到头打印链表
    剑指Offer_编程题_替换空格
    剑指Offer_编程题_二维数组中的查找
    我用java爬虫爬了一个图片网站
    docker安装mysql5.7
    设计模式和设计原则
    nginx 限流配置
    JAVA性能监控与调优参考文档链接
    单例模式
    Java开发中对Redis的基本操作
  • 原文地址:https://www.cnblogs.com/biaopei/p/16220947.html
Copyright © 2020-2023  润新知