/usr/share/man
/etc, /bin, /lib
系统启动就需要用到的程序,这些目录不能挂载额外的分区, 必须在根文件系统的分区上
/usr/
bin
sbin
lib
操作系统核心功能,可以单独分区
/usr/local 第三方软件
bin
sbin
lib
etc
man 单独分区
/opt
/proc
/sys
不能单独分区, 默认为空
/dev: 设备,不能单独分区
udev
/root 不能单独分区
/var 建议单独分区
/boot: 内核, inired(initramfs)
内核:
POST-->BIOS(HD)-->(MBR)bootloader(文件系统结构,ext2,ext3,xfs)-->内核
软件包管理器的核心功能
1.制作软件包
2.安装,卸载,升级,查询,校验
redhat, suse, debian
redhat, suse : RPM
Redhat Package Manager
RPM is Package Manager
debian : dpt
yum : Yellowdog Update Modifier
rpm命令:
rpm:
数据库/var/lib/rpm
rpmbuild:
安装, 查询, 卸载, 升级, 校验, 数据库的重建等工作
rpm命名:
包: 组成部分
主包:
bind-9.7.1-1.i386.el5.rpm
子包:
bind-libs-9.7.1-1.i586.el5.rpm
bind-utils-9.7.1-1.i586.el5.rpm
包名格式:
name-version-release.arch 什么平台都可以安装
查看内核版本
uname -r
-a
安装
rpm
-ivh /PATH/TO/PACKAGE_FILE
--nodeps : 忽略依赖关系
--replacepkgs : 重新安装,替换原有安装
--force : 强行安装
2.查询
rpm -q PACKAGE_NAME: 查询指定的包是否已经安装
rpm -qa : 查询已经安装的所有包
rpm -qi PACKAGE_NAME : 查询指定包的说明信息;
rpm -ql PACKAGE_NAME : 查询指定包安装后生成的文件列表
rpm -qc PACKAGE_NAME : 查询指定包安装的配置文件
rpm -qd PACKAGE_NAME : 查询指定包安装的帮助文件;
rpm -q --scripts PACKAGE_NAME : 查询指定包中包含的脚本
rpm -qf /PATH/TO/SOMEFILE : 查询指定的文件是由哪个rpm包安装生成的
如果某rpm包尚未安装,我们需要查询其说明信息,安装以后会生成的文件
rpm -qpi /PATH/TO/PACKAGE_FILE
rpm -qpl
3.升级
rpm -Uvh /PATH/TO/NEW_PACKAGE_FILE: 如果装有老版本的,则升级; 否则,则退出
rpm -Fvh /PATH/TO/NEW_PACKAGE_FILE
--oldpackage : 降级
4. 卸载
rpm -e PACKAGE_NAME
--nodeps
5. 校验
rpm -V PACKAGE_NAME
6. 重建数据库
rpm
--rebuild : 重建数据库, 一定会重新建立
--initdb : 初始化数据库, 没有才建立, 有就不用建立
7. 检验来源合法性, 及软件完整性:
加密类型
对称: 加密解密使用同一个秘钥
公钥: 一对秘钥,公钥,私钥: 公钥隐含于私钥中,可以提取出来,并公开出去
单向:
ls /etc/pki/rp,-gpg/
RPM-GPG-KEY-redhat-release
rpm -K /APT/TO/PACKAGE_FILE
dsa, gpg: 验证来源合法性, 也即验证签名 : 可以使用--nosignature, 略过此项
sha1, md5 : 验证软件包完整性: 可以使用 --nodigest, 略过此项
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
rpm -K --nodigest
rpm软件包管理器的一个前端工具
rpm --> yum
HTML: HyperText Mark Language
XML: eXtended Mark 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包分组信息
/etc/yum.conf --> /etc/yum.repos.d
如何为yum定义repo文件
[Repo_Name]
name=Description
baseurl=
ftp://
http://
file:///
enabled={1|0}
gpgcheck={1|0}
gpgkey=
yum [options] [command] [package ...]
-y: 自动回答为yes
--nogpgcheck
list : 列表
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
groupupdate
yum groupinfo "Development Tools"
Linux: C,
GNU: C
gcc: GNU C Complier, C
g++:
make : 项目管理工具,
makefile : 定义了make(gcc, g++) 定义了gcc按何种次序去编译这些源程序
automake, --> makefile.in --> makefile
autoconf, --> configure
100个可选择特性,
make install
编译安装的三步骤:
前提: 准备开发环境(编译环境)
安装"Development Tools" 和 "Development Libraries"
tar
cd
./configure
--help
--prefix=/path/to/somewhere
--sysconfdir=/PATH/TO/CONFFILE_PATH
功能: 1.让用户选定编译特性
2.检查编译环境
make
make install
tar xf tengine-1.4.2.tar.gz
cd tengine-1.4.2
./configure --prefix=/usr/local/tenfine --conf-path=/etc/tengine/tenfine.conf
make
make install
/usr/local/tengine/sbin/nginx
1.修改PATH环境变量, 以能够识别此程序的二进制文件路径
修改/etc/profile文件
在/etc/profile.d/目录下建立一个以.sh为名称后缀的文件, 在里面定义export PATH=$PATH:/path/to/somewhere
2.默认情况下, 系统搜索库文件的路径 /lib, /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
/etc/man.config里面有定义man搜寻的路径
1. man -M /PATH/TO/MAN_DIR COMMAND
2. 在/etc/man.config中添加一条MANPATH
netstat命令:
-r: 显示路由表
-n: 以数字方式显示
-t: 建立的tcp连接
-u: 显示udp连接
-l: 显示监听状态的连接
-p: 显示监听指定的套接字的进程的进程号及进程名
C环境, C++, perl, java, python