iojsioi 发表于 2019-2-17 09:20:43

Linux初级运维(十四)——Linux软件管理

  一、软件包管理

  1、应用程序:
  程序,Architecture

  C语言:源代码-->(编译)二进制格式

  脚本:解释器(二进制程序)

  源代码--> 编译-->链接-->运行

  程序:

  库:静态动态

  静态链接   动态链接

  2、程序组成部分:

  二进制程序

  库

  配置文件

  帮助文件

  /boot :存放内核,initrd(initramfs)

  /etc:存放配置文件

  /usr

  /var:是外围的文件系统,存放日志等文件,建议单独分区

  /dev :设备目录,不能单独分区;

  /lib :存放库文件

  /tmp

  /bin :存放二进制文件

  /sbin:存放二进制文件

  /proc

  /sys

  /mnt

  /media

  /home

  /root ;不能单独分区

  /misc

  /opt

  /srv

  /etc , /bin ,/sbin, /lib, /usr/share/man:存放帮助文件
  系统启动就需要用到以前的程序,这些目录不能挂载额外的分区,必须在根文件系统的分区上。

  /usr/      bin   sbin   lib      操作系统核心功能,可以单独分区      

  系统启动顺序:POST-->BIOS(HD)-->(MBR)bootloader(文件系统结构)-->内核

  3、程序: 指令+ 数据

  指令:芯片

  CPU:普通指令,特权指令

  指令集

  C语言:

  Powerpc :二进制格式

  4、软件包管理器:

  打包成一文件:二进制程序,库文件,配置文件,帮助文件

  生成数据库,追踪所安装的每一个文件

  软件包管理器的核心功能:

  (1)制作软件包;(2)安装、卸载、升级、查询、校验;

  前段工具:yum ,apt-get

  后端工具:RPM,dpt

  二、rpm命令:
  rpm:管理命令

  数据库 /var/lib/rpm

  rpmbuild:建立rpm

  安装、查询、卸载、升级、校验、数据库的重建等工作:

  1、rpm命名

  包:组成部分

  主包:

  bind-version例如:bind-9.7.1-1.i586.el5.rpm

  子包:

  例如:bind-libs-9.7.1-1.i586.el5.rpm   例如:bind-utils-9.7.1-1.i586.el5.rpm

  包名格式:

  name-version-release.arch.rpm

  bind-major.minor.release-release.arch.rpm

  主版本号:重大改进

  此版本号:某个子功能发生重大变化

  发行号:修正了部分bug,调整了一点功能

  2、rpm包

  二进制格式

  rpm包作者下载源程序,编译配置完成后,制作成rpm包

  bind-9.7.1-1.x86_64

  rpm:

  rpm -i/PATH/TO/PACKAGE_FILE

  -h : 以#显示进度,每个#表示2%

  -v:显示详细过程

  -vv:更详细的过程
  rpm -ivh /PATH/TO/PACKAGE_FILE

  --nodeps: 忽略依赖关系

  --replacepkgs:重新安装,替换原有安装

  --force:强制安装,可以实现重装或降级
  3、rpm查询

  rpm -q PACKAGE_NAME:查询指定的包是否已经安装

  rpm -qa :查询已经安装的所有包

  rpm -qi PACKAGE_NAME:查询指定包的说明信息;

  rpm -ql PACKAGE_NAME: 查询指定包安装后生成的文件列表

  rpm -qc PACKAGE_NAME:查询指定包安装的配置文件

  rpm -qd PACKAGE_NAME:查询指定包安装的帮助文件;
  rpm -q --scripts PACKAGE_NAME:查询指定包中包含的脚本

  rpm -qf /path/to/somefile:查询指定的文件夹是由那个rpm包安装生成的;

  如果某rpm包尚未安装,我们需查询其说明信息,安装以后会生成的文件:

  rpm -qpi /PATH/TO/PACKAGE_FILE

  rpm -qpl

  4、rpm升级

  rpm -Uvh /PATH/TO/NEW_PACKAGE_FILE:如果装有老版本的,则升级;否则进行安装

  rpm -Fvh /PATH/TO/NEW_PACKAGE_FILE:如果装有老版本的,则升级;否则就退出

  --oldpackage:降级

  5、卸载

  rpm -e PACKAGE_NAME

  --nodeps
  6、校验

  rpm -V PACKAGE_NAME

  7、检验来源合法性,及软件完整性:

  加密类型:

  对称:加密解密使用同一个密钥

  公钥:一对密钥,公钥,私钥;公钥隐含于私钥中,可以提取出来,并公开出去;

  rpm -k /PATH/TO/PACKAGE_FILE

  dsa,gpg:验证来源合法性,也既验证签名;可以使用--nosignature,略过此项

  sha1,md5:验证软件包完整性;可以使用 --nodigest,略过此项

  8、重建数据库

  rpm      

  --rebuilddb: 重建数据库,一定会重新建立;

  --initdb:初始化数据库,没有才建立,有就不用建立;

  三、yum
  yum仓库中的元数据文件:

  primary.xml.gz

  所有RPM包的列表:

  依赖关系:

  每个RPM安装生成的文件列表:

  filelists.xml.gz

  当前仓库中所有RPM包的所有文件列表:

  other.xml.gz

  额外信息,RPM

  1、定义yum

  如何为yum定义repo文件

  

  name=Description

  baseurl=

  ftp://
  http://
  file:///
  enabled={1|0}

  gpgcheck={1|0}

  gpgkey=

  

  yum

  list:列表

  all:

  available:可用的,仓库中有但尚未安装的

  installed:已经安装的

  updates:可用的升级

  clean:清理缓存

  

  repolist:显示repo列表及其简要信息

  all   ; enable:默认 ;    disable ;
  install :安装

  yum install PACKAGE_NAME

  -y :自动回答为yes
  --nogpgcheck

  update:升级

  update_to :升级为指定版本

  remove | erase: 卸载

  info:

  provides | whatprovides:查看指定的文件或特性是有那个包安装生成的;

  2、编译安装的三步骤:
  前提:准备开发环境(编译环境)

  安装“Development Tools”和 “Development Libraries”

  #tar

  #cd

  # ./configure

  --help

  --prefix=/path/to/somewhere

  --sysconfdir=/PATH/TO/CONFFILE_PATH

  功能:1.让用户选定编译特性; 2、检查编译环境;

  #make

  #make install

  (1)修改PATH环境变量,以能够识别此程序的二进制文件路径;

  修改/etc/profile文件

  在/etc/profile.d/目录建立一个以.sh为名称后缀的文件,在里面定义 export PATH=$PATH:/path/to/somewhere

  (2)默认情况下,系统搜索库文件的路径/lib ,/usr/lib ; 需要增添额外搜寻路径;   

  在/etc/ld.so.conf.d/中创建已.conf为后缀名的文件,而后把要增添的路径直接写至此文件中国;

  # ldconfig 通知系统重新搜寻库文件

  -v :显示重新搜寻库的过程

  (3) 头文件: 输出给系统

  默认: /usr/include

  增添头文件搜寻路径,使用链接进行:

  /usr/local/tengin/include/   /usr/include/

  两种方式:

  ln -s /usr/local/tengine/include/*/usr/include/或
  ln -s /usr/local/tengine/include/usr/include/tengine

  (4) man文件路径:安装在 --prefix 指定的目录下的man目录: /usr/share/man

  1.man -M/PATH/TO/MAN_DIR COMMAND

  2. 在 /etc/man.config 中添加一条MANPATH

  3、netstat命令:

  -r:显示路由表

  -n:以数字方式显示

  -t:建立的tcp连接
  -u:显示udp连接

  -l:显示监听状态的连接

  -p:显示监听指定套接字的进程的进程号与进程名

  四、练习
  写一个脚本,完成以下功能:

  说明:此脚本能于同一个repo文件中创建多个yum源的指向;

  1、接受一个文件名做为参数,此文件存放至/etc/yum.repos.d目录中,且文件名以.repo为后缀;要求,此文件不能事先存,否则,报错;

  2、在脚本中,提醒用户输入repo id;如果为quit,则退出脚本;否则,继续完成下面的步骤;

  3、repo name 以及baseurl的路径,而后以repo文件的格式将其保存至指定的文件中;

  4、enabled 默认为1 ,而gpgcheck默认设定为0;

  5、此脚本会循环执行多次,除非用户为repo id指定为quit;

http://s1.运维网.com/images/20181212/1544583389509859.png
  

  五、while
  while ,untilfor

  break :提前退出循环

  continue:提前结束本轮循环,而进入下一轮循环;

http://s1.运维网.com/images/20181212/1544583486747729.png
  六、练习题
  写一个脚本:

  1、判断一个指定的bash脚本是否有语法错误;如果有错误,则提醒用户键入Q或者q无视错误并退出,其他任何键可以通过vim打开这个指定的脚本;

  2、如果用户通过vim打开编辑后保存退出时仍然有错误,则重复第1步中的内容;否则,就正常关闭退出

http://s1.运维网.com/images/20181212/1544594764610343.png
  

  

  

  

  

  

  

  

  

  

  

  

  

  




页: [1]
查看完整版本: Linux初级运维(十四)——Linux软件管理