1.程序包管理
成都創(chuàng)新互聯(lián)主要從事網(wǎng)站制作、網(wǎng)站設(shè)計、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)莎車,十年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108功能:將編譯好的應(yīng)用程序的各組件組成文件打包成一個或幾個程序包文件,從而更方便快捷實現(xiàn)程序包的安裝升級,卸載和查詢等管理操作
1 程序包的組成清單(每個程序包都單獨實現(xiàn))
文件清單
安裝或卸載是運行的腳本
2 數(shù)據(jù)庫部分(公共)
程序包名稱和版本
依賴關(guān)系
功能說明
安裝生成各文件位置路徑及校驗碼信息
程序包我們在哪獲取了?
1)系統(tǒng)發(fā)行的光盤或官方文件服務(wù)器或鏡像站點:
最常用的例如像
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包的發(fā)行號
archetecture:架構(gòu)號:i386,x64(amd64)..
e16適用平臺 6
3.rpm 特性
1,rpm分包機(jī)制
將一個包的功能拆成n個不同功能支包
主包:name-version-release.arch.rpm
支包:name-function-version-release.arch.rpm
function:功能 例如:devel開發(fā)功能
untils工具程序
libs庫文件等
2,依賴關(guān)系
依賴關(guān)系:因為linux程序做到短小精湛,程序彼此之間依賴其他程序提供的功能,然后才能運行,所以導(dǎo)致包和包之間有著復(fù)雜的依賴關(guān)系
3,解決依賴
前端工具的出現(xiàn)自動解決包之間的依賴關(guān)系;
yum :rpm包管理器的前端工具
apt-get(apt-cache)deb包管理器的前端工具 用于debian
zypper :suse的rpm管理器前端工具
dnf:fedora-22+系統(tǒng)上的rpm包管理器的前端工具
4.rpm命令管理程序包:
安裝升級、卸載、查詢、效驗、數(shù)據(jù)庫維護(hù)、幫助
使用方法
rpm [OPTION] [PACKAGE_FILE]
rpm {-i|--install} [install-options] PACKAGE_FILE ... [GENERAL OPTIONS]:通用選項 -v 詳細(xì)信息輸出 -vv 更詳細(xì)信息輸出[install-options]:安裝選項 -h 顯示以hash標(biāo)記輸出進(jìn)度條 yum -ivh --test測試安裝(不實際安裝,僅測試,檢查依賴及沖突關(guān)系); --nodeps 忽略依賴關(guān)系安裝; --replacepkgs 重新安裝; ps:rpm可以自帶腳本 --noscripts 四類: prelnstall:安裝過程之前運行的腳本%pre --nopre postinstall:安裝過程完成之后運行的腳本,%pot --post preuninstall:卸載過程真正開始執(zhí)行之前運行的腳本 %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:強(qiáng)制升級;升級會影響依賴關(guān)系可能 #ps:1)不要對內(nèi)核做升級操作;linux支持多內(nèi)核,直接安裝新版本內(nèi)核即可; # 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行內(nèi)容) [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 #配置文件行數(shù)與之前安裝修改行數(shù)一樣rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ... --allmatches:刪除所有所匹配指定名稱的程序包版本 --nodeps:忽略依賴關(guān)系 --test 測試卸載,不真正執(zhí)行卸載卸載
例如:卸載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 直接給出包名查看是否已經(jīng)安裝 -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改進(jìn)日志 -l, --list 安裝生成的文件 rpm -ql 查看安裝這個程序包后生成了哪些文件 -i --info 查詢程序包相關(guān)的信息(版本,大小,所屬的包組) rpm -qi 程序名 -c, --configfiles 查詢指定程序包提供的配置文件 -d, --docfiles 查詢指定程序包提供的文檔 --provides 列出程序提供的CAPABTLITY --scripts 查看指定程序安裝后的腳本查詢
查詢舉例:
#查詢某個包是否已經(jīng)安裝的多個方法 [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.gzrpm {-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 不添加任何參數(shù)默認(rèn)就是檢查所有參數(shù) rpm -V --nodeps效驗
程序包的合法性驗證:
來源合法:由制作者提供,依賴于制作者的數(shù)字簽名,簽名是作者使用自己的私鑰加密程序包的特性碼進(jìn)行的;
內(nèi)容合法:包未被二次修改,依賴于:制作者提供的程序特征碼;
驗正方式:安裝者用同樣的特征碼提取算法提取程序包的特征碼,并與原作者提供的相比較;
舉例:
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管理器數(shù)據(jù)庫:/var/lib/rpm rpmdb {--initdb|--rebuilddb} [-v] [--dbpath DIRECTORY] --initdb: 初始化數(shù)據(jù)庫,數(shù)據(jù)庫不存在,才會新建; --rebuilddb: 無論當(dāng)前數(shù)據(jù)庫是否存在,都會直接重建此庫;數(shù)據(jù)庫維護(hù)
舉例:
#刪除庫 [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
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。