【问题标题】:How to remove all packages from specific repo without dependencies如何在没有依赖关系的情况下从特定 repo 中删除所有包
【发布时间】:2014-10-19 11:05:23
【问题描述】:

我知道下面的代码将从特定的 repo 中删除所有包。

yum remove $(yum list installed | grep rpmforge | awk '{ print $1 }')

以下代码将删除一个没有依赖关系的包。

rpm -e --nodeps "php-sqlite2-5.1.6-200705230937"

但我不知道如何一起使用。

【问题讨论】:

    标签: linux command-line centos repository centos6.5


    【解决方案1】:

    试试下面的命令:

    rpm -e --nodeps `yum list installed | grep rpmforge | awk '{ print $1 }'`
    

    【讨论】:

    • 您也可以只使用awk 进行搜索。例如。 yum list installed | awk '($3 ~ "rpmforge") {print $1}' | xargs rpm -e --nodeps
    【解决方案2】:

    打印所有存储库的列表以获取 repo id(第一列):

    $ dnf repolist
    

    现在删除所选 repo 的所有包:

    # dnf repository-packages <repo-id> remove
    

    请参阅 dnf manual pagerepository-packages 部分,了解有关操作特定存储库中所有包的详细信息。

    【讨论】:

    • 注意,这也将卸载从其他 repos 安装的任何依赖项。
    【解决方案3】:

    检查以确保您只擦除您想要的内容

    dnf list installed | grep package_name.i686 | awk '{ print $1 }' | less
    

    实际操作

    sudo rpm -e --nodeps `dnf list installed | grep package_name.i686 | awk '{ print $1 }'`
    

    【讨论】:

      【解决方案4】:

      我喜欢使用
      yum -y autoremove yum list installed | grep rpmforge | awk '{ print $1 }'

      【讨论】:

      • yum -y autoremove $(yum list installed | grep ius | awk '{ print $1 }')
      • 仅供参考,当您通过管道输出 yum 时,它并不总是在一行上打印条目。 (这有多令人沮丧??)如果有一个来自您感兴趣的 repo 的名称很长的包,它可能会在一行上显示包名称,然后是换行符,然后是 version 和 repo 列。这意味着您的 repo 名称的 grep 可能无法捕获关联的包名称,并且您的命令将不起作用。没有办法让它工作。要了解我在说什么,请执行 'yum list installed |少'。
      猜你喜欢
      • 1970-01-01
      • 2014-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-01
      • 2019-07-14
      • 2016-09-30
      • 2018-10-20
      相关资源
      最近更新 更多