一个程序的四个组成部分: 

      二进制程序:

              库: 【它是由底层glibc和其他程序生成的库共同组合而成的】 

        配置文件: 

        帮助文件:

常用目录:

   /boot 存放内核 initrd{initramfs} 建议单独分区,因为将来根目录空间不够,可以做lvm 但是假如不单独分,bootloder不识别lvm,想识别lvm得先识别内核,内核又被做成lvm就成了死循环

    /etc 配置文件

    /usr 全局的共享的只读目录;/usr/share/man 帮助文件

    /usr/local 用于安装第三方软件,它又自己独立的王国

    /var 外围文件系统,日志文件 锁文件存放区域;没它可以,有它更规范;定期删除里面的日志

    /dev 设备文件;不能单独分区    

    /lib 库文件 

    /tmp 临时文件系统;

    /bin 二进制程序

    /sbin 二进制程序

    /proc 伪文件系统;非常重要,哪怕只有根目录,没有usr;也要提供proc 既不能单独分区,也没有任何文件,内核自我管理使用

    /sys 伪文件系统;非常重要,哪怕只有根目录,没有usr;也要提供sys 既不能单独分区,也没有任何文件,内核自我管理使用

    /mnt 用于挂载设备;意义不大

    /media 用于挂载设备;意义不大

    /home 单独分区

    /root 

    /misc 基本上很少用

    /opt 早先的一些软件,自认为自己是第三方软件,存放在这个目录里面

    /srv 

    【根目录下的etc bin sbin lib 是linux启动所需的不能单独分区】

    【/usr/bin sbin lib etc  是为操作系统提供核心功能的;因此可以单独分区】

    【/usr/local  安装第三方软件的场所;建议独立分区】


软件包管理器功能:

     1、制作软件包

     2、实现软件包的安装、卸载、升级、查询、校验;

Readhat:RPM包

Debian:dpt包

依赖关系:

    前端工具:yum 

    后端工具:RPM  

rpm命令:

    安装:rpm -i /path/to/package

              -v 显示详细信息

              -h 以#显示进度,每个#代表2%

              -nodeps:忽略依赖关系

              --replacepkgs:重新安装,替换原有安装

              --force:强行安装,可以实现重装或降级;

    查询:rpm -q PACKAGE_NAME

          rpm -qa:查询已经安装的所有包

          rpm -qi PACKAGE_NAME:查询指定包的说明信息

          rpm -ql PACKAGE_NAME:查询安装包生成的文件列表

          rpm -qf /path/to/somefile:查询指定的文件是由哪个RPM包安装

          rpm -qc PACKAGE_NAME:查询指定包安装的配置文件

          rpm -qd PACKAGE_NAME:查询指定包安装的帮助文件

          rpm -q --scripts /PATH/TO/SOMEFILE查询指定包中包含的脚本

        rpm -qpi PACKAGE_NAME:如果rpm包尚未安装,我们需查询其说明信息、安装以后会生成的文件


    卸载:rpm -e package_name

    升级:rpm -Uvh /path/to/new_package_file

          如果安装了老版本就升级,否则就安装

          rpm -Fvh /path/to/new_package_file

          如果安装了老版本就升级,否则就退出

          rpm -ivh --oldpackage /path/to/package:降级

    校验:rpm -V PACKAGE_NAME 可以查出某些文件是否被改过


    数据库的重建:rpm --rebuilddb重建数据库,一定会重新创建

                 rpm --initdb:初始化数据库,没有才建立,有就不用建立


    检验来源合法性,及软件完整性;

          对称:加密解密使用同一个密钥

          公钥:一对儿密钥,公钥、私钥;公钥隐含于私钥中,可以提取出来,并公开出去,公钥一般加密的不是数据本身,而是数据的特征码

          单向:


导入密钥文件,验证rpm包来源合法性:

         rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release导入密钥文件

         rpm -k /PATH/TO/PACKAGE_FILE


软件包命名: 

     主包:bind-9.7.1(版本号)-1.el5.i586.rpm

     子包:bind-libs-9.7.1-1.el5.i586.rpm

           bind-utils-9.7.1-1.el5.i586.rpm

 包名格式:

          name(包名)-version(版本号)-release(发行号).arch(平台架构).rpm

          bind      -major主.minor次.release-release.arch.rpm

   主版本号:重大改进

   次版本号:某个子功能发生重大改变

   发行号:修正了部分bug,调整了一点功能 

   后面的release:当发现rpm包中缺少什么功能,再往里加,命名为这个

   在官网上下载一般都是bind-9.7.1.tar.gz


 rpm包:

     二进制格式:方便管理

     源码安装:  更充分的发挥硬件的性能

     uname -a 查看硬件版本号

##########################################################################################

以上是rpm 命令,不是特别好用,所以要用yum,但是使用yum前提是有rpm包

#######################################################################################

yum的配置文件在 /etc/yum.conf里

yum 

    list:列出yum仓库的所有rpm包

    clean:清理缓存

    update:默认升级为最新版

    update_to:升级为指定版本

    remove: 卸载

    info:查看指定包的详细信息

    provides:查看指定文件是由哪个包安装完成

    grouplist:列出yum组

    groupinfo:指定包组的详细信息

    groupinstall :安装开发组开发库之类的



安装mysql:先查看有没有php53*  

   yum install all php53* 如果有再安装


定义yum仓库:vim /etc/yum.repos.d/server.repo

  [Base]

  name=RHEL5 Sever

  bbaseurl=ftp://172.16.0.1/pub/Server

  enabled=1

  gpgcheck=0

  保存    

############################################################################

############################################################################

编译安装c格式的源程序:

   1、 前提:准备开发环境(编译环境

   红5 安装Development Tools和Development Libraries

   红6  跟红5近似

   2、下载源码包,一般都是压缩包,解压之后 ,进入该文件目录下

   3、./configure --prefix=/usr/local/tengine(二进制程序在这个目录下都会自动创建bin目录) --conf-path=/etc/tengine/tengine.conf(配置文件存放路径)

   [configure:作用1:让用户选定编译特性 2:检查编译环境 ]

   4、make   开始编译

   5、make install  编译完成

   6、cd /usr/local/tengine/sbin   ls查看刚刚安装的程序

   7、必须vim /etc/profile 在expert前面加PATH=$PATH:/usr/local/tengine/sbin

     【修改path的环境变量,以能够识别此程序的二进制文件路径】

   8、重读配置文件 sourch /etc/profile  

   9、然后敲安装的程序就可以用了

#####################################################

安装之后,但是系统不识别这个二进制程序,所以还要修改路径

#####################################################

   【此时在usr/local/tengine目录下有lib库,这个库是不能被其他系统调用的,想调用还得,添加路径】

     在/etc/ld.so.conf.d/中创建以.conf为后缀的文件,而后把要增添的路径直接写进此文件

     

    然后执行ldconfig   重新搜寻库文件

                  -v:重新搜寻库文件的过程

  2、每一个输出了库文件的软件,都一定会有头文件在其中,头文件包含了其库文件的调用参数,参数类型的相关属性,如果不输出头文件,会导致二进制开发程序员开发的程序将不能编译运行

     系统默认头文件在/usr/include下自定义增添头文件搜寻路径,使用连接进行 ln -s /usr/local/tengine/include/* /usr/include

     或者将整个目录连接过去:ln -s /usr/local/tengine/include /usr/includ/tengine (目录名叫tengine)

3、然而帮助文件还是有问题

  man命令默认安装在--prefix指定的目录下的man目录:/usr/share/man

     我们可以编辑vim /etc/man.config  

     添加一行:MANPATH /usr/local/tengine

###################################################################

下面咱们再安装一个,实战训练笔记

###################################################################

安装LAMP

将tar包下载下来解压,并进入这个文件

./configure --help | less 查看他的选项都由哪些,每个跟每个设置路径的方式不一样所以要查一查

rpm -q httpd 确认httpd这个程序没有安装

./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd

make   编译一把

make install

去/usr/local/apache 下查看是不是有manual  lib

修改/etc/profile文件///////在expert前面加PATH=$PATH:/usr/local/apache/bin

在/etc/ld.so.conf.d/中创建httpd.conf    写入/usr/local/apache/lib

在apache目录上执行ldconfig -v

输出头文件:在/usr/local/apache/include目录下 所以我们ln -sv /usr/local/apache/include /usr/include/httpd

[上一行意思是: 把httpd的头文件的include目录连接到 系统默认头文件目录下叫httpd]

添加man功能    vim /etc/man.config 添加 MANPATH /usr/local/apache/man   

netstat -tnlp   查看是否有人占着端口   kill + PID号 就可以杀死程序

apachectl start 将apache启动起来   再用netstat -tnlp查看

cd /usr/local/apache/htdocs 可以编辑html   修改画面


######

咱们插空讲一个命令:netstat 网络状态

                         -r 显示路由表

                         -n 以数字形式

                         -t 建立的tcp连接

                         -l 处于监听状态的链接

                         -p 显示监听指定的套接字的进程号及进程名

######