关于源(仓库,repository)
仓库(repository)是一个预备好的目录(本地目录),或是一个网站,包含了软件包(RPM 软件包)和索引文件。
软件管理工具,类似 yum,可以在仓库中自动地定位并获取正确的 RPM 软件包。这样,您就不必手动搜索和安装新应用程序和升级补丁了。只用一个命令,您就可以更新系统中所有软件,也可以根据指定搜索目标来查找安装新软件。
有一系列的服务器,为每个版本的 Fedora 分别提供了一些仓库。常用的这样的服务器有:
台灣義守大學的Mirror站
上海交通大学的Mirror站
添加上海交通大学的源
其实就是添加一个源地址描述文件,系统中所有源地址描述文件都放在/etc/yum.repos.d/目录下,文件后缀为.repo。
软件管理工具(我的系统中的是yum)能够根据这些文件从仓库里(服务器上)找到索引文件。然后分别下载这些索引文件到/var/cache
/yum/这个目录下面。这些索引文件中有该仓库中最新的RPM软件包的记录,当然还有软件的依赖关系等等的描述。软件管理工具对比该索引文件和系统中安
装了的软件包,就能够知道那些软件包有跟新。这时候就会提醒你是否要从仓库中下载这些软件包跟新。
编辑一个.repo文件/etc/yum.repos.d/sjtu.repo
然后把下面的内容复制到打开的 sjtu.repo 中:
- [Fedora-ftp.sjtu.edu.cn]
- name=Fedora 12 - i386
- baseurl=http://ftp.sjtu.edu.cn/fedora/linux/releases/12/Fedora/i386/os/
- enabled=1
- gpgcheck=0
- gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora
- [Everything-ftp.sjtu.edu.cn]
- name=Everything 12 - i386
- baseurl=http://ftp.sjtu.edu.cn/fedora/linux/releases/12/Everything/i386/os/
- enabled=1
- gpgcheck=0
- gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora
- [updates-ftp.sjtu.edu.cn]
- name=Fedora updates
- baseurl=http://ftp.sjtu.edu.cn/fedora/linux/updates/12/i386/
- enabled=1
- gpgcheck=0
- gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora
这里一共有三个源的地址,分别对应于Fedora-ftp.sjtu.edu.cn,Everything-
ftp.sjtu.edu.cn,updates-ftp.sjtu.edu.cn。我们可以看到,在/var/cache/yum下面有对应的三个文件
夹,分别存放从这三个源中下载的索引文件和RPM软件包。
我的系统是fedora 12 i386,所以name=fedora 12 - i386。
然后执行yum makecache,这其实就是软件管理工具yum从这三个站点(或者说仓库)下载索引文件,对比更新。如最开始所说的过程。
使用系统安装的iso文件作为源
如果没有网络,或者网速很差,手头又有系统安装的iso文件,可以使用该iso文件作为我们的源。
同上,在/etc/yum.repo.d/目录下创建一个.repo文件,例如,我创建了一个文件dvd_iso.repo,编辑内容如下:
- [dvd_iso]
- name = install from dvd_iso
- baseurl = file:///mnt/cdrom/
- enable = 1
- gpgcheck=0
baseurl =
file:///mnt/cdrom/和上面添加上海交大源中指明源的路径的含义相同。我们只需要将iso文件mount到/mnt/cdrom文件夹下
面,就能够使用这个iso文件中的RPM软件包了。(个人感觉,这就是使用red hat 9 的system-config-packages
命令或者添加/删除程序,再安装软件的时候,会提示你插入光碟。刚开始,不了解fedora现在的软件包管理方法,就只想着从iso添加软件。这个就是那
个一个相同的方法。)
安装第三方仓库 rpmfusion
下面两行命令,有两个作用:
1.在/etc/yum.repo.d/目录下面创建了rpm fusion的源描述文件
2.在/etc/pki/rpm-gpg/目录下面安装了安装rpm fusion
rpm -ivh
rpm -ivh
关于yum
与apt功能类似的rpm包管理系统,那就是yum。
yum的宗旨是自动化地升级,安装/移除rpm包,收集rpm包的相
关信息,检查依赖性并自动提示用户解决。yum的关键之处是要有可靠的repository,顾名思义,这是软件的仓库,它可以是http或ftp站点,
也可以是本地软件池,但必须包含rpm的header,header包括了rpm包的各种信息,包括描述,功能,提供的文件,依赖性等.正是收集了这些
header并加以分析,才能自动化地完成余下的任务。
首 先,yum
update,这一步是必须的,yum会从服务器的header目录下载rpm的header,放在本地的缓存中,这可能会花费一定的时间,但比起yum
给我们带来方便,这些时间的花费又算的了什么呢?header下载完毕,yum会判断是否有可更新的软件包,如果有,它会询问你的意见,是否更新,还是说
y吧,把系统始终up to
date总是不错的,这时yum开始下载软件包并使用调用rpm安装,这可能要一定时间,取决于要更新软件的数目和网络状况,万一网络断了,也没关系,再
进行一次就可以了。升级完毕,以后每天只要使用yum check-update检查一下有无跟新,如果有,就用yum
update进行跟新,时刻保持系统为最新,堵住一切发现的漏洞。
1.列出所有可更新的软件清单
命令:yum check-update
2.安装所有更新软件
命令:yum update
3.仅安装指定的软件
命令:yum install 软件名
例如:yum install gcc
4.仅更新指定的软件
命令:yum update 软件名
例如:yum update gcc
注:其实,如果系统已经安装了该软件,yum install和yum update达到的效果是一样的,他会检查在仓库里是否有该软件更新的版本。
5.列出所有可安裝的软件清单
命令:yum list
6.删除软件
命令:yum remove xxx,同安装一样,yum也会查询数据库,给出解决依赖关系的提示。
7.使用YUM查找软件包
命令:yum search
8.列出所有可更新的软件包
命令:yum list updates
9.列出所有已安装的软件包
命令:yum list installed
10.列出所有已安装但不在 Yum Repository 內的软件包
命令:yum list extras
11.列出所指定的软件包
命令:yum list 软件包
12.使用YUM获取软件包信息
命令:yum info 软件包
13.列出所有软件包的信息
命令:yum info
14.列出所有可更新的软件包信息
命令:yum info updates
15.列出所有已安裝的软件包信息
命令:yum info installed
16.列出所有已安裝但不在 Yum Repository 內的软件包信息
命令:yum info extras
17.列出软件包提供哪些文件
命令:yum provides
前面说过,在执行yum update命令的时候,这一步就是yum会从服务器的header目录下载rpm的header,放在本地的缓存中。
例如,我的就是存放在下面的目录下:
[root@localhost 12]# pwd
/var/cache/yum/i386/12
[root@localhost 12]# ls
dvd_iso livna rpmfusion-nonfree-updates
Everything-ftp.sjtu.edu.cn rpmfusion-free updates
fedora rpmfusion-free-updates updates-ftp.sjtu.edu.cn
Fedora-ftp.sjtu.edu.cn rpmfusion-nonfree
[root@localhost 12]# du -sh *
25M dvd_iso
120M Everything-ftp.sjtu.edu.cn
129M fedora
25M Fedora-ftp.sjtu.edu.cn
8.0K livna
3.0M rpmfusion-free
3.5M rpmfusion-free-updates
624K rpmfusion-nonfree
1.1M rpmfusion-nonfree-updates
387M updates
67M updates-ftp.sjtu.edu.cn
yum就是根据存放在这里的这些rpm的header来检测系统中安装的软件(rpm软件包)是不是最新版本,需不需要update.
如果我们觉得它们占用了磁盘空间,可以使用yum clean指令进行清除,更精确 的用法是yum clean headers清除header,yum clean packages清除下载的rpm包,yum clean all一 股脑儿端
1.清除缓存目录(/var/cache/yum)下的软件包
命令:yum clean packages
2.清除缓存目录(/var/cache/yum)下的 headers
命令:yum clean headers
3.清除缓存目录(/var/cache/yum)下旧的 headers
命令:yum clean oldheaders
4.清除缓存目录(/var/cache/yum)下的软件包及旧的headers
命令:yum clean, yum clean all (= yum clean packages; yum clean oldheaders)
注意,在这个cache文件夹下,其实,对应这/etc/yum.repo.d/下面的每一个仓库描述文件(或者叫做源描述文件),如果你修改或者删除了了/etc/yum.repo.d/下面的这些文件,这yum clean 就没办法清除这些文件了。
关于rpm
rpm 常用命令
1.安装一个包
# rpm -ivh
2.升级一个包
# rpm -Uvh
3.移走一个包
# rpm -e
4.安装参数
--force 即使覆盖属于其它包的文件也强迫安装
--nodeps 如果该RPM包的安装依赖其它包,即使其它包没装,也强迫安装。
5.查询一个包是否被安装
# rpm -q
6.得到被安装的包的信息
# rpm -qi
7.列出该包中有哪些文件
# rpm -ql
8.列出
服务
器上的一个文件属于哪一个RPM包
#rpm -qf
9.可综合好几个参数一起用
# rpm -qil
10.列出所有被安装的rpm package
# rpm -qa
11.列出一个未被安装进系统的RPM包文件中包含有哪些文件?
# rpm -qilp
一、安装
命令格式:
rpm -i ( or --install) options file1.rpm ... fileN.rpm
参数:
file1.rpm ... fileN.rpm 将要安装的RPM包的文件名
详细选项:
-h (or --hash) 安装时输出hash记号 (``#'')
--test 只对安装进行测试,并不实际安装。
--percent 以百分比的形式输出安装的进度。
--excludedocs 不安装软件包中的文档文件
--includedocs 安装文档
--replacepkgs 强制重新安装已经安装的软件包
--replacefiles 替换属于其它软件包的文件
--force 忽略软件包及文件的冲突
--noscripts 不运行预安装和后安装脚本
--prefix 将软件包安装到由 指定的路径下
--ignorearch 不校验软件包的结构
--ignoreos 不检查软件包运行的操作系统
--nodeps 不检查依赖性关系
--ftpproxy 用 作为 FTP代理
--ftpport 指定FTP的端口号为
通用选项
-v 显示附加信息
-vv 显示调试信息
--root 让RPM将指定的路径做为"根目录",这样预安装程序和后安
装程序都会安装到这个目录下
--rcfile 设置rpmrc文件为
--dbpath 设置RPM 资料库存所在的路径为
二、删除
命令格式:
rpm -e ( or --erase) options pkg1 ... pkgN
参数
pkg1 ... pkgN :要删除的软件包
详细选项
--test 只执行删除的测试
--noscripts 不运行预安装和后安装脚本程序
--nodeps 不检查依赖性
通用选项
-vv 显示调试信息
--root 让RPM将指定的路径做为"根目录",这样预安装程序和后安装
程序都会安装到这个目录下
--rcfile 设置rpmrc文件为
--dbpath 设置RPM 资料库存所在的路径为
三、升级
命令格式
rpm -U ( or --upgrade) options file1.rpm ... fileN.rpm
参数
file1.rpm ... fileN.rpm 软件包的名字
详细选项
-h (or --hash) 安装时输出hash记号 (``#'')
--oldpackage 允许"升级"到一个老版本
--test 只进行升级测试
--excludedocs 不安装软件包中的文档文件
--includedocs 安装文档
--replacepkgs 强制重新安装已经安装的软件包
--replacefiles 替换属于其它软件包的文件
--force 忽略软件包及文件的冲突
--percent 以百分比的形式输出安装的进度。
--noscripts 不运行预安装和后安装脚本
--prefix 将软件包安装到由 指定的路径下
--ignorearch 不校验软件包的结构
--ignoreos 不检查软件包运行的操作系统
--nodeps 不检查依赖性关系
--ftpproxy 用 作为 FTP代理
--ftpport 指定FTP的端口号为
通用选项
-v 显示附加信息
-vv 显示调试信息
--root 让RPM将指定的路径做为"根目录",这样预安装程序和后安装程序都会安装到这个目录下
--rcfile 设置rpmrc文件为
--dbpath 设置RPM 资料库存所在的路径为
四、查询
命令格式:
rpm -q ( or --query) options
参数:
pkg1 ... pkgN :查询已安装的软件包
详细选项
-p (or ``-'') 查询软件包的文件
-f 查询属于哪个软件包
-a 查询所有安装的软件包
--whatprovides 查询提供了 功能的软件包
-g 查询属于 组的软件包
--whatrequires 查询所有需要 功能的软件包
信息选项
显示软件包的全部标识
-i 显示软件包的概要信息
-l 显示软件包中的文件列表
-c 显示配置文件列表
-d 显示文档文件列表
-s 显示软件包中文件列表并显示每个文件的状态
--scripts 显示安装、卸载、校验脚本
--queryformat (or --qf) 以用户指定的方式显示查询信息
--dump 显示每个文件的所有已校验信息
--provides 显示软件包提供的功能
--requires (or -R) 显示软件包所需的功能
通用选项
-v 显示附加信息
-vv 显示调试信息
--root 让RPM将指定的路径做为"根目录",这样预安装程序和后安装程序都会安装到这个目录下
--rcfile 设置rpmrc文件为
--dbpath 设置RPM 资料库存所在的路径为
五、校验已安装的软件包
命令格式:
rpm -V ( or --verify, or -y) options
参数
pkg1 ... pkgN 将要校验的软件包名
软件包选项
-p Verify against package file
-f 校验所属的软件包
-a Verify 校验所有的软件包
-g 校验所有属于组 的软件包
详细选项
--noscripts 不运行校验脚本
--nodeps 不校验依赖性
--nofiles 不校验文件属性
通用选项
-v 显示附加信息
-vv 显示调试信息
--root 让RPM将指定的路径做为"根目录",这样预安装程序和后安装程序都会安装到这个目录下
--rcfile 设置rpmrc文件为
--dbpath 设置RPM 资料库存所在的路径为
六、校验软件包中的文件
语法:
rpm -K ( or --checksig) options file1.rpm ... fileN.rpm
参数:
file1.rpm ... fileN.rpm 软件包的文件名
Checksig--详细选项
--nopgp 不校验PGP签名
通用选项
-v 显示附加信息
-vv 显示调试信息
--rcfile 设置rpmrc文件为
七、其它RPM选项
--rebuilddb 重建RPM资料库
--initdb 创建一个新的RPM资料库
--quiet 尽可能的减少输出
--version 显示RPM的当前版本