Linux软件管理

软件包管理

应用程序:

程序:Architercture

c语言:源代码-->(编译)二进制格式

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

源代码-->编译-->链接-->运行

程序:

   库:程序开发依赖库

      静态

      动态

      静态链接

           动态链接:利用共享库

程序:指令+数据

text 代码段

Data+bss 初始化为0的变量

heap 堆

stack 栈


配置文件

dir=/path/to/somewhere

程序组成部分;

  二进制程序,库,配置文件,帮助文件

/boot,/etc,/usr,/var,/dev,/lib,/tmp,/bin,/sbin,/proc,/sys,/mnt,/media,/home,/root,/misc,/opt,/srv

/etc,/bin,/sbin,/lib,/usr/share/man

   系统启动就需要用到的程序,这些目录不能挂载额外的分区,必须在根文件系统的分区上

/usr/

  bin

  sbin

  lib

  操作系统核心功能,可以单独分区

 

/usr/local

  bin

  sbin

  lib

  etc

  man

 

/opt

/proc

/sys

  不能单独分区,默认为空

/dev:设备,不能单独分区

  udev

/root 不能单独分区

/var:建议单独分区

/boot:内核,initrd(initramfs)

  内核:

POST(自检)-->BIOS(HD)-->(MBR)bootloader(文件系统类型,ext2,ext3)-->内核

程序:指令+数据

指令:芯片

   cpu:普通指令,特权指令

   指令集:cat /proc/cpuinfo

 

c语言:

  Powerpc:二进制格式

  x86:


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

1.制作软件包

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

 

Redhat,SUSE,Debian

Redhat,SUSE:rpm

        redhat package manager

        rpm is package manager

Debian:dpt

 

依赖关系:

  X-->Y-->Z

前端工具:yum apt-get

后端工具:RPM,dpt

 

yum:Yellowdog Update Modifier

 

rpm命令:

rpm:

    数据库:/var/lib/rpm

rpmbuild:

安装,查询,升级,卸载,校验,数据库的重建,验证数据包等工作

rpm命名:

包:组成部分

   主包:

        bind-9.7.1-1.i586.el5.rpm

   子包:

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

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

报名格式:

        name-version-release.arch.rpm

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

主版本号:重大改进

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

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

 

bind-9.7.1.tar.gz

rpm包:

   二进制格式

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

           bind-9.7.1-1.noarch.rpm

           bind-9.7.1-1.ppc.rpm

   源码格式

 

1.安装:

rpm -i/path/to/package_file

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

    -v:显示详细过程

    -vv:更详细的过程

rpm-ivh /PATH/TO/PACKAGE_FILE

    --nodeps:忽略依赖关系

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

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

2.查询

rpm -qPACKAGE_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 -epackage_name

    --nodeps

 

5.检验

rpm -Vpackage_name

 

6、重建数据库

    rpm

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

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

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

加密类型:

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

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

       

    单向:

# ls/etc/pki/rpm-gpg/

    RPM-GPG-KEY-redhat-release

   

rpm -K/PAPT/TO/PACKAGE_FILE

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

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

   

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



ls/media/

mkdir/media/cdrom

mount-r /dev/cdrom /media/cdrom/

cd/media/cdrom/

ls

cdServer/

ls

ls re*

cdrepodata/

 

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

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

   

yuminstall zsh

 

comps*.xml:RPM包分组信息

 

cat/etc/yum.conf

cd/etc/yum.repos.d/

catredhat.repo

 

如何为yum定义repo文件

[Repo_ID]

name=Description

baseurl=

    ftp://

    http://

    file:///

enabled={1|0}

gpgcheck={1|0}

gpgkey=

 

vimserver.repo

[Base]

name=RHEL5Sever

baseurl=ftp://172.16.0.1/pub/Server

enabled=1

gpgcheck=0

 

[VT]

name=RHEL5VT

baseurl=ftp://172.16.0.1/pub/VT

enabled=1

gpgcheck=0

 

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

 

-y: 自动回答为yes

--nogpgcheck

 

list: 列表

    支持glob

    all

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

    installed: 已经安装的

    updates: 可用的升级

 

clean:清理缓存

    [ packages | headers | metadata | dbcache |all ]

   

repolist:显示repo列表及其简要信息

    all

    enabled: 默认

    disabled

 

install:安装

yuminstall PACKAGE_NAME

 

update:升级

update_to:升级为指定版本

 

remove|erase:卸载

 

info:

 

provides|whatprovides: 查看指定的文件或特性是由哪个包安装生成的;

   

groupinfo

grouplist

groupinstall

groupremove

groupupdate

 

/media/cdrom/{Server,VT,Cluster,ClusterStorage}

 

   如何创建yum仓库:

createrepo

 

mkdir-pv /yum/VT

cp/media/cdrom/VT/*.rpm /yum/VT/

cd/yum/VT/

cd/etc/yum.repos.d/

vimcdrom.repo

[Base]

name=RHEL5CDROM Server

baseurl=file:///media/cdrom/Server

enabled=1

gpgcheck=0

 

[VT]

name=VT

baseurl=file:///yum/VT

enabled=1

gpgcheck=0

 

yumlist all

createrepo/yum/VT/

yumrepolist


RPM安装:

    二进制格式:

    源程序-->编译-->二进制格式

        有些特性是编译选定的,如果编译未选定此特性,将无法使用;

        rpm包的版本会落后于源码包,甚至落后很多;bind-9.8.7, bind-9.7.2

       

定制:手动编译安装

 

编译环境,开发环境

开发库,开发工具

 

Linux:C,

GNU: C

 

C,C++:

gcc:GNU C Complier, C

g++:

 

make: 项目管理工具,

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

 

automake,--> makefile.in --> makefile

autoconf,--> configure

 

   100个可选择特性,

   make install

   编译安装的三步骤:

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

安装"DevelopmentTools"和"Development Libraries"

 

# tar

# cd

#./configure 

    --help

    --prefix=/path/to/somewhere

    --sysconfdir=/PATH/TO/CONFFILE_PATH

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

# make

# makeinstall

 

# tarxf tengine-1.4.2.tar.gz

# cdtegnine-1.4.2

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

# make

# makeinstall

#/usr/local/tengine/sbin/nginx

1、修改PATH环境变量,以能够识别此程序的二进制文件路径;

    修改/etc/profile文件

    在/etc/profile.d/目录建立一个以.sh为名称后缀的文件,在里面定义exportPATH=$PATH:/path/to/somewhere

    vim /etc/profile.d/httpd.sh

    export PATH=$PATH:/usr/loca/apaceh/bin

2、默认情况下,系统搜索库文件的路径/lib, /usr/lib; 要增添额外搜寻路径:

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

    # ldconfig 通知系统重新搜寻库文件

        -v: 显示重新搜寻库的过程

    vim /etc/ld.so.conf.d/httpd.conf

    /usr/local/apache/lib

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  

        1、man -M/PATH/TO/MAN_DIR COMMAND

        2、在/etc/man.config中添加一条MANPATH

 

tar

cd

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

make

makeinstall








猜你喜欢

转载自blog.csdn.net/yongchaocsdn/article/details/79708037