/etc, /bin, /sbin , /lib
系统启动就需要用到的程序,这些目录不能挂载额外的分区,必须在根分区上
/usr/
bin
sbin
lib
操作系统核心功能,可以单独分区(假如系统崩溃,重新安装,再挂载/usr就可以了)
/usr/local
bin
sbin
lib
etc
man
第三方软件,应当独立分区
/opt 早先的第三方软件
/proc 不能单独分区,默认为空
/sys 不能单独分区,默认为空
/dev 设备,不能单独分区
/root 不能单独分区
/home 应当独立分区
/var 应当独立分区
/boot 必须单独分区 内核, initrd(initramfs)
程序组成部分:
二进制程序
库
配置文件
帮助文件
软件包管理器
制作软件包: 二进制程序,库文件,配置文件,帮助文件
生成数据库: 追踪所安装的每一个文件
安装,卸载,升级,查询,校验
依赖关系:
X->Y->Z
前端工具:yum, apt-get,
后端工具:RPM, dpt
yum: Yellowdog Update Modifier
Redhat,ESE: RPM(Redhat Package Manager)
Debian: dpt(Debian package tool),
先学习后端,知道劣势,再学习前端为什么出现
----------------------------------------------------------------
rpm命令:
rpm:
数据库/var/lib/rpm
安装,查询,卸载,升级,校验,数据库重建,验证数据包等工作:
rpm命名:
包:组成部分
主包: bind-9.8.1-1.el.i386.rpm
子包: bind-libs-9.8
bind-utils-9.8
包名格式:
name-version-release.arch.rpm
01. 安装
rpm -i /PATH/TO/PACKAGE_FILE
-h: 以#显示进度。每个#表示2%
-v: 显示详细安装过程
-vv:
rpm -ivh /PATH/TO/PACKAGE_FILE
02. 查询
rpm -q PACKAGE_FILE
rpm -qa 查询已经安装的所有包 eg: rpm -qa | grep "^y" 所有安装的以y开头的包
rpm -qi PACKAGE: 查询指定包的说明信息
rpm -ql package: 查询指定包安装后生成的文件列表
rpm -qc package: 查询指定包的配置文件
rpm -q --scripts package: 查询指定包包含的脚本
rpm -qf /path/file: 查询指定的文件是哪个rmp包安装生成的 eg: rpm -qf /bin/zsh
如果某rpm包还未安装,如果需要查询信息,安装后生成的文件
rpm -qpi /path/pkgfile.rpm
03, 升级
rpm -Uvh /path/new_package.rpm
04, 卸载
rpm -e package_name
05, 校验
rpm -V 包名
可以检查删除后者修改
06,重建数据库
rpm
--rebilddb
--initdb
07,校验来源合法性,及软件完整性:
公钥:/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
rpm -K 安装包文件
dsa, gpg: 验证来源合法性,数字签名
sha1, md5: 验证软件包完整性
----------------------------------------------------------------
rpm前端工具--yum
rpm依赖关系解决不好
yum repository
ftp / web /file
yum仓库中的元数据文件:
primary.xml.gz
所有RPM包的列表
依赖关系
每个RPM安装生成的文件列表
filelist.xml.gz
当前仓库中所有RPM包的所有文件列表
other.xml.gz
额外信息,RPM包的修改日志
repomd.xml
记录的是上面3个文件的时间戳和校验和
yum [option] [command] [package...]
list: 列表
all:
avaliable: 可用的,仓库中有但是尚未安装的
installed: 已经安装的
updates: 可以用的升级
clean: 清理缓存
repolist:显示repo列表及其简要信息
all
enabled: 默认
disabled
install: 安装
yum install 包名
update:升级
update_to: 升级为指定版本
remove|erase: 卸载 注意依赖关系
info: 查询
provides: 查询某个文件是哪个包
groupinfo 可能批量安装哪些列表
grouplist
groupinstall
groupremove
groupupdate
----------------------------------------------------------------
rpm包:二进制格式
有些特性是编译选定的,如果编译未选定此特性,将无法使用
rpm的版本会落后源码包
定制:手动编译安装
编译4部曲:
准备编译环境 yum groupinstall "Development Tools"和"Development Library"
./configure
--help
--prefix=/path/to/somewhere
--sysconfdir=/path/to/conffile_path
功能:
1,让用户选定编译特性:
2,检查编译环境
make
make install
tar xvf tengine-1.4.2.tar.gz
cd tengine-1.4.2
./configure --prefix=/usr/local/tengine --conf-path=/etc/tengine/tengine.conf
make
make install
1,修改PATH环境变量
/etc/profile
PATH=$PATH:/usr/local/tengine/sbin
source /etc/profile
2, 修改库文件搜索路径(默认是/lib, /usr/lib)
在/etc/ld.so.conf.d/ 创建以.conf为后缀的文件,把要添加的路径直接写到此文件中
ldconfig 通知系统重新搜寻库文件
3, 头文件:输出给系统
默认:/usr/include
增加头文件搜寻路径,使用链接进行:
ln -s /usr/local/tengine/include/* /usr/include/
or
ln -s /usr/local/tengine/include /usr/include/tengine
4, man文件路径:安装在--prefix指定的man下
方法一:man -M /path command
方法二: /etc/man.config 添加一条MANPATH
修改iptables,重启iptables
netstat -tunlp
netstat命令:
-r: 显示路由表
-n: 以数字方式显示
-t: tcp连接
-u:显示udp连接
-l: 显示监听状态的连接
-p:显示进程