linux 软件包管理

在学习linux的过程中我们总是要处理各种各样的软件,网络上下载的大部分软件包都会有一些我们用不到的功能,给我们的使用带来了各种不便,所以对我们来说学会制作和使用软件包就是非常重要的事。下面就介绍一下制作软件包

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

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

制作软件包

安装卸载升级查询,校验

软件包的制作常用到两种工具:

前端工具:yum apt-get

 

后端工具:rpm,dpt

rpm命令:

   rpm:

       数据库:/var/lib/rpm

   rpmbuild:

安装、查询、卸载、升级、校验、数据库的重建、

验证数据包等工作;

rpm命名:

包:组成部分

    主包:

     bind-9.7.1-1.i586.e15.rpm

子包:

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

包名格式:

    name-version-release.Arch.rpm

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

主版本号:重大改进

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

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

rpm:

   安装:必须提前下载好安装的文件

   rpm -i  /path/to/package_file

 

 

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

   --replacr重新安装,替换原有的安装

   -v:显示详细过程

   -vv:更详细过程

   --nodeps忽略依赖关系

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

   查询

   rpm -q package_name 查询指定的包是否安装

   -qa 查询所有已安装的包

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

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

   -qc:查询软件包安装的配置文件

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

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

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

   如果某软件包尚未安装我们需要查询其说明信息安装后会生成的文件;

   rpm -qpi /path/to/package_file

   rpm -qpl

   l:软件包列表

   i:软件包信息

   升级

   rpm -uvh /path/to/new_package_fie:如果装有老版本则审计,否则,则安装

   rpm -fvh /path/to/new_package_fie:如果装有老版本则审计,否则,则退出

   rpm –ivh --force /path/to/new_package_file:强行安装,覆盖掉原有软件包。

卸载

rpm -e package_name:如果软件包有依赖关系,则不要卸载,否则软件包不能用,若要强行卸载用rpm -e --nodeps package_name    --nodeps

校验

rpm   -V  包名(package_name)是否被非法改变

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

加密类型:

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

   公钥:一堆秘钥,公钥,私钥;公钥隐含与私钥中,

   可以提取出来,并公开出去;加密速度慢

   单向:

/etc/pki/rpm-gds

  rpm-gpg-key-redhat-release

  -k /path/to/pachage——file

  dsa,gpg:验证来源的合法性,也验证前面;可以使用

  --nisignature,略过此项

  shal,md5:验证软件包完整性;可以使用--nodigest,

  略过此项

  --import /etc/pki/rpm-gpg/rpm-gpg-key-redhat-release

  :导入秘钥文件

  重建数据库:

  rpm

    --rebuilddb:重建数据库,一定会重建数据库,把原

来的覆盖掉

--initadb初始化数据路,没有才建立,有就不用建立

  重建数据库,

um repoditory

  

yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记

 yum仓库中的袁数据文件:

    Primary.xml.gz 当前所有rpm包列表,包含依赖关系每一个rpm(软件包)安装生成的文件列表

 Filelists.xml.gz:当前仓库内虽有的rpm包的所有的文件列表

 Other.xml.gz:额外信息,rpm包的修改日志信息

 Repomd.xml:记录上面三个文件的时间戳和校验和

compa*.xml:rpm包分组信息 release-notes

配置yum仓库:下面这四个路径,每个路径都独立的yum园

ftp://172.16.0.1/pub/{server,VT,cluster,clusterstorage}

如果我们想要本地主机要想使用自己的路径来当做安装rpm包时yum仓库的话,就需要告诉yum库本地目录有哪些yum库可用。

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

[main]:核心片段

cachedir=/var/cache/yum:缓存路径

keepcache=0:是否保存缓存区中的文件

debuglevel=2:调试级别

logfile=/var/log/yum.log:日志

distroverpkg=redhat-release:发行版版本号的名称

tolerant=1:容错

exactarch=1:精确的,严格检查平台版本

obsoletes=1:过期的要不要废弃

gpgcheck=1:要不要检查

plugins=1:提供插件

如何为yum定义repo文件

[Repo_ID]:标识

name=Description(真正意义上的名称)

baseurl=

   ftp//(repo 所在位置)

   http://

   file:///:根路径

enabled={0|1}0表示禁用,1表示启用

gpgcheck={0|1}:检查gps的完整性

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

yum使用格式yum [options] [command] [package ...]

-y:自动回答为yes

--nogpgcheck

list:列表

  all:默认的

  available:仓库中有但是尚未按章的,可用的

  installed:已经安装的

  updates:可用的升级

yum clean:清理缓存

  [packages|headers|metadata|dbcache|all]

  

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

    all:

enabled:默认

    disabled

install:安装

yum install PACKAGE_NAME

updata 升级

updata to *升级为指定版本

卸载yum  remove|erase 

yum  provides|whatprovides:查看指定的文件是由哪个文件生成

groupinfo:显示组内包含的包,

grouplist:列出当前所有组

search:使用模糊查找的方式查找

localinstall:本地安装

yum localinstall php53-mysql-5......:可以解决依赖关系

如何创建yum 仓库:

createrepo:这是一个rpm包,不用进入yum.repos.d就可以创建

#yum grouplist

#yum instaill createrepo

如何以光盘做yum库

先把光盘挂载上

mkdir /media/cdrom

mount –r /dev/cdrom /media/cdrom

之前我们在yum.repos.d中编辑过Server.repo ,如果我们把它改名为Server.repo.backup:mv Server.repo Server.repo.backup,此时这个文件就不能用了,这时我们就要用到光盘。

RPM安装:

 二进制格式:别人已经将源码编译好的,有些特性是在编译时选定的,如果编译未选定此特性,rpm包将无法使用;rpm包的版本会落后于源码包,甚至落后很多,这时我们就要定制了:即手动编译安装,而编译要用到编译环境或开发环境。

make:项目管理工具

   makefile:定义make按何种次序区编译这些源程序文件中的源程序

   其调用这些源程序文件中的源程序

automake-->makefile.in-->makefile

autoconf-->configure

100个可选特性

make install 安装

编译安装的三步骤

前提:准备开发环境

./congigure 功能:让用户选定编译特性;检查编译环境;

  --prefix=/path/to/somewhere

  --sysconfidir=/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/tengune--conf-path=/etc/tengine/tengine.conf--without-http_rewrite_module(有某种关系,类似于依赖)

#make

#make install

#cd /usr/local/tengine/skin/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、头文件#include输出给系统

 默认:/usr/include

 增添头文件搜寻路径,使用接文件

   两种方式:

   ln -s /usr/loacl/tengine/include/*/usr/include每一个文件都链接

   ln -s /usr/loacl/tengine/include/ /usr/include/tengine:给目录创建链接

man文件路径:安装在--prefix   指定的目录下的man目录:

/usr/share/man

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

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

   netstat命令;

       -r:显示路由表

   -n:以数字的方式

   -t:建立的tcp的链接

   -u:显示udp连接

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

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

你可能感兴趣的:(linux,软件包管理)