/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:显示进程