软件包管理
应用程序:
  程序,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:显示监听指定的套接字的进程的进程号及进程名

版权声明:本文为xian-luo原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/xian-luo/p/10899227.html