/etc
,/bin
,/sbin
,/lib
,/usr/share/man
前面三个必须和根在一个分区,因为与操作系统的启动有关;/usr
里面包含 bin
,sbin
, lib
,文件,可以单独分区,里面放置的是操作系统的核心功能;/usr/local
bin
,sbin
, lib
,etc
, man
,表示第三方软件的安装位置,建议安装软件在这里;/sys /proc
:提供用户调用接口的伪文件系统,不能单独分区,里面没有任何件;/dev
:设备,不能单独分区;udev
机制,可以实现让内核在设别到硬件信息后,动态进行创建设备文件,2.4
内核之前是没有这个功能的,里面提供了所有的设备文件,2.6
内核之后引入 udev
机制,管理员是没有家目录的;/var
:是一个相对外围的文件位置,多用于存放锁文件,日志文件,以及运行过程中的信息,应该单独分区,里面的文件需要按时进行处理;/boot
:内核和 initrd
或者 initranfs
;POST-->BIOS(HD)-->MBR
的 bootloader
(需要识别基本文件系统结构, ext2, ext3, xfs
) -->
加载内核;其中 bootloader
是需要识别基本的文件系统的,虽然不需要出现目录的上下级结构,但是需要找到内核所在的位置;BIOS
里面的 ROM
里面的信息是需要被映射进内存的,建议进行单独分区;
软件包管理器
Redhat SUSE
使用RPM:Redhat Package Manger
来提供软件包管理;Debian
使用dpt
来提供软件包的软件管理;Redhat
使用的是YellowDog Update Modifier
也就是RPM
,dpt
解决使用的是apt-get
来解决依赖关系rpm
软件包管理器,是一个基于HASH
的数据库,数据库文件在/var/lib/rpm
,查询速度快,并且提供了rpmbuild
命令来制作软件包;rpm
软件包管理器支持软件的安装,查询,升级,校验,数据库的重建,验证软件包来源的合法性等;bind-9.7.1-1.el5.i586.rpm
,子包:bind-libs-9.7.1-1.e15.i586rpm
;name-version-release.arch.rpm,arch
,例如bind-major.minor.release-release.arch.rpm
bug
,调整了部分功能;rpm
软件包格式:release
分别表示软件开发者进行的改进,后面的release
表示rpm
包的制作者因为功能改进而进行重新编译时的改进;i686
:表示32
为平台;x64
:表示x86
平台64
位系统,noarch
,表示和平台无关;el5
: 表示的是用在企业版 5
上面的,同样的el6
表示的就是用在企业版6
上面的;-i /PATH/TO/SOMEWHERE
:指定软件包路径和名称,用于安装软件; -v
:用于显示软件安装的详细信息; -vv
:显示更详细的信息;经常结合起来使用 ivh
-h
:表示使用#
来显示安装进度,一个#
表示2
的进度;--nodeps
:表示忽略依赖关系,软件安装可能无法正常使用;--force
:表示强行安装,可以实现重新安装或者降级安装--replacepkgs
:表示重新安装,替换原有安装;--oldpkgs
:表示降级安装;--test
:表示仅仅测试,但是不安装;-qa name
:用于匹配已经安转的所有软件包; -qi name
:查询指定安装包的说明信息;-ql name
:查询指定包安装后生成的文件列表; -qf file
:用于查看某个文件是那个软件包生成的;-qc name
:查询指定软件包安装的配置文件; -qd name
:查询指定软件包安装的帮助文件 -q --scripts name
:用于查询指定安装包在安装过程中执行的脚本,包括安装前,安装前, 安装后,卸载前,卸载后,这个和安全相关的,用于检测在软件安装时,是否会存在系统安全的脚本; -qpi
:查询未安装的软件包的说明信息,安装以后生成的文件;rpm -Uvh PATH_TO_NAME
:如果存在老版本的,则升级,否则安装;rpm -Fvh PATH_TO_NAME
:如果存在老版本的,则升级,否则退出;rpm -ivh --oldpackage
-e
:用于卸载软件,由于存在依赖性关系,卸载时该软件包不能被其他软件 --nodeps
:可以使用这个命令来强行卸载;校验:
-V
: 校验来源合法性以及软件完整性;S
:表示文件大小改变;M
:表示文件权限改变;5
:表示文件校验码改变;D
:设备文件的主设备号,次设备号不匹配;L
:表示路径不匹配;U
:所有者不匹配;G
:表示所有组不匹配;T
:表示最近一次的修改时间发生改变;对于软件包来说,首先需要导入秘钥信息.然后使用命令进行软件的校验
/etc/pki/rpm-gpg/ RPM-GPG-KEY-redhat-release
文件,使用rpm –K PACKAGE_FILE
来检查安装包本身是否是合法的,这个是用来验证redhat
的软件包是否是合法的;[root@server23 ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[root@server23 ~]# rpm -K the name of rpm package
DSA
,GPG
,如果需要忽略这个选项使用--nosignature
选项;sha1 md5
,如果需要忽略这个选项使用--nodigest
;rpm
数据库的两种管理方式:
--initdb
:数据库在不存在时,才需要进行初始化操作,数据库不存在时,会进行建立操作,否则是不会进行建立操作的--rebuild
:表示重新建立数据库,无论是否存在,是一定会重新建立数据库的;Yum软件包管理器
Yum
是一种C/S
架构的应用,是用来解决依赖关系的前端工具,大致的工作流程如下: Client
连接Server (Yum Repository)
获得需要的软件包;Rpm
命令进行安装;Yum
再次查询软件仓库的到还需要安装的软件包,然后同时安装;rpm
软件包提供某种能力,在Yum
仓库里面结合数据库整理所有软件包的能力形成一张表格,用于进行检索;Yum
的缓存目录就是用来存储这些元数据文件的;Yum
软件仓库的文件: Rhel/Centos ISO
镜像文件用来制作软件仓库,使用命令Createrepo
来生成元数据文件;yum
仓库里面的元数据文件: primary.xml.gz
: RPM
安装生成的文件列表;filelists.xml.gz
: RPM
软件包的所有文件列表;other.xml.gz
: RPM
软件包的修改日志;repomd.xml
: comp*-core.xml
: RPM
分组信息,三类,必须,建议,可选安装的;yum
命令 install
:安装 --nogpgckeck
:不用于检查 gpg
update
:用于升级软件包;update-to
:用于指定升级到某个版本check-update
:用于检测更新;remove
:用于移除软件包;list
:用于列出软件包; all
:用于列出所有的软件包;available
:用于列出可用的软件包;install
:用于列出安装的软件包;updates
:用于列出可以升级的软件包;info
:用于查询某个软件包的具体信息;provides
:查看指定文件或者特性是有哪个软件包提供的;clean
:用于清除缓存信息, packages
:表示清理软件包;metadata
:表示清理元数据文件;headers
:用于清除头信息;all
:用于清除缓存的所有信息;makecache
:用于生成缓存信息;groups
:用于查询某些组的软件包;groupinfo
:显示组信息;reinstall
:表示用于重新安装某些软件包;localinstall
:安装包在本地时,使用 localinstall
可以自动解决依赖关系,如果安装的是来自互联网上的安装包时,可以使用—nogpgckeck
,来解决依赖关系;downgrade
:表示用于降级安装;repolist
:用于列出相关的软件包; all
:列出所有文件;enabled
:表示默认的启用的软件仓库;disabled
:表示禁用的软件仓库;将自己的软件包建立软件仓库:
createrepo
创建生成相关的配置文件;Yum提供的配置文件
/etc/yum.conf/
: cachedir=/var/cache/yum
:表示软件安装过程中的,缓存目录;keepcache
:表示缓存是否进行保存;logfile=/var/log/yum.log
:表示日志文件的位置,里面记录的是软件的安装和卸载信息;tolerant=1
:表示安装软件包的过程中,对于已经安装的软件包在安装的过程中,不输出错误信息,并且也不进行安装exactarch=1
:表示Yum
仓库的软件安平台必须和当前系统平台的严格匹配;obsoretes=1
:表示过期的软件包是否进行废弃,1
表示进行废弃;gpgcheck=1
:检查来源合法性,检查需要提供密钥文件;debuglevel=
:表示的是调制级别;plugins=
:表示是否允许插件;filename.repo
格式,否则不会被识别;[base]
: 表示repo
的唯一标识符;name=basesoftware
::关于软件仓库的描述信息;baseurl=http://172.25.23.250/rhel6.5/
:用于指定repo
软件仓库所在的具体位置,支持的方式包括file http ftp
gpgcheck=0
:默认是1
,表示是否用于检测来源合法性;gpgkey=
:用于指定秘钥文件的位置,通常是一个路径值,Redhat
提供的路径通常在/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-released
,也有可能是由http
,或者ftp
服务器提供;enabled
:表示这部分软件仓库的定义信息是否生效;[root@server23 ~]# mkdir /yum/VT -pv
rpm
软件包facter-1.6.13-1.el6.x86_64.rpm
facter-2.4.4-1.el6.x86_64.rpm
hiera-1.1.0-1.el6.noarch.rpm
hiera-1.3.4-1.el6.noarch.rpm
puppet-3.0.1-1.el6.noarch.rpm
puppet-3.8.1-1.el6.noarch.rpm
puppet-dashboard-1.2.12-1.el6.noarch.rpm
puppet-dashboard-1.2.23-1.el6.noarch.rpm
puppet-server-3.0.1-1.el6.noarch.rpm
puppet-server-3.8.1-1.el6.noarch.rpm
createrepo
[root@server23 VT]# yum install createrepo -y
[root@server23 ~]# createrepo /yum/VT/
Spawning worker 0 with 21 pkgs
Workers Finished
Gathering worker results
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
# Create repo by myself
[YumVT]
name=Yum VT Repository
baseurl=file:///yum/VT
gpgcheck=0
[root@server23 repodata]# pwd
/yum/VT/repodata
[root@server23 repodata]# ls
4af5be4583c6324a2159a122ebb78dbf1c1ee603235e8016ad20999fadd5d1c5-filelists.xml.gz
522c70b653e96bb4ab2c97fb44bf9eba8aac2768a65af269949b4e21cd40b049-other.sqlite.bz2
86370925536a7b1d8a57126d6f898ed72ee4b0a942460af74330ef94f119487a-primary.xml.gz
a95cbc179f2d540d01bd4ae63f618e815f018bb2f3a5302fc0b794068540744d-other.xml.gz
b0d6493c0375a09b9e3215049b16a86a7145188ab24e8ee466013eced055e245-filelists.sqlite.bz2
f7beed7dad2322922feca58e064fd6eb722c218b3c8094523ad3983e9df3c9c0-primary.sqlite.bz2
repomd.xml
make
:是 C
语言或者 C++
的项目管理工具,makefile
文件定义了gcc
按照何种次序来管理这些源程序文件中的程序的;make
本身是调用gcc
,或者g++
编译器; makefile
并不属于源程序文件,也不是开发者必须开发的软件;./configure
: makefile
文件;--help
:用于获取使用帮助,可以用于得到软件编译安张的特性信息;--prefix=/path/to/something
:用于指定软件的编译安装路径;--sysconfdir=/path/to/config_path
:用于指定配置文件的路径;libiary-devel
; makefile.in
:需要结合生成./configure
生成makefile
;make
: makefile
根据当前系统的环境和配置属性,并且结合makefile
编译生成大量的库文件和配置文件等信息make install
: /etc/profile.d/
中建立一个以*.sh
为名称后缀的文件,在里面定义export PATH=$PATH:/path/to/something
的文件; /lib,/usr/lib,
如果需要增加额外的库文件,需要增加路径/etc/ld.so.conf.d/
,创建以*.conf
为后缀名的文件,把需要增加的路径写入这个文件里面;然后需要执行:ldconfig -v
:表示重新搜寻库文件的过程;#include
来包含着写头文件的,每一个输出了库文件的软件,系统默认的头文件的位置在/usr/local/
里面增添头文件输出路径,可以使用链接来进行:通过将/usr/local/tengine/include/ 链接/usr/include/里面进行说明;
ln -s /usr/local/tengine/include/* /usr/include/
或者将:
ln -s /usr/local/tengine/include/ /usr/include/tengine
man
文档安装在--prefix
指定的man
目录里面,系统指定的在/usr/share/man
里面,关于man
的配置文件在/etc/man.config
# MANDATORY_MANPATH manpath_element
# MANPATH_MAP path_element manpath_element
# MANDB_MAP global_manpath [relative_catpath]
man
函数的连接,使用MANPATH
路径定义找到的man
,如果需要的化在里面添加一条MANPATH /usr/local/tenginx/man
;man:
1.-M:指定路径 /PATH/TO/MAN_DIR COMMAND
2./etc/man.config中添加一条MANPATH