Linux软件包管理

程序组成部分
二进制程序
库
配置文件
帮助文件
软件包管理器核心功能
1.制作软件包
2.安装,卸载,升级,查询,校验
Redhat,SUSE,Debian
Redhat,SUSE:RPM
      Redhat Package Manager
      PRM 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.ppc.rpm//power pc
    源码格式
1.安装:
rpm -i /PATH/TO/PACKAGE_FILE
    -h:#显示进度;每个#表示%2
    -v:显示详细过程
    -vv:更详细的过程
rpm -ivh /PATH/TO/PACKAGE_FILE
    --nodeps:忽略依赖关系
    --replacepkgs:重新安装,替换原有安装
    --force:强行安装,可以实现重装和降级

2.查询
rpm -q PACKAGE_NAME//查询指定的包是否已经安装
rpm -qa://查询已经安装的所有包
rpm -qi PACKAGE_NAME//查询指定包的说明信息
    -ql //查询指定包安装生成后的文件列表
    -qc //查询指定包安装的配置文件
    -qd //查询指定包安装的帮助文件
rpm -q --scripts PACKAGE_NAME//查询指定包中包含的脚本

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

如果某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 -e PACKAGE_NAME
    --nodeps

5.检验
rpm -V PACKAGE_NAME

6.重建数据库
/var/log/rpm/
rpm 
   --rebuilddb: 重建数据库,一定会重新建立;
   --initdb:初始化数据库,没有才建立,有就不用建立;

7、检验来源合法性,及软件包完整性;
加密类型:
   对称:加密解密使用同一个秘钥
   公钥:一对儿秘钥,公钥,私钥;公钥隐含于私钥中,可以提取出来,并公开出去;
   单向:

# ls /etc/pki/rpm-gpg/
    RPM-GPG-KEY-redhat-release
dsa, gpg: 验正来源合法性,也即验正签名;可以使用--nosignature,略过此项
sha1, md5: 验正软件包完整性;可以使用--nodigest,略过此项

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release: 导入密钥文件
yum
ls /media
mkdir /media/cdrom
mount -r /dev/cdrom /meida/cdrom
cd cdrom/Server/repodata


yum仓库中的元数据文件:

primary.xml.gz
    所有RPM包的列表;
    依赖关系;
    每个RPM安装生成的文件列表;
filelists.xml.gz
    当前仓库中所有RPM包的所有文件列表;
other.xml.gz
    额外信息,RPM包的修改日志;
repomd.xml
    记录的是上面三个文件的时间戳和校验和;
[root@localhost ~]# ls /etc/yum.conf 
/etc/yum.conf
[root@localhost ~]# cat /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=3

#  This is the default, if you make this bigger yum won't see if the metadata
# is newer on the remote and so you'll "gain" the bandwidth of not having to
# download the new metadata and "pay" for it by yum not having correct
# information.
#  It is esp. important, to have correct metadata, for distributions like
# Fedora which don't keep old packages around. If you don't like this checking
# interupting your command line usage, it's much better to have something
# manually check the metadata once an hour (yum-updatesd will do this).
# metadata_expire=90m

# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
redhat.repo  rhel-source.repo
[root@localhost yum.repos.d]# ls
redhat.repo  rhel-source.repo
[root@localhost yum.repos.d]# cat redhat.repo 
#
# Certificate-Based Repositories
# Managed by (rhsm) subscription-manager
#
# *** This file is auto-generated.  Changes made here will be over-written. ***
# *** Use "subscription-manager repo-override --help" if you wish to make changes. ***
#
# If this file is empty and this system is subscribed consider 
# a "yum repolist" to refresh available repos
#[root@localhost yum.repos.d]# cat rhel-source.repo 
[rhel-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=ftp://ftp.redhat.com/pub/redhat/linux/enterprise/$releasever/en/os/SRPMS/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[rhel-source-beta]
name=Red Hat Enterprise Linux $releasever Beta - $basearch - Source
baseurl=ftp://ftp.redhat.com/pub/redhat/linux/beta/$releasever/en/os/SRPMS/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-beta,file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[root@localhost yum.repos.d]# cat rhel-source.repo 
[rhel-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=ftp://ftp.redhat.com/pub/redhat/linux/enterprise/$releasever/en/os/SRPMS/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[rhel-source-beta]
name=Red Hat Enterprise Linux $releasever Beta - $basearch - Source
baseurl=ftp://ftp.redhat.com/pub/redhat/linux/beta/$releasever/en/os/SRPMS/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-beta,file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
如何为yum定义repo文件
[Repo_ID]
name=Description
baseurl=
    ftp://
    http://
    file:///
enabled={1|0}
gpgcheck={1|0}
gpgkey=
配置yum源:
1.删除redhat原有的yum 
rpm -aq|grep yum|xargs rpm -e --nodeps
2.根据系统版本下载:
[root@www ~]# uname -a
Linux www.sn.10086.cn 2.6.32-504.el6.x86_64 #1 SMP Tue Sep 16 01:56:35 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux
wget http://mirrors.163.com/centos/6/os/x86_64/Packages/yum-3.2.29-73.el6.centos.noarch.rpm
wget http://mirrors.163.com/centos/6/os/x86_64/Packages/yum-metadata-parser-1.1.2-16.el6.x86_64.rpm
wget http://mirrors.163.com/centos/6/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.30-37.el6.noarch.rpm 
wget http://mirrors.163.com/centos/6/os/x86_64/Packages/python-iniparse-0.3.1-2.1.el6.noarch.rpm
wget http://mirrors.163.com/centos/6/os/x86_64/RPM-GPG-KEY-CentOS-6
3.rpm --import RPM-GPG-KEY-CentOS-6
4.安装
rpm -ivh python-iniparse-0.3.1-2.1.el6.noarch.rpm 
rpm -ivh yum-metadata-parser-1.1.2-16.el6.x86_64.rpm 
rpm -ivh yum-3.2.29-73.el6.centos.noarch.rpm yum-plugin-fastestmirror-1.1.30-37.el6.noarch.rpm  
注意最后两个包必需同时安装,否则会相互依赖
4.cd /etc/yum.repos.d
mv rhel-source.repo rhel-source.repo.bak
vi rhel-source.repo
内容为:
[base]
name=CentOS-$releasever - Base
baseurl=http://mirrors.163.com/centos/6/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-6

#released updates
[updates]
name=CentOS-$releasever - Updates
baseurl=http://mirrors.163.com/centos/6/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-6

#packages used/produced in the build but not released
#[addons]
#name=CentOS-$releasever - Addons
#baseurl=http://mirrors.163.com/centos/$releasever/addons/$basearch/
#gpgcheck=1
#gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-6
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
baseurl=http://mirrors.163.com/centos/6/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-6
#additional packages that extend functionality of existing packages
6.yum clean all
7.yum install vim //测试是否配置成功
yum [options][command][package....]
-y: 自动回答为yes
--nogpgcheck

list:列表
    all 
    available:可用的,仓库中有但尚未安装
    installed:已经安装的
    update:可用的升级
clean:清理缓存
    [ packages | headers | metadata | dbcache | all ]
repolist: 显示repo列表及其简要信息
    all
    enabled: 默认
    disabled

install: 安装
yum install PACKAGE_NAME

update: 升级
update_to: 升级为指定版本

remove|erase:卸载

info:查询指定包信息
     yum info zsh

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

groupinfo
grouplist
groupinstall
groupremove
groupupdate
yum grouplist
yum groupinfo "Development Tools"
yum groupinstall "Development Tools" "Development Libraries"
RPM安装
二进制格式:
    源程序-->编译--->二进制格式
       有些特性是编译选定的,如果编译未选定此特性,将无法使用;
       rpm包的版本会落后于源码包,甚至落后很多
定制:
    手动编译安装
编译环境,开发环境
开发库,开发工具

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

automake-->makefile.in-->makefile
autoconf-->configure

编译安装的三步骤:
前提:准备开发环境(编译环境)
安装"Development Tools""Development Libraries" 

# tar 
# cd
# ./configure  
    --help 
    --prefix=/path/to/somewhere
    --sysconfdir=/PATH/TO/CONFFILE_PATH
    功能:1、让用户选定编译特性;2、检查编译环境;
# make
# make install

例如:
# tar xf tengine-1.4.2.tar.gz
# cd tegnine-1.4.2
# ./configure --prefix=/usr/local/tengine --conf-path=/etc/tengine/tengine.conf
# make
# make install
# /usr/local/tengine/sbin/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、头文件:输出给系统
    默认:/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

netstat命令:
    -r:显示路由表
    -n:以数字方式显示
    -t:建立tcp连接
    -u:显示udp连接
    -l:显示监听状态的连接
    -p:显示监听指定的套接字的进程的进程号和进程名
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值