Linux_Package_Management

本文详细介绍了Linux的包管理,包括rpm和yum工具的使用,以及编译安装开源程序的过程。讨论了API和ABI的概念,可执行程序的格式,虚拟环境和项目构建工具。讲解了rpm命令的功能,如挂载系统镜像、安装和查询包,并强调了包的安全性检查。此外,还阐述了yum工具的工作原理,仓库配置和高级用法。最后,介绍了如何从源代码编译安装git-1.7.10.1的步骤。
摘要由CSDN通过智能技术生成

Linux_Package_Management

Before Package Management

API

Application Program Interface

This is the set of public types/variables/functions that you expose from your application/library.  
In C/C++ this is what you expose in the header files that you ship with the application.

ABI

Application Binary Interface

This is how the compiler builds an application.
It defines things (but is not limited to):  
How parameters are passed to functions (registers/stack).
Who cleans parameters from the stack (caller/callee).
Where the return value is placed for return.
How exceptions propagate.

以下是API和ABI之间的详细联系:

https://www.safaribooksonline.com/library/view/linux-system-programming/0596009585/ch01s02.html

可执行程序的格式:

Unix-like Windows
ELF (ELF 64-bit LSB executable) exe,msi

虚拟环境

Linux Windows
WinE(Wine Is Not an Emulator)——allow applications designed for Microsoft Windows to run on Unix-like operating systems Cygwin——a Unix-like environment and command-line interface for Microsoft Windows.

项目构建(管理)工具

C/C++ java
make——GNU make utility to maintain groups of programs maven——a build automation tool used primarily for Java projects

包管理器

organize binary program,include but not limited to**install**、upgradeuninstallqueryverify

debian redhat S.u.S.E Gentoo ArchLinux
dpt(debian package tool)、dpkg、.deb、apt-get redhat package manager、rpm、.rpm:rpm is package manager、yum,dnf rpm.rpm、zypper ports paceman

前端工具

可以自动解决软件之间的依赖关系
yum apt-get(apt-cache) zypper dnf
rpm包管理前端工具 deb包管理器前端工具 SuSE的rpm包管理器前端管理工具 Fedoras 22+系统上rpm包管理器的前端工具

version

- source code

name-Version.tar.gz
    Version:major.minor.release
    major表示重大改变
    minor表示小改变
    release表示bug修正发行号

比如:redis-3.0.2.tar.gz
- rpm package

name-Version-release.arch.rpm
    Version:major.minor.release
    release:release.arch
        archetecture:i386、x64(amd64)、ppc、noarch
        release.os:2.el7.i386.rpm

比如:bash-4.1.2-33.el6.x86_64,其中4.1.2是bash的版本号,33.el6.x86_64是release,其架构是x86_64
redis-2.8.7-2.centos7.x64.rpm,其中2.8.7是redis版本号,2.centos7.x64是release,表示源码的第二次打包,用于centos7的x64平台

- 拆包

main
    name-Version-release.arch.rpm
mild
    name-function-Version-release.arch.rpm
    function:devel、utils、libs、...

比如php-5.4.16-23.el7_0.3.x86_64.rpm和php-bcmath-5.4.16-23.el7_0.3.x86_64.rpm

程序包管理器

功能

将编译好的应用程序的各组成文件打包成一个或几个程序包文件,从而更方便地实现程序包的安装、升级、卸载和查询等操作
每个程序包都有自己的一套清单,包括安装、卸载的各种脚本。

程序包数据库(公共的)

程序包数据库包括已经安装的各种程序包的信息,包括但不限于:程序包的名称和版本、依赖关系、功能说明、安装生成的个文件的文件路径和校验码信息

CentOS系统上存放数据库的位置:/var/lib/rpm/

程序包获取途径

  1. 系统发行盘的光盘或官方的文件服务器(或镜像站点)
    http://mirrors.aliyun.com
    http://mirrors.163.com
    http://mirrors.hust.com
    http://mirrors.sohu.com
  2. 项目的官方站点
  3. 第三方组织
  4. 编译安装
    注意:最好不要使用下载工具下载,可能会下载其他人上传的修改文件

合法性检查

  1. 来源合法性
  2. 文件完整性

rpm命令详解

挂载系统镜像(CentOS 7为例)

  1. 从虚拟机加载系统镜像
  2. 挂载
[root@localhost ~]# mount -r /dev/cdrom /media
mount: 在 /dev/sr0 上找不到媒体
[root@localhost ~]# mount -r /dev/cdrom /media

之所以第一次挂在是因为在第一步中添加了镜像文件,但是没有链接到虚拟机中,在虚拟机的右下方有一个光盘图标,右键链接/dev/cdrom中就会出现这个镜像设备,另外这里要是用只读挂载。
3. 接下来进入/media/Packages目录就可以进行各种rpm操作了。

rpm功能

rpm [OPTIONS] [PACKAGE_FILE]
    安装:-i,--install
    升级:-U,--update,-F,--freshen
    卸载:-e,--erase
    查询:-q,--query
    校验:-V,--verify
    数据库维护:--builddb,--initdb
    检测:--test
    GENERAL OPTIONS
        -v:verbose,详细信息

-vv:更详细的输出

安装:
    rpm {-i|--install}{install options]PACKAGE_FILE...
    rpm -ivh PACKAGE_FILE
    [install-optoins]
        -h:解压归档时打印50个箭头 
        -v:verbose,更好的显示-h的表现形式
        --test:安装准备检测
        --nodeps:强制安装,忽略依赖关系。不建议这样安装
        --replacepkgs:重新安装
            如果某一个文件出了问题,直接把这个文件删掉,然后使用这个选项重新安装
        --noscripts:不执行任何脚本
        注意:rpm可以自带脚本;脚本一共有四种类型
            preinstall:安装过程开始之前运行的脚本,%pre,  --nopre
            postinstall:安装过程完成之后运行的脚本,%post --nopost
            preuninstall:卸载过程真正开始执行之前运行的脚本,%preun   --nopreun
            postuninstall
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值