91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux系統程序包管理之rpm

發布時間:2020-07-29 15:13:56 來源:網絡 閱讀:630 作者:逐夢小濤 欄目:數據庫

Linux系統程序包管理之rpm

==============================================================================

概述:

  本章內容:軟件的運行環境,軟件包基礎,rpm包管理,yum管理,定制yum倉庫,編譯安裝

==============================================================================

軟件運行環境

API:Application Programming Interface (應用程序開發接口)

POSIX:Portable OS(國際標準)

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

ABI:Application Binary Interface(應用二進制程序接口)

Windows與Linux不兼容

  • linux:文件格式:ELF(Executable and Linkable Format)

  • win:文件格式:exe,msl PE(Portable Executable)

庫級別虛擬化

  • Linux:WINE(提供模擬windows的庫,運行win環境)

  • Windows:Cywin(提供linux的運行環境)

開發語言:

系統級開發:

  • C/C++(依賴于c庫);

  • httpd,nginx,vsftpd,go

應用級開發:

  • java(依賴于jvm虛擬機)

  • Python(openstack云站),php,perl(依賴于per解釋器),ruby

程序格式

c/c++

  • 源代碼:文本格式的程序代碼;

  • 編譯開發環境:編譯器,頭文件,開發庫

  • 二進制格式:文本格式的程序代碼-->編譯器-->二進制格式(二進制程序、庫文件、配置文件、幫助文件)、

java/Python

  • 源代碼:編譯能夠在其虛擬機(jvm/pvm)運行的格式;

  • 開發環境:編譯器、開發庫;

  • 二進制

項目構建工具

  • c/c++:make

  • jave:maven

包管理

 1.概述:

二進制應用程序的組成部分:

  • 二進制文件、庫文件、配置文件、幫助文件

程序包管理:

  • 源代碼-->目標二進制格式(二進制程序、庫文件、配置文件、幫助文件)-->組織成為一個或有限幾個“包文件”(安裝,升級,卸載,查詢,校驗)

程序包管理器:

  • deblan:dpt,dpkg  以".deb"后綴;

  • redhat:rpm (redhat package manager) 以 ".rpm"后綴 ;

  • S.u.S.E:rpm, ".rpm"命令

包命名格式

源代碼name-VERSION.tar.gz|bz2|xz

  • ERSION: major(主版本號).minor(次版本號).release(發行號)

rpm包命名格式:name-VERSION-release.arch.rpm

  • VERSION:major.minor.release.arc

  • release:rpm包發行號

  • changelog文檔(內容修復改進的相關文檔)

  • 常見的arch:

      x86: i386, i486, i586, i686

      x86_64: x64, x86_64, amd64powerpc: ppc

      跟平臺無關:noarch (適用于所有平臺)

Linux系統程序包管理之rpm


示例:

bash-4.2.46-19.el7.x86_64.rpm

release:release.OS

包:分類和拆包

  • Application-VERSION-ARCH.rpm:主包

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

  • Application-utils-VERSION-ARHC.rpm:其它子包

  • Application-libs-VERSION-ARHC.rpm:其它子包

Linux系統程序包管理之rpm

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

     自動解決依賴包管理前端工具

  • yum:rpm包管理器的前端工具;

  • apt-get:deb包管理器前端工具;

  • zypper:suse上的rpm前端管理工具;

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

 2.庫文件:

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

  • ldd /PATH/TO/BINARY_FILE

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

  • ldconfig;

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

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

  • 緩存文件:/etc/ld.so.cache

 3.包管理器:

程序包管理器:

功能:

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

程序包的組成清單:(每個程序包單獨實現)

  • RPM包內的文件清單

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

  • 安裝或卸載時運行的腳本

數據庫(公共)

    路徑:/var/lib/rpm

  • 程序包名稱及版本;

  • 依賴關系;

  • 功能說明;

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

 3.程序包的來源:

管理程序包的方式:

  • 使用包管理器:rpm

  • 使用前端工具:yum, dnf

獲取程序包的途徑

系統開發版的光盤或官方的服務器(或CentOS鏡像站點)

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

  • http://mirrors.aliyun.com

  • http://mirrors.sohu.com

  • http://mirrors.163.com

項目官方站點

第三方組織

Fedora-EPEL:Extra Packages for Enterprise Linux

  • Rpmforge:RHEL推薦,包很全

搜索引擎:

  • http://pkgs.org;

  • http://rpmfind.net;

  • http://rpm.pbone.net;

  • https://sourceforge.net/

自己制作

  • 注意:檢查其合法性:來源合法性,程序包的完整性

rpm 命令管理程序包詳解

 1.rpm語法及選項概述:

rpm:

  • 安裝、升級、卸載、查詢和校驗、數據庫維護(都是通過rpm命令來實現的)

語法:

  • rpm [OPTIONS] [PACKAGE_FILE]

選項:

  • -i,--install:安裝

  • -U,--update,-F,--freshen:升級

  • -e,--erase:卸載

  • -q,--query:查詢

  • -V,--verify:校驗

  • --builddb,--initdb:數據庫維護

 2.安裝及子選項:

語法:

  • rpm {-i|--install} [install-options] PACKAGE_FILE…

選項:

  • -v:verbose 顯示詳細信息;

  • -vv:更詳細的輸出;

  • -h: hash marks 輸出進度條;每個#號表示2%的進度

  • --test:測試安裝,檢查并報告依賴關系及沖突關系,但不真正執行安裝;稱為dry run(干跑)模式;

  • --nodeps:忽略依賴關系,不建議;

  • --replacepkgs:替代原來的包,重新安裝(先把由原來的配置文件刪除再重裝)

  • --nosignature:不檢查包簽名信息,不檢查來源合法性

  • --nodigest:不檢查包完整性

     注意:rpm自帶四類腳本(--noscripts)

       %pre:安裝前腳本;   --nopre

       %post:安裝后腳本;  --nopost

       %preun:卸載前腳本; --nopreun

       %postun:卸載后腳本;--nopostun

真正安裝執行操作使用的命令

  • rpm -ivh PACKAGE_FILE

 3.升級及子選項:

語法:

  • rpm {-U|--upgrade} [install-options] PACKAGE_FILE...

  • rpm {-F|--freshen} [install-options] PACKAGE_FILE...

注意:

  • -U(upgrade):安裝有舊版程序包,則“升級”如果不存在舊版程序包,則“安裝”

  • -F(freshen):安裝有

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

升級命令:

  • rpm -Uvh PACKAGE_FILE ...

  • rpm -Fvh PACKAGE_FILE ...

  • --oldpackage:降級(回滾操作)

  • --force: 強行升級

注意:

  • 不要對內核做升級操作;Linux支持多內核版本并存,因此,可以直接安裝新版本內核;

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

 4.卸載及子選項:

作用:

  • 移除已安裝的程序包

語法:

  • rmp {-e|--erase}[--allmatches][--nodeps][--test] PACKAGE_NAME

注意:

  • 卸載和查詢是包的名,因為包已經存在了;而安裝和升級,包是不存在的,所以是包的文件路徑

簡單用法

  • rpm -e PACKAGE_NAME...

選項:

  • --allmatches:卸載所有匹配名稱的程序包各版本

  • --nodeps:忽略依賴關系

  • --test:測試卸載,dry run 模式

 5.查詢:

語法:

  • rpm {-q|--query} [select-options] [query-options]

[select-options] 挑選選項

  • -q PACKAGE_NAME:查詢某包或某些包是否安裝

  • -qa:查詢已安裝的所有包

  • -qf FILE:查看指定的文件由哪個程序包安裝生成

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

  • --whatprovides CAPABILITY(能力):查詢指定的CAPABILITY由哪個包所提供

  • --whatrequires CAPABILITY:查詢指定的CAPABILITY被哪個包所依賴

  • rpm2cpio 包文件|cpio–itv預覽包內文件

  • rpm2cpio 包文件|cpio–id “*.conf”釋放包內文件

[query-options] 查詢選項

  • --changelog:查詢rpm包的changelog(變更記錄)

  • -c:查詢指定的程序包的配置文件

  • -d:查詢程序包安裝完成后所生成的幫助文檔

  • -qi,-info:程序包相關的信息,版本號,大小,所屬的包組等

  • -l,--list:查看指定的程序包安裝后生成的所有文件列表;

  • --scripts:查看程序包自帶的腳本片斷

  • -R,--requires:查詢指定的程序包所依賴的CAPABILITY;

  • --provides:列出指定程序包所提供的CAPABILITY

常用組合用法:

  • -qi PACKAGE-qf FILE;-qc PACJAGE;-ql PACKAGE;-qd PACKAGE ;-qpi PACKAGE_FILE;-qpl PACKAGE_FILE;-qpc PACKAGE_FILE,.. 

演示:

[root@centos7 ~]# rpm -q tree
tree-1.6.0-10.el7.x86_64

[root@centos7 ~]# rpm -ql tree
/usr/bin/tree
/usr/share/doc/tree-1.6.0
/usr/share/doc/tree-1.6.0/LICENSE
/usr/share/doc/tree-1.6.0/README
/usr/share/man/man1/tree.1.gz

[root@centos7 ~]# rpm -qf /etc/fstab 
setup-2.8.71-6.el7.noarch

[root@centos7 ~]# rpm -qc bash
/etc/skel/.bash_logout
/etc/skel/.bash_profile
/etc/skel/.bashrc

[root@centos7 ~]# rpm -qi bash
Name        : bash
Version     : 4.2.46
Release     : 19.el7
Architecture: x86_64
Install Date: 2016年11月06日 星期日 18時31分30秒
Group       : System Environment/Shells
Size        : 3663618
License     : GPLv3+
Signature   : RSA/SHA256, 2015年11月25日 星期三 22時14分53秒, Key ID 24c6a8a7f4a80eb5
Source RPM  : bash-4.2.46-19.el7.src.rpm
Build Date  : 2015年11月20日 星期五 13時04分53秒
Build Host  : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://www.gnu.org/software/bash
Summary     : The GNU Bourne Again shell
Description :
The GNU Bourne Again shell (Bash) is a shell or command language
interpreter that is compatible with the Bourne shell (sh). Bash
incorporates useful features from the Korn shell (ksh) and the C shell
(csh). Most sh scripts can be run by bash without modification.

[root@centos7 ~]# rpm -qc httpd
/etc/httpd/conf.d/autoindex.conf
/etc/httpd/conf.d/userdir.conf
/etc/httpd/conf.d/welcome.conf
/etc/httpd/conf.modules.d/00-base.conf
/etc/httpd/conf.modules.d/00-dav.conf
/etc/httpd/conf.modules.d/00-lua.conf
/etc/httpd/conf.modules.d/00-mpm.conf
/etc/httpd/conf.modules.d/00-proxy.conf
/etc/httpd/conf.modules.d/00-systemd.conf
/etc/httpd/conf.modules.d/01-cgi.conf
/etc/httpd/conf/httpd.conf
/etc/httpd/conf/magic
/etc/logrotate.d/httpd
/etc/sysconfig/htcacheclean
/etc/sysconfig/httpd

[root@centos7 ~]# rpm -qd httpd
/usr/share/doc/httpd-2.4.6/ABOUT_APACHE
/usr/share/doc/httpd-2.4.6/CHANGES
/usr/share/doc/httpd-2.4.6/LICENSE
/usr/share/doc/httpd-2.4.6/NOTICE
/usr/share/doc/httpd-2.4.6/README
/usr/share/doc/httpd-2.4.6/VERSIONING
/usr/share/doc/httpd-2.4.6/httpd-dav.conf
/usr/share/doc/httpd-2.4.6/httpd-default.conf
/usr/share/doc/httpd-2.4.6/httpd-info.conf
/usr/share/doc/httpd-2.4.6/httpd-languages.conf
/usr/share/doc/httpd-2.4.6/httpd-manual.conf
/usr/share/doc/httpd-2.4.6/httpd-mpm.conf
/usr/share/doc/httpd-2.4.6/httpd-multilang-errordoc.conf
/usr/share/doc/httpd-2.4.6/httpd-vhosts.conf
/usr/share/doc/httpd-2.4.6/proxy-html.conf
/usr/share/man/man8/apachectl.8.gz
/usr/share/man/man8/fcgistarter.8.gz
/usr/share/man/man8/htcacheclean.8.gz
/usr/share/man/man8/httpd.8.gz
/usr/share/man/man8/rotatelogs.8.gz
/usr/share/man/man8/suexec.8.gz

 6.校驗:

語法:

  • rpm {-V|--verify} [select-options] [verify-options]

常見用法:

  • rpm -V PACHAGE_NAME

當沒有輸出結果時表示軟件包完整ok,當有相應的結果輸出表明對應的內容有修改,及具體如下:

  • S:file Size differs(文件的容量大小是否被改變);

  • M:Mode differs (includes permissions and file type)文件的類型或屬性是否被改變;

  • 5:digest (formerly MD5 sum) differs  這是一種指紋內容已經不同;

  • D:Device major/minor number mismatch 裝置的主/次代碼已經改變;

  • L:readLink(2) path mismatch  路徑已被改變

  • U: User ownership differs  文件的屬主已被改變

  • G:Group ownership differs  文件的屬組已被改變;

  • T:mTimediffers 文件的創建時間已被改變;

  • P:capabilities differ 

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

  • 完整性驗正:SHA256

  • 來源合法性驗正:RSA

獲取并導入信任的包制作者的秘鑰

  • 對于CentOS發行版來說:rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 

驗證:

  • 安裝此組織簽名的程序時,會自動執行驗證;

  • 手動驗證:rpm -K PACKAGE_FILE

加密方法:  

  • 公鑰加密:

  • 對稱加密:加密、解密使用同一密鑰;

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

      public key:公鑰,公開所有人

      secret key:私鑰, 不能公開

導入所需要的公鑰:  

  • rpm -K |checksigrpmfile:檢查包的完整性和簽名

  • rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

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

  • rpm -qagpg-pubkey*

演示:

[root@centos7 ~]# rpm -V httpd
遺漏   c /etc/httpd/conf.d/welcome.conf
S.5....T.  c /etc/httpd/conf/httpd.conf

      

 7.數據庫重建:

rpm數據庫路經:

  • /var/lib/rpm

  • 查詢操作:通過此處得到數據庫進行

用法:

  • rpm {--initdb|--rebuilddb}

選項:

  • --initdb: 初始化數據庫。當前無任何數據庫,則新建之;當前有時不執行任何操作。

  • --rebuilddb:重新構建。無論當前存在與否,都會直接重新創建數據庫。

獲取幫助

  • CentOS6 man rpm

  • CentOS7 man rpmdb 


     

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

施秉县| 宁海县| 塔城市| 张家界市| 景德镇市| 郑州市| 紫云| 广丰县| 涞源县| 陇西县| 江永县| 山阳县| 孙吴县| 鄱阳县| 无棣县| 景洪市| 麦盖提县| 灵石县| 长海县| 东丰县| 湘阴县| 黎平县| 兴山县| 阳西县| 康定县| 栾川县| 白河县| 肥城市| 巴马| 屏山县| 沙河市| 黔江区| 肃宁县| 耒阳市| 临西县| 西华县| 门源| 新邵县| 开远市| 定州市| 康保县|