软件包管理和磁盘管理

软件运行和编译

ABI :Application Binary Interface 应用程序二进制接口

    WindowsLinux不兼容

     PE格式   ELF格式

库级别的虚拟化:

      LinuxWINE

      WindowsCywin

APIApplication Programming应用程序的开发接口

     POSIX 通用

程序源代码–>预处理–>编译–>汇编–>链接

静态编译:.a

    libxxx.a

    把程序对应的依赖库复制一份到包

    升级难,需要重新编译

    占用空间较多,迁移容易       

动态编译:.so

    只把依赖加做一个动态链接

    libxxx.so

    占用空间较少,升级方便

 

包管理器

二进制应用程序的组成部分:

   二进制文件、库文件、配置文件、帮助文件

程序包管理器:

   debiandeb文件、dpkg包管理器

   redhatrpm文件、rpm包管理器

    rpmRedhat Package Manager

          RPM Package Manager

包命名

源代码:name-VERSION.tar.gz|bz2|xz

rpm包命名方式:

   name-VERSION-release.arch.rpm

    例:bash-4.2.46-19.e17.x86­_64.rpm

常见的arch

   x86 i386 i486 i586 i686

   x86_64

   noarch

包:分类和拆包

   Application-VERSION-ARCH.rpm:主包

   Application-devel-VERSION-ARCH.rmp 开发子包

   Application-utils-VERSION-ARHC.rpm 其他子包

  Application-libs-VERSION-ARHC.rpm 其他子包

包之间:可能依赖,甚至循环依赖

解决依赖包管理工具:

  yumrpm包管理器的前端工具

  apt-getdeb包管理器前端工具

  zyppersuse上的rpm前段管理工具

  dnfFedora 18+ rpm包管理器前端管理工具

 

库文件

查看二进制程序所依赖的库文件

  ldd/PATH/TO/BINARY_FILE

管理及查看本机装载的库文件

  idconfig

  /sbin/ldconfig -p :显示本机已经缓存的所有可用库文件名及文件路径映射关系

  配置文件:/etc/ld.so.conf,/etc/ld.so.conf.d/*.conf

  缓存文件:/etc/ld.so.cache

 

包管理器

程序包管理器:

     功能:将编译好的应用程序的各组文件打包一个或几个程序包文件,从而方便快捷的实现程序包的安装、卸载、查询、升级、和校验等管理操作

1、包文件组成(每个包独有)

   RPM包内的文件

   RPM的元数据,如名称,版本,依赖性,描述等安装或卸载时运行的脚本

2、数据库(公共):/var/lib/rpm

   程序包名称及版本

   依赖关系

   功能说明

   包安装后生成的各文件路径及校验码信息

 

程序包的来源

管理程序包的方式:

  使用包管理器:rpm

  使用前端工具:yumdnf

获取程序包的途径:

 1.系统发版的光盘或官方的服务器:

       CentOS镜像:

        https://www.centos.org/download/

        http://mirrors.aliyun.com

        http://mirrors.sohu.com

        http://mirrors.163.com

 2.项目官方站点

 3.第三方组织

   Fedora-EPEL

 Rpmforge :RHEL推荐,包很全

 搜索引擎:

          http://pkgs.org

          http://rpmfind.net

          http://rpm.pbone.net

          http://sourceforge.net/

 4.自己制作

 

rpm包管理

CentOS系统上使用rpm命令管理程序包:

     安装、卸载、升级、查询、校验、数据库维护

     安装:

     rpm{-i|–install}[install-options]PACKAGE_FILE

           -vverbose

           -vv

           -h:显示执行进度

     rpm -ivh 常用

     [install-options]

           –test:测试安装

           –nodeps:忽略依赖关系

           –replacepkgs| replacefiles 覆盖安装 | 替换安装

           –nosignature:不检查数字签名

           –nodigest:不检查包完整性

           –noscripts:不执行程序包脚本

 

rpm包升级

rpm -U:安装有旧版本程序包,则“升级”,如果不存在旧版本程序包,则“安装”

rpm -F:安装有旧版本程序包,则“升级”,如果不存在旧版本程序包,则不执行升级操作

   –oldpackage:降级

   –force:强制安装

包查询

rpm2cpio 包文件|cpio itv 预览包内文件

rpm2cpio 包文件|cpio -id .conf”释放包内文件

rpm -a 查询所有包

    -f 查看指定的文件由哪个程序包安装shengc

    -p 针对未安装的程序包文件做查询操作

    –changelog 查询rpm包的changelog

    -c 查询程序的配置文件

    -d 查询程序的文档

    -i information

    -l 查看指定的程序包安装后生成的所有文件

    –scripts 程序包自带的脚本

    -R 查询指定的程序包所依赖的CAPABILITY

 

包校验

rpm -V 看是否更改过

     S 大小

     M 文件类型

     5 哈希值

     D 设备的主要和次要号码

     L 链接

     U 所有者

     G 所属组

     T m时间

数据库:/var/lib/rpm

yum

yum rpm的前端程序,可解决软件包相关依赖性,可在多个仓库之间定位软件包,up2date的代替工具

     yum repositoryyum repo ,储存了众多rpm包,以及包的相关的元数据文件(放置特定目录repodata下)

     文件服务器:

             ftp://

             http://

             file://

yum配置文件

   /etc/yum.conf:为所有仓库提供公共配置

   /etc/yum.repos.d/*.repo:为仓库的指向提供配置

   仓库指向的定义:

              [仓库名称]

              baseurl=地址

              gpgcheck={1|0}

              enabled={1|0}      

    常用的几项

yum

阿里云repo文件:

    http://mirrors.aliyun.com/repo/

CentOS系统yum

    阿里云:

    http://mirrors.aliyun.com/centos/$releasever/os/x86_64/

    教学环境:

    http://172.16.0.1/cobbler/ks_mirror/$releasever/

Epelyum源:

    阿里云:

    http://mirrors.aliyun.com/epel/$releasever/x86_64

    教学环境:

    http://172.16.0.1/cobbler/ks_mirror/$releasever/x86_64/

yum命令

  yum repolist [all|enabled|disabled]显示仓库列表

  yum list 显示程序包

  yum install 安装程序包

  yum reinstall 重新安装

  yum update 升级程序包

  yum downgrade 降级程序包

  yum check-update 检查升级

  yum remove 删除

  yum info 查看包的信息

  yum clean 清除缓存 /var/cache/yum/$basearch/$releasever缓存

  yum search 搜索指定相关的包

查看yum 事务历史:

  yum history

  yum history info 6 查看历史

  yum history undo 6 撤销

 

centos7实现光盘yum

1安装

yum install autofs

2现在启动

systemctl  start autofs

3开机启动

systemctl  enable autofs

4 cat /etc/yum.repos.d/base.repo

[centos7]

name=centos7 repo

baseurl=file:///misc/cd

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

 

实验:实现yum 网络仓库

1 安装网络服务ftp为例

yum install  vsftpd

2现在启动

systemctl  start vsftpd centos7

service vsftpd start   centos6

3开机启动

systemctl  enable vsftpd centos7

chkconfig vsftpd on  centos6

4 清除防火墙

iptables -F

systemctl  disable firewalld.service   centos7

chkconfig iptables off centos6

5复制rpm包文件到共享的网络目录

/var/ftp/pub/app/

6 创建yum metadata 生成repodata/

yum install createrepo

createrepo  /var/ftp/pub/app/

7 客户端配置

[app]

baseurl=ftp://192.168.33.128/pub/app/

gpgcheck=0

 

实验:在centos7 编译安装httpd2.4.25

1安装源码包

download 源码包

tar xvf  httpd-2.4.25.tar.bz2

2安装开发包组

yum groupinstall “Development tools”

3 cd /root/httpd-2.4.25

yum install apr-devel

yum install apr-util-devel

yum install pcre-devel

./configure –prefix=/app/httpd24 –sysconfdir=/etc/httpd24/

4  make

5 make install

6 软件使用

指定路径

cat /etc/profile.d/httpd24.sh

PATH=$PATH:/app/httpd24/bin

7 apachectl start|stop

netstat -tnl 查看端口

 

磁盘管理

机械硬盘结构:

软件包管理和磁盘管理

head:磁头

track:磁道

cylinder:柱面

sector:扇区,512bytes

 

分区:

两种分区方式:MBR,GPT

MBR: 主要分区  1-4

      扩展1-4

      逻辑 5-

      sector 512

软件包管理和磁盘管理

GPT:

软件包管理和磁盘管理

分区工具

  fdisk 创建MBR分区

  gdisk 创建GPT分区

  parted 高级分区操作

fdisk /dev/sdb

gdisk /dev/sdb 类似fdisk

fdisk -p 分区列表

      -t 更改分区类型

      -n 创建新分区

      -d 删除分区

      -w 保持并退出

      -q 不保存并退出

新加分区同步:partx -a /dev/..

删除分区同步:partx -d –nr M-N /dev/..

partprobe 同步磁盘

partde用法,实时生效

  parted /dev/sdb mklabel gpt|msdos 建分区

  parted /dev/sdb print 看分区

  parted /dev/sdb mkpart primary 11000M

  parted /dev/sdb rm 1 删除第一个分区

  parted -l 查看所有硬盘分区

 

文件系统

linux文件系统:ext2,ext3ext4xfsswap

日志型文件系统:ext3ext4xfs…

非日志型文件系统:ext2vfat

mkfs命令:

    mkfs.FS_TYPE /dev/DEVICE

         ext4

         xfs

         btrfs

         vfat

    mkfs       -L  设定卷标

blkid 查看块信息

blkid -U UUID 根据UUID来查找对应设备

findfs LABEL …根据卷标搜索

findfs UUID…根据UUID搜索

tune2fs -U UUID:修改UUID

uuidgen:取新的UUID

fsck -y :修复

 

挂载mount

挂载方法:moumt DEVICE MOUNT_POINT

mount -L:根据卷标挂载

mount -U:跟据UUID挂载

      -t:指明文件系统

      -n:隐藏挂载

      -B: 文件挂载文件

      -o remount:指定权限

cat /proc/mounts查看最全的挂载信息

findmnt MOUNT_POINT查看是否挂载

fuser -v …        查看访问文件的进程

fuser -km …       杀掉进程

umount … 取消挂载

mount -a 刷新挂载

 

swap 实现

1fdisk 分区

fdisk  sdc1 t 82

2 mkswap /dev/sdc1 -L swap2 格式化

3 vim /etc/fstab 写入vim

/dev/sdc1  swap swap pri=100 0 0

4生效 swapon -a启用

5 swapon -s 查看

删除swap分区

1 swapoff /dev/sdc1禁用

2 free

3 vim /etc/fstab

4 fdisk /dev/sd删除分区

 

文件swap

dd if=/dev/zero of=/swapfile bs=1Mcount=2048

mkswap /swapfile

vim /etc/fstab

swapon -a

删除swap file

swapoff /swapfile

 vim /etc/fstab

 rm -f /swapfile

原创文章,作者:yaobinbin,如若转载,请注明出处:http://www.178linux.com/74111

(0)
yaobinbinyaobinbin
上一篇 2017-04-24 19:48
下一篇 2017-04-24

相关推荐

  • bash脚本入门之变量、运算、条件测试

    概述     脚本编程能力是作为运维工程师不可或缺的一项基本技能,各种系统的运维,如果完全靠命令行一条一条命令来执行,工作效率可想而知,而脚本却可以将完成一定功能的各个命令依据一定的流程控制,逻辑判断去完成某种功能,提升工作效率。本章就简单介绍一些linux下的bash脚本编程的基础入门知识,具体内容分为以下几个方面:…

    Linux干货 2016-08-12
  • 06文本工具简单介绍

    在Linux系统中,一个核心理念就是:一切皆文件。正确的对系统中文本的编辑配置与管理是Linux系统得以稳定运行的一个重要大前提。 因此Linux系统中的文件与管理特别重要,下面简单说一下在对文件处理过程中经常用到的一些命令工具。 文本查看命令:cat,tac,rev,more,less cat [option]…[file]… -E…

    Linux干货 2016-10-31
  • LVS NAT模型

    LVS NAT NAT模式顾名思义就是对地址进行转换 通过访问前端外网的VIP调度到后端两台真实主机 拓扑图如下                      &n…

    2017-05-15
  • 第三周博客作业

      开始学习已经三周了,感觉到年底有些时间不够,作业也交的越来越晚,需要加紧学习的进度了。   1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。  最简单的实现题目要求的方法是使用cut命令只显示用户名并用sort命令排序去重: [root@localhost ~]# who |&nbs…

    Linux干货 2016-12-20
  • 系统基础之shell脚本编程详解及练习题

    shell脚本编程: 编程基础  程序:指令+数据 编程语言的分类:根据运行方式    编译运行:源代码–>编译器(编译)–>程序文件    解释运行:源代码–>运行时启动解释器,由解释器边解释边运行; 根据其编程过程中功能的实现是调用库还是调用外部的程序…

    Linux干货 2016-08-15
  • grep命令与正则表达式的应用示例、find命令应用示例

    grep命令与正则表达式的应用示例、find命令应用示例 显示当前系统上root、fedora或user1用户的默认shell。 使用扩展正则表达式,它支持使用A|B表示或者之意。查看用户的默认shell,cat /etc/passwd文件,根据用户名所处位置进行锚定,其最后一个字段即表示该用户的默认shell。实现方式及结果如下:   找出/et…

    Linux干货 2016-11-28

评论列表(1条)

  • renjin
    renjin 2017-04-28 11:25

    对linux下的软件包管理和磁盘管理进行了详细的介绍,内容写的很详细排版也很好,可以把实验的流程再加入进来,加油,加油!