linux软件管理之rpm、yum netstat命令

应用程序:

   程序:Architecture

C语言:源代码——》(编译)二进制格式

脚本:解释器(二进制程序)

源代码——》编译——》链接——》运行

   程序:

    库:

        静态

        动态

        静态连接(直接把需要的库文件打包进程序)

        动态连接(将载入内存的库文件直接调用)

          共享库

    .so后缀(shared object)

配置文件

程序的组成部分:

   1、二进制程序(二进制文件运行需要依赖于库,这里的库指的是共享库和程序自身提供的库)

     库一般存放在/lib,/usr/lib路径,应用程序的库及系统底层glibc库都存放在/usr/lib路径

   2、库

   3、配置文件

   4、帮助文件

系统目录          

/boot:内核,initrd(initramfs),建议单独分区

/etc:配置文件

/usr

/var: 外围的文件系统,存放日志信息,和运行过程、临时文件等的区域,可以单独分区

/dev:设备文件,不能单独分区,2.6内核版本以后:udev提供动态配置外设的功能

/lib:库文件

/tmp:可以单独分区,至少400M空间

/bin:二进制程序

/sbin:二进制程序

/proc:伪文件系统,不能单独分区,是内核管理时使用的,默认为空的

/sys:伪文件系统,不能单独分区,是内核管理时使用的,默认为空的

/mnt

/media

/home:建议单独分区

/root:不能单独分区

/misc:杂项

/opt:早期很多三方软件,都存放在该目录

/srv

/usr/share/man:帮助文件


/etc ,/bin, /sbin, /lib, /usr/share/man,默认操作系统启动会用到的程序,这些目录不能挂载额外的分区,必须在根文件系统的分区上


另外的路径用于安装程序的路径:

一、/usr

  bin

  sbin

  lib

以上的配置文件也存放在etc目录下,帮助文件也放在/usr/share/man目录下

操作系统核心功能,都在以上目录下,usr目录可以单独分区,可以类似像windows系统上,安装软件可以安装到其他盘,但重启系统程序可能无法正常启动,但在linux下,可以将所有的程序安装在usr目录下,重新格式化安装/etc,/bin,/sbin目录即可,安装的程序还可继续使用

 

二、/usr/local

  bin

  sbin

  lib

  etc

  man

以上可以理解为一个独立体系,通常为安装的第三方软件,建议独立分区



/proc/cpuinfo 包含了CPU各种支持的指令集


软件包管理器:

  1、打包成一个文件:二进制程序,库文件,配置文件,帮助文件

 2、生成数据库,追踪所安装的每一个文件

软件包管理器的核心功能:

1、制作软件包

2、安装,卸载、升级、查询、校验


readhat,suse,debian

readhat,suse:rpm

 readhat package manager

 rpm is package manager 

debian:dpt


依赖关系,解决方法:

前端工具:yum(Yellowdog update modifier),apt-get

后端工具:rpm,dpt


rpm命令

  rpm:

    数据库/var/lib/rpm

 rpmbuild:

安装,查询,升级,检验,数据库的重建,验证数据包等工作:

RPM包的命名:

  软件包名称:

  组成部分:

    主包:

      bind-9.7.1-e151.i586.rpm

    子包

      bind-libs-9.7.1-e15.1.i586.rpm

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

 包名格式:

    name-version-release.arch.rpm

    bind-major.minor.release-release(RPM作者编译的版本号).arch(平台).rpm

主版本号:重大改变会改变

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

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

bind-9.7.1.tar.gz 原代码

rpm包:

    二进制格式:安装直接可以运行

    rpm包作者下载源程序,进行编译配置完成后,制作成rpm包

    源码格式:需进行编译,在平台上编译能更好的发挥性能

i686:32位平台

x64、x84是64位平台

noarch:什么平台都可以安装,bind-9.7.1-1.noarch.rpm

ppc:powper PC平台安装使用的,bind-9.7.1-ppc.rpm

rpm安装:

  rpm -i /PATH/PACKAGE_FILE

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

     -v 显示详细信息,-vv -vvvv

       rpm - ivh /path/to/package_file 

    --nodeps:忽略依赖关系

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

    --oldpackage:降级

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

    --test测试可不可以安装

rpm查询

  rpm -q /path/package_file:查询指定的包是否已安装

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

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

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

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

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

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

   -q --scripts package_name:查询指定包中包含的脚本

     

如果某rpm包尚末安装,我们需要查询其说明信息,安装以后会生成的文件

rpm -qpi /path/to/package_name(p是指定软件包的路径)

rpm -qpl 等用法


rpm升级

rpm -Uvh /path/to/newpackage_name:如果装有老版本的,则升级:否则安装

rpm -Fvh /path/to/newpackage_name:如果装有老版本的,则升级,否则退出不安装

rpm降级

rpm -ivh --oldpackage /path/to/oldpackage_name

rpm -Uvh --oldpackage /path/to/oldpackage_name

rpm卸载

rpm -e package_name(不能与其他软件包有依赖,如果有依赖是不允许卸载)

   --nodeps

校验

 rpm -V package_name 

[root@localhost Packages]# rm -rf /usr/share/zsh/5.0.2/functions/zrecompile
[root@localhost Packages]# vim /usr/share/zsh/5.0.2/functions/zfgcp
[root@localhost Packages]# rpm -V zsh
S.5....T.    /usr/share/zsh/5.0.2/functions/zfgcp
missing     /usr/share/zsh/5.0.2/functions/zrecompile

s.5....T.含义:

 S:文件大小

 M:权限

 5:MD5值

 D:主,次设备号

 L:路径不匹配

 U:属主

 G:属组

 T:修改时间

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

加密类型:

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

 公钥:一对儿密钥,公钥,私钥,公钥隐含于私钥中,可以提取出来,并公开出去

 单向:

/etc/pki/rpm-gpg/RPM-GPG-KEY-readhat-release 公钥的存放的位置,校验需将文件导入RPM包,如下:

rpm -K /papt/pachage_file,检验合法性。

  dsa,gpg:验证来源合法性,也即验证签名,可以使用--nosignature,略过此项

 sha1,md5:验证软件包完整性,可以使用--nodigest,略过此项

[root@localhost Packages]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #导入密钥
[root@localhost Packages]# rpm -K zsh-5.0.2-7.el7.x86_64.rpm
zsh-5.0.2-7.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 OK

重建数据库

/var/lib/rpm

rpm

  --rebuilddb:重建数据库,一定会重新建立数据库

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



yum repository

文件服务:

  ftp

  web

  file

client:

  配置文件

   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

      记录的是上面三个文件的时间戳和校验和

  comps*.xml

      RPM包分组信息



配置文件:/etc/yum.conf

 如何为yum定义repo文件

[Repo_Nmae]:标识ID

name=:Description

baseurl=:

       ftp://

       http://

       file:///

enabled={1|0}

gpgcheck={1|0}

gpgkey=path


yum命令

yum [options] [command] [package...]

-y:自动回答为yes

--nogpgcheck

list :列表

     可以使用格式:yum list all bash*(支持glob)

     all

     available:可用的,仓库中有但尚未安装的

     installed:已经安装的

     updates:可用的升级

clean:  [ packages | metadata | expire-cache | rpmdb | plugins | all ],清理缓存

     

repolist: [all|enabled|disabled]:显示repo列表,默认显示enabled


install :安装

yum install PACKAGE_NAME

update:升级

update_to:升级为指定版本

remove|erase:卸载

info package_name:等于rpm -qi 查询指定包的说明信息

provides|whatprovides:查看文件是由哪个安装包生成的,等于rpm -qf

groupinfo

grouplist:显示所有组

groupinstall:安装组

      yum groupinstall "development tools" "development libraries"

group

search STRING1:以字符串查询软件包名称

reinstall:重装 

localinstall:安装本地软件包

    yum localinstall --nogpgcheck PACKAGE_NAME

如何创建yum仓库步骤:

   createrepo:创建元数据

   createrepo /path/to/soft 

   yum clean all

   yum repolist

  如果需要定义为主的,需要将使用RPM包分组信息文件重建,如下:

  createrepo -g /root/comps-rhel5-vt.xml /yum/vt



定制:手动编译安装

编译环境,开发环境

开发库,开发工具

C,C++,perl,java,python


c,c++编译工具:

gcc:GUN c complier,c

g++:


make:项目管理工具

   makefile:定义了make(GCC,G++)按何种次序去编译这些源程序文件中的源程序


编译安装的三步骤

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

安装RHLE5“development tools" "development Libraries" 

安装RHLE6 "development tools" "compatibility libraries"(兼容库)

#tar

#./configure

     --help :获取使用

   --prefix=/path/to/somewhere:指定安装路径

   --sysconfdir=/path/to/conffile_path:指定配置文件安装路径

   功能:1、让用户选定编译特性;2、检查编译环境

#make

#make install


示例安装tengine服务:

下装source文件,安装好开发或编译环境

./configure --prefix=/usr/local/tengine --conf-path=/etc/ 

make

make install

vim /etc/profile--> PATH=$PATH:/usr/local/tengine/sbin(将nginx命令加入环境,可直接使用)

source /etc/profile,加载环境变量 


如果安装到非默认路径下,需注意

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,增加MANPATH路径。或 man -M /path/to/man_dir Command(重启失效)

#!/bin/bash
#
POSTFIX=`echo $1 |awk -F. '{print $2}'`
if [ "$POSTFIX" != "repo" ];then
   echo -e  "\033[31mcreaterepo Usage: FILENAME.repo\033[0m"
   exit 7
fi

cd /etc/yum.repos.d/
if [ -e $1 ];then
   echo "$1 existed"
   exit 9
else
   touch $1 &> /dev/null
   echo "$1 touch sucessful"
fi

read -p "Enter your repo_id: " REPO_ID
until [ $REPO_ID == 'quit' ];do
      echo "[$REPO_ID]" >> $1
      read -p "Enter your repository name: " REPO_NAME
      echo "name=$REPO_NAME">> $1
      read -p "Enter your repository url: " REPO_URL
      echo "baseurl=$REPO_URL">>$1
      read -p "Enter your enabled value: " REPO_ENABLE
      echo "enabled=$REPO_ENABLE">>$1
      read -p "Enter your gpgcheck value: " REPO_GPGCHECK
      echo "gpgcheck=$REPO_GPGCHECK" >> $1
      read -p "Enter your gpgfile path: " REPO_GPGFILE
      echo "gpgkey=$REPO_GPGFILE">>$1
   read -p "Enter your repo_id agin: " REPO_ID
done




netstat 命令

    -r:显示路由表

    -n:以数字方式显示

    -t:建立的TCP连接

    -u:显示UDP连接

    -l:显示监听状态的连接

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章