应用程序存放位置:
二进制程序:
/bin /sbin
/usr/bin /usr/sbin
/usr/local/bin /usr/local/sbin
库文件(就是功能模块):
/lib /usr/lib
/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf
头文件:
/usr/include
配置文件:
/etc
/etc/httpd/
帮助文件:
/usr/share/man
/etc/man.config
/usr/share/doc
软件管理功能:
安装
卸载
升级
查询
校验
RedHat
Redhat package Manager:RPM(标准的软件管理格式)
rpm格式的软件包的命名:
name-version-release.arch.rpm
子rpm包name-subname
version:
major(主版本号)
minor(次版本号)
release(发行号),bug的修正
release:rpm包的制作者制作的次数
arch:硬件架构,平台
i386、i486、i586、i686,x86_64
noarch(与平台无关)
一个软件包为了管理上的方便,在制作成rpm包时,可以分为多个功能相对独立rpm包
name-version:主包
name-subname-version:子包
name-devel-version:库文件,头文件
二进制程序:有格式,特定于某硬件平台(编译器自身会在软件编译时对软件在特定平台上的运行进行优化)
依赖关系:
需要自动判断依赖关系,又能自动解决依赖关系软件包管理工具:
前端管理工具的出现: yum:yellowdog update modifier(阿黄升级管理器)
linux上软件包的安装途径:
1、rpm包
rpm命令
yum命令
2、源码包
编译安装
3、编译好的二进制压缩包,解压后配置使用
Mysql
NongoDB
rpm命令:
安装
rpm -i PACKAGE1 PACKAGE2 …
升级
rpm -U|-F PACKAGE1 PK2 …
卸载
rpm -e PK_name PK2_name
查询
rpm -q
检验
rpm -V PK_name
rpm包中包含的内容:
要安装的文件
要执行的脚本
pre 安装前要执行的脚本
post 安装后要做收尾工作执行的脚本
preun 卸载之前执行的脚本
postun 卸载完成后执行的脚本
安装:(包与包间的所依赖的东西叫capacity(能力))
rpm -i
-v 显示安装的详细信息,v越多,信息越详细
-h 显示安装进度
--test 安装前的测试,不做安装
--nodeps 忽略依赖关系
--replacepkgs 由于一个已安装的软件包的某些文件被删除时,重装一个软件包,替换
--force 强行安装,无视冲突
卸载:
rpm -e PKG_name
--nodeps
升级:old-->new;new-->old(降级)
rpm
-F:old-->new,无old,则不new;
-U:old-->new,无old,则安装new;
-v
-h
注意:内核不应该升级安装,内核允许多版本并存,所以,可直接安装多个不同版本内核
--oldpackage 降级
查询:
rpm -q PKG_NAME
rpm -qa
rpm -qi PKG_NAME 查询已安装软件包的信息
单向加密:
rpm 包:单向加密:提取数据特征码
1、如果原数据一样,结果一定会一样
2、雪崩效应:原数据有一点点不同,结果大不同
rpm包的验证签名:
用官方的公钥解密这段加密的特征码,得到可靠的官方提供的特征码;
自己再使用同样的方法提取的特征码,并比较和解密出来的特征码是否一致;
rpm -ql PKG_NAME 用于列出此rpm包安装完成后在系统上生成了哪些文件
rpm -qf FILE(路径) 用户查询某文件是由哪个rpm安装包生成的
rpm -qc PKG_NAME 查询rpm包生成的配置文件
rpm -qd PKG_NAME 查询此rpm包生成的文档
rpm -q --scripts PKG_NAME 查询rpm包内置的脚本
rpm -qpl PKG 查询还没有安装的rpm包在安装后会创建哪些文件
rpm -qpi PKG 查询还没有安装的rpm包的详细信息
检验:
rpm -V PKG-NAME 检查某rpm包安装生成的文件有没有被非法改变过;
rpm -k PKG 检查签名
检验签名:
rpm --import 密钥文件(/etc/pki/rpm-gpg)
rpm -k PKG
--nodigest:不检验单向加密的相关内容(sha1,md5)
--nosignature:不检验签名(gpg,dsa)
rpm数据库:(var/lib/rpm)
rpm --initdb 重新初始化丢失的库
--rebuilddb 重建,无论事前是否存在
yum: 自动解决依赖关系
repository:仓库,这里存放的就是yum源数据
获取数据的方法:
1、yum仓库在本地某目录 file:///
2、yum仓库在远程服务器
ftp://
http://
yum仓库包括的内容:
rpm包
repodata/ 只有包含此目录为其子目录的那个路径才可以用作yum源
repomd.xml 此文件保存时间戳
primary.xml.gz 当前yum仓库内每一个rpm包的名字及其彼此间的依赖关系,此外还包含每一个rpm包能够安装生成的文件
filelists.xml.gz 所有rpm包包含的安装生成的文件的文件列表
other.xml.gz 额外信息,主要包含的是rpm包的changellog(改变日志)
yum命令,有许多子命令
/etc/yum.conf
/etc/yum.repos.d/*.repo
/etc/yum/pluginconf.d/
yum的配置文件 分为两段
全局配置
分段配置
[repo]
name=primary yum repository
baseurl=file:///var/yumrepo/server(本地) ftp://192.168.0.254/pub/server(远程服务器上) ftp://username:[email protected]/pub/server(有用户名和密码的服务器)
enabled=1 是否启用这个yum源
gpgcheck=1 是否检测rpm包的签名
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
yum的命令:
repolist 列出来已安装的包
list {installed|available|updates|all}
clean {all|packages|metadata}
清除cache(元数据,rpm包)
grouplist
groupinfo "groupname"
info PKG_NAME 显示指定包的信息
search KEYWORD 查找指定关键字的包
whatprovides FILE 查找某文件是由哪个包安装生成的
provides FILE 查找某文件是由哪个包安装生成的
install PKG_NAME
remove PKG_NAME
update
groupinstall 组名
groupremove 组名
reinstall
check-update检测哪些能升级的包
localinstall
自己创建yum源:
1、yum install createrepo 先安装createrepo命令
2、把rpm包放在一个目录 /var/myum
3、createrepo /var/myum 运行这个命令后/var/myum下会产生repodata目录
4、vi /etc/yum.repos.d/local.repo
软件包源码编译安装:
source code---> binary
编译安装需要的开发环境(包组)
Development Tools
Development Libraries
X Software Development 图形相关
./configure
--help
--prefix=/usr/local/apache 指定安装路径
/usr/local/apache/bin 二进制文件路径
/usr/local/apache/lib 库文件
默认系统只从/lib /usr/lib这两个目录查找库文件,所以为了让系统能找到/usr/local/apache/lib目录上的库文件,就这样操作
*导出库文件路径:/etc/ld.so.conf
1、新建文件/etc/ld.so.conf.d/*.conf,并将当前软件的库文件所在的目录添加至新建的文件
2、运行命令ldconfig [-v],使其生效
*头文件:/usr/include
/usr/local/apache/include
# ln -s /usr/local/apache/include /usr/include/apache
手册文件:/etc/man.config :MANPATH /usr/share/man
/usr/local/apache/man
man -M /usr/local/apache/man httpd 指定位置查找httpd的手册
--sysconfdir= 指定配置文件的安装路径
make
make install