redhat bash: yum: 未找到命令..._YUM的工作机制与配置

YUM机制解析与配置详解
YUM是RPM包管理器的增强工具,它解决了rpm的依赖问题。YUM通过从服务器下载rpm包的元数据,创建一个包含所有包信息的清单,客户端根据这个清单来决定安装哪些包及其依赖。 createrepo工具用于生成仓库的元数据。yum客户端的配置文件主要在/etc/yum.conf和/etc/yum.repos.d/*.repo,它们定义了服务器地址、缓存路径、包策略等。YUM常用命令包括安装、更新、卸载、搜索和清理缓存等。

原文链接:http://leeyan.blog.51cto.com/8379003/1691586

Yum解决了rpm不能解决的依赖关系,但是YUM是依赖RPM运行的

  • yum服务器
    所有要发行的rpm包都放在yum服务器上以提供别人来下载,rpm包根据kernel的版本号,cpu的版本号分别编译发布。yum服务器只要提 供简单的下载就可以了,ftp或者httpd的形式都可以。yum服务器有一个最重要的环节就是整理出每个rpm包的基本信息,包括rpm包对应的版本 号,conf文件,binary信息,以及很关键的依赖信息。在yum服务器上提供了createrepo工具,用于把rpm包的基本概要信息(元数据)做成一张" 清单",这张"清单""就是描述每个rpm包的spec文件中信息。
  • yum client端
    client每次调用yum install或者search的时候,都会去解析/etc/yum.repos.d下面所有以.repo结尾的配置文件,这些配置文件指定了yum服务 器的地址。yum会定期去"更新"yum服务器上的rpm包"清单",然后把"清单"下载保存到yum自己的cache里面,根据/etc/yum.conf里配置(默认是在/var/cache/yum下面),每次调用yum装包的时候都会去这个cache目录下去找"清单",根据"清 单"里的rpm包描述从而来确定安装包的名字,版本号,所需要的依赖包等,然后再去yum服务器下载rpm包安装。(前提是不存在rpm包的cache),yum安装完成后自动删除已安装程序的安装包,但是不会删除元数据,方便下次使用

Yum仓库相当于rpm仓库+元数据

Createrepo命令(用于分析每个包后在rpm仓库中生成元数据)

当第一次使用yum管理软件时,yum会自动下载所需要的headers放置在/var/cache/yum目录下;

Yum仓库---->yum 缓存---->本地安装

yum的配置文件:

1. /etc/yum.conf:为所有仓库提供公共配置
[main]
cachedir: yum缓存的目录,yum在此路径下存储下载的rpm包和数据库,一般是/var/cache/yum。
debuglevel:除错级别,0──10,默认是2
logfile: yum的日志文件,默认是/var/log/yum.log。
pkgpolicy:包的策略。

一共有两个选项,newest和last,这个作用是如果你设置了多个repository,而同一软件在不同的repository中同时存 在,yum应该安装哪一个,如果是newest,则yum会安装最新的那个版本。如果是last,则yum会将服务器id以字母表排序,并选择最后的那个 服务器上的软件安装。一般都是选newest。
distroverpkg:指定一个软件包,yum会根据这个包判断你的发行版本,默认是redhat-release,也可以是安装的任何针对自己发行版的rpm包。
exactarch:有两个选项1和0,代表是否只升级和你安装软件包cpu体系一致的包,如果设为1,则如你安装了一个i386的rpm,则yum不会用i686的包来升级。
retries: 网络连接发生错误后的重试次数,如果设为0,则会无限重试。
tolerent: 也有1和0两个选项,表示yum是否容忍命令行发生与软件包有关的错误,比如你要安装1,2,3三个包,而其中3此前已经安装了,如果你设为1则yum不会出现错误信息,默认是0。
除了上述之外,还有一些可以添加的选项,如
exclude: 排除某些软件在升级名单之外,可以用通配符,列表中各个项目要用空格隔开,这个对于安装了诸如美化包,中文补丁的朋友特别有用。
gpgcheck: 有1和0两个选择,分别代表是否是否进行gpg校验,如果没有这一项,默认好像也是检查的。

plugins: 是否启用所有的插件(plug-in),默认为0,代表不启用。由于RHEL为YUM提供了一个名为rhn-plugin的插件,以便读取RHN提供的YUM下载源,因此你必须保持这个参数为1,才能顺利使用RHN的YUM下载源来安装、升级你的RHEL。

metadata_expire: 定义YUM缓存中数据的过期时间,单位为秒。

proxy: 指定读取下载源时使用的代理服务器的路径(URL)。

2. /etc/yum.repos.d/*.repo:为仓库的指向提供配置

仓库指向的定义:
[repositoryID]
name=Some name for this repository
baseurl=url://path/to/repository/
enabled={1|0}
gpgcheck={1|0}
gpgkey=URL
enablegroups={1|0}
failovermethod={roundrobin|priority}
默认为:roundrobin,意为随机挑选;baseurl有多个时,会轮询挑选,如果选 roundrobin,会随机挑选

cost=(默认为1000)

4dc0cf855b8cfcec7c465a9bf43e37bd.png

YUM工具的使用:

yum的命令行选项:
--nogpgcheck:禁止进行gpg check;
-y: 自动回答为“yes”;
-q:静默模式;
--disablerepo=repoidglob:临时禁用此处指定的repo;
--enablerepo=repoidglob:临时启用此处指定的repo;
--noplugins:禁用所有插件;
yum的repo配置文件中可用的变量:
$releasever: 当前OS的发行版的主版本号;
$arch: 平台;
$basearch:基础平台;
$YUM0-$YUM9

下面的配置中使用了变量:

5da44a0c8cc54e825e3ed54df0e21fc7.png

man手册输出
yum [options] [command] [package ...]
command is one of:
* install package1 [package2] [...]
* update [package1] [package2] [...]
* update-to [package1] [package2] [...]
* check-update
* upgrade [package1] [package2] [...]
* upgrade-to [package1] [package2] [...]
* distribution-synchronization [package1] [package2] [...]
* remove | erase package1 [package2] [...]
* list [...]
* info [...]
* provides | whatprovides feature1 [feature2] [...]
* clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
* makecache
* groupinstall group1 [group2] [...]
* groupupdate group1 [group2] [...]
* grouplist [hidden] [groupwildcard] [...]
* groupremove group1 [group2] [...]
* groupinfo group1 [...]
* search string1 [string2] [...]
* shell [filename]
* resolvedep dep1 [dep2] [...]
* localinstall rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use install)
* localupdate rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use update)
* reinstall package1 [package2] [...]
* downgrade package1 [package2] [...]
* deplist package1 [package2] [...]
* repolist [all|enabled|disabled]
* version [ all | installed | available | group-* | nogroups* | grouplist | groupinfo ]
* history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
* check
* help [command]

总结用法:

显示仓库列表:
repolist [all|enabled|disabled]

935c718707a8212db57fdf07a565ae55.png

显示程序包:
list
# yum list [all | glob_exp1] [glob_exp2] [...]
# yum list {available|installed|updates} [glob_exp1] [...]

安装程序包:
install package1 [package2] [...]
reinstall package1 [package2] [...] (重新安装)
升级程序包:
update [package1] [package2] [...]
downgrade package1 [package2] [...] (降级)
检查可用升级:
check-update
卸载程序包:
remove | erase package1 [package2] [...]
查看程序包information:
info [...]
查看指定的特性(可以是某文件)是由哪个程序包所提供:
provides | whatprovides feature1 [feature2] [...]
清理本地缓存:
clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
构建缓存:
makecache

搜索:
search string1 [string2] [...]
以指定的关键字搜索程序包名及summary信息;
查看指定包所依赖的capabilities:
deplist package1 [package2] [...]

6d01ec480cd40a5080da0bd7dfcf2196.png

查看yum事务历史:
history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]

b1be07aac129d5540b276b3b362833bb.png

安装及升级本地程序包:
* localinstall rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use install)
* localupdate rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use update)
包组管理的相关命令:
* groupinstall group1 [group2] [...]
* groupupdate group1 [group2] [...]
* grouplist [hidden] [groupwildcard] [...]
* groupremove group1 [group2] [...]
* groupinfo group1 [...]

19219f739b1a0ec047d4b9c87b21276b.png

本文出自 “明天过后” 博客,请务必保留此出处http://leeyan.blog.51cto.com/8379003/1691586

YUM的工作机制与配置

标签:yum

<think>我们正在解决bash中执行qconfig命令时提示“未找到命令”的问题。 根据经验,这种问题通常有以下几种原因和解决办法: 1. qconfig命令没有安装在系统中。 2. qconfig虽然安装了,但其所在目录没有添加到PATH环境变量中。 3. 安装不完整或者损坏。 我们可以按照以下步骤进行排查: ### 步骤1:检查命令是否存在 我们可以使用`which`或`type`命令来检查qconfig是否存在于系统的PATH中: ```bash which qconfig ``` 或者 ```bash type qconfig ``` 如果返回空或者提示未找到,则说明系统无法在PATH的目录中找到该命令。 ### 步骤2:尝试使用绝对路径 如果知道qconfig的安装位置,可以直接使用绝对路径执行。例如,如果它安装在`/usr/bin`下,则: ```bash /usr/bin/qconfig ``` 如果可以执行,则说明命令存在,只是PATH没有包含该目录。 ### 步骤3:查找命令位置 使用`find`或`locate`命令在整个系统中查找qconfig: ```bash sudo find / -name qconfig 2>/dev/null ``` 或者使用`locate`(需要先更新数据库): ```bash sudo updatedb # 如果数据库未更新,先运行此命令 locate qconfig ``` ### 步骤4:将目录添加到PATH 如果找到了qconfig的路径,比如在`/path/to/qconfig`,那么可以将该目录添加到PATH环境变量中。 临时添加(当前终端有效): ```bash export PATH=$PATH:/path/to/qconfig ``` 永久添加(添加到用户主目录的.bashrc或.profile中): ```bash echo 'export PATH=$PATH:/path/to/qconfig' >> ~/.bashrc source ~/.bashrc ``` ### 步骤5:确认是否安装 如果没有找到qconfig,说明可能没有安装。需要查找qconfig属于哪个软件包,然后安装该软件包。 在Debian/Ubuntu系统中,可以使用`apt-file`搜索包含qconfig的包: ```bash # 如果没有安装apt-file,先安装 sudo apt install apt-file sudo apt-file update apt-file search bin/qconfig ``` 或者使用`dpkg`搜索: ```bash dpkg -S qconfig ``` 但是注意如果未安装则搜索不到,所以通常使用`apt-file`。 在RedHat/CentOS系统中,使用`yum whatprovides`或者`dnf provides`: ```bash dnf provides */qconfig ``` 找到包名后,安装即可。例如,如果包名为`qconfig-package`,则: ```bash sudo apt install qconfig-package # Debian/Ubuntu ``` 或 ```bash sudo dnf install qconfig-package # CentOS/RHEL/Fedora ``` ### 步骤6:检查安装是否损坏 如果已经安装了软件包,但仍然找不到命令,可能是安装不完整或损坏。可以尝试重新安装: ```bash sudo apt install --reinstall qconfig-package ``` 或 ```bash sudo dnf reinstall qconfig-package ``` 注意:上面的包名“qconfig-package”需要替换为实际查找到的包名。 根据引用[^1]中提到的路径信息(`/witech/builddir/sdk/qtopiacore/qconfig-qpe.h`),这可能Qtopia或Qt相关环境有关。你可能需要检查你的Qt开发环境是否正确安装并配置了PATH。 如果是在开发环境中,可能需要运行特定的环境设置脚本(例如`setenv.sh`等)来设置PATH。 请按照上述步骤尝试解决。如果问题仍然存在,请提供更多上下文信息。 §§相关问题§§ 1. 如何查看和修改PATH环境变量? 2. 在Linux中如何安装缺失的软件包? 3. 如何查找一个命令属于哪个软件包? </think>### 解决 bash 中执行 qconfig 命令提示 "未找到命令" 的方法 #### 🔍 1. **确认命令是否存在** ```bash which qconfig ``` 若返回空,说明系统中未安装 `qconfig` 或路径未配置。根据引用[^1]中出现的路径 `/witech/builddir/sdk/qtopiacore/`,该命令可能属于 **Qtopia 开发工具包**(嵌入式 Linux 的 Qt 框架)。 #### 📦 2. **安装 Qtopia 工具包** 需安装包含 `qconfig` 的软件包: ```bash # Debian/Ubuntu 系统 sudo apt update sudo apt install qtopia-core-dev # 或其他 qtopia 相关包 # Red Hat/CentOS 系统 sudo yum install qtopia-devel ``` > ⚠️ 注意:具体包名需根据您的 Qtopia 版本确定。若包管理器找不到,需从源码编译。 #### ⚙️ 3. **源码编译安装(推荐)** 若引用[^1]中提到的路径已存在源码(如 `/witech/builddir/sdk/`): ```bash cd /witech/builddir/sdk/qtopiacore/ ./configure # 检查依赖 make # 编译 sudo make install # 安装到系统路径 ``` #### 🛠 4. **添加环境变量** 若已安装但路径未加入 `PATH`: ```bash # 临时添加路径(替换为实际路径) export PATH=$PATH:/witech/builddir/sdk/qtopiacore/bin/ # 永久生效(添加到 ~/.bashrc) echo 'export PATH=$PATH:/witech/builddir/sdk/qtopiacore/bin' >> ~/.bashrc source ~/.bashrc ``` #### 🔄 5. **创建符号链接** 若命令在非标准路径: ```bash sudo ln -s /witech/builddir/sdk/qtopiacore/bin/qconfig /usr/local/bin/qconfig ``` #### ❓ 6. **验证安装** ```bash qconfig -v # 检查版本 ``` #### ⚠️ 注意事项: 1. 引用[^1]的路径提示:`qconfig` 可能是 **Qtopia 的配置工具**,常用于嵌入式 Qt 开发环境。 2. 若提示头文件错误(如 `qconfig-qpe.h`),需确保开发包完整安装。 3. 企业开发环境中,路径 `/witech/builddir/` 通常是自定义编译目录,需联系项目维护者获取部署文档。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值