linux 完整学习资料:第五章‘ .进程管理

--




进程管理:



    pstree - display a tree of processes



pstree--打印进程树,可以清楚地看出进程之间的关系


init├─gnome-terminal─┬─bash───pstree--这里可以看到由init进程产生gnome-terminal,再产生bash,再产生pstree命令,进程之间有父进程和子进程的关系

    │                ├─2*[bash]

    │                ├─gnome-pty-helpe

    │                └─{gnome-terminal}



[root@li ~]# cat /proc/5509/status

Name:   vmware

State:  S (sleeping)

SleepAVG:       98%

Tgid:   5509

Pid:    5509

PPid:   2908



[root@li ~]# cat /proc/2908/status

Name:   bash

State:  S (sleeping)

SleepAVG:       98%

Tgid:   2908

Pid:    2908

PPid:   2903


[root@li ~]# cat /proc/2903/status

Name:   gnome-terminal

State:  S (sleeping)

SleepAVG:       98%

Tgid:   2903

Pid:    2903

PPid:   1



[root@li ~]# cat /proc/1/status

Name:   init

State:  S (sleeping)

SleepAVG:       98%

Tgid:   1

Pid:    1

PPid:   0




常用的

ps -ef

ps aux


#firefox &

[root@li ~]# ps -ef |grep firefox

root      3944  3770  0 09:54 pts/1    00:00:00 /bin/sh /usr/lib/firefox-3.0.12/run-mozilla.sh /usr/lib/firefox-3.0.12/firefox

root      3961  3944  4 09:54 pts/1    00:00:01 /usr/lib/firefox-3.0.12/firefox

root      3984  3770  0 09:54 pts/1    00:00:00 grep firefox


--上面的第三句进程是本身自己grep的进程,如果查找时不想看的话,可以使用grep -v去掉,如下:

# ps -ef |grep firefox |grep -v grep


--如果上面的进程卡死,需要使用kill -9 进程号来杀掉进程





# kill -9 3944 3961


-9是参数信号量,以后学到的比较大型的软件的文档都会有关于软件本身的各种信号量的说明


比如:

kill -HUP  (pid)--一般指刷新进程,reload

kill -USR1  (pid)--类似HUP

kill -TERM  (pid)--强制杀掉进程




# kill -9 3944 3961


-9是参数信号量,以后学到的比较大型的软件的文档都会有关于软件本身的各种信号量的说明


比如:

kill -HUP  (pid)--一般指刷新进程,reload

kill -USR1  (pid)--类似HUP

kill -TERM  (pid)--强制杀掉进程





实验:

通过对httpd软件的进程给不同的信号来理解信号的作用

# yum install httpd* -y

# /etc/init.d/httpd start


# ps -ef |grep httpd |grep -v grep--找到它的父PID


# kill -TERM 父PID   --发现httpd服务被强制关闭


再次启动

# kill -HUP  父PID  --发现所有的子PID都会变化,也就是刷新(相当于就是/etc/init.d/httpd reload)




--可以使用下面的两条命令都可以查出httpd有关的进程

[root@li ~]# ps -ef |grep httpd |grep -v grep


[root@li ~]# lsof -i:80



下面几种方式批量杀掉httpd有关的进程

# kill -9  4205 4206 .......    

# ps -ef |grep httpd |grep -v grep|awk '{print $2}'|xargs kill -9

# killall httpd

# pkill httpd

# kill -TERM  父PID   --对比kill -9  父PID

# skill  httpd



--区别:以httpd服务为例,kill -9 父PID后,子进程还在,web仍然可以被访问,并且它们的父进程变为1了。你再使用service httpd start|stop 都会报错


--kill -TERM  父PID,所有的子进程都没了,web不能被访问了







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



linux下的软件包管理




你可以在linux安装任何支持linux平台的软件,

但是现在的软件的发布方式有各种格式,不同的软件有不同的安装方式,

甚至同一个软件在不同的linux系统平台上,在32位和64位上安装的方式都不相同



可以这么说:你在linux下安装过无数的软件,也不代表你会安装所有的软件




开源软件主要的综合发布网站: www.sourceforge.net




下面介绍几种主要的软件包格式的相关管理

.rpm

.src.rpm

源码包






.rpm    红帽包管理 red hat packages management



debian    ubuntu  这两个系统用的不是rpm包

--也就是说.rpm的软件包是红帽发明的一种软件包的格式,使用广泛,但并不是很有的都通用

--但对于软件的开发者来说,他们是用C语言等来开发软件的,并不是.rpm的包,需要经过特殊的打包方式来做成.rpm的包(这个打包方式非常复杂)

--如果你要在linux上安装一个软件,但rhel光盘里没有自带这个包,可以尝试去www.rpmfind.net这个网站去找一下别人帮你打包的rpm包

--如果还是找不到这个软件的rpm格式的包,则只有两种方式,选择其它格式的或者自己打包成rpm格式




yum-3.2.22-20.el5.noarch.rpm


xsane-0.991-5.el5.i386.rpm


nginx-0.8.4.tar.gz--源码包


cacti-0.8.7b-1.fc8.src.rpm--rpm源码包



软件名-版本号-平台架构-包后缀



x86复杂指令集   ,一般是PC平台


非x86精简指令集   一般指大型主机,服务器类型



i386支持386平台,386都是支持后来的586,686的平台,但是反过来686不一定支持386,因为686rpm包它有对平台做优化,那386就不一定支持

noarch   支持任意平台





rpm  -ivh   yum-3.2.22-20.el5.noarch.rpm

-i安装

-v看它的安装过程

-hhash校验



[root@li Server]# rpm -ivh yum-3.2.22-20.el5.noarch.rpm

warning: yum-3.2.22-20.el5.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 37017186

Preparing...                                              ########################################### [100%]

       package yum-3.2.22-20.el5.noarch is already installed

--表示已经安装过了;上面有nokey的报警,就导入光盘的RPM-GPG-KEY文件



rpm --import RPM-GPG-KEY-redhat-release


--导入后,就没有上面的报警信息了




[root@li Server]# rpm -ivh zsh-html-4.2.6-3.el5.i386.rpm

Preparing...                                              ########################################### [100%]

  1:zsh-html                                             ########################################### [100%]

--装成功




[root@li Server]# rpm -ivh mysql-5.0.77-3.el5.i386.rpm

error: Failed dependencies:

       perl(DBI) is needed by mysql-5.0.77-3.el5.i386

--包依赖性




[root@li Server]# rpm -ivh wireshark-1.0.8-1.el5_3.1.i386.rpm

warning: wireshark-1.0.8-1.el5_3.1.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186

error: Failed dependencies:

       libsmi.so.2 is needed by wireshark-1.0.8-1.el5_3.1.i386

--库依赖性


[root@li Server]# rpm -ivh libsmi-devel-0.4.5-2.el5.i386.rpm --再装这个也有依赖性

warning: libsmi-devel-0.4.5-2.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186

error: Failed dependencies:

       libsmi = 0.4.5-2.el5 is needed by libsmi-devel-0.4.5-2.el5.i386

       libsmi.so.2 is needed by libsmi-devel-0.4.5-2.el5.i386


--所以正确的安装顺序为:

[root@li Server]# rpm -ivh libsmi-0.4.5-2.el5.i386.rpm

[root@li Server]# rpm -ivh libsmi-devel-0.4.5-2.el5.i386.rpm

[root@li Server]# rpm -ivh wireshark-1.0.8-1.el5_3.1.i386.rpm




--两个包互相依赖,就要一条命令把两个一起装上





--冲突


[root@li ~]# rpm -ivh /share/soft/VMware-workstation/VMwareTools-6.0.2-59824.i386.rpm

Preparing...                                          ########################################### [100%]

       file /usr/bin/vm-support from install of VMwareTools-7240-59824.i386 conflicts with file from package VMwareWorkstation-6.0.2-59824.i386

       file /usr/lib/libvmci.so.0.0.0 from install of VMwareTools-7240-59824.i386 conflicts with file from package VMwareWorkstation-6.0.2-59824.i386


--上面就是安装虚拟机工具时,和你已经安装的虚拟机软件冲突了





实例安装rhel6.3下的fence-agents


# rpm -ivh /yum/Packages/fence-agents-3.1.5-17.el6.x86_64.rpm

error: Failed dependencies:

/usr/bin/ipmitool is needed by fence-agents-3.1.5-17.el6.x86_64

perl(Net::Telnet) is needed by fence-agents-3.1.5-17.el6.x86_64

perl-Net-Telnet is needed by fence-agents-3.1.5-17.el6.x86_64

pexpect is needed by fence-agents-3.1.5-17.el6.x86_64




# rpm -ivh /yum/Packages/ipmitool-1.8.11-13.el6.x86_64.rpm

# rpm -ivh /yum/Packages/perl-Net-Telnet-3.03-11.el6.noarch.rpm

# rpm -ivh /yum/Packages/pexpect-2.3-6.el6.noarch.rpm

# rpm -ivh /yum/Packages/fence-agents-3.1.5-17.el6.x86_64.rpm





关于一些特殊参数


--force --强制安装

--nodeps--脱离依赖性

--noscript--不要命令的脚本功能

--nodocs--不安装文档文件



rpm -qa--查找系统里已经安装的rpm软件包(不包含源码包等)

rpm -ql--查找一个包将要安装哪些文件,安装到哪里

rpm -qpl--当你接的包名不是rpm -qa查找出来的,需要接p参数;用于一个包在安装之前,就想查看它会安装哪些文件

rpm -qf--查找一个文件是属于哪个包


rpm -qi--查看一个已安装的包的信息

rpm -qpi

rpm -qc--查看配置文件

rpm -qd--查看文档文件



rpm -qi可以查到包的信息,还有这个包由哪一个src.rpm包所编译过来。

红帽的rpm包对应的这些src.rpm包都可以在下面的网址去下载

ftp://www.redhat.com




--包的删除

[root@li ~]# rpm -qa |grep wireshark

wireshark-1.0.8-1.el5_3.1    --必须要用这个名,不能用包的全名

[root@li ~]# rpm -e wireshark-1.0.8-1.el5_3.1


--删除包也会有依赖性







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







# rpm -qip zsh-html-4.2.6-3.el5.i386.rpm |grep Source

Group       : System Environment/Shells     Source RPM: zsh-4.2.6-3.el5.src.rpm

--红帽系统上任意提供的rpm包都是它对应的source rpm包;这种包都可以在红帽的ftp服务器下载



ftp://ftp.redhat.com





/share/soft/monitor/cacti/cacti-0.8.7b-1.fc8.src.rpm

这种包是需要重编译

rpm 源码包,根据你的硬件情况编译成适合你的系统的rpm安装包



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


[root@li SPECS]# pwd

/usr/src/redhat/SPECS--rhel5下的路径


在rhel6下的路径不一样了

# ls /root/rpmbuild/--rhel6下这个路径对应了rhel5下的/usr/src/redhat,但在rhel6里默认这个路径不存在




[root@li SPECS]# ls--目录下没东西

[root@li SPECS]# rpm -qa |grep cacti--没有装这个包


[root@li SPECS]# rpm -ivh /share/soft/monitor/cacti/cacti-0.8.7b-1.fc8.src.rpm --直接rpm -ivh 安装.src.rpm包



--rpm -ivh安装过后,在rhel6下就会产生这个目录了

# ls /root/rpmbuild/

SOURCES  SPECS



[root@li SPECS]# ls--出现了这个文件

cacti.spec

[root@li SPECS]# rpm -qa |grep cacti--还是没有装



--也就是说,.src.rpm包不是直接使用rpm -ivh安装的,它这样安装出现的是一个.spec的宏文件


--这个.spec的宏文件就是定义了它的打包的方式



有时如果你想改变rpm包的功能,可以修改这个.spec的宏文件,

然后再由这个.spec的宏文件去build成拥有你修改功能的新的rpm包


例:修改过.spec后,由下面去编译成rpm包

# rpmbuild -ba /usr/src/redhat/SPECS/cacti.spec



--然后在信息的倒数二十行左右会看到编译成了一个rpm包,再去装它就可以了

Wrote: /usr/src/redhat/RPMS/noarch/cacti-0.8.7b-1.noarch.rpm



--在rhel6下倒数第8行左右会看到下面的

Wrote: /root/rpmbuild/RPMS/noarch/cacti-0.8.7b-1.el6.noarch.rpm




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



[root@li cacti]# rpmbuild --rebuild  cacti-0.8.7b-1.fc8.src.rpm



Wrote: /usr/src/redhat/RPMS/noarch/cacti-0.8.7b-1.noarch.rpm  --提示写入成了rpm包


[root@li noarch]# rpm -ivh cacti-0.8.7b-1.noarch.rpm





[root@li noarch]# rpmbuild --rebuild  /share/soft/iscsi/iscsitarget-0.4.13-2fc5.src.rpm  



Wrote: /usr/src/redhat/RPMS/i386/iscsitarget-0.4.13-2.i386.rpm

Wrote: /usr/src/redhat/RPMS/i386/dkms-iscsi_trgt-0.4.13-2.i386.rpm

Wrote: /usr/src/redhat/RPMS/i386/iscsitarget-debuginfo-0.4.13-2.i386.rpm

--这个包写成了三个rpm包




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





rpm 包


优点:安装方便

    在特别大型的服务器环境下,使用rpm包比较方便


缺点:功能被定死,如果要修改功能,则要修改宏文件

    有些平台不适用

    打包方式特别复杂




源码包source code 需要用编译器去编译的包(如GCC)

优点:可以适应不同平台

    可以定制功能   (使用编译参数去实现)

缺点:安装麻烦,要求技术水平较高,时间长



www.sourceforge.net 网站上大量的开源软件




常用的编译器或解析器:

gcc - GNU project C and C++ compiler


cmake - Cross-Platform Makefile Generator






在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格式分区




问题:

1,假设我在linux下安装rpm版的qq2012版,再安装qq2013版可不可以,会出现什么问题,怎么解决?



2,假设我在linux下安装源码版的qq2012版,默认的安装路径/usr/local和我自定义的安装路径/usr/local/qq各有什么优缺点?



3,在同一个系统上,最多可以安装同一个软件不同版本多少次?如何实现



4,ldconfig能做什么?




5, 关于linux的锁屏,普通用户登录可以用ctrl+alt+L三键齐按来锁屏(需要安装screen-4.0.3-16.el6.x86_64软件包实现),root用户要锁屏,我们借助第三方软件

/share/soft/

xlockmore-5.29.1.tar.bz2

xlockmore-5.41-1.el6.x86_64.rpm

xlockmore-5.41.tar.bz2

安装这个软件后,使用xlock命令就可以root锁屏,输入root密码就可以解锁




6.安装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的字符集查看帮助




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



yum - Yellowdog Updater Modified



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



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



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




CS模式




软件仓库 repository (server)   ------->   客户端






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验证



file:///--三个/

ftp://

http://



--rhel6.3下默认的配置如下

[rhel-source]

name=Red Hat Enterprise Linux $releasever - $basearch - Source

baseurl=ftp://ftp.redhat.com/pub/redhat/linux/enterprise/$releasever/en/os/SRPMS/

enabled=0

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release


--如果你能上网,上面把enabled=0改为enabled=1就可以使用yum





本地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--这是rhel5的本地yum配置示例


[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




--下面的配法是rhel6的配法

[server]

name=rhel6.3

baseurl=file:///yum/

enabled=1

gpgcheck=0

[LoadBalancer]

name=LoadBalancer

baseurl=file:///yum/LoadBalancer

enabled=1

gpgcheck=0

[HighAvailability]

name=HighAvailability

baseurl=file:///yum/HighAvailability

enabled=1

gpgcheck=0

[ScalableFileSystem]

name=ScalableFileSystem

baseurl=file:///yum/ScalableFileSystem

enabled=1

gpgcheck=0

[ResilientStorage]

name=ResilientStorage

baseurl=file:///yum/ResilientStorage

enabled=1

gpgcheck=0




--我的机器上也配置了一个ftp共享的远程yum的软件仓库,你只要把上面的file:///yum/替换成ftp://172.16.2.35/  就可以了





#yum clean all--清除缓存和之前yum的一些信息

--建议每次使用yum前都做一下此命令,类似于刷新


#yum list    --能够把所有的包都列出来就表示成功





--查看现在已经安装了哪些rpm包(源码包不算)

[root@li ~]# rpm -qa |wc -l

1054

[root@li ~]# yum list |grep installed |wc -l

1054





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后,在rhel5下使用system-config-packages来调出图形安装,rhel6就没有这个命令了




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* 就可以了




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




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



--练习安装软件:去sourceforge.net去下载











你可能感兴趣的:(进程管理)