软件包管理
分类:linux基础 热度:

软件包管理
 
安装/查询/卸载
==========================================================
.rpm      .deb
redhat
debian
opensuse
 
一、软件的类型
A. 源码包tarball     需要编译
B. 二进制包 已编译
==========================================================
小知识:常见的二进制包
系统平台         包类型                工具 在线安装(自动解决依赖关系)
RedHat/Centos/Fedora/SUSE   RPM   rpm,rpmbuild             yum
Ubuntu/Debian     DPKG       dpkg         apt
注意: 不管是源码包,还是二进制包,安装时都可能会有依赖关系!
==========================================================
 
二、RPM包管理
获得RPM包途径:
1. RedHat光盘或官方网站 ftp://ftp.redhat.com
2. rpmfind.net
3. 相应软件官方网站如http://www.mysql.com
4. 。。。。。。
 
==========================================================
版本标识:
主版本.次版本.修订版本
 
认识RPM包:
ntfs-3g-2011.4.12-5.el5.x86_64.rpm 套件名
ntfs-3g-2011.4.12-5.el6.i686.rpm 套件名
ntfs-3g-2011.4.12-5.el6.x86_64.rpm 套件名
yum-rhn-plugin-0.9.1-40.el6.noarch.rpm 套件名
yum-utils-1.1.30-14.el6.noarch.rpm 套件名
 
软件包名   版本号(Version)    发布版本(Release)    系统平台
ntfs-3g     2011.4.12 5.el6       i386
ntfs-3g 2011.4.12 5.el6 x86_64
yum-utils 1.1.30       14.el6 noarch
 
[root@yunwei  ~]# uname -m //查看当前系统是多少位
i686
[root@yunwei  ~]# uname -m
x86_64
[root@yunwei  ~]# cat /etc/issue
Red Hat Enterprise Linux Server release 5.8 (Tikanga)
 
[root@yunwei  ~]# cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 5.8 (Tikanga)
 
[root@yunwei  ~]# cat /etc/issue
Red Hat Enterprise Linux Server release 6.3 (Santiago)
==========================================================
tar  归档工具
参数:
-C    指定释放位置
c      创建
x      释放
z      压缩(gz)
t      查看
f      指定文件名
j       bz2
 
RAR           ZIP          7z         gz         bz2
unrar       unzip       7za        tar          tar
 
使用YUM工具管理RPM包
1.支持C/S模式
2.可以自动依赖关系
3.支持群组安装
 
需要手动解决包的依赖关系
mysql
==========================================================
==安装
[root@yunwei  ~]# rpm -ivh dos2unix-3.1-37.el6.x86_64.rpm  套件名
[root@yunwei  ~]# rpm -ivh ntfs-3g-2010.5.22-1.el6.x86_64.rpm 套件名
[root@yunwei  ~]# rpm -Uvh ntfs-3g-2011.4.12-5.el6.x86_64.rpm 套件名
额外选项:
--nomd5 //不检验软件包的签名
--force //强制安装软件包
--nodeps
 
包文件名、系统识别名
 
==查询   
(从本地的rpm数据库)
[root@yunwei  ~]# rpm -q ntfs-3g //查询指定包是否安装
[root@yunwei  ~]# rpm -qa |grep ntfs
[root@yunwei  ~]# rpm -ql ntfs-3g //查询ntfs-3g安装的文件    
[root@yunwei  ~]# rpm -qf /usr/bin/ntfs-3g //查询该文件属于哪个rpm包
[root@yunwei  ~]# rpm -qi ntfs-3g //查询包的information
[root@yunwei  ~]# rpm -qc ntfs-3g //查询某个包安装的配置文件
[root@yunwei  ~]# rpm -qd vsftpd //查安装的帮助文档
 
 
(从rpm套件中查询)
扩展知识: 针对没有安装的包,直接从套件中查询
[root@yunwei  ~]# rpm -e ntfs-3g
[root@yunwei  ~]# rpm -qip ntfs-3g-2011.4.12-5.el6.x86_64.rpm    
[root@yunwei  ~]# rpm -qlp ntfs-3g-2011.4.12-5.el6.x86_64.rpm
[root@yunwei  ~]# rpm -qcp ntfs-3g-2011.4.12-5.el6.x86_64.rpm
[root@yunwei  ~]# rpm -qdp ntfs-3g-2011.4.12-5.el6.x86_64.rpm
 
==卸载
[root@yunwei  ~]# rpm -e ntfs-3g
[root@yunwei  ~]# rpm -e ntfs-3g --nodeps
额外选项: 
--nodeps //忽略依赖关系
 
示例:安装系统光盘上的rpm包
1. 挂载光盘
如果使用的是Gnome,插入光盘会自动挂载
[root@yunwei  ~]# df
/dev/sr0               3632776   3632776         0 100% /media/RHEL_6.4 x86_64 Disc 1
[root@yunwei  ~]# umount /dev/cdrom       (/dev/sr0)     (挂载点名称) //卸载
[root@yunwei  ~]# mkdir /media/cd //建立挂载点
[root@yunwei  ~]# mount /dev/cdrom /media/cd //挂载
mount: block device /dev/cdrom is write-protected, mounting read-only
[root@yunwei  ~]# df
文件系统               1K-块        已用     可用 已用% 挂载点
/dev/sr0               3632776   3632776         0 100% /media/cd
==========================================================
使用iso镜像文件:
[root@dc ~]# mkdir /media/cd
[root@dc ~]# mount -o loop /rhel-server-6.4-x86_64-dvd.iso /media/cd
[root@dc ~]# df 
/rhel-server-6.4-x86_64-dvd.iso   3632776   3632776         0     100% /media/cd
==========================================================
RHEL5 光盘结构:
Server 主仓库,基本仓库
VT 虚拟化相关软件包
Cluster 集群相关软件包
ClusterStorage 集群存储相关的软件gfs
 
RHEL6 光盘结构:
Packages 主仓库,基本仓库
HighAvailability HA集群仓库
LoadBalancer LB集群仓库
ResilientStorage 存储软件仓库
ScalableFileSystem 其它文件系统仓库
 
注:RHEL6手动安装时软件包在光盘的Packages
==========================================================
练习,安装如下软件包:
vsftpd 
samba 
nfs-utils 
httpd 
dhcp 
postfix 
mysql-server 
php
lftp
dos2unix
unix2dos
tigervnc 
 
[root@yunwei  Packages]# pwd
/media/cd/Packages
[root@yunwei  Packages]# rpm -ivh samba-3.0.33-3.37.el5.i386.rpm samba-common-3.0.33-3.37.el5.i386.rpm 
==========================================================
 
rpm工具管理软件包总结:
1. 很难解决包依赖关系
2. 如果某个文件没有,很难知道它由哪个rpm包提供,例如semanage命令是由哪个包提供?
 
==========================================================
使用YUM工具管理RPM包
 
自动解决包的依赖关系
==========================================================
[root@yunwei  ~]# rpm -q yum
yum-3.2.29-30.el6.noarch
[root@yunwei  ~]# rpm -qc yum
/etc/logrotate.d/yum
/etc/yum.conf
/etc/yum/version-groups.conf
 
第一种情况:使用系统光盘作为YUM源(本地源)安装rpm软件
1. 指定YUM源
[root@yunwei  ~]# cd /etc/yum.repos.d/
[root@yunwei  yum.repos.d]# vi rhel6.repo //文件名自定义,必须以.repo结尾
[Server]                                  //仓库ID-可以随便起,但是要保证唯一性
name=Server                                 //仓库名-仓库描述,随便写
baseurl=file:///media/cd/Server                             //仓库位置-yum提供仓库的类型有三种 file http ftp
enabled=1                                 //启用仓库
gpgcheck=0                                 //不检查软件包的签名
 
2. 检查目前可用的仓库
[root@yunwei  ~]# yum clean all //清空缓存(rm -rf /var/cache/yum;sync)
[root@yunwei  ~]# yum repolist    //查询可用的仓库
[root@yunwei  ~]# yum update
 
3. 安装
[root@yunwei  ~]# yum list mysql-server
[root@yunwei  ~]# yum install mysql*
[root@yunwei  ~]# yum -y install mysql-server
[root@yunwei  ~]# yum -y install samba
[root@yunwei  ~]# rpm -e samba
[root@yunwei  ~]# yum -y remove mysql-server     //卸载
[root@yunwei  ~]# yum -y install "mysql*" httpd vsftpd samba dovecot
[root@yunwei  ~]# yum -y update samba
[root@yunwei  ~]# yum -y update
==========================================================
扩展知识:
[root@yunwei  ~]# yum list httpd
[root@yunwei  ~]# yum install httpd
[root@yunwei  ~]# yum install httpd.i386
[root@yunwei  ~]# yum install httpd.x86_64
==========================================================
4. 查询
[root@yunwei  ~]# yum list httpd vsftpd mysql-server
Installed Packages
httpd.x86_64       2.2.15-26.el6   @anaconda-RedHatEnterpriseLinux-201301301459.x86_64/6.4
mysql-server.x86_64 5.1.66-2.el6_3  @Server                 
Available Packages
vsftpd.x86_64       2.2.2-11.el6    Server 
[root@yunwei  ~]# yum info vsftpd //查询包的信息
   
5. 卸载
[root@yunwei  ~]# yum -y remove mysql-server
 
6. 查询某个文件(通常是当前系统中没有)由哪个rpm包提供
示例1:
[root@yunwei  ~]# gnuplot
bash: gnuplot: command not found //没有找到该命令
[root@yunwei  ~]# yum provides gnuplot
Loaded plugins: katello, product-id, security, subscription-manager
Updating certificate-based repositories.
Unable to read consumer identity
gnuplot-4.0.0-14.el5.i386 : 绘制数学表达式和数据的程序。
Repo        : Server
Matched from:
[root@yunwei  ~]# yum -y install gnuplot-4.0.0-14.el5.i386
[root@yunwei  ~]# gnuplot 
 
示例2:
[root@yunwei  ~]# yum -y remove "http*"
[root@yunwei  ~]# htpasswd               //没有找到该命令
bash: htpasswd: command not found
[root@yunwei  ~]# yum provides */htpasswd
Loaded plugins: product-id, refresh-packagekit, security,
              : subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Server/filelists_db                 | 3.7 MB     00:00 ... 
httpd-tools-2.2.15-26.el6.x86_64 : Tools for use with the
                                 : Apache HTTP Server
Repo        : Server
Matched from:
Filename    : /usr/bin/htpasswd
[root@yunwei  ~]# yum -y install httpd-tools-2.2.15-26.el6.x86_64 
 
示例3:
[root@yunwei  newsoft]# createrepo
bash: createrepo: command not found
[root@yunwei  newsoft]# yum provides createrepo
Loaded plugins: katello, product-id, security, subscription-manager
Updating certificate-based repositories.
Unable to read consumer identity
createrepo-0.4.11-3.el5.noarch : 生成一个通用元数据库
Repo        : Server
Matched from:
[root@yunwei  newsoft]# yum -y install createrepo-0.4.11-3.el5.noarch
 
示例4:
[root@yunwei  newsoft]# semanage
bash: semanage: command not found
 
 
作业:指定光盘上其他软件包仓库(5个仓库)
Server
HighAvailability
LoadBalancer
ResilientStorage
ScalableFileSystem
 
[root@yunwei  ~]# cat /etc/yum.repos.d/rhel6.repo 
[Server]
name=Server
baseurl=file:///test/Server
gpgcheck=0
 
[HighAvailability]
name=HighAvailability
baseurl=file:///test/HighAvailability
gpgcheck=0
 
[root@yunwei  ~]# yum -y install ipvsadm
[root@yunwei  ~]# yum -y install luci 
[root@yunwei  ~]# yum -y install gfs2-utils
 
软件包组管理
[root@yunwei  ~]# yum grouplist     //查询当前软件包组的安装情况
[root@yunwei  ~]# yum groupinstall "Ruby Support" //安装软件包组
[root@yunwei  ~]# LANG=C yum grouplist 
[root@yunwei  ~]# LANG=C yum groupinstall "Ruby Support" 
 
第二种情况:自定义YUM源,例如下载的第三方rpm软件包
1. 建立YUM源/soft
[root@yunwei  soft]# pwd
/soft
[root@yunwei  soft]# ls
ntfs-3g-2011.4.12-5.el6.x86_64.rpm
 
[root@yunwei  soft]# yum -y install createrepo //该软件位于Server仓库
[root@yunwei  soft]# createrepo /soft/ //建立依赖关系数据库文件
 
2. 指定YUM源
[root@yunwei  soft]# vim /etc/yum.repos.d/soft.repo
[soft]
name=soft
baseurl=file:///soft
enabled=1
gpgcheck=0
 
3. 安装测试
[root@yunwei  soft]# yum clean all
[root@yunwei  soft]# yum repolist
[root@yunwei  soft]# yum list ntfs-3g
ntfs-3g.x86_64            2:2011.4.12-5.el6            soft
[root@yunwei  soft]# yum -y install ntfs-3g
 
第三种情况:使用其它YUM源
1. EPEL/REMI
2. 163
3. sohu
4. puppet
5. ...
 
例如:EPEL源配置
# rpm -ivh http://dl.fedoraproject.org/pub/epel/6/epel-release-6-8.noarch.rpm
# yum clean all
# yum repolist
# yum -y install nginx
 
YUM扩展知识
==========================================================
YUM缓存:
# vim /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=1
debuglevel=2
 
缓存位置:
# ls /var/cache/yum/x86_64/6Server/epel/packages/
 
yum localinsall:
# yum -y install ntfs-3g
# rpm -ivh /soft/ntfs-3g-2011.4.12-5.el6.x86_64.rpm
# yum -y localinstall /soft/ntfs-3g-2011.4.12-5.el6.x86_64.rpm
 
RPM包签名检查机制:
==RPM工具使用签名检查机制:==
# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release   //导入红帽公钥
# rpm --import /etc/pki/rpm-gpg/*
# rpm -ivh tftp-server-0.49-2.i386.rpm 
    Preparing...     ######################################### [100%]
   1:tftp-server    #########################################  [100%]
额外选项:
--nomd5 //不检验软件包的签名
 
==YUM使用签名检查机制:==
方法一:
[root@yunwei  yum.repos.d]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release 
[root@yunwei  yum.repos.d]# vim rhel6.repo
[Server]
name=Server
baseurl=file:///media/Server
enabled=1
gpgcheck=1 //是否检查软件包的签名
 
方法二:
[root@yunwei  yum.repos.d]# vim rhel6.repo
[Server]
name=Server
baseurl=file:///media/Server
enabled=1
gpgcheck=1 //是否检查软件包的签名
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release  //指定公钥文件
 
额外选项:
--nogpgcheck //不检查软件包的签名
==========================================================
源码包安装:
0.释放     tar
1.定制     ./configure  --prefix=目录      autoinstall      setup
2.编译     make   && make install          注意:需要开发工具支持
3.安装     make  install
 
=====================================================
安装开发工具:
#yum groupinstall  "开发工具"
#yum install make* gcc*
 

上一篇:文件高级权限 下一篇:源码包tarball
猜你喜欢
各种观点
热门排行
精彩图文