Linux下软件包安装详解

一、概述

现在Linux上软件的安装方式有多种,有源码包编译,软件包管理器,软件包管理器前端工具,通用二进制编译等。源码包,优点是,灵活性和可定制性比较好,缺点是,技术要求高,操作复杂,虽然网上有编译安装软件的文档,也有很多人在使用,也都是默认或者简单配置后编译的。后来出了软件包管理工具RPM,RPM软件包管理软件方便多了但是它的依赖关系让人头疼,所以又推出出了YUM解决了让人头疼的依赖关系。在这里我给大家介绍一下几种常用Linux软件安装方式。

二、软件包的组成

一个软件包安装之后包含多种类型文件,我们先了解一下它的组成与分布的位置

1、二进制文件

分布的目录:/bin,    /sbin,    /usr/bin,   /usr/sbin,   /usr/local/bin,   /usr/local/sbin

2、库文件

分布目录: /lib,   /usr/lib,   /usr/local/lib

3、配置文件

分布目录: /etc

4、帮助文件(通常这里会教你如何进行安装)

手册:README   INSTALL    /usr/share/doc

三、程序安装方式

1、通用二进制编译:别人编译好的,解压之后配置就能使用。

2、软件包管理器:使用rpm命令安装就可以使用了,但安装时要考虑到依赖关系。

3、软件包管理器前端工具:可以自动解决软件包的依赖关系。

4、源码包:源码包就是程序的源代码,必须通过编译器编译成二进制后才能使用,在编译时,软件所需的库文件一定要有,不然编译是不能成功的。

这里着重说一下源码包安装,由于一些特殊的个性化设置,我们需要源码包安装一个服务,我觉得它的基本思路就是遇到问题解决问题,当我们源码包安装一个服务时,最常见的问题就是缺少基础程序,也就是库文件(devel包),这时我们通过yum逐条击破安装,直到服务安装成功即可(不在报错)

源码包安装的基本流程:解压→进入目录→./configure --prefix=自己定义的安装路径(这个时候通常就是之前说的遇到问题的时候,提示缺少环境、依赖关系,用yum逐条安装即可)→make→make install

四、RPM软件包管理工具 

1、基本功能:

打包、安装、查询升级、校验、写在、数据管理(重建)

2、rpm软件包包含:

文件清单、文件存放路径、提供的功能说明、依赖关系

3、数据库:软件包信息,软件包校验

4、源程序命名方式:

name-version.tar.{gz|bz2|xz}

版本号:major.minor.release 主版本号.次版本号.发行号

5、rpm包的命名方式:

name-version-release.arch.rpm

发行号:用于标识rpm包的本身发行号,可还包含所适用的操纵做系统

例如:el6:RHEL6

arch:主机平台

例如:i386、x86_64、amd64、ppc、noarch不区分平台

注意:下载软件包时要注意区分操作系统和平台,不然可能会装不上的

6、rpm分包

主包:核心包

分包:支包

例如:bind

bind-devel

7、常用软件包下载地址:

http://mirrors,sohu.com

http://rpmfind.net

http://rpm.pbone.net

8、安装软件包:rpm -i /path/to/rpm_file1 rpm_file2…

-i|–install    :安装一个新的软件包

-v :显示安装过程,-vv显示更详细的安装过程

-h :以#显示安装进度。一个#号表示2%的进度;

-ivh :通常这几个选项组合使用

–nodeps :安装时忽略依赖关系

–test :测试安装

–replacepkgs :重新安装

9、卸载软件包: rpm -e

10、查询软件包: rpm -q

-qa    :查询所有已安装的软件包

rpm -qa |grep 'pattern'

-qi    :查询软件包的摘要信息

-ql    :查询软件包生成的文件清单:

-qf    :查询某文件由那个软件包安装生成:

-qc    :查询包安装生成的配置文件

-qd    :查询包安装生成的帮助文件

-q –scripts    :查询软件包相关的脚本

preinstall    :安装前脚本

postinstall   :安装后脚本

preuninstall   :卸载前脚本

postuninstall  :卸载后脚本

11、升级

-U:升级+安装

-F:升级

-Uvh

-Fvh

–force     强制安装

–nodeps    不检查依赖关系

注:内核不应该升级,应该尽可能安装,允许多版本并存

12、rpm数据库

rpm database:/var/lib/rpm

重建rpm数据库

rpm –initdb    :新建,不覆盖原有的数据库

rpm –rebuilddb    :覆盖,覆盖原有数据库(常用)

五、YUM软件包管理

1、自行解决依赖关系(比所有方法都方便,yum是Linux最佳实践)

2、repository:仓库,yum源

repodata/    :所在的父目录就是yum仓库,如果当前目录有repodata就说明这是一个yum仓库

RHEL6:的光盘镜像就是一个yum源

例如:把RHEL6的光盘挂载到/media/cdrom,那yum源配置文件里"baseurl=file:///media/cdrom"

3、客户端:

/etc/yum.conf    //yum主配置文件

/etc/yum.repos.d/*.repo    //yum配置文件

全局配置//对所有的yum仓库都生效

# yum主配置文件详解
#/etc/yum.conf
#[main]    //定义yum源名称
#cachedir=/var/cache/yum    //定义yum的缓存目录
#keepcache=0    //保存缓存
#debuglevel=2    //调试级别
#logfile=/var/log/yum.log    //日志文件所在目录
#distroverpkg=redhat-release    //验证rpm发行版所使用的密钥文件
#tolerant=1    //忽略已安装的软件
#exactarch=1    //必须做平台的精确匹配
#obsoletes=1    //是否检查废弃的包
#gpgcheck=1    //是否检查rpm包的签名,验证rpm包来源的合法性
#plugins=1    //是否启用插件
# Note: yum-RHN-plugin doesn't honor this.
#metadata_expire=1h    //缓存文件在本地缓存多长时间
#配置文件 /etc/yum.repos.d/*.repo详解  
#[repo]
#name=Primary Yum repository
#baseurl=http://mirror.sohu.com/fedora-epel/6/i386/    //yum源网址
#enabled={0|1}       //{不开启|开启}
#gpgcheck={0|1}      //{不检查|检查签名}
#gpgkey=file:///etc/pki/RPM-GPG-KEY-redhat-base    //指定验证用的密钥文件

4、常用的yum命令

//查询、清除建立缓存
#yum list {all|installed|available}    :列出软件包 {所有|已安装|可安装}
#yum repolist {all|enabled|disabled}   :列出yum源  {所有|开启的|未开启的}
#yum clean all                         :清除yum缓存
#yum makecache                         :生成yun缓存
//安装
#yum install package_name              :安装软件包,添加 -y可以自动回答yes
#yum reinstall package_name …         :重新安装软件包
#yum groupinstall "package-group_name" :安装一个包组 
//升级   
#yum update package_name               :升级软件包
#yum check-update                      :查询可升级的包
#yum update-to                         :升级到指定的版本
#yum groupupdate "group_name"          :升级包组
//卸载
#yum remove package_name …            :卸载一个软件包
#yum groupremove "group_name"          :卸载一个包组

总结了一下Linux下软件包安装方式,欢迎提问留言。

原文地址:http://blog.51cto.com/13210651/2116545

时间: 2024-12-12 14:11:42

Linux下软件包安装详解的相关文章

Linux 下 Redis 安装详解

redis作为NoSQL数据库的一种应用,响应速度和命中率上还是比较高效的.项目中需要用集中式可横向扩展的缓存框架,做了一点调研,即便redis.memcached存在效率上的差异(具体比较参考http://timyang.net/data/mcdb-tt-redis/),但其实都能满足目前项目的需求:但是redis还是比较风骚的,支持链表和集合操作,支持正则表达式查找key,目前项目缓存的结果大多是链表,如果链表新增或者修改数据的话,redis就体现出了极大的优势(memcached只能重新加

linux 下跟文件系统详解

什么是根文件系统 根文件系统首先是一种文件系统,但是相对于普通的文件系统,它的特殊之处在于,它是内核启动时所mount的第一个文件系统,内核代码映像文件保存在根文件系统中,而系统引导启动程序会在根文件系统挂载之后从中把一些基本的初始化脚本和服务等加载到内存中去运行. 我们首先从主机上所安装的Linux操作系统中了解一些根文件系统的信息.比如在笔者工作的Linux桌面系统中可以得到下面的结果: # mount /dev/hda2 on / type ext3 (rw) none on /proc

linux下IPTABLES配置详解 (防火墙命令)

linux下IPTABLES配置详解 -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 24000 -j ACCEPT-A RH-Firewall-1-INPUT -s 121.10.120.24 -p tcp -m tcp --dport 18612 -j ACCEPT 如果你的IPTABLES基础知识还不了解,建议先去看看. 开始配置 我们来配置一个filter表的防火墙. (1)查看本机关于IPTABLES的

##redis在linux上的安装详解

redis在linux上的安装详解 1.redis介绍 (1)Redis是Remote Dictionary Server(远程数据服务)的缩写,由意大利人antirez(Salvatore Sanfilippo)开发的一款内存高速缓存数据库. (2)该软件由C语言编写,它的数据模型为key-value. (3)它支持存储的calue类型很多,包括String(字符串).hash(哈希).list(链表).set(集合).Zset(有序集合). (4)为了保证效率数据都是缓存在内存中,它也可以周

(转)Linux下PS命令详解

(转)Linux下PS命令详解 整理自:http://blog.chinaunix.net/space.php?uid=20564848&do=blog&id=74654 要对系统中进程进行监测控制,查看状态,内存,CPU的使用情况,使用命令:/bin/ps (1) ps :是显示瞬间进程的状态,并不动态连续: (2) top:如果想对进程运行时间监控,应该用 top 命令: (3) kill 用于杀死进程或者给进程发送信号: (4) 查看文章最后的man手册,可以查看ps的每项输出的含义

Linux下chkconfig命令详解

Linux下chkconfig命令详解 chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. 使用语法:chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/reset] chkconfig在没有参数运行时,显示用法.如果加上服务名,那么就检查这个服务是否在当前运行级启动.如果是,返

转载的 Linux下chkconfig命令详解

Linux下chkconfig命令详解 chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. 使用语法: chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/reset] chkconfig 在没有参数运行时,显示用法.如果加上服务名,那么就检查这个服务是否在当前运行级启动.如果是

linux下scp命令详解

scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令.linux的scp命令可以在linux服务器之间复制文件和目录. scp命令的用处: scp在网络上不同的主机之间复制文件,它使用ssh安全协议传输数据,具有和ssh一样的验证机制,从而安全的远程拷贝文件. scp命令基本格式: scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit] [-o s

&lt;linux下sysctl指令详解&gt;

Sysctl指令是对系统核心参数的设置: 用法: -a 参数列出系统中所有核心设置 当然了这些核心的设置都是文件,存放于/proc/sys/net目录下. 举个有代表性的例子: net.ipv4.icmp_echo_ignore_all = 0      把所有的点改为 / 就可以了.   [[email protected] net]# net.ipv4.icmp_echo_ignore_all = 0 [[email protected] net]# cd ipv4/ [[email pro