rpm&yum

軟件包管理

軟件運行環境

軟件包基礎

Rpm包管理

Yum管理

定制yum倉庫

編譯安裝

ABI

應用程序的二進制接口,和操作系統相關,一個程序二進制編好了,想要在你的系統上跑,要符合你的操作系統的接口標準Windows:PE ?linux:ELF

WINDOWS和LINUX二進制程序是不兼容的

庫級別的虛擬化

Linux:WINE 可以讓Windows程序在linux跑

Windows:cywin

API:應用程序的開發接口

我們做軟件,不是從頭到尾所有的軟件自己構建,有些現成的功能我們可以放好,寫成模塊,,下次想用這個功能調用這個模塊就可以了,調用這個模塊,就涉及到一個接口,這個接口就是API

C語言是文本方式寫的程序,文本不能再操作系統上跑,需要最終解析成二進制,才能執行

程序源代碼——預處理——編譯—-匯編—-鏈接

 

靜態庫,.a最終生成的文件,既包括目標文件,也包括依賴庫文件,這個文件存放的內容全,放到任何主機上都能運行,

動態庫,.so,動態庫不會打包的一起,還是放在磁盤上,不會放到二進制文件中,只是一個指針

 

C語言編好的二進制程序,只能通過符合操作系統

標準的接口api來運行,和操作系統打交道,

 

Java的虛擬機,Java的程序是依賴虛擬機,

而Java的虛擬機有多種版本,

虛擬機幫助和操作系統打交道,

不需要程序直接和操作系統打交道

 

 

 

 

 

二進制應用程序的組成部分:二進制文件,庫文件,配置文件,幫助文件 ?,,還有數據文件,日志

程序不僅需要程序本身而且嚴重依賴于庫文件,

復雜的程序都有配置文件,稍微小點的工具ls,就沒有配置文件,要想配置加個選項就好啦 ls -a

一些大型的軟件,都有配置文件,用來設置程序不同的工作,配置文件的功能相當于選項的功能

加上選項就有不同的效果,對于大軟件來說由于太復雜了,加單一選項沒法加,只能加到配置文件當中,而且加到配置文件能夠存的住,(ls -a)的選項存不住,下次還需要重新加,

Bash

程序包管理器

對于linux來講,安裝一個軟件,使用一個軟件,最早以前,源碼編譯,C語言的源代碼(hello.c)直接運行是不可以的,需要用jcc工具把它編譯成二進制才能運行,

編譯成二進制進行運行,對普通用戶,太難

為了降低難度,提供軟件包的管理器,軟件包的管理器,就相當于,你不需要記二進制的編譯器,只需要記最基本的工具,

在linux中,都是以統一的文件后綴,組織這些文件的, ?不同的版本使用的工具是不一樣的,

Debian:deb文件,dpkg包管理器

Redhat:rpm文件,rpm包管理器

對于紅帽來講,所有的安裝包都是統一后綴的,

rpm中集成了很多軟件,安裝管理,rpm -i 安裝的時候,自動就把rpm解開,按事先預定好的路徑放好,設置好

 

 

 

 

 

 

Rpm包的命名格式,包名,包的版本號,作者自己加的版本信息,CPU架構,rpm

Name-VERSION-release.arch.rpm

包的分類和拆包

Application-VERSION-ARCH.rpm:主包

Application-devel-VERSION-ARCH.rpm:開發子包

Application-utils-VERSION-ARCH.rpm:工具子包

Application-libs-VERSION-ARCH.rpm:庫子包

包之間:可能純在依賴關系,甚至循環依賴

解決依賴包管理工具:

Yum:rpm包管理器的前段工具

Apt-get:deb包管理器前端工具

Zypper:suse上的rpm前端管理工具

Dnf:Fedora 18+ rpm包管理器前端管理工具

庫文件

查看二進制程序所依賴的庫文件

Ldd /PATH/TO/BINARY_FILE

管理及查看本機裝載的庫文件

Ldconfig 加載庫文件

/sbin/ldconfig -p:顯示本機已經存在的所有可用庫文件名及文件路徑映射關系

配置文件:/etc/ld.so.conf. /etc/ld.so.conf.d/*.conf

緩存文件:/etc/ld.sl.cache

程序包管理器

Rpm

不僅是個后綴也是個命令

功能:將編譯好的應用程序的各組成文件打包一個或幾個程序包文件,從而方便快捷地實現程序包的安裝、卸載、查詢、升級和校驗 等管理操作

包文件組成(每個包獨有)

Rpm包內的文件

Rpm的元數據,如名稱,版本,依賴性,描述等

安裝或卸載時運行的腳本

所謂的安裝其實就是把里面包含的文件給解開,按事先規定好的路徑一個一個給復制過去,(按規定好的目錄,設好相應的屬性,所有者,所屬組)

 

系統安裝好的rpm包,在linux系統中有個數據庫,存你安裝了那些rpm包,詳細的rpm信息,什么時候安的,生成了那些文件,都放在那些目錄中

數據庫(公共)目錄:/var/lib/rpm

程序包名稱及版本

依賴關系

功能說明

包安裝后生成的各文件路徑及校驗碼信息

這里面信息很重要,含有你裝了那些包,

 

管理程序包的方式:

使用包管理器:rpm

使用前端工具:yum,dnf

獲取程序包的途徑

1系統發布的光盤或官方的服務器

Centos鏡像

https://www.centos.org/download/

http://mirrors.aliyun.com

http:mirrors.sohu.com

http:mirrors.163.com

  • 目官方站點

3第三方組織 Fedora-epel

企業版額外附加的程序包,光盤放不下,經紅帽官方測試,可以使用

Centos系統上使用rpm命令管理程序包:

安裝、卸載、升級、查詢、校驗、數據庫維護

安裝:rpm{-i|–install} [install-aptions ]PACKAGES_FILE…

-v verbose ?冗長

-vv ????????詳細信息

-h:以#顯示程序包管理執行進度

Rpm -ivh PACKAGE_FILE…安裝包

Rpm -e 卸載包

 

[install-options]

–test:測試安裝,但不真正執行安裝,

–nodeps:忽略依賴關系

–replacepkgs ??覆蓋安裝 ?–replacefiles 替換文件

–nosignature:不檢查來源合法性

–nodigest:不檢查包的完整性

–noscripts:不執行程序腳本

%pre

%post

%preun

%postun

Rpm ???-ivh ?

Rpm ???-ql ?

Rpm ???-qa

Rpm升級

Rpm{-U|–upgrade}[jinstall-options] PACKAGE_FILE…

Rpm{-F|–upgrade}[jinstall-options] PACKAGE_FILE…

Upgrade:安裝有舊版本程序包,則升級

如果不存在就版本程序包,則安裝

Freshen:安裝有舊版本程序包,則升級

如果不存在舊版程序包,則不執行升級操作

Rpm ??-Uvh ??PACKAGE_FILE…

Rpm ??-Fvh ??PACKAGE_FILE…

–oldpackage:降級

–force :強制安裝

注意:1不要對內核做升級操作;linux支持多內核版本并存,因此,對直接安裝新版本內核

  • 如果原程序包的配置文件安裝后曾被修改,升級時,新版本的提供的同一個配置文件并不會直接覆蓋老版本的配置文件,而把新版本的文件重命名后保留

 

包查詢

Rpm ?-qa 查詢所有安裝的包

Rpm -q ?tree 查找該包有沒有安裝

Rpm -qa | grep tre

Rpm -qa “tre”

Rpm -qf /usr/bin/tree ?該文件來自哪個包

Rpm

-a 所有包

-f 查看指定的文件由哪個程序包安裝生成

-p rpmfile:針對尚未安裝的程序包文件做查詢操作

–whatprovides CAPABILITY:查詢指定的CAPABILITY由哪個包所提供

–whatrequires CAPABILITY:查詢指點的CAPABILITY被哪個包所依賴

Rpm2cpio 包文件|cpio -itv 預覽保內文件

Rpm2cpio 包文件|cpio-id ?“*.conf”釋放包內文件

 

【query-options】

–changelog:查詢rpm包的changelog ?更改其日志

-c 查詢程序的配置文件

-d 查詢程序的配置文檔

-i information

-l 查看指定的程序包安裝后生成的所有文件

–scripts 程序包自帶的腳本

–provides 列出指定程序包所提供的CAPABILITY

-R 查詢指定的程序包所依賴的CAPABILITY

常用查詢用法:

-qi

-qf

-qc 只是配置文件

-ql 所有文件

-qpi

-qpl

-qa

 

 

包卸載

Rpm{-e|–erase}[-allmatchses][–nodeps] ???[–nosctipts][–notriggers][test]

全部匹配 ????忽略依賴性

包校驗

Rpm {-V|–verify}[select-options][verify-options]

包來源合法性及完整性驗證

完整性驗證:SHA256

來源合法性驗證:RSA

公鑰加密:加密解密使用同以秘鑰

非對稱加密:密鑰是成對的

導入所需要公鑰

Rpm -K|checksig rpmfile 檢查包的完整性和簽名

Rpm –import/etc/pki/rpm-gpg/RPM-GPG-KEY-CectOS-7

CentOS 7 發行版光盤提供:RPM-GPG-KEY-CectOS-7

 

Rpm -qa “gpg-pubkey”

 

 

 

Centos:yum dnf

?

Yum是依賴于yum數據庫的,一般叫yumrepo倉庫

客戶端要想利用yum安裝,需要做一下配置,在自己的電腦上配置倉庫在哪,倉庫可能不在同一臺電腦上,可能在網絡上另外一個主機,所以需要在客戶端配置一個yum倉庫的路徑,baseurl=ftp http/s

可以通過網絡路徑尋找yum的路徑,

 

配置好軟件,客戶安裝軟件,yum install http(包名)

當敲命令,它就可以查它的配置,通過路徑找倉庫的服務器,在倉庫的服務器上存了倉庫的服務信息

除了必須的rpm包文件,倉庫還記錄的這些包之間的依賴關系,這些包是怎么分組的(同類型的包在一組),記錄包元數據,包組信息,

可以理解為一個數據庫,表現為目錄repodata 信息存在這個目錄中

Rhel5 /server/repodata

/server/*.rpm

Centos6 /Packages/*rpm

dir /repodata/*

?

Baseurl,路徑必須是repodata所在文件夾的上一級目錄

?

在本機上baseurl=file:///dir ?dir在目錄的根下

?

?

?

當客戶端敲yuminstall httpd的時候,連到服務器上查,有這個包嗎,有依賴性嗎,這些信息會自動下載下來,緩存在自己的機器上,下一次就不需要連到服務器上,直接查緩存,現在需要裝包http,需要再次下載下來rpm文件,下載到本機的某一個目錄里,安裝完成,包就默認刪除了,發現依賴別的包,就同時下載下來,安裝,(安裝完,只留緩存)

?

對于yum重要的兩點

1配置文件,路徑

2清緩存

?

本地yum的配置文件,/etc/yum.conf

Yum倉庫配置文件的客戶端 /etc/yum.repo.d

 

Cd /etc/yum.repos.d

Mkdir bak

Mv *.repo bak/

光盤做yum源,光盤本身所有的配置,元數據,rpm包都在里面

光盤的掛載路徑,lsblk 默認為路徑 /run/media/root/ecntos 7 x86_64

神奇的目錄 ls /misc/cd/

Vim base.repo

最簡單格式

[base]

baseurl=file:///misc/cd

gpgcheck=0

 

緩存文件

[root@centos7 yum.repos.d]# du -sh /var/cache/yum/

92M /var/cache/yum/

Yum clean all ?清緩存

?

制作yum源服務器

共享服務,ftp ???httpd

共享資源存放的目錄ftp ??/var/ftp/pub

httpd ??var/www/html

 

放在,cd /var/ftp/pub

mkdir ?centos/6/os/x86_64/

Mount /dev/sr0 centos/6/os/x86_64/ ?進到這個目錄這就是光盤內容

Systemctl start vsftpd 啟動ftp服務

ftp://地址 ??訪問

關閉防火墻,

關閉安全策略

客戶端配

[base]

Name =

Baseurl=ftp://地址/pub/centos/6/os/x86_64/

Gpgcheck=0

 

Ls /app/ ?tree-1.5.3-3.e16.x86_64.rpm

Createrepo /var/ftp/pub/app/ ?制作倉庫

Yum install 包 ?安裝

Yum remove 包 移除

Rpm -q http 判斷

Package=http;rpm -q $package &> /dev/null || yum ?-y install package ??-y 自動裝,沒有提問yes

 

Yum reinstall tree ?對于破話一部分的rpm安裝

?

Yum的常見選項 ?install ?remove ?-y ??list ??repolist列出倉庫列表,clean all ?history

Yum gropeinstall

Rpm的常見選項 ?-qi顯示相關的信息 ?-ql顯示文件列表

??-qf查詢擁有指定文件的包 ??-q ??–scripts腳本 ???-qa查詢所有的安裝包

?

?

?

?

?

?

Yum rpm的前端程序,可解決軟件包相關依賴性,可在多個庫之間定位軟件包,

Yum repository(倉庫):yum repo,存儲了眾多rpm包,以及包的相關的元數據文件(放置于特定目錄repodata下)

文件服務器:http:// ??https:// ?????ftp:// ???file://

Yum客戶端配置文件

/etc/yum.conf:為所有倉庫提供公共配置

/etc/yum.repo.d/*.repo:為倉庫的指向提供配置

倉庫指向的定義:

[repositoryID]

Name=Some name for this repository

Baseurl=url://path/to/repository/

Enable={1|0}

Gpgcheck={1|0}

Gpgkey=URL

Enablegroups={1|0}

Failovermethod={roundrobin|priority}

Roundrobin:意為隨機挑選,默認值

Priority:按順序訪問

Cost=默認為1000

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/90787

(0)
sunchunjiangsunchunjiang
上一篇 2018-01-02
下一篇 2018-01-02

相關推薦

  • 第十八周博客作業

    1、為LNMP架構添加memcached支持,并完成對緩存效果的測試報告; 操作系統: CentOS 7.210.0.0.51 nginx+php+mysql10.0.0.52 memcached 一. 環境準備: 搭建LNMP編譯安裝環境 1. 配置163的yum源和阿里云的epel源 [root@localhost ~]# mv /etc/yum.rep…

    2017-07-12
  • 文本處理章練習題

    2017.7.27練習 1、找出ifconfig “網卡名” 命令結果中本機的IPv4地址 ifconfig |head -n 2 |tail -n 1|tr -s ” ” : |cut -d: -f4   2、查出分區空間使用率的最大百分比值 df|tr -s ‘ ‘ %|sort -t% -k5 …

    2017-07-29
  • ansible高級應用

    上一篇博客介紹了ansible的基礎應用Modules,博客地址 http://www.www58058.com/14860 。這次介紹下Ansible的另一個核心模塊Playbooks。   Ansible的核心模塊:     Ansible core:   &nbs…

    Linux干貨 2016-04-18
  • Linux文件查找之find秘笈

    前言     Linux的基本特點之一是一切皆文件,在系統管理過程中難免會需要查找特定類型的文件,那么問題來了:如何進行有效且準確的查找呢?本文將對Linux系統中的文件查找工具及用法進行詳細講解。 常用工具對比     常用的文件查找工具主要有locate(非實時查找)和find(實時查找)。locate查找依賴于索…

    2015-03-23
  • 關于文件查找和解壓縮

                     文件查找和解壓縮在文件系統上查找符合條件的文件,文件查找的工具有兩個,locate 和find文件查找分為:          &nbs…

    系統運維 2016-08-18
  • 在centos6.9上實現軟RAID

    在centos6.9上實現軟RAID 什么是RAID?     RAID,全稱Redundant Arrays of Inexpensive(Independent)Disks。簡單翻譯叫磁盤陣列。    通俗一點講就是多個磁盤合成一個“陣列”來提供更好的性能、冗余,或者兩者都提…

    Linux干貨 2017-08-12
欧美性久久久久