軟件安裝包的管理

rpm安裝包的管理

rpm的數據庫( 公共) :/var/lib/rpm
程序包名稱及版本
依賴關系
功能說明
包安裝后生成的各文件路徑及校驗碼信息

安裝
rpm:{-i}
-v:顯示詳細信息
-h:以#顯示程序包管理執行進度

rpm -ivh PACKAGE_FILE …
[install-options]
–test :測試安裝,但不真正執行安裝過程
–nodeps:忽略依賴關系
–replacepkgs: 覆蓋并重新安裝

–nosignature:不檢查安裝包的合法性
–nodigest 不檢查包的完整性

–noscript:不執行程序包腳本片段:
%pre:安裝前腳本
%post:安裝后腳本
%preun:卸載前腳本
%postun:卸載后腳本

升級:
rpm {-U|–upgrade} [install-options] PACKAGE_FILE ..
rpm {-F|–freshen} [install-options] PACKAGE_FILE ..

upgrade:安裝時有舊版程序包,則升級,如果存在舊版程序包,則安裝
freshen:安裝時有舊版程序包,則升級,如果不存在舊版程序包,則不執行任何操作

所以經常用的方式有:

rpm -Uvh PACKAGE_FILE … 升級安裝操作
rpm -Fvh PACKAGE_FILE … 升級操作

注意:

  1. 不要對內核進行升級,升級內核可能導致無法啟動,Linux支持多內核版本并存,

    因此直接執行安裝操作

  2. 如果原程序包的配置文件安裝后曾被修改,升級時,新版本提供的的同一個配置文件
    并不會直接覆蓋老版本的配置文件,這時需要對新版本的配置文件重命名,二進制文件直接覆蓋   FILENAME.rpm

查詢:
rpm -q|query [select-options] [query-options]
select-options :挑選選項
-a:所有的包,安裝的 rpm -qa
-f:查詢指定的文件由哪個程序包生成
-p:/PATH/TO/PACKAGE_FILE 針對尚未安裝的程序包包文件做查詢操作,常常和qpl三個選項一起用

query-options
–changlog:查詢rpm包的changlog
-c : 查詢程序的配置文件
-d:查詢程序的文檔
-i:information
-l: 查看指定程序包安裝后生成的所有文件
–scripts:程序包自帶的腳本程序
-R:查詢指定的程序包所依賴的CAPABILITY
常用的用法:
-qi PACKAGE , -qf PACKAGE , -ql PACKAGE , -qd PACKAGE
-qpi PACKAGE_FILE , -qpl PACKAGE(表示某一包安裝完成后可能會產生哪些文件)

卸載:
rpm {-e|–erase} [–allmatches] [–nodeps] [–noscripts] PACKAGE
[–nodeps] 忽略依賴關系

校驗:與/var/rpm 下的數據庫內的數據進行比較
rpm {-V|–verify} [select-options] [verify-options]
安裝包在安裝后,如果某時刻對安裝包的內容產生了修改,是可以查詢到的
校驗的主要內容包括文件的大小,文件的權限,文件的屬主和屬組是否發生改變
rpm -V 校驗某程序包
S:文件的大小不同
M:文件的權限不同
5:(MD5)文件的校驗碼發生了改變
L:路徑不匹配
T:最近修改上的時間戳改變
D:設備文件匹配
U:屬主不匹配
G:群主不匹配

包的來源性驗證及完整性驗證

完整性驗證:

合法檢測的基本原理:合法性的檢測主要是檢測從發送者到接收者這個過程中文件是否發生
了改變,通常的做法是當RPM包制作完成后會用單向加密算法計算一次,然后得到校驗碼,
然后接收者得到RPM包時,再用同樣的算法計算一次,比較兩次得到的校驗碼是否一樣,如
果一樣則表示安裝包合法,如果不一樣表示安裝包出現了錯誤,實際中作者還需要對安裝包
的校驗碼進行加密,防止被其他人篡改

rpm -K 加包的文件名,檢驗包的來源是否合法
/etc/pki/rpm-gpg 安裝系統完畢后的校驗密鑰在這個目錄下面
公鑰加密:
對稱加密:加密,解密使用的同一的密鑰
非對稱加密:密鑰是成對的
public key:公鑰 一個私鑰對應一個公鑰
secret key:私鑰 一個私鑰對應一個私鑰
其原理就是:制作者利用私鑰加密,接受者用公鑰解密,兩者是成對的,傳輸過程中
有人篡改之后再用私鑰加密后接收者用此前的公鑰是不能打開的,這樣可以起到加密作用

檢驗過程:
導入所需要的公鑰:
rpm –import /PATH/FROM/GPG_PUBKEY-FILE(公鑰文件)
rpm -K 加包的文件名 檢驗包的來源是否合法

rpm 常用命令實現程序安裝包的管理:
安裝:-ivh ,–nodeps ,–replacepkgs
卸載:-e,–nodeps
升級:-Uvh,-Fvh,–nodeps,–oldpakeage
查詢:-q,-qa,-qf,-qi,-qd,-qc,-q –scripts, -q –changlog,-q –provides,-q –requires
校驗:-V

rpm安裝的時候需要注意的問題:
1.生產中來源性和完整性的檢測非常重要
2.包與包之間的依賴問題需要注意,不然會一直提示依賴關系,最好是出現一個依賴性馬上將它寫入命令行
3.如果對軟件的某些功能需要定制,那么不能用rpm安裝,需要自己手動編譯


yum

yum是一個客戶端

yum的工作方式:
yum的工作方式實際上是一種在線更新的機制,工作的原理是當每次使用yum命令的時候
yum都會根據配置文件去相應的資源庫上下載一份元數據包,數據包里面含有包的名字,版本
還有包和包之間的依賴關系 ,yum將這份數據包下載好后會放在本地的一個緩存里面,然后進行分析需要的安裝包里面哪些是已經安裝了的,哪些是未安裝的,分析完畢之后,開始充當文件傳輸服務客戶端的作用,將需要的安裝包下載下來,安裝,然后刪除安裝包,但是元數據包它卻是不會刪除的可以方便下次的服務,同時,元數據包還會有一個校驗文件,通過比對校驗文件可以知道服務器上的元數據包是否發生改變
元數據書可以通過rpm包生成
yum 是基于rpm來進行各種安裝,卸載,升級操作

YUM :Yellow Update Modifider

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

它的性質上應該是一個文件服務器

支持的協議有
ftp://
http://
file://

yum客戶端
配置文件:
/etc/yum.conf :主配置文件提供指向各個倉庫的公共配置
/etc/yum.repos.d/*.repo 兩個文件是前一個指向后一個,次要的為每一倉庫提供特有的配置

倉庫的定義:
[repositoryID] 倉庫ID,里面不要帶任何的符號,包括空格
name= 倉庫名 ,倉庫的描述信息
baseurl= url:1 可以有多個地址
url:2
url:3 等號兩邊不能有空格
enabled=(1|0) 是否啟用該倉庫
gpgcheck=(1|0) 是否檢查文件完整性及文件來源合法性
gpgkey=URL 密鑰文件的URL ,有可能是對方倉庫直接提供
failovermethod={roundrobin|priority} roundrobin 隨機 priority 優先級,順序 默認為ronudrobin
cost= 開銷數字,默認為1000

yum常用命令
顯示倉庫列表:
repolist [all|enabled|disabled]
顯示程序包:
list:@** 已經安裝的
all:顯示所有
available:可用的
installed:已經安裝的
updates:所有更新的

安裝程序包
install package 可以在package后面指定版本
升級程序包
update package
卸載程序包
remove package 卸載時注意的是,如果某個程序包依賴于另外一個程序包卸載底層的會將上層的一起卸載掉

查看程序包的information
info package
查看指定的特性(可以是文件)是由哪個程序包所提供的:
provides feature1 [feature2]
清理本地緩存:
clean
構建緩存:
makecache
搜索程序名及簡要的信息
search string
重新安裝:
reinstall package
降級安裝
downgread package
依賴關系查看
deplist package
查看yum事物歷史
history [info| list| package-list]
yum history info 2
yum history undo # 撤銷歷史中的的某個操作

包組相關的命令:
grouplist:顯示包組
groupinstall:包組安裝,要用引號將包組括起來
groupremove:卸載包組
groupupdate:包組升級

yum 清楚緩存,為什么要清楚緩存?
因為如果配置文件里面的yum源發生了變化,但是緩存還是以前的,那么安裝時就會報錯,此時需要清除緩存,重新創建緩存
如何使用光盤當做本地yum倉庫
掛載光盤至某目錄下,例如/media/cdrom
# mount -r -t isso9660 /dev/cdrom /media/cdrom

創建配置文件
[CentOS7]
name=
baseurl=
gpgcheck=
enabled=

yum的命令行選項:
–nogpgcheck:不進行來源和完整性檢查
-y:自動回答為yes
-q:靜默模式
–noplugins:禁用所有插件

如何創建yum倉庫
yum install createrepo (創建這個文件后可以幫助我們更好的管理repodata目錄)
然后去鏡像上下載自己需要的rpm包,下載到任選的一目錄上(一般創建為repo),在這個目錄上創建
package目錄,然后在這個目錄上執行命令 createerepo ./ 即可

配置yum源
yum源的配置很簡單

1.進入yum的配置文件/etc/yum.conf  或者  /etc/yum.repos.d/
這里需要注意的是前者為所有yum源的公共配置,里面指明了是否保存緩存,yum日志記錄的位置是否進行合法性檢查等等
后者是定義yum源的目錄,要定義yum源只需要在里面創建一個具有yum格式的文件即可

2.編寫yum文件
一個yum源有三個條目是必備的,下面的配置中前三項為必備
[CentOS7]
name=base
baseurl=http://172.16.0.1/pub/CentOS7/   (假定網址)(這里可以填寫多個url地址,且這個地址一定是指向repodata這個目錄的父目錄,地址可以將國內叫快的鏡像站的網址填入這兒)
gpgcheck=1
enabled=1(默認為1,開啟狀態)


源碼編譯安裝

源碼編譯安裝具有rpm安裝不具有的一些優勢,比如功能定制,可以根據自己的需要選擇啟用或者關閉某些功能,不過需要注意的是,如果編譯完成了,是不能進行定制的,定制是在編譯的第一步就應該確定

如何實現程序包的編譯安裝:
源碼rpm包才能編譯
testapp-VERSION-relwase.src.rpm 這種后面沒有注明平臺的.帶src的包即源代碼包
使用命令rpmbuild命令制作成二進制格式的rpm包,然后在安裝

源代碼組織格式:
多文件:文件中的代碼之間,很可能存在依賴關系:
源代碼 預處理 編譯 匯編 鏈接
C C++ :make (configure–>Makefile.in–>makefile)
Java : maven

編譯步驟
安裝的前提:
安裝“Development Tools”和“Development Libraries”
tar 解壓

cd到解壓的目錄

1  ./configure
–prefix=/path/to/somewhere (指定程序的安裝路徑)
–sysconfdir=/PATH/TO/CONFFILE_PATH(配置文件的路徑)
man文件路徑:安裝在–prefix指定的目錄下的man目錄:/usr/share/ma
………….
………….
–help:獲取這個腳本的使用格式

2   make

3   make install

4   修改PATH環境變量,以能夠識別此程序的二進制文件路徑

5   默認情況下,系統搜索庫文件路徑/lib,/usr/lib; 要增添額外的搜尋路徑,在/etc/ld.so.conf.d/中創建以 .conf為后綴名的文件,而后要把增添的路徑直接寫至此文件中, ldconfig 通知系統重新搜尋庫文件

原創文章,作者:Double f,如若轉載,請注明出處:http://www.www58058.com/73933

(0)
Double fDouble f
上一篇 2017-04-23
下一篇 2017-04-23

相關推薦

  • 馬哥教育網絡班21期-第7周課程練習

    第7周課程練習 創建一個10G分區,并格式為ext4文件系統; 添加一塊硬盤sdb 要求其block大小為2048,       預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl; # mke2fs -t ext4 -b 2048 -L 'MYDATA' -m 2 # mount -o ac…

    Linux干貨 2016-10-09
  • 網絡管理基礎-子網劃分及網絡配置練習

    1、某公司申請到一個C 類IP 地址,但要連接6 個的子公司,最大的一個子  公司有26 臺計算機,每個子公司在一個網段中,則子網掩碼應設為?  192.168.100.1 網絡位192.168.100 192.168.100.00000000 C類掩碼255.255.255.0 192.168.100. 000 00001  …

    Linux干貨 2016-09-05
  • sed的模式匹配用法探討

    原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://nolinux.blog.51cto.com/4824967/1405753 [root@sunsky Desktop]# cat sunsky a b c d e f [root@sunsk…

    Linux干貨 2016-08-15
  • N25第7周作業

    1、創建一個10G分區,并格式為ext4文件系統;   (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl;    (2) 掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳; ]# fdisk /dev/sdb #劃出一個…

    Linux干貨 2017-02-21
  • Linux基本操作:關機 重啟

        Linux系統安裝完成以后,就要學會一些Linux的基本操作命令,首先是關機和重啟命令,如果進入Linux系統之后連關機重啟都不會是不是太不應該了,總不能關機或重啟的時候直接關閉電源在開機吧,這就顯得太不專業了,這樣也會對Linux系統主機不太好,一些進程還沒有關閉就直接斷電,會導致Linux系統的不穩定出現問題,何況也…

    Linux干貨 2016-08-04
  • corosync v2 + pacemaker + crmsh 實現mariadb高可用

    高可用mariadb拓撲圖 一、設計前提     1、時間同步 # ntpdate 172.16.0.1 或者 # chronyc sources     2、所有的主機對應的IP地址解析可以正常工作, 主機名要與命令#uname -n 所得的結果一致   &…

    Linux干貨 2016-08-28

評論列表(1條)

  • renjin
    renjin 2017-04-28 09:53

    主要介紹了linux下安裝包的管理,內容寫的很詳細,包括rpm包管理,yum源管理,和編譯安裝的步驟。排版可以再往好的排一下,那樣就更好了

欧美性久久久久