您好,登錄后才能下訂單哦!
1.程序包管理
功能:將編譯好的應用程序的各組件組成文件打包成一個或幾個程序包文件,從而更方便快捷實現程序包的安裝升級,卸載和查詢等管理操作
1 程序包的組成清單(每個程序包都單獨實現)
文件清單
安裝或卸載是運行的腳本
2 數據庫部分(公共)
程序包名稱和版本
依賴關系
功能說明
安裝生成各文件位置路徑及校驗碼信息
程序包我們在哪獲取了?
1)系統發行的光盤或官方文件服務器或鏡像站點:
最常用的例如像
http://mirrors.aliyun.com
http://mirrors.souhu.com
http://mirrors.163.com
2)程序官方站點下載
3)第三方組織的rpm包
(a)EPEL:紅帽站點論壇組織,提供高效的yum原
(b)搜索引擎搜索
pkgs.org
rpmfind.net
rpm.pbone.net
4)自己做
ps:下載時注意其合法性,來源合法
rpm :readhat package manager ;rpm is package manager
2.rpm包命名格式
tree-1.5.3-3.el6.x86_64.rpm
name-version-release.arch.rpm
versiom:是指源代碼版本
release.arch:rpm包的發行號
archetecture:架構號:i386,x64(amd64)..
e16適用平臺 6
3.rpm 特性
1,rpm分包機制
將一個包的功能拆成n個不同功能支包
主包:name-version-release.arch.rpm
支包:name-function-version-release.arch.rpm
function:功能 例如:devel開發功能
untils工具程序
libs庫文件等
2,依賴關系
依賴關系:因為linux程序做到短小精湛,程序彼此之間依賴其他程序提供的功能,然后才能運行,所以導致包和包之間有著復雜的依賴關系
3,解決依賴
前端工具的出現自動解決包之間的依賴關系;
yum :rpm包管理器的前端工具
apt-get(apt-cache)deb包管理器的前端工具 用于debian
zypper :suse的rpm管理器前端工具
dnf:fedora-22+系統上的rpm包管理器的前端工具
4.rpm命令管理程序包:
安裝升級、卸載、查詢、效驗、數據庫維護、幫助
使用方法
rpm [OPTION] [PACKAGE_FILE]
安裝
rpm {-i|--install} [install-options] PACKAGE_FILE ...
[GENERAL OPTIONS]:通用選項 -v 詳細信息輸出 -vv 更詳細信息輸出
[install-options]:安裝選項 -h 顯示以hash標記輸出進度條 yum -ivh --test測試安裝(不實際安裝,僅測試,檢查依賴及沖突關系); --nodeps 忽略依賴關系安裝; --replacepkgs 重新安裝; ps:rpm可以自帶腳本 --noscripts 四類: prelnstall:安裝過程之前運行的腳本%pre --nopre postinstall:安裝過程完成之后運行的腳本,%pot --post preuninstall:卸載過程真正開始執行之前運行的腳本 %preun --nopreun postuninstall:卸載過程完成之后運行腳本 %postun --nopostun --nosignature:不檢查包簽名信息,不檢查來源合法性; --nodigest:不檢查包完整性信息
例如:安裝tree包
[root@localhost Packages]# rpm -ivh tree-1.6.0-10.el7.x86_64.rpm warning: tree-1.6.0-10.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY Preparing... ################################# [100%] package tree-1.6.0-10.el7.x86_64 is already installed
升級
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ... rpm {-F|--freshen} [install-options] PACKAGE_FILE ... -U 升級或安裝 -F升級 rpm -Uvh rpm -Fvh --oldpackage:降級; --force:強制升級;升級會影響依賴關系可能 #ps:1)不要對內核做升級操作;linux支持多內核,直接安裝新版本內核即可; # 2)如果原程序包配置文件安裝后被修改過,升級是,新版本程序提供的同一個配置文件不會 覆蓋原有版本的配置文件,會將新文件重命名后保留;
例如:驗證 如果原程序包配置文件安裝后被修改過,升級是,新版本程序提供的同一個配置文件不會覆蓋原有版本的配置文件,會將新文件重命名后保留;
[root@localhost Packages]# rpm -ivh vsftpd-3.0.2-10.el7.x86_64.rpm warning: vsftpd-3.0.2-10.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY Preparing... ################################# [100%] Updating / installing... 1:vsftpd-3.0.2-10.el7 ################################# [100%] [root@localhost Packages]# #安裝vsftp [root@localhost vsftpd]# cat vsftpd.conf|wc -l 127 [root@localhost vsftpd]# vim vsftpd.conf [root@localhost vsftpd]# cat vsftpd.conf|wc -l 27 #修改其配置文件(刪除文件中100行內容) [root@localhost Packages]# rpm -Uvh vsftpd-3.0.2-10.el7.x86_64.rpm --force warning: vsftpd-3.0.2-10.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY Preparing... ################################# [100%] Updating / installing... 1:vsftpd-3.0.2-10.el7 ################################# [100%] #升級安裝vsftpd [root@localhost vsftpd]# cat vsftpd.conf|wc -l 27 #配置文件行數與之前安裝修改行數一樣
卸載
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ... --allmatches:刪除所有所匹配指定名稱的程序包版本 --nodeps:忽略依賴關系 --test 測試卸載,不真正執行卸載
例如:卸載vsftpd
[root@localhost Packages]# rpm -e --nodeps vsftpd warning: /etc/vsftpd/vsftpd.conf saved as /etc/vsftpd/vsftpd.conf.rpmsave #卸載vsftpd包 [root@localhost ~]# ll /etc/vsftpd/ total 4 -rw-------. 1 root root 1127 Aug 23 21:10 vsftpd.conf.rpmsave [root@localhost ~]# cat /etc/vsftpd/vsftpd.conf.rpmsave |ec -l bash: ec: command not found... [root@localhost ~]# cat /etc/vsftpd/vsftpd.conf.rpmsave |wc -l 27 #卸載后將配置文件備份成了一個新文件
查詢
rpm {-q|--query} [select-options] [query-options] 1)select-options: PACKAGE_NAME 直接給出包名查看是否已經安裝 -a,--all 查詢所有已安裝的包 rpm -qa [root@localhost ~]# rpm -qa |grep http -f,--file 查詢文件的生成安裝包 [root@localhost ~]# rpm -qf /etc/fstab setup-2.8.71-6.el7.noarch -p --pachage 查尋未安裝的包 --whatprovides CAPABILITY:查詢指定的CAPABILITY安裝包 --whatrequires CAPABILITY:查詢指定的CAPABILITY安裝包有哪些依賴包 2)query-options: --changelog 查看rpm改進日志 -l, --list 安裝生成的文件 rpm -ql 查看安裝這個程序包后生成了哪些文件 -i --info 查詢程序包相關的信息(版本,大小,所屬的包組) rpm -qi 程序名 -c, --configfiles 查詢指定程序包提供的配置文件 -d, --docfiles 查詢指定程序包提供的文檔 --provides 列出程序提供的CAPABTLITY --scripts 查看指定程序安裝后的腳本
查詢舉例:
#查詢某個包是否已經安裝的多個方法 [root@localhost vsftpd]# rpm -q vsftpd package vsftpd is not installed [root@localhost vsftpd]# rpm -qa vsftpd [root@localhost vsftpd]# rpm -qa |grep vsftpd [root@localhost vsftpd]# rpm -q vsftpd vsftpd-3.0.2-10.el7.x86_64 [root@localhost vsftpd]# rpm -qa |grep vsftpd vsftpd-3.0.2-10.el7.x86_64
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
#查詢某個文件是由哪個安裝包生成的 [root@localhost vsftpd]# rpm -qf /etc/vsftpd/ vsftpd-3.0.2-10.el7.x86_64
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
#查看某個包安裝過后生成的文件 [root@localhost vsftpd]# rpm -ql vsftpd /etc/logrotate.d/vsftpd /etc/pam.d/vsftpd /etc/vsftpd /etc/vsftpd/ftpusers /etc/vsftpd/user_list /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd_conf_migrate.sh /usr/lib/systemd/system-generators/vsftpd-generator /usr/lib/systemd/system/vsftpd.service /usr/lib/systemd/system/vsftpd.target /usr/lib/systemd/system/vsftpd@.service /usr/sbin/vsftpd /usr/share/doc/vsftpd-3.0.2 /usr/share/doc/vsftpd-3.0.2/AUDIT /usr/share/doc/vsftpd-3.0.2/BENCHMARKS /usr/share/doc/vsftpd-3.0.2/BUGS /usr/share/doc/vsftpd-3.0.2/COPYING /usr/share/doc/vsftpd-3.0.2/Changelog /usr/share/doc/vsftpd-3.0.2/EXAMPLE /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE/README /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE/README.configuration /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE/vsftpd.conf /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE/vsftpd.xinetd /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE_NOINETD /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE_NOINETD/README /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE_NOINETD/README.configuration /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE_NOINETD/vsftpd.conf /usr/share/doc/vsftpd-3.0.2/EXAMPLE/PER_IP_CONFIG /usr/share/doc/vsftpd-3.0.2/EXAMPLE/PER_IP_CONFIG/README /usr/share/doc/vsftpd-3.0.2/EXAMPLE/PER_IP_CONFIG/README.configuration /usr/share/doc/vsftpd-3.0.2/EXAMPLE/PER_IP_CONFIG/hosts.allow /usr/share/doc/vsftpd-3.0.2/EXAMPLE/README /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_HOSTS /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_HOSTS/README /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/README /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/README.configuration /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/logins.txt /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/vsftpd.conf /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/vsftpd.pam /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS_2 /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS_2/README /usr/share/doc/vsftpd-3.0.2/FAQ /usr/share/doc/vsftpd-3.0.2/INSTALL /usr/share/doc/vsftpd-3.0.2/LICENSE /usr/share/doc/vsftpd-3.0.2/README /usr/share/doc/vsftpd-3.0.2/README.security /usr/share/doc/vsftpd-3.0.2/REWARD /usr/share/doc/vsftpd-3.0.2/SECURITY /usr/share/doc/vsftpd-3.0.2/SECURITY/DESIGN /usr/share/doc/vsftpd-3.0.2/SECURITY/IMPLEMENTATION /usr/share/doc/vsftpd-3.0.2/SECURITY/OVERVIEW /usr/share/doc/vsftpd-3.0.2/SECURITY/TRUST /usr/share/doc/vsftpd-3.0.2/SIZE /usr/share/doc/vsftpd-3.0.2/SPEED /usr/share/doc/vsftpd-3.0.2/TODO /usr/share/doc/vsftpd-3.0.2/TUNING /usr/share/doc/vsftpd-3.0.2/vsftpd.xinetd /usr/share/man/man5/vsftpd.conf.5.gz /usr/share/man/man8/vsftpd.8.gz /var/ftp /var/ftp/pub
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
#查詢指定程序包包含的配置文件 [root@localhost Packages]# rpm -qc vsftpd /etc/logrotate.d/vsftpd /etc/pam.d/vsftpd /etc/vsftpd/ftpusers /etc/vsftpd/user_list /etc/vsftpd/vsftpd.conf
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
#查詢指定程序包提供的文檔 [root@localhost Packages]# rpm -qd vsftpd /usr/share/doc/vsftpd-3.0.2/AUDIT /usr/share/doc/vsftpd-3.0.2/BENCHMARKS /usr/share/doc/vsftpd-3.0.2/BUGS /usr/share/doc/vsftpd-3.0.2/COPYING /usr/share/doc/vsftpd-3.0.2/Changelog /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE/README /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE/README.configuration /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE/vsftpd.conf /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE/vsftpd.xinetd /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE_NOINETD/README /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE_NOINETD/README.configuration /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE_NOINETD/vsftpd.conf /usr/share/doc/vsftpd-3.0.2/EXAMPLE/PER_IP_CONFIG/README /usr/share/doc/vsftpd-3.0.2/EXAMPLE/PER_IP_CONFIG/README.configuration /usr/share/doc/vsftpd-3.0.2/EXAMPLE/PER_IP_CONFIG/hosts.allow /usr/share/doc/vsftpd-3.0.2/EXAMPLE/README /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_HOSTS/README /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/README /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/README.configuration /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/logins.txt /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/vsftpd.conf /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/vsftpd.pam /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS_2/README /usr/share/doc/vsftpd-3.0.2/FAQ /usr/share/doc/vsftpd-3.0.2/INSTALL /usr/share/doc/vsftpd-3.0.2/LICENSE /usr/share/doc/vsftpd-3.0.2/README /usr/share/doc/vsftpd-3.0.2/README.security /usr/share/doc/vsftpd-3.0.2/REWARD /usr/share/doc/vsftpd-3.0.2/SECURITY/DESIGN /usr/share/doc/vsftpd-3.0.2/SECURITY/IMPLEMENTATION /usr/share/doc/vsftpd-3.0.2/SECURITY/OVERVIEW /usr/share/doc/vsftpd-3.0.2/SECURITY/TRUST /usr/share/doc/vsftpd-3.0.2/SIZE /usr/share/doc/vsftpd-3.0.2/SPEED /usr/share/doc/vsftpd-3.0.2/TODO /usr/share/doc/vsftpd-3.0.2/TUNING /usr/share/doc/vsftpd-3.0.2/vsftpd.xinetd /usr/share/man/man5/vsftpd.conf.5.gz /usr/share/man/man8/vsftpd.8.gz
效驗
rpm {-V|--verify} [select-options] [verify-options] --nodeps Don't verify dependencies of packages. --nodigest Don't verify package or header digests when read ing. --nofiles Don't verify any attributes of package files. --noscripts Don't execute the %verifyscript scriptlet (if any). 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 mTime differs P caPabilities differ 不添加任何參數默認就是檢查所有參數 rpm -V --nodeps
程序包的合法性驗證:
來源合法:由制作者提供,依賴于制作者的數字簽名,簽名是作者使用自己的私鑰加密程序包的特性碼進行的;
內容合法:包未被二次修改,依賴于:制作者提供的程序特征碼;
驗正方式:安裝者用同樣的特征碼提取算法提取程序包的特征碼,并與原作者提供的相比較;
舉例:
rpm --import /misc/cd/RPM-GPG-KEY-CentOS-6 rpm -K vsftpd-3.0.2-10.el7.x86_64.rpm vsftpd-3.0.2-10.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 OK
數據庫維護
rpm管理器數據庫:/var/lib/rpm rpmdb {--initdb|--rebuilddb} [-v] [--dbpath DIRECTORY] --initdb: 初始化數據庫,數據庫不存在,才會新建; --rebuilddb: 無論當前數據庫是否存在,都會直接重建此庫;
舉例:
#刪除庫 [root@localhost rpm]# ls Basenames __db.001 __db.003 Group Name Packages Requirename Sigmd5 Conflictname __db.002 Dirnames Installtid Obsoletename Providename Sha1header Triggername [root@localhost rpm]# rm -fr * [root@localhost rpm]# ls #使用查詢重新生成庫 [root@localhost rpm]# rpm -qa vsftpd [root@localhost rpm]# ls Basenames __db.001 __db.003 Group Name Packages Requirename Sigmd5 Conflictname __db.002 Dirnames Installtid Obsoletename Providename Sha1header Triggername [root@localhost rpm]# #使用命令rpmdb --initdb生成庫 [root@localhost rpm]# rm -fr * [root@localhost rpm]# ll total 0 [root@localhost rpm]# rpmdb --initdb [root@localhost rpm]# ll total 388 -rw-r--r--. 1 root root 8192 Aug 23 22:19 Basenames -rw-r--r--. 1 root root 8192 Aug 23 22:19 Conflictname -rw-r--r--. 1 root root 270336 Aug 23 22:19 __db.001 -rw-r--r--. 1 root root 81920 Aug 23 22:19 __db.002 -rw-r--r--. 1 root root 107048 Aug 23 22:19 __db.003 -rw-r--r--. 1 root root 8192 Aug 23 22:19 Dirnames -rw-r--r--. 1 root root 8192 Aug 23 22:19 Group -rw-r--r--. 1 root root 8192 Aug 23 22:19 Installtid -rw-r--r--. 1 root root 8192 Aug 23 22:19 Name -rw-r--r--. 1 root root 8192 Aug 23 22:19 Obsoletename -rw-r--r--. 1 root root 12288 Aug 23 22:19 Packages -rw-r--r--. 1 root root 8192 Aug 23 22:19 Providename -rw-r--r--. 1 root root 8192 Aug 23 22:19 Requirename -rw-r--r--. 1 root root 8192 Aug 23 22:19 Sha1header -rw-r--r--. 1 root root 8192 Aug 23 22:19 Sigmd5 -rw-r--r--. 1 root root 8192 Aug 23 22:19 Triggername
幫助
1. man
rpm
2.
man
rpmdb
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。