设为首页 收藏本站
查看: 1078|回复: 0

[经验分享] Linux初级运维(十四)——Linux软件管理

[复制链接]

尚未签到

发表于 2019-2-17 09:20:43 | 显示全部楼层 |阅读模式
  一、软件包管理

  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文件

  [Repo_ID]

  name=Description

  baseurl=

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

  gpgcheck={1|0}

  gpgkey=

  

  yum [options][command][package ...]

  list:列表  

  all:

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

  installed:已经安装的

  updates:可用的升级

  clean:清理缓存

  [packages | headers | metadata | dbcache | all ]

  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;


  

  五、while
  while ,until  for

  break :提前退出循环

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


  六、练习题
  写一个脚本:

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

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


  

  

  

  

  

  

  

  

  

  

  

  

  

  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-673433-1-1.html 上篇帖子: linux优化 下篇帖子: Linux bash特性
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表