Linux 软件包管理
软件包的分类
1,源码包 (能看到源码) 优点:能够看到源码,可以自己修改源码,可以自由的选择所需的功能,源码包是编译安装的,更加适合自己的操作系统,效率更高, 卸载方便。
缺点:安装步骤较多,尤其安装较大软件集合(eg:lamp)时容易出现拼写错误,编译时间长,安装时间长,由于是编译安装,安装一旦报错,新手很难解决。
1.1脚本安装包 安装文件的入口是install.sh 此种软件不多。
2,二进制包(RPM包、系统默认包)
二进制包最大的特点是:经过编译的。好处:省去了编译过程,安装速度快,坏处:经过编译已经无法查看源码,功能选择不灵活,依赖性。
rpm包有两种管理方式
包全名与包名
包全名:操作的包是没有安装的软件包时使用包全名。而且要注意路径。
包名:操作的包是已经安装的软件包时是用包名。是搜索/var/lib/rpm/中的数据库。
一:rpm 命令管理(手动安装rpm包因为依赖关系使得非常麻烦)
是RedHat Package Manager(RedHat软件包管理工具)类似Windows里面的“添加/删除程序”
rmp 安装
语法:rpm -ivh 包全名
选项:-i 安装(install)
-v 显示详细信息(verbose)
-h 显示进度 (hash)
-nodeps 不检测依赖性
rpm 升级
语法:rpm -Uvh 包全名 注意U是大写
-U 升级(upgrade)
rpm 卸载
语法:rpm -e 包名
-e 卸载 (erase)
-nodeps 不检测依赖性
rpm 查询 是否安装
语法:rpm -q 包名
-q 查询(query)
-a 所有安装包
eg: rpm -q httpd 查询httpd 软件包
rpm -qa 查询系统中的所有软件安装包
rpm -qa | grep httpd 查询软件包httpd的安装信息
在所有软件安装包中使用all查询加管道符 实现和上面一样的效果。
eg:rpm -qa | grep jdk 查询软件包jdk的安装信息
注意:像解压版的tomat、mongodb 通过上述命令无法查到。
rpm 查询 安装包的详细信息
语法:rpm -qi 包名
-i查询安装信息(infomation)
-p查询未安装的软件安装包信息(package)
eg: rpm -qi httpd 查询已经安装了的httpd 软件包的详细信息
rpm -qip xxxx(包全名) 查询未安装的相关安装包"xxxx"的全名
rpm 查询 软件包的安装路径
语法:rpm -ql 包名
-l 列表(list)
-p查询未安装的软件安装包信息(package)
rpm 查询 系统文件属于哪个RPM包
语法:rpm -qf 系统文件名
-f 查询系统文件属于哪个软件包(file)
注意:只有通过包安装出来的系统文件才能被查询的到,如果是自己创建的文件是查询不到的。
rpm 查询 软件包的依赖性
语法:rpm -qR 包名 注意R是大写
-R 查询软件安装包的依赖性(requires 依赖)
-p查询未安装的软件安装包信息(package) 查询未安装的软件包时要用包全名
eg:rpm -qR httpd 查询当前系统已经安装了的httpd包的相关依赖包
rpm 包校验
语法:rpm -V 已安装的包名 (verify 校验)
eg:rpm -V httpd 校验httpd软件包
rpm 文件提取 作用提取误操作删除的rpm文件
语法:rpm2cpio 包全名 | cpio -idv .文件
eg:rpm2cpio /media/cdrom/Packages/coreutils-8.4-31.el6.x86_64.rpm | cpio -idv ./bin/ls 提取rpm包下的ls命令到当前目录的/bin/ls目录下
分解上面这条复杂的语句(辅助理解上面的命令)
rpm2cpio 将rpm文件转换成cpio文件
. 表示把指定文件提取到当前目录下
cpio 选项 [文件|设备]
-i copy-in 模式还原
-d 还原时自动新建目录
-v 显示还原过程
依赖相关包(xxx.rpm)、依赖相关模块()、依赖库文件(xxxxx.so.0)
查找模块依赖的相关网站:http://www.rpmfind.net
二:yum 在线管理
配置yum源
yum源的跟路径:/etc/yum.repos.d/ .repo结尾的就是合法的yum源
一:网络yum源(能够联网才可以)
自己设置指定的网络yum源
二:本地光盘yum源
光盘yum源搭建
a,挂载光盘
mount /dev/cdrom /media/cdrom
b,让网络yum源文件失效
方法一:非光盘yum源改为非.repo (.bak)
方法二.repo 文件 enable = 0 失效 enable = 1生效
c,让光盘yum源生效 修改光盘yum源文件
[名称]
name=说明信息
baseurl=file:///media/cdrom/
#配置地址 file://表示是本地文件路径 /表示从跟路径开始 后面剩下的两个file://注释掉
enable=1
#1表示启动 0表示不启用
光盘yum源安装好处:省去了下载的时间,没有网络也能安装。
光盘yum源安装不足:只能用光盘中的rpm文件,不能使用到网上的最新版本。
常用的yum命令
yum 查询
yum list 查询所有的软件包列表
yum search 关键字 根据关键字搜索软件包 关键字是指包名
yum 安装
yum -y install 包名 安装指定的包
install 安装
-y 自动回答yes
eg:yum -y install man 安装man(帮助文档) 包
yum 升级
yum -y update 包名 升级指定的包
update 升级
-y 自动回答yes
注意:升级CentOS服务器内核后需要做一些配置 因此只能在本地操作,远程升级后无法再使用了
yum 卸载
yum -y remove 包名 卸载指定的包
remove 升级
-y 自动回答yes
eg:yum -y remove java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64 卸载java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64软件包。
注意:yum卸载慎用,因为yum卸载相关软件,有可能导致其它软件启动不起来。
yum 软件组管理命令
yum grouplist 软件包组列表
yum groupinstall 软件包组名 安装指定软件包组
yum groupremove 软件包组名 卸载指定软件包组
源码包安装过程
1,安装准备
安装gcc编译器(C语言编译器)
下载源码包 xxxx.tar.gz
源码包的默认保存位置/usr/local/src
源码包的默认安装位置/usr/local/软件名
2,上传到Linux 解压
进入解压后的包中可以看INSTALL 里面有安装启动说明
3,配置、编译、安装(configure、make、make install)
配置./configure 作用
a,定义安装的功能点(定义安装路径)。
b,检测系统环境是否符合要求。
c,将定义好的功能选项和检测系统环境变量的信息都写入Makefile文件用于后续的编辑。
eg:/configure --prefix=/usr/local/apache --enable-module=so
编译 make
如果编译报错了,可以通过make clean清空编译产生的临时文件。
安装
4,源码包卸载(只能直接删除安装文件)
rm -rf /usr/local/apache
5,将源码包安装的软件添加为Linux服务的方法
????
我们该怎么选择源码包还是rpm包 根据源码包和rpm包的优劣来权衡
源码安装和rpm包安装的区别
源码包安装的路径是用户手工自定义安装路径的,一般安装在/usr/local/软件名
rpm包的安装路径是默认安装位置,一般是:下图。可以用(rpm -ql 包名)查询验证
rpm包安装的默认路径(可以改,但是一般不建议改)
rpm包安装的软件启动有以下两种启动方式:
1,服务文件绝对路径启动
/etc/rc.d/init.d/httpd start
是rpm包服务文件的绝对根路径是:/etc/rc.d/init.d/
2,服务启动
service httpd start
service命令是红帽的专有命令
源码包安装的启动方式
/usr/local/apache/bin/apachectl start
源码包的脚本安装方法(类似Windows下的exe文件安装)
解压开有 setup.sh文件
安装:./setup.sh
Linux 服务管理
一:服务的分类
1,rpm包默认安装的服务
1.1,独立的服务
1.2,基于xinetd服务
2,源码安装的服务
二:查询已静安装的服务
1,rpm包安装的服务:
chkconfig --list #查看服务自启动状态,可以查看到所有
2,源码包安装的服务
查看服务安装位置,一般是/usr/local/下
三:服务管理
a,独立安装的服务的管理
/etc/init.d(/etc/rc.d/init.d):启动脚本的位置
/etc/sysconfig/:初始化环境配置文件位置
/etc/:配置文件位置
启动:
a,/etc/init.d/独立服务名 start|stop|status|restart
b,service 独立服务名 start|stop|status|restart
注意:service 命令是红帽专有命令
自启动:
a,chkconfig命令
chkconfig [--level 运行级别] [独立服务名] [on|off]
b,修改/etc/rc.local(/etc/rc.d/rc.local)配置文件
c,使用ntsysv命令管理自启动
注意:ntsysv 命令是红帽专有命令
b,基于xinetd安装的服务的管理(现在越来越少)
/etc/xinetd.d/:基于xinetd服务的启动脚本的位置
/etc/xinetd.conf:xinetd配置文件位置
启动:
修改/etc/xinetd.d/服务名 文件 将disable设置为no
disable=no
重启xinetd服务:service xinetd restart
自启动:
a,chkconfig命令
chkconfig [--level 运行级别] [独立服务名] [on|off]
b,使用ntsysv命令管理自启动
注意:开启基于xinetd的服务时候会将其设置为自启动,关闭基于xinetd的服务的自启动时会关闭该服务。二者是相同的。
c,源码安装的服务的管理
启动:(使用绝对路径)
eg:/usr/local/apache/bin/apachectl start 手动启动apache
说明:INSTALL安装说明文件里面会写明启动方式。
自启动:
a,修改/etc/rc.local(/etc/rc.d/rc.local)配置文件
加入
/usr/local/apache/bin/apachectl start
b,让源码包命令被服务管理命令识别(软链接做法)
第一步:
ln -s /usr/local/apache/bin/apachectl /etc/init.d/apache
第二步:
vi/etc/init.d/apache
# chkconfig: 35 70 30 #运行级别 启动顺序 关闭顺序
# description: Apache
注意:启动顺序和关闭顺序不能和系统现有的服务的启动顺序和关闭顺序相同。
/etc/rc.d/
第三步:
chkconfig --add apache
注意:不推荐这么做,因为这样做了后会导致和yum安装的混淆