Linux系统配置软件源来安装和更新软件工具。软件源有两种:一是网络源,二是本地源。本质就是一个访问软件资源的地址。如下:

网络源:http://wiki.ubuntu.org.cn/Qref/Source 这个地址下面就有Ubuntu的网络源,进去看看你就能发现那些源不过是一些地址,通过浏览器访问这些地址可以发现里面包含了软件包。

本地源:file:///usr/repo-packages 不难看出目录/usr/repo-packages是放置CentOS软件包的位置,也就是将网络源中的软件包下载下来放到该目录下。

下面以CentOS 6.0为例配置本地yum源。

 

(a)无论哪种源,首先要获得源。

网络源:

163网易yum源:http://mirrors.163.com/.help/CentOS-Base-163.repo中科大yum源:http://centos.ustc.edu.cn/CentOS-Base.repo

sohu的yum源:http://mirrors.sohu.com/help/CentOS-Base-sohu.repo

本地源:http://mirror.symnds.com/distributions/CentOS-vault/6.0/isos/i386/CentOS-6.0-i386-bin-DVD.iso

 

(b)其次将源放到Linux系统的本地目录中

网络源,要求你的Linux系统可以上网下载相应的源:

# cd /home
# wget http://mirrors.163.com/.help/CentOS-Base-163.repo    #下载到home目录

本地源,导入光盘中的软件包:(需将CentOS-6.0-i386-bin-DVD.iso刻录到光盘或者通过虚拟光驱)

# ll /dev | grep cdrom        #查看光驱设备
lrwxrwxrwx. 1 root root           3 May 22 09:56 cdrom1 -> sr0   //光盘设备
crw-rw----. 1 root cdrom    21,   0 May 22 09:56 sg0
brw-rw----+ 1 root cdrom    11,   0 May 22 09:56 sr0
# mkdir /mnt/cdrom
# mount -t iso9660 /dev/cdrom1 /mnt/cdrom  #挂载光盘 或 mount -t iso9660 /dev/sr0 /mnt/cdrom
# cd /mnt/cdrom
# ls
CentOS_BuildTag           repodata
EULA                      RPM-GPG-KEY-CentOS-6
GPL                       RPM-GPG-KEY-CentOS-Debug-6
images                    RPM-GPG-KEY-CentOS-Security-6
isolinux                  RPM-GPG-KEY-CentOS-Testing-6
Packages                  TRANS.TBL
# cd Packages
# mkdir /usr/repo-packages
# cp * /usr/repo-packages
# cp RPM-GPG-KEY-CentOS-6 /usr/repo-packages
# umount /dev/cdrom     # 或者   umount /mnt/cdrom 卸载光盘

本地源,导入U盘中的软件包:(需将Packages放到U盘中)

# fdisk -l

Disk /dev/sda: 21.5 GB, 21474836480 bytes       //sda为电脑第一块硬盘,如果你的电脑只有一块硬盘,那么其他非sda就是U盘
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00003e14


Device Boot      Start         End      Blocks   Id  System		
/dev/sda1   *           1           7       51200   83  Linux   //sda1代表第一块硬盘的第一个主分区		
Partition 1 does not end on cylinder boundary.
/dev/sda2               7         517     4096000   83  Linux   //sda2代表第一块硬盘的第二个主分区
Partition 2 does not end on cylinder boundary.
/dev/sda3             517         774     2064384   82  Linux swap / Solaris //sda3代表第一块硬盘的第三个主分区	
Partition 3 does not end on cylinder boundary.
/dev/sda4             774        2611    14758912    5  Extended //sda4代表第一块一盘的第一个扩展分区	
/dev/sda5             774        2611    14757888   83  Linux  //sda5代表第一块硬盘的第二个主扩展分区


Disk /dev/sdc: 8010 MB, 8010194944 bytes             //sdc为U盘
255 heads, 63 sectors/track, 973 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xcad4ebea


Device Boot      Start         End      Blocks   Id  System
/dev/sdc4   *           1         974     7822424+   b  W95 FAT32       //sdc4代表U盘的第一个扩展分区	
Partition 4 has different physical/logical endings:
   phys=(972, 254, 63) logical=(973, 216, 59)          
# mkdir /mnt/usb
# mount -vfat /dev/sdc4 /mnt/usb           #挂载U盘
# cd /mnt/usb
# ls
# cp -r Packages/* /usr/repo-packages
# umount /mnt/usb          # 或 umount /dev/sdc4 来卸载U盘

关于挂载的几点说明:

Linux将每一个物理设备都映射成了一个文件,这些文件都放在了/dev下面。

光驱映射成的文件就是一个文件名中包含“cdrom”的文件。

U盘映射成的文件是以非sda的sd*开头的文件。

自动挂载命令:mount -a   (这需要配置文件/etc/fstab,来定义需要自动挂载的文件系统)

 

(c)再次,修改Linux系统软件源的配置文件。(修改之前先对要被修改的文件进行备份。如果不备份一旦破坏了该文件,恢复将很麻烦)

# mkdir /etc/yum.repos.d/bak
# cp /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak

这种网络源很明显就是将目录/etc/yum.repos.d/下的*.repo文件替换。

# rm /etc/yum.repos.d/*.repo
># cp /home/*.repo /etc/yum.d/

本地源:

# vi /etc/yum.repos.d/CentOS-Local.repo        #配置本地源,添加以下内容
1 [GuangPan] 
2 name=CentOS-$releasever - Media #自定义名称 
3 baseurl=file:///mnt/cdrom/ #直接使用挂载点路径 或 baseurl=file:///usr/repo-packages/ #使用本地目录的路径
4 gpgcheck=0 #检查GPG-KEY,0为不检查,1为检查 
5 enabled=1 #启用yum源,0为不启用,1为启用
6 gpgkey=file:///usr/repo-packages/RPM-GPG-KEY-CentOS-5 #注意这里的5对应着5.x版本,如果你是6.x版本,要改成6。或者删除这行,之后再来导入。

 

(d)然后,安装软件源的信息生成工具,用来生成软件源中所有工具以及工具之间的依赖。

 

在没有配置好软件源之前,yum命令是不能用来自动安装工具的。

 

所以我们要在软件包的目录下通过rpm -ivh来安装软件包,这时我们需要注意各个软件包之间的依赖关系,这种依赖关系决定了我们用rpm -ivh命令安装具有依赖关系 的工具的顺序。

 

关于软件源信息生成工具createrepo的有3个包,可以根据提示逐个安装。也可以按下列顺序安装

    

第一个先安装:

# rpm -ivh libxml2-python-2.7.6-4.el6.x86_64.rpm

第二个安装:

# rpm -ivh deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm

第三个安装:

# rpm -ivh python-deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm

最后一个安装:

# rpm -ivh createrepo-0.9.8-4.el6.noarch.rpm

(注意:可能版本不一样,去掉版本号之后的部分再通过Tab键在当前路径下找到相应的工具包并自动补全工具包名)

 

(e)最后,清理原来的软件源配置信息(要先结束yum进程:rm -rf /var/run/yum.pid  否则会出现警告信息),生成新的软件源信息文件,并导入软件源KEY文件。

# yum clean all
# createrepo /usr/repo-packages
# rpm --import /usr/repo-packagesRPM-GPM-KEYY-CentOS-5 #注意这里的5对应着5.x版本,如果你是6.x版本,要改成6。
# yum update  #更新源

至此,本地源的搭建已经全部完成,下面我们可以使用本地源来进行软件的安装了。


参考资料:

1.百度文库

2.

....


其他:

安装:yum -y install toolname1 toolname2 ...

卸载:yum -y remove toolname1 toolname2 ...

查询安装版本全名:

# rpm -qa firefox*
    # firefox-3.6.9-2.el6.centos.i686

查询软件安装所在目录:

# rpm -ql firefox-3.6.9-2.el6.centos.i686 | grep firefox$   # 符号$表示以firefox结束