17_Linux软件管理

软件包管理
应用程序:
  程序,Architecture
C语言:源代码-->(编译)二进制格式
脚本:解释器(二进制程序)
源代码-->编译-->链接-->运行
  程序
    库
      静态
      动态

      静态链接
      动态链接
        共享库

配置文件:
dir=/PATH/TO/SOMEWHERE

程序组成部分
  二进制程序
  库
  配置文件
  帮助文件

-----这些就能启动一个系统----
/etc,/bin,/sbin,/lib
  系统启动需要用到的程序,这些目录不能挂载额外的分区,必须在根文件系统的分区上

/usr/
  bin
  sbin
  lib

  /usr放的是,操作系统核心功能,可以单独分区
--------------------

--------第三方-------
/usr/local
  bin
  sbin
  lib
  etc
  man

/opt

/proc

/sys
  不能单独分区,默认为空

/dev:设备,不能单独分区
  udev

/root:不能单独分区

/var:建议单独分区

/boot:内核,initrd(initramfs)

POST-->BIOS(HD)-->(MBR)bootloader(能够识别相应的文件系统结构,ext2,ext3,xfs...)-->内核


程序:指令+数据
  指令:芯片
    CPU:普通指令,特权指令
    指令集
C语言
  Powerpc:二进制格式


x86:汇编
powerpc:汇编

软件包管理器的核心功能
1、制作软件包
2、安装、卸载、升级、查询、校验

Redhat,SUSE,Debian

Redhat,SUSE:rpm
Debian:dpt

前端工具:yum,apt-get
后端工具:rpm,dpt

yum:Yellowdog Updater  Modified

rpm命令:
  rpm:
    数据库:/var/lib/rpm
  rpmbuild:

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

rpm命名:
包:组成部分
  主包
    bind-9.7.1-1.i586.e15.rpm
  子包:
    bind-libs-9.7.1-1.i586.e15.rpm
    bind-utils-9.7.1-1.i586.e15.rpm
包名格式:
  name-version-release.arch
  bind-major.minor.release-release.arch.rpm

主版本号,重大改变
次版本号,某个子功能发生重大变化
发行号:修正了部分bug,调整了一点功能

rpm包:
  二进制格式(一般都二进制格式)
    rpm包作者下载源程序,编译配置完成后,制作成rpm包
  源码格式

rpm:
1、安装:
rpm -i /PATH/TO/PACKAGE_FILE
  -h:以#号显示安装进度,每个#表示2%
  -v:显示详细过程
  -vv:更详细的过程

rpm -ivh /PATH/TO/PACKAGE_FILE
  --nodeps:忽略依赖关系
  --replacepkgs:重新安装,替换原有安装
  --force:强行安装,可以实现重装或降级

2、查询
rpm -q PACKAGE——NAME:查询指定的包是否已经安装
rpm -qa :查询已经安装的所有包

rpm -qi PACKAGE_NAME:查询指定包的说明信息
rpm -qc PACKAGE_NAME:查询指定包安装的配置文件
rpm -ql PACKAGE_NAME:查询指定包安装后生成的文件列表
rpm -qf /path/to/somefile:查询指定的文件是由哪个rpm包安装生成的

rpm -q --scripts PACKAGE_NAME:查询指定包中包含的脚本

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

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

3、升级
rpm -Uvh /PATH/TO/PACKAGE_FILE:如果装有老版本的,则升级,否则,则安装
rpm -Fvh  /PATH/TO/PACKAGE_FILE:如果装有老版本的,则升级,否则,退出
  --oldpackage:降级

4、卸载
rpm -e PACKAGE_NAME
  --nodepe

5、校验
rpm -v PACKAGE_NAME

6、重建数据库
  rpm
    --rebuilddb:重建数据库,一定会重新建立
    --initdb:初始化数据库,没有才建立,有就不用建立

7、校验来源合法性,及软件包完整性

# ls /etc/pki/rpm-gpg/
RPM-GPG-KEY-CentOS-7

rpm -K /PATH/TO/PACKAGE_FILE
  dsa,gpg:验证来源合法性,也即验证签名,可以使用--nosignature,略过此项
  sha1,md5:验证软件包完整性,可以使用--nodigest,略过此项

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 :导入密钥文件


=============================
rpm-->yum
HTML:HyperText Markup Language
XML:Extensible Markup Language

XML,JSON:版结构化数据

yum仓库中的元数据
primary.xml.gz
  所有RPM包的列表
  依赖关系
  每个RPM安装生成的文件列表
filelists.xml.gz
  当前仓库中所有RPM包的所有文件列表
other.xml.gz
  额外信息,RPM包的修改日志

repomd.xml
  记录的是上面三个文件的时间戳和校验和

yum install zsh

comps*.xml:RPM包分组信息


如何为yum定义repo文件
[Repo_ID]
name=Description
buseurl=
  ftp://
  http://
  file://
enabled={1|0}
gpgcheck={1|0}


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

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

list:列表
  支持glob
  all
  available:可用的,仓库中有但尚未安装的
  installed:已经安装的
  updates:可用的升级

clean:清理缓存
  [ packages  |  headers  | metadata  |  dbcache  |  all]

repolist:显示repo列表及其简要信息
  all
  enabled:默认
  disabled

install:安装
yum install PACKAGE_NAME

update:升级
update_to:升级为指定版本

remove|erase:卸载

info:

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

groupinfo
grouplist
groupinstall
groupremove
groupapdate

/media/cdrom/{ Server,VT,Cluster,ClusterStorage }

如何创建yum仓库:
createrepo

http://172.16.0.1/yum/{ Server,VT }




RPM安装:
  二进制格式:
    源程序-->编译-->二进制格式
      有些特性是编译选定的,如果编译未选定此设定,将无法使用
      rpm包的版本会落后于源码包,甚至落后很多

定制:手动编译安装

编译环境:开发环境
开发库:开发工具

Linux:C
GUN:C

C,C++:
gcc:GUN C Complier,C
g++:

make:项目管理工具,
  makefile:定义了make(gcc,g++)按何种次序去编译这些源程序文件中的源程序

automake,-->makefile.in-->makefile
autoconf,-->configure

make install


手动编译安装的三步骤
前提:准备开发环境(编译环境)
# ./configure
  --help:获取脚本的使用格式
  --prefix=/path/to/somewhere:指定安装路径
  --sysconfdri=/PATH/TO/CONFFILE_PATH:指定配置文件路径
  功能:1、让用户选择编译特性,2、检查编译环境
# make
#make install
(上面这两条可以写成make &&make install)


编译软件包如果我们把它安装在非默认路径下。。
1、要修改PATH环境变量,以能够识别此程序的二进制文件路径
  修改/etc/profile文件
  在/etc/profile.d/目录建立一个以.sh为名称后缀的文件,在里面定义export PATH=$PATH:/path/to/somewhere
2、默认情况下,系统搜索库文件的路径/bin,/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/tengine
4、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:显示监听指定的套接字的进程的进程号及进程名




posted @ 2019-05-21 13:13  xianluo  阅读(123)  评论(0编辑  收藏  举报