linux软件管理学习笔记
2017-05-13 15:30
369 查看
一、软件主要组成
1.二进制程序 --> /bin /sbin
2.用于导出功能的库和头文件 --> /lib /usr/include
3.配置文件 --> /etc
4.使用帮助 --> /usr/share/man
其中
/etc、/bin、/sbin、 /lib是系统*启动*时就要使用的,必须位于根文件系统中;
/usr/bin、/usr/sbin、/usr/lib 是系统提供的*核心功能*,可以单独分区以便重装系统后直接使用;
/usr/local/bin、/usr/local/sbin、/usr/local/lib、/usr/local/man是*第三方软件*安装的地方,所有相关文件都和系统文件都自成一体,建议单独分区;
######################## UDEV #################################
linux 2.6之前
/dev目录下所有的设备文件都耍预先创建,以备不时之用
linux 2.6.x+改善
udev机制可以动态创建/dev目录下的文件,还引入了设备别名的概念
#################################################################
二、软件包管理器
手工管理软件相关文件太麻烦(主要是卸载不方便),于是就产生了专门管理软件相关文件的软件---软件管理器,如dpt,rpm
主要功能:
1.把bin文件、lib文件、etc文件和man文件打包成一个文件; (rpm-build)
2.维护一个数据库(/var/lib/rpm/*)
追踪所安装的每一个文件,方便卸载的时候完全清除;
软件本身的签名,方便软件校验;(rpm)
文件-->包的查询和包-->文件的查询;
3.安装、查询、卸载、升级、数据库重建,验证数据包
处理依赖关系的前端工具:RPM-->yum,dpt-->apt-get
############################################################################
yum仓库中的元数据文件
1.primary.xml.gz
仓库rpm包列表
依赖关系
每个rpm安装生成的文件列表
2.filelists.xml.gz
当前仓库里所有RPM包的安装生成的文件列表
3.other.xml.gz
RPM包的修改日志
4.repomd.xml
记录上面三个文件的时间戳和校验和
5.comps*.xml
RPM分组信息
############################################################################
三、rpm安装包
1.命名规则:
name-version-release-arch.rmp
如
bind-9.7.1-1.el5.i586.rpm (主功能包)
bind-libs-9.7.1-1.el5.i586.rmp (补充包)
2.类型:
二进制格式 && 源码格式
3.安装
rpm -ivh /path/to/xx.rpm
--nodeps, 忽略依赖安装
--replacepkgs,重新安装
--oldpackage,回退版本安装
--force,不管是不是重新,还是回退,强行安装(do what I said!)
4.查询
rpm -qa, 查询所有已安装软件包;
rpm -q name, 查询软件name是否已经安装;
rpm -qi name, 查询已安装软件包相关介绍信息;
rpm -ql name, 查询软件包安装了哪些文件; (包-->文件)
rpm -qf /path/to/file, 查询文件属于哪个软件包; (文件-->包)
rpm -qc name, 查询软件包安装的配置文件configure;
rpm -qd name, 查询软件包安装的帮助文件document;
rpm -q --scripts name, 查看软件包中包含的安装脚本;
rpm -qip /path/to/package, 将要安装的软件包的信息;
rpm -qlp /path/to/package, 将要安装的软件包会产生的文件列表;
5.升级
rpm -Uvh /path/to/package, 如果对应的软件已安装则升级,否则安装对应的软件包;
rpm -Fvh /path/to/package, 如果对应的软件已安装则升级,否则退出;
--oldpacage, 升级到老版本;
6.卸载
rpm -e name --nodeps, 卸载已安装软件,无视依赖;
7.校验
rpm -V name, 校验已安装软件包
8.来源合法性和完整性校验
来源合法性-->私钥加密数据包的摘要 (dsa,gpg)
完整性-->HASH (sha1,md5)
rpm --import /path/to/gpgfile, 导入密钥文件
rpm -K /path/to/package, 检验软件包
9.重建数据库
rpm --rebuilddb, 重建数据库;
四、yum
作为rpm的前端,为了自动解决rpm依赖而生的
1.定义repo
新建一个.repo文件,放到/etc/yum/repo.d/目录下,并且内容如下:
[repo-id] ;仓库唯一标识
name=Description ;仓库描述信息
baseurl={ftp://|http://|file:///} ;仓库位置信息
enabled={1|0}
gpgcheck=1
gpgkey=/path/to/gpgkey_file
2.yum命令
yum [options] [command] [package ...]
options:
* -y,直接回答yes
* --nogpgcheck
command:
*list (支持glob通配)
all,默认列出所有
available,列出仓库里有但未安装
updates,可用的升级
*clean
清理缓存
*repolist
all,显示所有repo列表及其简要信息
enable,默认只显示启用的repo
disable,显示未启用的repo
*install num,安装软件包
*localinstall /path/to/package, 本地安装rpm,并自动解决依赖关系
*update, update_to,升级
*remove, erase,卸载
*groupinstall, grouplist, groupinfo, groupremove, groupupdate
五、源码安装
1.必要性:
rpm包可能没有提供需要的选项,
rpm版本落后
源码安装可以深度定制
2.步骤:
./configure
make
make install
3.收尾工作
导出二进制文件所在位置到PATH变量中,在/etc/profile.d/xx.sh中输入export PATH=$PATH:/path/to/xxx;
导出所提供的lib所在位置到/etc/ld.so.conf.d/xx.conf文件中,并执行ldconfig -v使其立即能被其它程序使用;
导出lib对应的头文件到/usr/include中,ln -s /path/to/package_include /usr/include/package;
导出man文件路径至MANPATH中(定义在/etc/man.config),或直接使用man -M /path/to/man_dir 指定man文件目录;
1.二进制程序 --> /bin /sbin
2.用于导出功能的库和头文件 --> /lib /usr/include
3.配置文件 --> /etc
4.使用帮助 --> /usr/share/man
其中
/etc、/bin、/sbin、 /lib是系统*启动*时就要使用的,必须位于根文件系统中;
/usr/bin、/usr/sbin、/usr/lib 是系统提供的*核心功能*,可以单独分区以便重装系统后直接使用;
/usr/local/bin、/usr/local/sbin、/usr/local/lib、/usr/local/man是*第三方软件*安装的地方,所有相关文件都和系统文件都自成一体,建议单独分区;
######################## UDEV #################################
linux 2.6之前
/dev目录下所有的设备文件都耍预先创建,以备不时之用
linux 2.6.x+改善
udev机制可以动态创建/dev目录下的文件,还引入了设备别名的概念
#################################################################
二、软件包管理器
手工管理软件相关文件太麻烦(主要是卸载不方便),于是就产生了专门管理软件相关文件的软件---软件管理器,如dpt,rpm
主要功能:
1.把bin文件、lib文件、etc文件和man文件打包成一个文件; (rpm-build)
2.维护一个数据库(/var/lib/rpm/*)
追踪所安装的每一个文件,方便卸载的时候完全清除;
软件本身的签名,方便软件校验;(rpm)
文件-->包的查询和包-->文件的查询;
3.安装、查询、卸载、升级、数据库重建,验证数据包
处理依赖关系的前端工具:RPM-->yum,dpt-->apt-get
############################################################################
yum仓库中的元数据文件
1.primary.xml.gz
仓库rpm包列表
依赖关系
每个rpm安装生成的文件列表
2.filelists.xml.gz
当前仓库里所有RPM包的安装生成的文件列表
3.other.xml.gz
RPM包的修改日志
4.repomd.xml
记录上面三个文件的时间戳和校验和
5.comps*.xml
RPM分组信息
############################################################################
三、rpm安装包
1.命名规则:
name-version-release-arch.rmp
如
bind-9.7.1-1.el5.i586.rpm (主功能包)
bind-libs-9.7.1-1.el5.i586.rmp (补充包)
2.类型:
二进制格式 && 源码格式
3.安装
rpm -ivh /path/to/xx.rpm
--nodeps, 忽略依赖安装
--replacepkgs,重新安装
--oldpackage,回退版本安装
--force,不管是不是重新,还是回退,强行安装(do what I said!)
4.查询
rpm -qa, 查询所有已安装软件包;
rpm -q name, 查询软件name是否已经安装;
rpm -qi name, 查询已安装软件包相关介绍信息;
rpm -ql name, 查询软件包安装了哪些文件; (包-->文件)
rpm -qf /path/to/file, 查询文件属于哪个软件包; (文件-->包)
rpm -qc name, 查询软件包安装的配置文件configure;
rpm -qd name, 查询软件包安装的帮助文件document;
rpm -q --scripts name, 查看软件包中包含的安装脚本;
rpm -qip /path/to/package, 将要安装的软件包的信息;
rpm -qlp /path/to/package, 将要安装的软件包会产生的文件列表;
5.升级
rpm -Uvh /path/to/package, 如果对应的软件已安装则升级,否则安装对应的软件包;
rpm -Fvh /path/to/package, 如果对应的软件已安装则升级,否则退出;
--oldpacage, 升级到老版本;
6.卸载
rpm -e name --nodeps, 卸载已安装软件,无视依赖;
7.校验
rpm -V name, 校验已安装软件包
8.来源合法性和完整性校验
来源合法性-->私钥加密数据包的摘要 (dsa,gpg)
完整性-->HASH (sha1,md5)
rpm --import /path/to/gpgfile, 导入密钥文件
rpm -K /path/to/package, 检验软件包
9.重建数据库
rpm --rebuilddb, 重建数据库;
四、yum
作为rpm的前端,为了自动解决rpm依赖而生的
1.定义repo
新建一个.repo文件,放到/etc/yum/repo.d/目录下,并且内容如下:
[repo-id] ;仓库唯一标识
name=Description ;仓库描述信息
baseurl={ftp://|http://|file:///} ;仓库位置信息
enabled={1|0}
gpgcheck=1
gpgkey=/path/to/gpgkey_file
2.yum命令
yum [options] [command] [package ...]
options:
* -y,直接回答yes
* --nogpgcheck
command:
*list (支持glob通配)
all,默认列出所有
available,列出仓库里有但未安装
updates,可用的升级
*clean
清理缓存
*repolist
all,显示所有repo列表及其简要信息
enable,默认只显示启用的repo
disable,显示未启用的repo
*install num,安装软件包
*localinstall /path/to/package, 本地安装rpm,并自动解决依赖关系
*update, update_to,升级
*remove, erase,卸载
*groupinstall, grouplist, groupinfo, groupremove, groupupdate
五、源码安装
1.必要性:
rpm包可能没有提供需要的选项,
rpm版本落后
源码安装可以深度定制
2.步骤:
./configure
make
make install
3.收尾工作
导出二进制文件所在位置到PATH变量中,在/etc/profile.d/xx.sh中输入export PATH=$PATH:/path/to/xxx;
导出所提供的lib所在位置到/etc/ld.so.conf.d/xx.conf文件中,并执行ldconfig -v使其立即能被其它程序使用;
导出lib对应的头文件到/usr/include中,ln -s /path/to/package_include /usr/include/package;
导出man文件路径至MANPATH中(定义在/etc/man.config),或直接使用man -M /path/to/man_dir 指定man文件目录;
相关文章推荐
- Linux基础学习笔记(Linux软件安装管理)
- Linux学习笔记(4)-软件包管理
- Linux 学习笔记(十一)软件和配置管理
- Linux 学习笔记_6_1.2_RedHat系列软件包管理(中)_RedHat系列软件包管理(中)_源码包安装
- 【Linux学习笔记】Linux_04_软件管理,系统管理
- Linux学习笔记之软件安装管理
- Linux学习笔记12-RPM软件管理
- 实验楼Linux学习笔记(十二)之软件安装管理
- Linux Ubuntu学习笔记_软件管理
- Linux 学习笔记_6_1.3_RedHat系列软件包管理(下)_脚本安装
- Linux Ubuntu学习笔记_软件管理
- linux学习笔记之软件包管理
- Linux之软件包管理学习笔记
- Linux学习笔记——软件包管理
- Linux学习笔记:Linux软件安装管理【图】
- linux系统管理学习笔记之三----软件的安装
- Linux学习笔记三、档案与目录管理
- [linux学习笔记]第2天:时间管理,命令帮助信息,文本查看,权限及用户管理,BASH和变量,脚本
- solaris学习笔记:5.软件包管理