解决rpm 命令不能用

欢迎大家转载,为保留作者成果,转载请注明出处,http://blog.youkuaiyun.com/netluoriver,有些文件在资源中也可以下载!如果你没有积分,可以联系我索要!

SIP voip 测试交流群: 323827101

 

今天在升级服务器时rpm命令不能用了,

输入
[root@asg ~]#rpm -qa
完全无反应,通过
[root@asg ~]#ps -ef

查看,执行的命令都在挂着呢,用命令:
[root@asg ~]#killall -9 rpm


然后执行
[root@asg ~]# cd /var/lib/rpm/
[root@asg rpm]# ls
Basenames    __db.001  __db.003 Filemd5s  Installtid  Packages     Provideversion  Requirename     Sha1header  Triggername
Conflictname __db.002 Dirnames  Group     Name        Providename  Pubkeys         Requireversion  Sigmd5


删除rpm数据表
[root@asg rpm]# rm -f __db.00
__db.001  __db.002  __db.003 
[root@asg rpm]# rm -f __db.00*


重构数据表
[root@asg rpm]# rpm --rebuilddb



再次执行rpm 命令成功了!
[root@asg rpm]# rpm -qa|grep conf
fontconfig-devel-2.4.1-7.el5
system-config-samba-1.2.41-5.el5
chkconfig-1.3.30.2-2.el5
autoconf-2.59-12
authconfig-5.3.21-7.el5
pyxf86config-0.3.31-2.fc6
system-config-network-tui-1.3.99.19-2.el5
gnome-python2-gconf-2.16.0-1.fc6
confmanage-1.0.1-0
system-config-securitylevel-tui-1.6.29.1-6.el5
system-config-date-1.8.12-4.el5.centos
xkeyboard-config-0.8-9.el5
vconfig-1.9-3
fontconfig-2.4.1-7.el5
pkgconfig-0.21-2.el5


### 使用 Linux 中的 RPM 命令安装或操作软件包 RPM(Red Hat Package Manager)是一种常用的软件包管理工具,主要用于基于 Red Hat 的 Linux 发行版。它允许管理员轻松地安装、升级、查询和删除软件包。以下是关于如何使用 `rpm` 命令的一些常见用法及其注意事项。 #### 1. 安装 RPM 软件包 要安装一个 RPM 软件包,可以使用以下命令: ```bash rpm -ivh package_name.rpm ``` 其中 `-i` 表示安装,`-v` 提供详细的输出信息,而 `-h` 则会在安装过程中显示进度条[^2]。 #### 2. 升级现有软件包 如果目标系统已经安装了一个旧版本的相同软件包,则可以用下面这条指令来进行更新: ```bash rpm -Uvh new_package_version.rpm ``` 这里 `-U` 参数代表升级动作;当新版本可用时会替换掉原来的版本[^3]。 #### 3. 删除已安装的软件包 移除不再需要的应用程序可通过此语法完成: ```bash rpm -e package_name ``` 请注意不要加上扩展名“.rpm”,因为此时我们处理的是已经被解析过的名称而非实际文件路径[^4]。 #### 4. 查询已安装的信息 对于想要知道哪些包已被加载或者某个特定应用的状态等问题来说非常有用。 - 显示所有当前装载于系统的模块列表: ```bash rpm -qa ``` - 获取有关某单一项目的详情介绍: ```bash rpm -qi package_name ``` #### 5. 解决依赖关系问题 有时单独依靠简单的 `rpm` 操作可能不足以满足复杂的环境需求,因为它不会自动解决缺失的前置条件。在这种情况下,建议采用更高级别的解决方案如 `yum` 或者手动预先准备好所有的必要组件后再尝试再次执行原定计划内的步骤[^5]。 --- ### 示例代码片段展示如何批量处理多个 rpms 并将其集成进统一结构体当中去便于分发给其他节点使用。 假设有一个目录 `/mnt/rpms/` 包含若干待迁移项目,那么可以通过如下方式实现自动化打包功能: ```python import os import shutil source_dir = '/mnt/rpms/' destination_archive = '/home/user/archives/all_rpms.tar.gz' def gather_and_compress(source, dest): """Collects all .rpm files from source directory and compress them into destination archive.""" temp_folder = '/tmp/temp_rpm_collection' if not os.path.exists(temp_folder): os.makedirs(temp_folder) for root, dirs, filenames in os.walk(source): for filename in filenames: if filename.endswith('.rpm'): full_file_path = os.path.join(root,filename) shutil.copy(full_file_path,temp_folder) with tarfile.open(dest,"w:gz") as tar_handle: tar_handle.add(temp_folder,arcname=os.path.basename(temp_folder)) gather_and_compress(source_dir, destination_archive) print(f"All RPM packages have been collected and compressed to {destination_archive}.") ``` ---
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值