您的位置:首页 > 运维架构 > Linux

第十九章、Linux软件管理

2015-08-13 16:48 549 查看
[b]第十九章、Linux软件管理[/b]12_01_Linux软件管理之一 rpm 程序组成部分: 二进制程序 库 配置文件 帮助文件
跟目录结构/boot/etc/usr/var/dev/lib/tmp/bin/sbin/proc/sys/mnt/media/home/root/misc/opt/srv 目录讲解:/usr/share/man:帮助手册
/etc, /bin, /sbin, /lib 系统启动就需要用到的程序,这些目录不能挂载额外的分区,必须在根文件系统的分区上 /usr/ :操作系统核心功能,可以单独分区 bin sbin lib /usr/local:第三方软件 bin sbin lib etc man /opt:古老的方法第三方软件 /proc/sys 这两个目录不能单独分区,默认为空; 辅助目录:/dev: 设备,不能单独分区; 2.6 内核后添加了:udev,动态加载设备文件 /root: 不能单独分区 /var:建议单独分区 存放pid, lock, log文件
/boot:内核,initrd(initramfs) 内核: bootloader负责加载,bootloader加载内核时并没有文件系统,bootloader能够识别文件系统结构 应该单独分区,根文件系统所在分区可能使用LVM,而LVM是内核的功能。

系统启动次序:POST-->BIOS(HD)-->(MBR)bootloader(文件系统结构,ext2, ext3, xfs)-->内核-->根 程序:指令+数据 指令:芯片固化 CPU: 普通指令,特权指令 指令集 软件包管理器的核心功能:1、制作软件包;2、安装、卸载、升级、查询、校验;Linux三大发行版:Redhat, SUSE, Debian 使用的软件包管理工具 Redhat, SUSE: RPM Redhat Package Manager PRM is Package Manager
Debian: dpt
前端工具:yum, apt-get,为了解决依赖关系后端工具:RPM, dpt yum: Yellowdog Update Modifier 12_02_Linux软件管理之二 rpm
rpm命令: rpm: 数据库: /var/lib/rpm, 一旦损坏,rpm工具就会失效 rpmbuild:
软件管理的工作包括:安装、查询、卸载、升级、校验、数据库的重建、验正数据包等工作; rpm命名:包:组成部分 主包: bind-9.7.1-1.el5.i586.rpm 子包: bind-libs-9.7.1-1.el5.i586.rpm bind-utils-9.7.1-1.el5.i586.rpm包名格式: name-version-release.arch.rpm bind-major.minor.release-release.arch.rpm major: 主版本号:重大改进minor: 次版本号:某个子功能发生重大变化release: 发行号:修正了部分bug,调整了一点功能第二个release:rpm包的发行号
源码命名:bind-9.7.1.tar.gz rpm包格式分为: 二进制格式: rpm包作者下载源程序,编译配置完成后,制作成rpm包 bind-9.7.1-1.noarch.rpm bind-9.7.1-1.ppc.rpm
源码格式:需要自己编译,可以发挥硬件最大性能。 rpm的使用: 1、安装rpm -i /PATH/TO/PACKAGE_FILE -h: 以#显示进度;每个#表示2%; -v: 显示详细过程 -vv: 更详细的过程 --nodeps: 忽略依赖关系; --replacepkgs: 重新安装,替换原有安装; --force: 强行安装,可以实现重装或降级; 一般使用:rpm -ivh /PATH/TO/PACKAGE_FILE 2、查询rpm -q PACKAGE_NAME:查询指定的包是否已经安装rpm -qa : 查询已经安装的所有包 rpm -qi PACKAGE_NAME: 查询指定包的说明信息;rpm -ql PACKAGE_NAME: 查询指定包安装后生成的文件列表;rpm -qc PACEAGE_NEME:查询指定包安装的配置文件;rpm -qd PACKAGE_NAME: 查询指定包安装的帮助文件; rpm -q --scripts PACKAGE_NAME: 查询指定包中包含的脚本 rpm -qf /path/to/somefile: 查询指定的文件是由哪个rpm包安装生成的; 如果某rpm包尚未安装,我们需查询其说明信息、安装以后会生成的文件;rpm -qpi /PATH/TO/PACKAGE_FILErpm -qpl /PATH/TO/PACKAGE_FILE 3、升级rpm -Uvh /PATH/TO/NEW_PACKAGE_FILE: 如果装有老版本的,则升级;否则,安装;rpm -Fvh /PATH/TO/NEW_PACKAGE_FILE:如果装有老版本的,则升级;否则,退出; --oldpackage: 降级 4、卸载rpm -e PACKAGE_NAME --nodeps 5、校验rpm -V PACKAGE_NAME 6、重建数据库rpm --rebuilddb: 重建数据库,一定会重新建立; --initdb:初始化数据库,没有才建立,有就不用建立; 7、检验来源合法性,及软件包完整性;加密类型: 1. 对称:加密解密使用同一个密钥 2. 非对称:一对儿密钥,公钥,私钥;公钥隐含于私钥中,可以提取出来,并公开出去; 3. 单向:hash # ls /etc/pki/rpm-gpg/ RPM-GPG-KEY-redhat-release : 红帽公司的公钥 rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release: 导入密钥文件

rpm -K /PAPT/TO/PACKAGE_FILE dsa, gpg: 验正来源合法性,也即验正签名;可以使用--nosignature,略过此项 sha1, md5: 验正软件包完整性;可以使用--nodigest,略过此项
12_03_Linux软件管理之三 yum
yum仓库中的元数据文件:1. primary.xml.gz 所有RPM包的列表; 依赖关系; 每个RPM安装生成的文件列表;
2. filelists.xml.gz 当前仓库中所有RPM包的所有文件列表;
3. other.xml.gz 额外信息,RPM包的修改日志; 4. repomd.xml 记录的是上面三个文件的时间戳和校验和; 5. comps*.xml RPM包分组信息;
如何为yum定义repo文件自己的yum配置文件保存在/etc/yum.respos.d下
[Repo_ID]name=Descriptionbaseurl= ftp:// http:// file:///enabled={1|0}gpgcheck={1|0}gpgkey= yum [options] [command] [package ...]
options:-y: 自动回答为yes--nogpgcheck command:list: 列表 支持glob all available:可用的,仓库中有但尚未安装的 installed: 已经安装的 updates: 可用的升级 clean: 清理缓存 [ packages | headers | metadata | dbcache | all ] repolist: 显示repo列表及其简要信息 all enabled:默认 disabled install: 安装 yum install PACKAGE_NAME
localinstall: 安装本地rpm包,可以自动安装依赖包
update: 升级update_to: 升级为指定版本 remove|erase:卸载 info: infomation,类似 rpm -qi provides| whatprovides: 查看指定的文件或特性是由哪个包安装生成的;
包组管理:groupinfogrouplistgroupinstallgroupremovegroupupdate 使用光盘作为yum源:/media/cdrom/{Server,VT,Cluster,ClusterStorage}baseurl=file:///media/cdrom/Server 如何创建yum仓库:createrepo创建 repodata路径,生成源的元数据文件。 练习:1、将系统安装光盘挂载至/media/yum目录,用其实现yum仓库;2、配置使用http://172.16.0.1/yum/{Server,VT,Cluster,ClusterStorage}为可用yum仓库;
写一个脚本,完成如下功能:说明:此脚本能够为指定网卡创建别名,则指定地址;使用格式如:mkethalias.sh -v|--verbose -i ethX1、-i选项用于指定网卡;指定完成后,要判断其是否存在,如果不存在,就退出;2、如果用户指定的网卡存在,则让用户为其指定一个别名,此别名可以为空;如果不空,请确保其事先不存在,否则,要报错,并让用户重新输入;3、在用户输入了一个正确的别名后,请用户输入地址和掩码;并将其配置在指定的别名上;4、如果用户使用了-v选项,则在配置完成后,显示其配置结果信息;否则,将不显示; 12_04_Linux软件管理之四 yum
RPM安装: 二进制格式: 源程序-->编译-->二进制格式 有些特性是编译选定的,如果编译未选定此特性,将无法使用; rpm包的版本会落后于源码包,甚至落后很多;bind-9.8.7, bind-9.7.2 定制:手动编译安装 编译环境,开发环境开发库,开发工具 Linux: C,GNU: C C,C++: gcc: GNU C Complier, C g++: make: 项目管理工具, makefile: 定义了make(gcc,g++)按何种次序去编译这些源程序文件中的源程序 automake, --> makefile.in --> makefileautoconf, --> configure 编译安装的三步骤:
前提:准备开发环境(编译环境)安装"Development Tools"和"Development Libraries" # tar# cd1. # ./configure --help --prefix=/path/to/somewhere --sysconfdir=/PATH/TO/CONFFILE_PATH 功能:1、让用户选定编译特性;2、检查编译环境;2. # make3. # make install
e.g: 编译安装tengine# tar xf tengine-1.4.2.tar.gz# cd tegnine-1.4.2# ./configure --prefix=/usr/local/tengine --conf-path=/etc/tengine/tengine.conf# make# make install# /usr/local/tengine/sbin/nginx
如果软件安装到了非默认路径下,需要做的修改:1、修改PATH环境变量,以能够识别此程序的二进制文件路径; 修改/etc/profile文件 在/etc/profile.d/目录建立一个以.sh为名称后缀的文件,在里面定义export PATH=$PATH:/path/to/somewhere2、默认情况下,系统搜索库文件的路径/lib, /usr/lib; 要增添额外搜寻路径: 在/etc/ld.so.conf.d/中创建以.conf为后缀名的文件,而后把要增添的路径直接写至此文件中; # ldconfig 通知系统重新搜寻库文件 -v: 显示重新搜寻库的过程3、头文件:输出给系统 默认:/usr/include 增添头文件搜寻路径,使用链接进行: /usr/local/tengine/include/ /usr/include/ 两种方式: ln -s /usr/local/tengine/include/* /usr/include/ 或 ln -s /usr/local/tengine/include /usr/include/tengine4、man文件路径:安装在--prefix指定的目录下的man目录;/usr/share/man 1、man -M /PATH/TO/MAN_DIR COMMAND 2、在/etc/man.config中添加一条MANPATH netstat命令: -r: 显示路由表 -n: 以数字方式显示 -t: 建立的tcp连接 -u: 显示udp连接 -l: 显示监听状态的连接 -p: 显示监听指定的套接字的进程的进程号及进程名
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: