linux06-rpm,yum

源码包 source code 需要用编译器去编译的包(如GCC)
优点:可以适应不同平台
     可以定制功能   (使用编译参数去实现)
   
缺点:安装麻烦,时间长


gcc - GNU project C and C++ compiler


--安装局域网arp扫描工具
[root@li noarch]# tar xvf /share/soft/soft/arp-scan/arp-scan-1.6.tar.gz -C /usr/src/
--解压到/usr/src下


# cd /usr/src/arp-scan-1.6/


[root@li arp-scan-1.6]# ls --确认有configure文件的才能进行编译
acinclude.m4       config.guess  getopt1.c     INSTALL               mt19937ar.c
aclocal.m4         config.h.in   getopt.c      install-sh            NEWS
arp-fingerprint    config.sub    getopt.h      link-bpf.c            obstack.c
arp-fingerprint.1  configure(--确认有此文件)     get-oui       link-dlpi.c           obstack.h
arp-scan.1         configure.ac  get-oui.1     link-packet-socket.c  README
arp-scan.c         COPYING       hash.c        mac-vendor.5          strlcat.c
arp-scan.h         depcomp       hash.h        mac-vendor.txt        strlcpy.c
AUTHORS            error.c       ieee-iab.txt  Makefile.am           TODO
ChangeLog          get-iab       ieee-oui.txt  Makefile.in           utils.c
check-run1         get-iab.1     inet_aton.c   missing               wrappers.c


用rpm -ivh 装libpcap-devel包 --因为安装arp-scan这个包的./configure检测时需要,不安装会报错


[root@li arp-scan-1.6]# rpm -ivh /mnt/Server/libpcap-devel-0.9.4-14.el5.i386.rpm
warning: /mnt/Server/libpcap-devel-0.9.4-14.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing...                ########################################### [100%]
   1:libpcap-devel          ########################################### [100%]


[root@li arp-scan-1.6]# ./configure  --相当于是定制软件功能并检查编译的需求,如果需求不满足,则报错
[root@li arp-scan-1.6]# make  --按照你的定制编译
[root@li arp-scan-1.6]# make install --把做好的软件进行安装

[root@li arp-scan-1.6]# arp-scan -l   --使用这个扫描内网所有主机信息


===========================

 

在linux下默认是不支持ntfs格式的挂载,移动硬盘现在基本都是
ntfs格式,所以使用移动硬盘来拷资料就需要让linux支持ntfs格式,
需要两个第三方包来实现


支持ntfs安装 (要安装两个包 一个fuse包,一个ntfs-3g的包)


[root@li arp-scan-1.6]# tar xvf /share/soft/soft/ntfs/fuse-2.7.4.tar.gz -C /usr/src/
[root@li arp-scan-1.6]# tar xvf /share/soft/soft/ntfs/ntfs-3g-2009.4.4.tgz -C /usr/src/


安装一个源码包的过程:
1,解压到一个目录
2,cd到这个目录,并查看readme,install,FAQ等文件了解安装方法
3,make clean      --清除一些编译信息,使之成为干净的源码
4,./configure  --根据你指定的参数,对编译进行行为控制,产生符合要求的程序,相当是一个检查程序,检查通过会产生makefile文件 
 ./configure --help 查找编译参数
 ./configure --help > /fusehelp.txt
5.make     --根据产生的makefile进行源码编译
6.make install  --把产生的文件安装到需要的地方

增加fuse这个模块
[root@li fuse-2.7.4]# lsmod  |grep fuse 
[root@li fuse-2.7.4]# modprobe fuse
[root@li fuse-2.7.4]# lsmod  |grep fuse
fuse                   49237  0

 

再安装ntfs-3g的包
[root@li fuse-2.7.4]# cd ../ntfs-3g-2009.4.4/  --cd到ntfs-3g包的目录里


[root@li ntfs-3g-2009.4.4]# ./configure; make; make install --三条命令一起写执行编译过程


[root@li ntfs-3g-2009.4.4]# mount --编译安装成功后会看到mount.ntfs-3g命令
mount          mount.fuse     mount.nfs4     mountpoint    
mount.cifs     mount.nfs      mount.ntfs-3g 

 

[root@li ntfs-3g-2009.4.4]# mount.ntfs-3g /dev/sdb2 /media/ --使用方法挂载ntfs格式分区

 

=================================================


安装mplayer   --linux版的mplayer播放器


[root@li arp-scan-1.6]# ls /share/soft/mplayer/
essential-20071007.tar.bz2     mplayer-new.tar.gz       readme.txt --看readme安装
font-arial-iso-8859-1.tar.bz2  OSX-Mod-1.1.tar.bz2.tgz


[root@li ~]# firefox /share/soft/mplayer/readme.txt &
--用firefox打开readme文件,并选择gb2312的字符集查看帮助


--------------------------------------------------------


特殊的包的安装:

二进制包
RealPlayer11GOLD.bin

[root@li src]# ls /share/soft/soft/RealPlayer11GOLD.bin
/share/soft/soft/RealPlayer11GOLD.bin


安装方法为:   ./RealPlayer11GOLD.bin  直接安装
装完后直接用realplay命令启用图形安装 一直点下一步就OK


还有一种特殊的包就是没有安装文件
解压后会看到有一个install.sh   直接运行安装脚本就可以安装了


--安装linux版本qq
# rpm -ivh /share/soft/qq/linuxqq-v1.0.2-beta1.i386.rpm

 

有兴趣的可以课后下载wine,编译安装后,可以用它来在linux运行windows下的硬盘版游戏(需要为硬盘版,就是不要写注册表的那种,并且安装目录为英文)

 

=====================================================


远程挂载相关解决思路:

1。ping 10.1.1.35或 ping 2.2.2.35要通
2。然后arp-scan -l 查看是否有和你相同的IP(默认是扫不到自己的IP)
3。如果有相同IP,则先换一个不冲突的IP
4。/etc/init.d/portmap  restart   --重启portmap,此服务是远程调用服务,在远程挂载时要用到
5.# showmount -e 10.1.1.35   --查看35这台机器上有共享了哪些目录
Export list for 10.1.1.35:
/share/yum  *
/share/soft *


6。# mount 10.1.1.35:/share/soft /mnt   --挂载;但要注意,我共享的目录只有/share/yum和/share/soft,所以只能挂这两个目录(但其实还可以挂他们子目录,但不能挂父目录)


# mount 10.1.1.35:/share/soft/iso /mnt  --正确,可以挂子目录(如果你知道有此子目录的情况下才行)
# mount 10.1.1.35:/share/  /mnt   --错误,不能挂父目录
# mount 10.1.1.35:/share/soft/iso/rhel-5.4-server-i386-dvd.iso  /mnt -o loop   --错误


7,挂载不用后,记得umount /mnt

=============================================

 

yum - Yellowdog Updater Modified


对应的产品最好在官方下载

md5    

为了解决依赖性的问题    debian 分发版产生了   apt来解决依赖性


red hat  分发版     yum    (yellow dog updater)   由 python语言写的  

   
第三方的软件    rhel 4     -   rhel   5.1版或5.2版


vim /etc/yum.repos.d/rhel-debuginfo.repo


[Server] --软件仓库名 --大小写不敏感,随便命名     
name=Red Hat Enterprise Linux $releasever - $basearch - Debug  --标识名
baseurl=ftp://10.1.1.1/Server --软件仓库地址
enabled=1 --是否打开
gpgcheck=0 --gpg验证

 

本地yum源的搭建

[root@li soft]# mount /share/soft/iso/rhel-5.4-server-i386-dvd.iso /mnt/ -o loop
[root@li soft]# mkdir /share/yum
[root@li soft]# cp /mnt/* /share/yum/ -rf

# vim /etc/yum.repos.d/rhel-debuginfo.repo   --yum的配置文件,不一定是要叫这个名字,这个目录下所有以.repo结尾的文件都是配置文件  (但建议不要写多个.repo结尾的文件,有可能会冲突的;不用的暂时改名为非.repo结尾的就可以了)


# mv /etc/yum.repos.d/rhel-debuginfo.repo /etc/yum.repos.d/rhel-debuginfo.repo.bak  --把原文件改名.bak结尾

# vim /etc/yum.repos.d/local.repo

[server]
name=server
baseurl=file:///share/yum/Server   --本地的为file:///  三个/
enabled=1
gpgcheck=0
[cluster]
name=cluster
baseurl=file:///share/yum/Cluster
enabled=1
gpgcheck=0
[clusterstorage]
name=clusterstorage
baseurl=file:///share/yum/ClusterStorage
enabled=1
gpgcheck=0
[vt]
name=vt
baseurl=file:///share/yum/VT
enabled=1
gpgcheck=0


#yum clean all --清除缓存和之前yum的一些信息
#yum list    --能够把所有的包都列出来就表示成功


--查看现在已经安装了哪些rpm包(源码包不算)
[root@li ~]# rpm -qa |wc -l
1054
[root@li ~]# yum list |grep installed |wc -l
1054

 

远程ftpyum源的配置


现在10.1.1.35上已经配置好了ftp服务器:
 登录后路径就可以看到Server,Cluster,ClusterStorage,VT这四个目录

baseurl=file:///share/yum/VT
换成
baseurl=ftp://10.1.1.35/VT

 

[root@li ~]# mv /etc/yum.repos.d/local.repo /etc/yum.repos.d/local.repo.bak

# vim /etc/yum.repos.d/remote_35_ftp.repo

[server]
name=server
baseurl=ftp://10.1.1.35/Server
enabled=1
gpgcheck=0
[cluster]
name=cluster
baseurl=ftp://10.1.1.35/Cluster
enabled=1
gpgcheck=0
[clusterstorage]
name=clusterstorage
baseurl=ftp://10.1.1.35/ClusterStorage
enabled=1
gpgcheck=0
[VT]
name=vt
baseurl=ftp://10.1.1.35/VT
enabled=1
gpgcheck=0


===============================================


yum list |grep installed       --查找已经安装的
yum list |grep -v installed --查找没有安装的


[root@li src]# yum install  mysql* -y  --y参数表示自动确认安装

Installing:
 mysql                i386 5.0.77-3.el5          base 4.8 M
 mysql-bench          i386 5.0.77-3.el5          base 507 k
 mysql-connector-odbc i386 3.51.26r1127-1.el5    base 159 k
 mysql-devel          i386 5.0.77-3.el5          base 2.4 M
 mysql-server         i386 5.0.77-3.el5          base 9.8 M
 mysql-test           i386 5.0.77-3.el5          base 3.7 M
Installing for dependencies:
 libtool-ltdl         i386 1.5.22-6.1            base  37 k
 perl-DBD-MySQL       i386 3.0007-2.el5          base 147 k
 perl-DBI             i386 1.52-2.el5            base 605 k
 unixODBC             i386 2.2.11-7.1            base 832 k


[root@li src]# yum erase  mysql*
[root@li src]# yum remove  mysql*   --这两个一样


=======================================================
Removing:
 mysql        i386 5.0.77-3.el5        installed 7.9 M
 mysql-bench  i386 5.0.77-3.el5        installed 2.6 M
 mysql-connector-odbc
              i386 3.51.26r1127-1.el5  installed 419 k
 mysql-devel  i386 5.0.77-3.el5        installed 5.6 M
 mysql-server i386 5.0.77-3.el5        installed  21 M
 mysql-test   i386 5.0.77-3.el5        installed  27 M
Removing for dependencies:
 perl-DBD-MySQL
              i386 3.0007-2.el5        installed 326 k


-------------------------------------------

yum grouplist  --列出组,或者 配置好yum后,使用system-config-packages来调出图形安装


yum groupinstall "Windows File Server"


yum groupremove       --慎用,有可能因为依赖性的问题把很多系统重要的包给remove掉了

[root@li yum.repos.d]# yum groupinstall 'News Server,DNS Name Server' --同时安装多个组,组名可以直接用鼠标复制下来,如果用手写要注意大小写和空格

 

=====================================================


使用yum的一些例子和常遇到的一些错误:


1,例子:如果用的是英文操作系统,但是忘了装中文支持,或者是装系统时忘了装一些包,但想不起是什么包
# yum list |grep zh   --或者这样查找和中文有关的包


2,system-config-packages    图形调出安装系统时自定义包的界面,然后再装 或者使用 yum grouplist列出组,再yum groupinstall来安装


3,
报下面的错误,表明两个yum冲突了,要关掉一下(system-config-packages此命令打开的图形也会占用yum资源)
Another app is currently holding the yum lock; waiting for it to exit...
  The other application is: system-config-p
    Memory :  33 M RSS (123 MB VSZ)
    Started: Mon Jul  4 15:40:17 2011 - 00:22 ago
    State  : Sleeping, pid: 8454

 

4,报下面这种错误,就绝对是访问的问题;要么是路径写错了,如果是远程的就会是网络不通或者网络冲突
file:///share/yum/cluster/repodata/repomd.xml: [Errno 5] OSError: [Errno 2] No such file or directory: '/share/yum/cluster/repodata/repomd.xml'


5。关于repodata的讨论
[root@li ~]# mount /share/soft/iso/CentOS5.3.iso /mnt/ -o loop   --挂载centos5.3的iso镜像
[root@li ~]# vim /etc/yum.repos.d/centos5.3.repo  --把所有的yum配置改名为非.repo结尾,再创建这个配置文件,写上下面一段
[centos]
name=centos
baseurl=file:///mnt/CentOS/
enabled=1
gpgcheck=0

--但使用yum list时,报下面的错误,找不到repodata目录
file:///mnt/CentOS/repodata/repomd.xml: [Errno 5] OSError: [Errno 2] No such file or directory: '/mnt/CentOS/repodata/repomd.xml'

--总结:说明软件仓库并不是把一堆包放在一个目录,然后在yum的配置文件里写上路径就可以了,它需要一个repodata目录来存放软件信息

--正确的写法为
[centos]
name=centos
baseurl=file:///mnt     --就写这个路径,因为repodata目录在centos里与CentOS目录同级,并不是它的子目录
enabled=1
gpgcheck=0


6,
导入gpg key 使用系统支持非本系统的包,网上软件仓库的网址一般都会有gpg key文件
rpm --import  RPM-GPG-KEY-redhat-release

把上面的centos的配置文件的gpgcheck=0删除,或者改为1
[centos]
name=centos
baseurl=file:///mnt   
enabled=1

然后在安装包时,会报下面的错误
  signture   签名错误,

warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID e8562897


Public key for hesinfo-3.1.0-1.1.i386.rpm is not installed

--使用yum有上面的签名错误(如在rhel5.4上安装centos5.3的包),解决方法为在yum配置文件里加上gpgcheck=0

或者把centos5.3镜像里的key文件导入到系统,导入后就可以成功安装了
# rpm --import RPM-GPG-KEY-CentOS-5  


--补充,现在一些大网站都有这种开源软件的软件仓库(如网易,搜狐),只要能上网,把yum配置文件写对路径就可以了(为http协议)


7。yum 很特殊的一个小问题
--例如我现在的目录下有如下perl开头的包
[root@li amavisd_clamav_spam]# ls perl-*
perl-Archive-Zip-1.23-1.el5.rf.noarch.rpm
perl-BerkeleyDB-0.32-1.el5.rf.i386.rpm
perl-Convert-BinHex-1.119-2.2.el5.rf.noarch.rpm
perl-Convert-TNEF-0.17-3.2.el5.rf.noarch.rpm
perl-Convert-UUlib-1.051-1.2.el5.rf.i386.rpm
perl-File-Temp-0.19-1.el5.rf.noarch.rpm
perl-IO-stringy-2.110-1.2.el5.rf.noarch.rpm
perl-MailTools-2.02-1.el5.rf.noarch.rpm
perl-MIME-tools-5.425-1.el5.test.noarch.rpm
perl-Net-Server-0.97-1.el5.rf.noarch.rpm
perl-Unix-Syslog-1.0-1.el5.rf.i386.rpm


[root@li amavisd_clamav_spam]# yum install perl*
--在这个目录下去yum install perl* 会变成不读取软件仓库里的perl开头的包,而是读取当前目录下的perl开头的包


--解决方法:cd到别的任意目录,再执行yum install perl* 就可以了

 

============================================================


让yum支持只下载软件包,不去安装软件包
# yum install yum-downloadonly -y

只下载不安装: 《--仅仅对网络仓库才生效
# yum install --downloadonly --downloaddir=/tmp/test  unixODBC-devel -y

列出某个包所依赖的软件包
# yum deplist slrn-pull

 

# wget -m -np -k http://10.1.1.35/   --下载我的所有笔记,并转化为本地链接。会有一个index.html主页文件,firefox index.html &打开就可以了

# wget -m -np -k http://10.1.1.35/ule  --这就是只下载ule目录


===============================================

升级软件仓库或者自已做一个软件仓库

1、新建文件夹,把新的软件仓库里涉及的软件放到该目录,里面的软件包,一般要求你必须手工的解决依赖关系

mkdir /share/extra
cp ??.rpm  /share/extra

2、生成软件仓库的软件列表文件

yum install  createrepo -y

createrepo /share/extra  <---扫描并生成,生成的是repodata目录

3、更新yum客户端的配置文件,使用这个新的软件仓库分类
# vim  /etc/yum.repos.d/rhel-debuginfo.repo
[Extra]
name=Extra
baseurl=file:///share/extra
enabled=1
gpgcheck=0

# yum clean all
# yum list

 

你可能感兴趣的:(linux,yum,rpm)