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