軟件包管理

t01c8d0a587f7a91802

 

軟件包管理

API:Application Programming Interface

POSIX:Portable OS

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

靜態編譯:.a

動態編譯:.so

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

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

程序包管理器:

debian:deb文件,dpkg包管理器

redhat:rpm文件,rpm包管理器

rpm:Redhat package manager

rpm package manager

命名格式:mame-version-release.arch.rpm

源代碼:name-version.tar.gz|bz2|xz

version:major.minor.release

常見的arch:

x86:i386,i486,i586,i686

x86_64:x64,x86_64,amd64

powerpc:ppc

跟平臺無關:noarch

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

解決依賴包管理工具:

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

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

zypper:suse上的rpm前端工具

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

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

ldd 二進制所在目錄

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

ldconfig

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

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

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

程序包管理器:

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

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

rpm包內的文件

rpm的元數據,如名稱、版本、依賴性和描述等安裝或卸載時運行的腳本

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

程序包名稱及版本

依賴關系

功能說明

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

rpm命令

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

安裝:

rpm -i 安裝

-v 顯示安裝過程

-h 以#顯示安裝進度

-l 列出rpm包中的文件

–test: 測試安裝,但不真正執行安裝,即dry run模式

–nodeps:忽略依賴關系

–replacepkgs |replacefiles軟件遭到破壞重新安裝時找回破壞的文件

–nosignature: 不檢查來源合法性

–nodigest:不檢查包完整性

–noscripts:不執行程序包腳本

%pre: 安裝前腳本; –nopre

%post: 安裝后腳本; –nopost

%preun: 卸載前腳本; –nopreun

%postun: 卸載后腳本; –nopostun

升級:

upgrade:安裝并升級,有舊版本升級,沒有就安裝(-U)

freshen:升級,有舊版本升級,沒舊版本報錯(-F)

以上兩項不能用于升級內核版本

升級內核版本時直接安裝,安裝后

–oldpackage:降級

–force:強制安裝

查詢:

-q:查詢

-a:所有包

-c: 查詢程序的配置文件

-d: 查詢程序的文檔

-i: information

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

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

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

-p rpmfile:針對沒有安裝的包文件查詢(跟文件名)

–changelog:查詢rpm包的changelog

–scripts:程序包自帶的腳本

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

–whatprovides ?關鍵字\功能 :查詢指定的 CAPABILITY 由哪個包所提供

–whatrequires ?關鍵字\功能 :查詢指定的 CAPABILITY 被哪個包所依賴

rm -rf /var/lib/rpm 從刪庫到跑路的第四步

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

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

以上方法可以恢復損壞的包文件,但可能會影響到文件屬性

卸載:

-e卸載

–allmatches:卸載多個同名包文件

包校驗:

-V:校驗包錯誤(后面跟文件名,加a查詢包全部文件)

S:文件大小不同

M:模式不同

5:哈希值不同

D:設備號碼不匹配

L:路徑不匹配

U:校驗用戶權限

G:校驗組權限

T:校驗包時間的一致性

P:功能不同

-K:檢查包的完整性和前面(需要導入簽名文件)

rpm –import 簽名文件

光盤默認路徑:/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

系統光盤根目錄下也有

rpm被卸載:

進入救援模式:mount 掛在光盤;rpm -ivh [包名稱] –root=/mnt/sysimage/

yum

解決rpm依賴性問題,基于C/S(client/server)架構,可在多個庫之間定位軟件包

文件

文件服務器

http://

https://

ftp://

file://

yum客戶端配置文件

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

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

日志:/var/log/yum.log

倉庫指向的定義:

[repositoryID]

name=Some name for this repository

baseurl=url://path/to/repository/

enabled={1|0}

gpgcheck={1|0}

gpgkey=URL

enablegroups={1|0}

failovermethod={roundrobin|priority}

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

priority:按順序訪問

cost= 默認為1000

yum的repo配置文件中可用的變量:

$releasever: 當前OS的發行版的主版本號

$arch: 平臺,i386,i486,i586,x86_64等

$basearch:基礎平臺;i386, x86_64

$YUM0-$YUM9:自定義變量

yum命令

顯示倉庫列表

yum repolist

顯示程序包

yum list

yum list [all | glob_exp1] [glob_exp2] […]

yum list {available|installed|updates} [glob_exp1] […]

安裝軟件包

yum install package1 [package2] […]

yum reinstall package1 [package2] […] (重新安裝)

升級軟件包

yum update [package1] [package2] […]

yum downgrade package1 [package2] […] (降級)

檢查可用升級

yum check-update

卸載程序包

yum remove | erase package1 [package2] […]

查看程序包information:

yum info […]

查看指定的特性(可以是某文件)是由哪個程序包所提供:

yum provides | whatprovides feature1 [feature2] […]

清理本地緩存:

清除/var/cache/yum/$basearch/$releasever緩存

yum clean [ packages | metadata | expire-cache | rpmdb | plugins |all ]

構建緩存:

yum makecache

yum的命令行選項:

–nogpgcheck:禁止進行gpg check

-y: 自動回答為“yes”

-q:靜默模式

–disablerepo=repoidglob:臨時禁用此處指定的repo

–enablerepo=repoidglob:臨時啟用此處指定的repo

–noplugins:禁用所有插件

如何使用光盤當作本地yum倉庫:

1.掛載光盤至某目錄,例如/media/cdrom

#mount /dev/cdrom /media/cdrom

2.創建配置文件

[CentOS7]

name=

baseur1=

gpgcheck=0

enabled=

yum repolist:自動獲取新的yum源

 

創建yum倉庫:

createrepo rpm包目錄

 

程序包編譯安裝:

xxxx.src.rpm 未編譯的rpm包,安裝后,使用rpmbuild命令制作成二進制格式的rpm包,而后再安裝;

 

源程序從獲取到使用過程:源代碼–>預處理–>編譯(gcc)–>匯編–>鏈接–>執行

 

源代碼組織格式:

多文件:文件中的代碼之間,很可能存在跨文件依賴關系;

 

C、C++:make (用configure腳本–>對Makefile.in模板–>生成makefile文件)項目管理器

java:maven

 

編譯安裝三步驟:

./configure:

1.通過選項傳遞參數,制定啟動特性、安裝路徑;執行時會參考用戶的指定以及Makefile.in文件生成makefile;

2.檢查依賴到的外部環境;

make:

根據makefile文件,構建應用程序;

make install

 

開發工具:

autoconf:生成configure腳本

automake:生成Makefile.in

開源程序源代碼的獲取:

官方自建站點:

apache.org

mariadb.org

代碼托管:

SourceForge

githup.com

code.google.com

 

c/c++:gcc (GNU C Complier)

 

編譯C源代碼:

前提:提供開發工具及開發環境;

開發工具:make,gcc等

開發環境:開發庫,頭文件

glibc:標準庫

 

通過“包組”提供開發組件

centos 6:“Development Tools”,“Server Platform Development”,

centos 7:grouplist

 

第一步:configure腳本

選項:只等安裝位置、指定啟用的特性

選項分類:

安裝路徑設置:

–prefix=/PATH/TO/SOMEWHERE:指定默認安裝位置

–sysconfidir:配置文件安裝位置

 

第二步:make

第三部:make install

安裝后的配置:

1.導出二進制程序目錄至PATH環境變量中:

編輯文件/etc/profile.d/NAME.sh

export PATH=/PATH/TO/BIN:$PATH

2.導出庫文件路徑

編輯/etc/ld.so.conf.d/NAME.conf

添加新的庫文件所在目錄至此文件中;

 

讓系統重新生成緩存

ldconfig [-v]

 

3.導出頭文件

基于鏈接的方式實現;

ln -sv

 

4.導出幫助手冊

編輯/etc/man.config文件

添加一個MANPATH

wget:下載

rpm是不可替代的,如果被卸載,yum也不能使用,yum是基于rpm的

man配置文件:

/etc/man.config centos6

man_db.conf centos7

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

(0)
老司機丨快上車老司機丨快上車
上一篇 2018-04-19
下一篇 2018-04-19

相關推薦

欧美性久久久久