- 浏览: 50112 次
- 性别:
- 来自: 深圳
最新评论
Page 1
基本 yum 命令和用法
这不是一个 yum 命令的详细列表而是一些基本的,通用的,重要的一些。想要获得详细
列表请查看帮助页面
● yum list [available|installed|extras|updates|obsoletes|all|recent] [pkgspec]
使用这个命令你可以列出任何在你系统上启用或者安装的仓库里的软件包。它还可
以列出指定类型的软件包,还可以用包的名字,架构,版本,发行日期作为软件包的规范重
新定义你的列表。
● yum list
默认情况下无参数的‘yum list‘列出在所有软件仓库里的和系统安装的所有的软件包。
注意:‘yum list' 和‘yum list all'的结果是一样的。
● yum list available
列出在所有可用的软件仓库里可以安装的软件包
● yum list installed
这个命令和 rpm -qa 的功能是一样的,可以列出系统上安装的软件列表
● yum list extra
这个命令获得在系统上安装但是没有出现在激活的软件仓库里的软件包列表。用于
寻找等待升级或者不是从 fedora 更新镜像上安装的软件包。
● yum list obsoletes
这个命令列出系统上安装但是被软件仓库废除的软件包列表
● yum list updates
这个命令列出已安装的可升级的软件包列表
● yum list recent
1
Page 2
这个命令列出最近 7 天加入的软件包列表
● yum list pkgspec
这个命令允许你自定义软件包列表
pkgspec 的例子
? yum list zsh //会列出包 zsh 的详细信息,比如有没有安装,包的架构,软件仓库等。
? yum list joe\*
? yum list \*.i386 //根据通配符列出符合要求的列表
● yum install/remove/update
......
● yum check-update
很像 yum list updates 但是如果有可用更新的话会返回退出代号 100。方便写 shell 脚本
? yum grouplist
? yum groupinfo
? yum groupinstall
? yum groupupdate
? yum groupremove
要想查看上面的命令信息请查看 YumGroups 页面
● yum info
显示已安装或者可获得的软件包详细信息,它可以使用和 yum list 一样的参数但最好
为它指定一个软件包名,例如:
$ yum info yum
Installed Packages
Name : yum
Arch : noarch
Version : 3.2.20
Release : 3.fc10
Size : 2.5 M
Repo : installed
Summary : RPM installer/updater
URL : http://yum.baseurl.org/
License : GPLv2+
Description: Yum is a utility that can check for and automatically download and
: install updated RPM packages. Dependencies are obtained and downloaded
: automatically prompting the user as necessary.
2
Page 3
● yum search
这个命令可以根据各种元数据查找软件包的信息。它可以接受多个参数.它根据提供信息
的最高匹配次数输出符合要求的软件包信息列表.yum search 主要查找以下域:name(名
字),summary(摘要),description(描述),url.如果你想查找什么软件包提供某一个命令,请使用
yum provides.
yum search 的例子:
$ yum search python rsync ssh
========================= Matched: python, rsync, ssh
==========================
rdiff-backup.i386 : Convenient and transparent local/remote incremental
: mirror/backup
============================ Matched: python, rsync
============================
cobbler.noarch : Boot server configurator
============================= Matched: python, ssh
=============================
denyhosts.noarch : A script to help thwart ssh server attacks
pexpect.noarch : Pure Python Expect-like module
python-paramiko.noarch : A SSH2 protocol library for python
python-twisted-conch.i386 : Twisted SSHv2 implementation
============================= Matched: rsync, ssh
==============================
duplicity.i386 : Encrypted bandwidth-efficient backup using rsync algorithm
pssh.noarch : Parallel SSH tools
● yum provides/yum whatprovides
这个命令可以查找哪个软件包提供请求的相关内容,可以使用通配符。例如:
$ yum provides MTA
2ostfix-2.5.5-1.fc10.i386 : Postfix Mail Transport Agent
Matched from:
Other : MTA
exim-4.69-7.fc10.i386 : The exim mail transfer agent
Matched from:
Other : MTA
sendmail-8.14.3-1.fc10.i386 : A widely used Mail Transport Agent (MTA)
3
Page 4
Matched from:
Other : Provides-match: MTA
$ yum provides \*bin/ls
coreutils-6.12-17.fc10.i386 : The GNU core utilities: a set of tools commonly
: used in shell scripts
Matched from:
Filename : /bin/ls
yum shell
......
● yum clean
在正常使用 yum 时,会产生一些元数据和软件包的缓存,这些缓存会占用一定的空
间。yum clean 命令可以清除这些缓存文件。yum clean 处理的文件一般会被存储在/var/cache/
yum.
● yum clean packages
清除软件仓库缓存目录里的缓存软件包
● yum clean metadata
清除来自软件仓库的缓存的 xml 元数据。
● yum clean dbcache
yum 正常运行时会伴随着产生或者下载一些 sqlite 数据库文件,这个命令会清除来自
所有软件仓库的这些缓存文件的拷贝。
● yum clean all
清除来自所有软件仓库的所有的缓存文件。经常使用该命令可以确保不会占用一些
不必要的空间。
4
Page 5
有用的(而且很少人知道的)rpm 命令
这里是一个比较有用而且不是很多人知道的 rpm 命令使用列表.如果你想到使用过的更多
的内容,请随时联系我们以便把它们收录进来.
rpm -qa --last
这个命令反序列出已安装的软件包和安装时间,因此,最近安装的软件包会被列在前面.
例子:
$ rpm -qa --last | head -14
gnome-python2-gtkhtml2-2.19.1-16.fc9 Thu 17 Jul 2008 11:40:44 PM EDT
gnome-python2-libegg-2.19.1-16.fc9 Thu 17 Jul 2008 11:40:43 PM EDT
gnome-python2-gtkmozembed-2.19.1-16.fc9 Thu 17 Jul 2008 11:40:43 PM EDT
gnome-python2-extras-2.19.1-16.fc9 Thu 17 Jul 2008 11:40:42 PM EDT
kernel-2.6.25.11-93.fc9 Thu 17 Jul 2008 04:01:13 PM EDT
hugin-0.7.0-0.3.20080528svn.fc9 Tue 15 Jul 2008 11:24:37 PM EDT
hugin-base-0.7.0-0.3.20080528svn.fc9 Tue 15 Jul 2008 11:24:35 PM EDT
enblend-3.1-0.5.20080529cvs.fc9 Tue 15 Jul 2008 11:24:34 PM EDT
perl-Image-ExifTool-7.25-2.fc9 Tue 15 Jul 2008 11:24:29 PM EDT
glew-1.5.0-2.fc9 Tue 15 Jul 2008 11:24:28 PM EDT
boost-1.34.1-13.fc9 Tue 15 Jul 2008 11:24:27 PM EDT
libicu-3.8.1-7.fc9 Tue 15 Jul 2008 11:24:25 PM EDT
plotutils-2.5-5.fc9 Tue 15 Jul 2008 11:24:23 PM EDT
libpano13-tools-2.9.12-7.fc9 Tue 15 Jul 2008 11:24:22 PM EDT
rpm -qa --qf "%{size} %{name}.%{arch}\n" | sort -n
这个命令显示系统上的所有软件包的大小(按字节),名字.架构(显示格式)的列表,并按
软件包的大小从小到大的顺序排列.
这个命令在寻找哪些软件包占用比较大的空间时很有用.谨慎使用可以清除系统中不
必要的占用空间的软件包.
例子:
$ rpm -qa --qf "%{size} %{name}.%{arch}\n" | sort -n
22429792 Miro.i386
22495239 xulrunner.i386
23553254 anthy.i386
27332634 fonts-japanese.noarch
28805881 ghostscript.i386
29475842 foomatic.i386
29613520 selinux-policy-targeted.noarch
32793230 gnumeric.i386
36362111 gnome-games.i386
5
Page 6
38401148 gimp.i386
40969098 evolution.i386
41452165 perl.i386
42001812 mono-core.i386
46827945 samba-common.i386
48317271 libgweather.i386
49798328 gutenprint-foomatic.i386
52051447 kernel.i686
52058430 kernel.i686
52071231 kernel.i686
91610549 glibc-common.i386
rmp --showrc
这个命令显示 rpm 资源配置状态,如果你在试图找出在指定的文件中能够使用的变量
定义时,它将非常有用.这个命令的输入非常长而且复杂,使用 less 通过管道查看比较好.
rpm -Va --nofiles --nomd5
这个命令检查你的系统中 rpm 数据库里未解决的包依赖关系,冲突和其他软件包相关
的问题,在一般情况下它不返回任何东西.
rpm --eval <an rpm macro>
这个命令根据你指定的宏或者命令输出 rpm 的返回值.
例子:
$ rpm --eval "%{_arch} %{_bindir}"
i386 /usr/bin
6
Page 7
怎样设置你的软件仓库
概述:
有时你会发现你需要搜集一些 rpm 格式的软件包,把他们放到一个地方,并且能够通过运
行系统的 yum 工具去使用它们.这样做其实很简单.
yum 使用的软件仓库其实就是一个目录.这个目录包含有很多 rpm 软件包和 yum 用来获
得软件包信息(相关性,文件列表等)的"元信息".yum 就可以通过 ftp/http 或者文件的 URI(包括
通过 NFS)获取它.
步骤:
1.搜集一些软件包放到一个目录里.你可以创建任意多个子目录,但是必须有一个存放所有
子目录的顶层目录.我们就在这里创建我们的软件仓库.
2.yum 使用存储在每一个 rpm 包里的信息摘要去完成它的工作.这个摘要信息
由'createrepo'程序创建,如果你没有'createrepo'可以通过以下方式安装:
yum install createrepo
如果你在不使用 rpm 的机器上组建软件仓库,可以从下面的地址下载'createrepo'
http://createrepo.baseurl.org/ 然后手动安装.
安装完'createrepo'之后就可以运行它,它只有一个参数,就是你想创建软件仓库的那个顶层
目录.假如第一步我们创建的目录是/srv/my/repo,我们只需运行:
createrepo /srv/my/repo
你会看到很多内容飞过但是最后应该会以无错结束。最后你应该会有一个叫
做/srv/my/repo/repodata 的目录,该目录至少含有 4 个文件。
3. 为了让 yum 知道你的这个软件仓库,你需要把一个.repo 文件加入到你的 yum 的配置
文件中。在你需要使用这个软件仓库的系统上,在以下目录下创建一个新的文
件:'''/etc/yum.repos.d/'''。文件名可以是任意合法文件名但是文件扩展名必须是以.repo 结尾。
这里是我们将其命名为: 'myrepo.repo'.
在该文件中我们只需要包含以下内容即可:
[myrepo]
name = This is my repo
baseurl = url://to/get/to/srv/my/repo/
这就是在次文件中的所有内容. 其中 'baseurl' 行的内容是机器用来获取软件仓库的路径名。
7
Page 8
如果机器可以直接访问它或者把它作为一个文件系统挂载的话你还可以使用如下的 baseurl:
baseurl = file:///srv/my/repo/
''注意:上面的路径中 file 后是三个反斜杠 (/)而不是两个,上面的写法是正确的。
如果你通过 http 或者 https 服务器访问该文件,你可以使用如下的 baseurl:
baseurl = http://servername/my/repo
更多的关于客户端 repo 配置细节可以在 yum.conf 的帮助页面中找到。
4. 现在当你每次修改诶,删除或者添加一个新的 RPM 包到/srv/my/repo 时你只需要
重新创建一下软件仓库的 metadata 就可以了。步骤和第二步中的一样。
== 更多高级选项==
1. createrepo --update: 有时候你的软件仓库中含有很多的软件包,虽然只是其中的一小
部分有所改动但是你却不必为每个软件包重新产生元数据,这样做明显太浪费时间了。
这就是 re --update 选项诞生的原因。你像之前一样运行 createrepo 命令但是添加了--
update 选项.
例如:
createrepo --update /srv/my/repo
现在 createrepo 只更新那些在上次产生元数据之后被改变,添加或者删除 u 了的项目。
2. createrepo -x package_file_name: 假设你有几个软件包在你的软件仓库目录中,但是你
确实不想被人随便看到,你可以使用 createrepo 命令轻松的运行软件包:
createrepo -x filename -x filename2 -x filename* /srv/my/repo
如果你像知道更多关于使用 createrepo 来创建和维护你自己的软件包仓库的方法请访问
8
Page 9
createrepo 的帮助文件或者本集中的其他文档。
Yum 组和软件仓库
Yum 支持组命令
* grouplist
* groupinfo
* groupinstall
* groupremove
* groupupdate
组从“group”xml 元数据中读取数据,每个软件仓库可选支持组功能。如果 yum 没有一个软
件仓库支持组功能那么所有的组操作都不能工作。
* grouplist
yum grouplist [hidden]
这个操作将为你的系统在两个单独的列表中列出所有已经安装的和可用的组。如果你
使用了 hidden 参数那么所有被设置的组在 xml <uservisible> 标记文件中将被设置为“No”。
* groupinfo
yum groupinfo groupname
该操作将显示每个组的详细信息,包括:描述信息,是必须安装还是默认或者可选安
装包。
* groupinstall, groupupdate
yum groupinstall groupname
9
Page 10
yum groupupdate groupname
尽管以上两个命令有所不同,但是他们执行同样的功能。他们将尝试安装/升级所有
在组中类型为“defalut”或者“mandatory”的包 (默认做此操作)。 (要改变这种类型的包,请
修改 yum.conf 配置文件中的 group_package_types 选项)并且此操作会安装任何安装或升级所
需要的额外依赖关系包。
* groupremove
yum groupremove groupname
这个操作将删除在命名组中的任何类型的所有包,并且所有依赖于该组中的包也会被
删除。
在你的软件仓库中设置属于自己的组
这个过程相当的简单,你只需要做以下两步工作即可::
1. 在组中创建一个 yum 所使用的格式的组文件。
2. 告诉 createrepo 包含你的软件仓库中的该组文件。
第一步
你可以打开一个文本编辑器并且手动创建一个组 xml 文件或者你也可以用 yum-utils 中的
yum-groups-manager 命令来完成。
像下面这样使用 groups-create 命令:
yum-groups-manager -n "My Group" --id=mygroup --save=mygroups.xml --mandatory
yum glibc rpm
之后你将看到一个如下文件:
<!DOCTYPE comps PUBLIC "-//Red Hat, Inc.//DTD Comps info//EN" "comps.dtd">
10
Page 11
<comps>
<group>
<id>mygroup</id>
<default>False</default>
<uservisible>True</uservisible>
<display_order>1024</display_order>
<name>My group</name>
<description></description>
<packagelist>
<packagereq type="mandatory">glibc</packagereq>
<packagereq type="mandatory">rpm</packagereq>
<packagereq type="mandatory">yum</packagereq>
</packagelist>
</group>
</comps>
第二步
要把这个文件包含进软件仓库,只需要告诉 cretaerepo 在创建或者重新创建你自己的软
件仓库的时候使用该文件就可以了。
createrepo -g /path/to/mygroups.xml /srv/my/repo
========================================
========================================
========================================
怎样管理软件仓库
repomanage
这个工具允许你为新的或旧的软件包创建列表以传递给其他的命令。如果你想从一个目
录结构中标记一个指定的软件包集的话,那么该命令很有用。它直接爱软件包上操作,通过
他们的 rpm epoch,版本和发布信息比较软件包。
11
Page 12
例如:
repomanage -k2 --old /some/dir | xargs rm -f
这个操作将列出/some/dir 目录内的陈旧的软件包,同时-k2 命令告诉要抑制版本为 2
的软件包。
reposync
这个工具允许你下载整个远程 yum 软件仓库或者远程软件仓库的一部分。它还将使用一
个本地目录来与远程的软件仓库同步。
示例:
从’updates’软件仓库同步所有软件包到当前目录:
reposync --repoid=updates
仅从 ’updates’软件仓库同步最新的软件包到当前目录:
reposync -n --repoid=updates
同步软件包从 ’updates’和 ’extras’软件仓库到当前目录:
reposync --repoid=updates --repoid=extras
同步所有软件包从 ’updates’软件仓库到 repos 目录:
reposync -p repos --repoid=updates
同步所有的软件仓库至 'localcache' 目录( 每个软件仓库对应自己的路径):
reposync -p localcache
允许插件的软件包同步 (当插件要求访问软件仓库时很有用):
12
Page 13
reposync -l
verifytree
如果你刚刚做了一个 repo 并且你想要验证在你的 repo 中的所有东西都是正确且可以完成
其功能的话,你可以运行 erifytree 命令来检查所有的 repodata 和软件包。
示例:
$ verifytree /home/skvidal/tmp/empty-repoverifytree /home/skvidal/tmp/empty-repo/
Checking repodata:
verifying repomd.xml with yum
verifying filelists checksum
verifying primary checksum
verifying primary_db checksum
verifying other_db checksum
verifying other checksum
verifying filelists_db checksum
Checking groups (comps.xml):
verifying comps.xml with yum
comps file missing or unparseable
基本 yum 命令和用法
这不是一个 yum 命令的详细列表而是一些基本的,通用的,重要的一些。想要获得详细
列表请查看帮助页面
● yum list [available|installed|extras|updates|obsoletes|all|recent] [pkgspec]
使用这个命令你可以列出任何在你系统上启用或者安装的仓库里的软件包。它还可
以列出指定类型的软件包,还可以用包的名字,架构,版本,发行日期作为软件包的规范重
新定义你的列表。
● yum list
默认情况下无参数的‘yum list‘列出在所有软件仓库里的和系统安装的所有的软件包。
注意:‘yum list' 和‘yum list all'的结果是一样的。
● yum list available
列出在所有可用的软件仓库里可以安装的软件包
● yum list installed
这个命令和 rpm -qa 的功能是一样的,可以列出系统上安装的软件列表
● yum list extra
这个命令获得在系统上安装但是没有出现在激活的软件仓库里的软件包列表。用于
寻找等待升级或者不是从 fedora 更新镜像上安装的软件包。
● yum list obsoletes
这个命令列出系统上安装但是被软件仓库废除的软件包列表
● yum list updates
这个命令列出已安装的可升级的软件包列表
● yum list recent
1
Page 2
这个命令列出最近 7 天加入的软件包列表
● yum list pkgspec
这个命令允许你自定义软件包列表
pkgspec 的例子
? yum list zsh //会列出包 zsh 的详细信息,比如有没有安装,包的架构,软件仓库等。
? yum list joe\*
? yum list \*.i386 //根据通配符列出符合要求的列表
● yum install/remove/update
......
● yum check-update
很像 yum list updates 但是如果有可用更新的话会返回退出代号 100。方便写 shell 脚本
? yum grouplist
? yum groupinfo
? yum groupinstall
? yum groupupdate
? yum groupremove
要想查看上面的命令信息请查看 YumGroups 页面
● yum info
显示已安装或者可获得的软件包详细信息,它可以使用和 yum list 一样的参数但最好
为它指定一个软件包名,例如:
$ yum info yum
Installed Packages
Name : yum
Arch : noarch
Version : 3.2.20
Release : 3.fc10
Size : 2.5 M
Repo : installed
Summary : RPM installer/updater
URL : http://yum.baseurl.org/
License : GPLv2+
Description: Yum is a utility that can check for and automatically download and
: install updated RPM packages. Dependencies are obtained and downloaded
: automatically prompting the user as necessary.
2
Page 3
● yum search
这个命令可以根据各种元数据查找软件包的信息。它可以接受多个参数.它根据提供信息
的最高匹配次数输出符合要求的软件包信息列表.yum search 主要查找以下域:name(名
字),summary(摘要),description(描述),url.如果你想查找什么软件包提供某一个命令,请使用
yum provides.
yum search 的例子:
$ yum search python rsync ssh
========================= Matched: python, rsync, ssh
==========================
rdiff-backup.i386 : Convenient and transparent local/remote incremental
: mirror/backup
============================ Matched: python, rsync
============================
cobbler.noarch : Boot server configurator
============================= Matched: python, ssh
=============================
denyhosts.noarch : A script to help thwart ssh server attacks
pexpect.noarch : Pure Python Expect-like module
python-paramiko.noarch : A SSH2 protocol library for python
python-twisted-conch.i386 : Twisted SSHv2 implementation
============================= Matched: rsync, ssh
==============================
duplicity.i386 : Encrypted bandwidth-efficient backup using rsync algorithm
pssh.noarch : Parallel SSH tools
● yum provides/yum whatprovides
这个命令可以查找哪个软件包提供请求的相关内容,可以使用通配符。例如:
$ yum provides MTA
2ostfix-2.5.5-1.fc10.i386 : Postfix Mail Transport Agent
Matched from:
Other : MTA
exim-4.69-7.fc10.i386 : The exim mail transfer agent
Matched from:
Other : MTA
sendmail-8.14.3-1.fc10.i386 : A widely used Mail Transport Agent (MTA)
3
Page 4
Matched from:
Other : Provides-match: MTA
$ yum provides \*bin/ls
coreutils-6.12-17.fc10.i386 : The GNU core utilities: a set of tools commonly
: used in shell scripts
Matched from:
Filename : /bin/ls
yum shell
......
● yum clean
在正常使用 yum 时,会产生一些元数据和软件包的缓存,这些缓存会占用一定的空
间。yum clean 命令可以清除这些缓存文件。yum clean 处理的文件一般会被存储在/var/cache/
yum.
● yum clean packages
清除软件仓库缓存目录里的缓存软件包
● yum clean metadata
清除来自软件仓库的缓存的 xml 元数据。
● yum clean dbcache
yum 正常运行时会伴随着产生或者下载一些 sqlite 数据库文件,这个命令会清除来自
所有软件仓库的这些缓存文件的拷贝。
● yum clean all
清除来自所有软件仓库的所有的缓存文件。经常使用该命令可以确保不会占用一些
不必要的空间。
4
Page 5
有用的(而且很少人知道的)rpm 命令
这里是一个比较有用而且不是很多人知道的 rpm 命令使用列表.如果你想到使用过的更多
的内容,请随时联系我们以便把它们收录进来.
rpm -qa --last
这个命令反序列出已安装的软件包和安装时间,因此,最近安装的软件包会被列在前面.
例子:
$ rpm -qa --last | head -14
gnome-python2-gtkhtml2-2.19.1-16.fc9 Thu 17 Jul 2008 11:40:44 PM EDT
gnome-python2-libegg-2.19.1-16.fc9 Thu 17 Jul 2008 11:40:43 PM EDT
gnome-python2-gtkmozembed-2.19.1-16.fc9 Thu 17 Jul 2008 11:40:43 PM EDT
gnome-python2-extras-2.19.1-16.fc9 Thu 17 Jul 2008 11:40:42 PM EDT
kernel-2.6.25.11-93.fc9 Thu 17 Jul 2008 04:01:13 PM EDT
hugin-0.7.0-0.3.20080528svn.fc9 Tue 15 Jul 2008 11:24:37 PM EDT
hugin-base-0.7.0-0.3.20080528svn.fc9 Tue 15 Jul 2008 11:24:35 PM EDT
enblend-3.1-0.5.20080529cvs.fc9 Tue 15 Jul 2008 11:24:34 PM EDT
perl-Image-ExifTool-7.25-2.fc9 Tue 15 Jul 2008 11:24:29 PM EDT
glew-1.5.0-2.fc9 Tue 15 Jul 2008 11:24:28 PM EDT
boost-1.34.1-13.fc9 Tue 15 Jul 2008 11:24:27 PM EDT
libicu-3.8.1-7.fc9 Tue 15 Jul 2008 11:24:25 PM EDT
plotutils-2.5-5.fc9 Tue 15 Jul 2008 11:24:23 PM EDT
libpano13-tools-2.9.12-7.fc9 Tue 15 Jul 2008 11:24:22 PM EDT
rpm -qa --qf "%{size} %{name}.%{arch}\n" | sort -n
这个命令显示系统上的所有软件包的大小(按字节),名字.架构(显示格式)的列表,并按
软件包的大小从小到大的顺序排列.
这个命令在寻找哪些软件包占用比较大的空间时很有用.谨慎使用可以清除系统中不
必要的占用空间的软件包.
例子:
$ rpm -qa --qf "%{size} %{name}.%{arch}\n" | sort -n
22429792 Miro.i386
22495239 xulrunner.i386
23553254 anthy.i386
27332634 fonts-japanese.noarch
28805881 ghostscript.i386
29475842 foomatic.i386
29613520 selinux-policy-targeted.noarch
32793230 gnumeric.i386
36362111 gnome-games.i386
5
Page 6
38401148 gimp.i386
40969098 evolution.i386
41452165 perl.i386
42001812 mono-core.i386
46827945 samba-common.i386
48317271 libgweather.i386
49798328 gutenprint-foomatic.i386
52051447 kernel.i686
52058430 kernel.i686
52071231 kernel.i686
91610549 glibc-common.i386
rmp --showrc
这个命令显示 rpm 资源配置状态,如果你在试图找出在指定的文件中能够使用的变量
定义时,它将非常有用.这个命令的输入非常长而且复杂,使用 less 通过管道查看比较好.
rpm -Va --nofiles --nomd5
这个命令检查你的系统中 rpm 数据库里未解决的包依赖关系,冲突和其他软件包相关
的问题,在一般情况下它不返回任何东西.
rpm --eval <an rpm macro>
这个命令根据你指定的宏或者命令输出 rpm 的返回值.
例子:
$ rpm --eval "%{_arch} %{_bindir}"
i386 /usr/bin
6
Page 7
怎样设置你的软件仓库
概述:
有时你会发现你需要搜集一些 rpm 格式的软件包,把他们放到一个地方,并且能够通过运
行系统的 yum 工具去使用它们.这样做其实很简单.
yum 使用的软件仓库其实就是一个目录.这个目录包含有很多 rpm 软件包和 yum 用来获
得软件包信息(相关性,文件列表等)的"元信息".yum 就可以通过 ftp/http 或者文件的 URI(包括
通过 NFS)获取它.
步骤:
1.搜集一些软件包放到一个目录里.你可以创建任意多个子目录,但是必须有一个存放所有
子目录的顶层目录.我们就在这里创建我们的软件仓库.
2.yum 使用存储在每一个 rpm 包里的信息摘要去完成它的工作.这个摘要信息
由'createrepo'程序创建,如果你没有'createrepo'可以通过以下方式安装:
yum install createrepo
如果你在不使用 rpm 的机器上组建软件仓库,可以从下面的地址下载'createrepo'
http://createrepo.baseurl.org/ 然后手动安装.
安装完'createrepo'之后就可以运行它,它只有一个参数,就是你想创建软件仓库的那个顶层
目录.假如第一步我们创建的目录是/srv/my/repo,我们只需运行:
createrepo /srv/my/repo
你会看到很多内容飞过但是最后应该会以无错结束。最后你应该会有一个叫
做/srv/my/repo/repodata 的目录,该目录至少含有 4 个文件。
3. 为了让 yum 知道你的这个软件仓库,你需要把一个.repo 文件加入到你的 yum 的配置
文件中。在你需要使用这个软件仓库的系统上,在以下目录下创建一个新的文
件:'''/etc/yum.repos.d/'''。文件名可以是任意合法文件名但是文件扩展名必须是以.repo 结尾。
这里是我们将其命名为: 'myrepo.repo'.
在该文件中我们只需要包含以下内容即可:
[myrepo]
name = This is my repo
baseurl = url://to/get/to/srv/my/repo/
这就是在次文件中的所有内容. 其中 'baseurl' 行的内容是机器用来获取软件仓库的路径名。
7
Page 8
如果机器可以直接访问它或者把它作为一个文件系统挂载的话你还可以使用如下的 baseurl:
baseurl = file:///srv/my/repo/
''注意:上面的路径中 file 后是三个反斜杠 (/)而不是两个,上面的写法是正确的。
如果你通过 http 或者 https 服务器访问该文件,你可以使用如下的 baseurl:
baseurl = http://servername/my/repo
更多的关于客户端 repo 配置细节可以在 yum.conf 的帮助页面中找到。
4. 现在当你每次修改诶,删除或者添加一个新的 RPM 包到/srv/my/repo 时你只需要
重新创建一下软件仓库的 metadata 就可以了。步骤和第二步中的一样。
== 更多高级选项==
1. createrepo --update: 有时候你的软件仓库中含有很多的软件包,虽然只是其中的一小
部分有所改动但是你却不必为每个软件包重新产生元数据,这样做明显太浪费时间了。
这就是 re --update 选项诞生的原因。你像之前一样运行 createrepo 命令但是添加了--
update 选项.
例如:
createrepo --update /srv/my/repo
现在 createrepo 只更新那些在上次产生元数据之后被改变,添加或者删除 u 了的项目。
2. createrepo -x package_file_name: 假设你有几个软件包在你的软件仓库目录中,但是你
确实不想被人随便看到,你可以使用 createrepo 命令轻松的运行软件包:
createrepo -x filename -x filename2 -x filename* /srv/my/repo
如果你像知道更多关于使用 createrepo 来创建和维护你自己的软件包仓库的方法请访问
8
Page 9
createrepo 的帮助文件或者本集中的其他文档。
Yum 组和软件仓库
Yum 支持组命令
* grouplist
* groupinfo
* groupinstall
* groupremove
* groupupdate
组从“group”xml 元数据中读取数据,每个软件仓库可选支持组功能。如果 yum 没有一个软
件仓库支持组功能那么所有的组操作都不能工作。
* grouplist
yum grouplist [hidden]
这个操作将为你的系统在两个单独的列表中列出所有已经安装的和可用的组。如果你
使用了 hidden 参数那么所有被设置的组在 xml <uservisible> 标记文件中将被设置为“No”。
* groupinfo
yum groupinfo groupname
该操作将显示每个组的详细信息,包括:描述信息,是必须安装还是默认或者可选安
装包。
* groupinstall, groupupdate
yum groupinstall groupname
9
Page 10
yum groupupdate groupname
尽管以上两个命令有所不同,但是他们执行同样的功能。他们将尝试安装/升级所有
在组中类型为“defalut”或者“mandatory”的包 (默认做此操作)。 (要改变这种类型的包,请
修改 yum.conf 配置文件中的 group_package_types 选项)并且此操作会安装任何安装或升级所
需要的额外依赖关系包。
* groupremove
yum groupremove groupname
这个操作将删除在命名组中的任何类型的所有包,并且所有依赖于该组中的包也会被
删除。
在你的软件仓库中设置属于自己的组
这个过程相当的简单,你只需要做以下两步工作即可::
1. 在组中创建一个 yum 所使用的格式的组文件。
2. 告诉 createrepo 包含你的软件仓库中的该组文件。
第一步
你可以打开一个文本编辑器并且手动创建一个组 xml 文件或者你也可以用 yum-utils 中的
yum-groups-manager 命令来完成。
像下面这样使用 groups-create 命令:
yum-groups-manager -n "My Group" --id=mygroup --save=mygroups.xml --mandatory
yum glibc rpm
之后你将看到一个如下文件:
<!DOCTYPE comps PUBLIC "-//Red Hat, Inc.//DTD Comps info//EN" "comps.dtd">
10
Page 11
<comps>
<group>
<id>mygroup</id>
<default>False</default>
<uservisible>True</uservisible>
<display_order>1024</display_order>
<name>My group</name>
<description></description>
<packagelist>
<packagereq type="mandatory">glibc</packagereq>
<packagereq type="mandatory">rpm</packagereq>
<packagereq type="mandatory">yum</packagereq>
</packagelist>
</group>
</comps>
第二步
要把这个文件包含进软件仓库,只需要告诉 cretaerepo 在创建或者重新创建你自己的软
件仓库的时候使用该文件就可以了。
createrepo -g /path/to/mygroups.xml /srv/my/repo
========================================
========================================
========================================
怎样管理软件仓库
repomanage
这个工具允许你为新的或旧的软件包创建列表以传递给其他的命令。如果你想从一个目
录结构中标记一个指定的软件包集的话,那么该命令很有用。它直接爱软件包上操作,通过
他们的 rpm epoch,版本和发布信息比较软件包。
11
Page 12
例如:
repomanage -k2 --old /some/dir | xargs rm -f
这个操作将列出/some/dir 目录内的陈旧的软件包,同时-k2 命令告诉要抑制版本为 2
的软件包。
reposync
这个工具允许你下载整个远程 yum 软件仓库或者远程软件仓库的一部分。它还将使用一
个本地目录来与远程的软件仓库同步。
示例:
从’updates’软件仓库同步所有软件包到当前目录:
reposync --repoid=updates
仅从 ’updates’软件仓库同步最新的软件包到当前目录:
reposync -n --repoid=updates
同步软件包从 ’updates’和 ’extras’软件仓库到当前目录:
reposync --repoid=updates --repoid=extras
同步所有软件包从 ’updates’软件仓库到 repos 目录:
reposync -p repos --repoid=updates
同步所有的软件仓库至 'localcache' 目录( 每个软件仓库对应自己的路径):
reposync -p localcache
允许插件的软件包同步 (当插件要求访问软件仓库时很有用):
12
Page 13
reposync -l
verifytree
如果你刚刚做了一个 repo 并且你想要验证在你的 repo 中的所有东西都是正确且可以完成
其功能的话,你可以运行 erifytree 命令来检查所有的 repodata 和软件包。
示例:
$ verifytree /home/skvidal/tmp/empty-repoverifytree /home/skvidal/tmp/empty-repo/
Checking repodata:
verifying repomd.xml with yum
verifying filelists checksum
verifying primary checksum
verifying primary_db checksum
verifying other_db checksum
verifying other checksum
verifying filelists_db checksum
Checking groups (comps.xml):
verifying comps.xml with yum
comps file missing or unparseable
发表评论
-
[转]Linux下查看文件和文件夹大小的df和du命令
2012-08-13 10:54 914当磁盘大小超过标准时会有报警提示,这时如果掌握df和du命令是 ... -
编译程序的.deps目录和.Po文件作用
2012-08-04 17:46 0当使用由automake产生的Makefile文件编译程序时, ... -
[转]Linux信号量 sem_t简介
2012-08-02 08:03 3515信号量的数据类型为结构sem_t,它本质上是一个长整型的数。函 ... -
Linux编译安装软件过程中设置环境变量
2012-07-31 20:28 3239Linux下很多软件需要自己由源代码编译出才能使用,特别是使用 ... -
profile bashrc bash_profile 之间的区别和联系【转】
2012-07-31 19:51 1303/etc/profile:此文件为系统 ... -
[转]Vim+cscope+ctags+tags阅读源代码
2012-03-23 10:06 1345[size=small]linux源代码提供了制作cscope ... -
[转]linux tee命令参数及用法详解---读取输入写入文件
2012-03-23 09:20 2021awk命令简介 在shell命令 ... -
[转]在Linux下编译OpenJdk并调试Hotspot
2012-03-23 09:18 4153背景 对于大多数Java程序员来说,JVM就是一个黑盒子,我 ... -
linux头文件和库文件设置问题
2012-03-22 10:01 1582当初在编译时指定的(在~gcc/gcc/collect2.c: ... -
yum命令
2012-03-20 16:22 898yum check-update 检查可更新的所有软件包 y ... -
CentOS yum源
2012-03-20 15:39 9661.如何设置CentOS 5的yum源为上海交通大学网站 修 ...
相关推荐
yellowdog 是一个Linux的distribution,RH将这种升级技术利用到自己的distribution形成了现在的yum,感觉上yum 和apt的原理类似,但是apt是编译代码,执行效率远高于使用python写成的yum。repository是用yum-arch...
** CentOS7下安装yum源及上传下载命令rz、sz安装方法图文详解 ** 在这里将yum的安装方法结合实操...现在yum基本上是linux服务器必备组件。下面将详细介绍CentOS7下安装yum源及上传下载命令rz、sz安装方法。 一、检查
yum 命令 Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次...
之前安装了python3,不小心执行了标题1的卸载命令,没想到yum是用python2做的,python3解析不了python2的语法。导致yum用不了了。没办法只能重新安装。 过程 看了网上很多安装yum的流程,基本都对,但是总是缺少依赖...
之前一直在用ubuntu,安装卸载软件基本上是使用apt-get 这个非常的简单,而且过程中遇到的软件依赖会自动帮我们处理,类似于傻瓜式安装。另外在 Linux 操作系统下,几乎所有的软件都可以通过RPM 进行安装、卸载及...
Linux的基本操作,网络相关的配置命令ifconfig、本地yum源配置的相关
文章目录Linux 软件包管理器 yumyum 语法yum常用命令yum注意事项Linux编辑器-vim使用vi/vim 的基本模式vim正常模式中的命令集vim末行模式命令集Linux编译器-gcc/g++使用程序编译过程gcc如何完成函数库概念Linux调试...
2.有一种方法来安装所有的包,需要一个基本的服务器,使用yum groupinstall命令 3.从最小的安装基本升级你的服务器 # yum groupinstall “Base” 4.升级你的系统Web服务器 # yum groupinstall “Web Server” 5.升级你...
您既可以使用一个选项,也可以在变量中定义daily和hourly密钥,它将在适当的模板中使用。 有关示例,请参见defaults/main.yml 。 请注意,并非所有选项都可以独立配置。 带有独立的daily和hourly命令的选项由*表示...
6.3.2 RPM包管理-yum在线管理-yum命令 6.3.3 RPM包管理-yum在线管理-光盘yum源 6.4.1 软件包管理-源码包管理-源码包与RPM包的区别 6.4.2 软件包管理-源码包管理-源码包安装过程 6.5 软件包管理-脚本安装包 7 用户和...
6.3.2 RPM包管理-yum在线管理-yum命令 6.3.3 RPM包管理-yum在线管理-光盘yum源 6.4.1 软件包管理-源码包管理-源码包与RPM包的区别 6.4.2 软件包管理-源码包管理-源码包安装过程 6.5 软件包管理-脚本安装包 7 用户和...
介绍了如何使用Apt、yum和BitTorrent自动更新系统; 还介绍了gawk、sed、find、sort、bzip2和正则表达式等内容。 内容简介要想真正高效地使用Linux,就必须全面掌握shell和命令行。通常必须购买两本书才能...
关于使用bash和tcsh进行基本的和高级的shell编程的专家指南; 定制shell以及在命令行上交互使用shell的提示和技巧; 提供了vim和emacs的详细指南,目的是为了帮助读者提高编辑效率; 大量练习将有助于...
6.2.4 使用yum命令工具 6.2.5 加速yum的下载 6.2.6 系统自动更新 第7章 账户管理 7.1 账户管理概述 7.1.1 账户实质 7.1.2 用户和组 7.1.3 Linux环境下的账户系统文件 7.2 使用账户管理命令 7.2.1 组管理 7.2.2 用户...
2:rpm包管理 yum在线管理 命令 1:查询 yum list 2:安装 yum -y install 包名 3:升级 yum -y update 包名 4:卸载 yum -y remove 包名 5:软件组管理 yum grouplist 第十部分:备份与恢复 备份与恢复/备份的概述...
文章目录Docker简介Docker的应用场景Docker 的优点Docker的架构Docker 和虚拟机的区别Centos7安装DockerDocker HelloWorld运行原理解析阿里云镜像仓库配置Docker镜像原理图Docker基本命令Docker镜像常用命令Docker...
介绍了如何使用Apt、yum和BitTorrent自动更新系统; 还介绍了gawk、sed、find、sort、bzip2和正则表达式等内容。 内容简介要想真正高效地使用Linux,就必须全面掌握shell和命令行。通常必须购买两本书才能达到...
介绍了如何使用Apt、yum和BitTorrent自动更新系统; 还介绍了gawk、sed、find、sort、bzip2和正则表达式等内容。 内容简介要想真正高效地使用Linux,就必须全面掌握shell和命令行。通常必须购买两本书才能...
介绍了如何使用Apt、yum和BitTorrent自动更新系统; 还介绍了gawk、sed、find、sort、bzip2和正则表达式等内容。 内容简介要想真正高效地使用Linux,就必须全面掌握shell和命令行。通常必须购买两本书才能...