软件包管理和磁盘管理

软件运行和编译

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

相关推荐

  • 第二周博客作业

    一、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示 Linux文件管理类命令有cp、mv、rm 1、cp命令:copy files and directories 使用方法: 单源复制cp [OPTION]… [-T] SOURCE DEST1)如果DEST不存在,则事先创建此文件,并复制源文件的数据流至DEST中2)如果…

    Linux干货 2016-12-13
  • 高级文件系统管理

    高级文件系统管理 一、如何创建新的swap分区  答:1.在/dev/sdc上创建新的分区。并使得ID为82的linux swap;类型。   2.创建文件系统 mkswap  -L  SWAP_SDC1  /dev/sdc1     3.在/etc/fstab中进行修改   4…

    Linux干货 2016-08-30
  • 马哥教育网络班22期-第13周博客作业

    第13周博客作业 1、建立samba共享,共享目录为/data,要求:(描述完整的过程)   1)共享名为shared,工作组为zhucke;   2)添加组develop,添加用户gentoo,centos和ubuntu,其中gentoo和centos以develop为附加组,ubuntu不属于develop组;密码均为用户名; &nb…

    Linux干货 2016-12-26
  • 简述Linux那些年–发展史

    Linux发展史 作者:任飞鹏          日期:2016-10-13 Linux简介: Linux同Windows一样,都是一套OS(操作系统)。Linux是一套开源的类Unix操作系统,可以免费使用和自由传播。是一个基于POSIX和UNIX的多用户、多任务、支…

    Linux干货 2016-10-19
  • bash的工作特性之命令执行状态返回值和命令行展开

    bash的工作特性之命令执行状态返回值和命令行展开 bash的工作特性之命令执行状态返回值和命令行展开 执行状态返回值 命令行展开 执行状态返回值     Linux下每一条命令或每一个进程执行完成会返回一个状态码. 0:成功执行 1-255:执行过程中出现异常或非正常退出 在Shell脚本中,最后…

    Linux干货 2016-11-05
  • 马哥教育网络21期+第六周练习博客

    请详细总结vim编辑器的使用并完成以下练习题 1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; [root@localhost named]# cp /etc/rc.d/rc.sysinit /tmp/ [root@loc…

    Linux干货 2016-08-15

评论列表(1条)

  • renjin
    renjin 2017-04-28 11:25

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