軟件包管理(rpm,yum)
阿新 • • 發佈:2019-03-15
dpt 重命名 asf adb rebuild prior upgrade failover ada
軟件包管理相關軟件:
軟件包管理器的核心功能: 1.制作軟件包 2.安裝,卸載,升級,查詢,效驗 Redhat ,SUSE : RPM Debian :dpt 依賴關系; 前端工具;yum ,apt-get yum 是RPM 的前端工具 apt-get 是dpt 的前端工具 後端工具:RPM,dpt
rpm:
CentOS系統上rpm命令管理程序包: 安裝、卸載、升級、查詢、校驗、數據庫維護 安裝: rpm {-i|--install} [install-options] PACKAGE_FILE ... -v: verbose -vv: -h: 以#顯示程序包管理執行進度;每個#表示2%的進度 rpm -ivh PACKAGE_FILE ... [install-options] --test: 測試安裝,但不真正執行安裝過程;dry run模式; --nodeps:忽略依賴關系;--replacepkgs: 重新安裝; --nosignature: 不檢查來源合法性; --nodigest:不檢查包完整性; --noscipts:不執行程序包腳本片斷; %pre: 安裝前腳本; --nopre %post: 安裝後腳本; --nopost %preun: 卸載前腳本; --nopreun%postun: 卸載後腳本; --nopostun 升級: rpm {-U|--upgrade} [install-options] PACKAGE_FILE ... rpm {-F|--freshen} [install-options] PACKAGE_FILE ... upgrage:安裝有舊版程序包,則“升級”;如果不存在舊版程序包,則“安裝”; freeshen:安裝有舊版程序包,則“升級”;如果不存在舊版程序包,則不執行升級操作; rpm -Uvh PACKAGE_FILE ... rpm -Fvh PACKAGE_FILE ... --oldpackage:降級; --force: 強行升級; 註意:(1) 不要對內核做升級操作;Linux支持多內核版本並存,因此,對直接安裝新版本內核; (2) 如果原程序包的配置文件安裝後曾被修改,長級時,新版本的提供的同一個配置文件並不會直接覆蓋老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)後保留; 查詢: rpm {-q|--query} [select-options] [query-options] [select-options] -a: 所有包 -f: 查看指定的文件由哪個程序包安裝生成 -p /PATH/TO/PACKAGE_FILE:針對尚未安裝的程序包文件做查詢操作; --whatprovides CAPABILITY:查詢指定的CAPABILITY由哪個包所提供; --whatrequires CAPABILITY:查詢指定的CAPABILITY被哪個包所依賴; [query-options] --changelog:查詢rpm包的changlog -c: 查詢程序的配置文件 -d: 查詢程序的文檔 -i: information -l: 查看指定的程序包安裝後生成的所有文件; --scripts:程序包自帶的腳本片斷 -R: 查詢指定的程序包所依賴的CAPABILITY; --provides: 列出指定程序包所提供的CAPABILITY; 用法: -qi PACKAGE, -qf FILE, -qc PACKAGE, -ql PACKAGE, -qd PACKAGE -qpi PACKAGE_FILE, -qpl PACKAGE_FILE, ... -qa 卸載: rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ... 校驗: rpm {-V|--verify} [select-options] [verify-options] 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 包來源合法性驗正及完整性驗正: 完整性驗正:SHA256 來源合法性驗正:RSA 公鑰加密: 對稱加密:加密、解密使用同一密鑰; 非對稱加密:密鑰是成對兒的, public key: 公鑰,公開所有人 secret key: 私鑰, 不能公開 導入所需要公鑰: rpm --import /PATH/FROM/GPG-PUBKEY-FILE CentOS 7發行版光盤提供的密鑰文件:RPM-GPG-KEY-CentOS-7 數據庫重建: rpm {--initdb|--rebuilddb} initdb: 初始化 如果事先不存在數據庫,則新建之;否則,不執行任何操作; rebuilddb:重建 無論當前存在與否,直接重新創建數據庫;
安裝,查詢,卸載,升級,效驗,數據庫的重建工作 noarch是no architecture的縮寫,說明這個包可以在各個不同的cpu上使用 1.安裝 rpm -i /PATH/TO/PACKET_FILE -i : 指定安裝文件 -h : 以#號顯示進度,每個# 表示2%; -v :顯示詳細過程 -vv :顯示更詳細的過程 examples: rpm -ivh /PATH/TO/PACKET_FILE --nodeps: 忽略依賴關系 --replacepkgs:重新安裝,替換原有安裝 --force :強行安裝,可以實現重裝和降級 rmp格式文件有兩種形式 二進制包(Binary)以及源代碼包(Source)兩種。 二進制包可以直接安裝在計算機中,而源代碼包將會由RPM自動編譯、安裝。 源代碼包經常以src.rpm 2.查詢 -q :查詢模式 rpm -a 包名 rpm -qa :查詢安裝的所有包, rpm -qi PACKET_NAME :查詢指定包的信息 rpm -ql PACKAGE_NAME :查詢指定安裝包生成的文件列表 rpm -qf /path/to/somefle :查詢指定的文件是有那個rpm 包生成的 rpm -qc NAME : 查詢指定安裝包的配置文件 rpm -qd NAME :查詢指定安裝包的幫助文件 rpm -q --scripts PACKAGE_NAME: 查詢指定安裝包包含的腳本 rpm deplist:顯示rpm軟件包的所有依賴關系。 rpm -qpi /PATH/TO/PACKAGE_NAME : rpm -qpl /PATH/TO/PACKAGE_NAME : #查詢某個rpm包尚未安裝,查詢其說明信息,安裝以後的生成的文件 3.升級 rpm -Uvh /PATH/TO/NAME_FILE :如果有老版本則升級,否則退出 rpm -fvh /PATH/TO/NAME_FILE :如果有老版本則升級,否則退出 rpm -ivh --oldpackage NAME :降級到低版本 4,卸載 rpm -e PACKAGE_NAME :卸載, --nodeps :有依賴關系無法卸載,使用nodeps 強制卸載 5.效驗 rpm -V package_name : 效驗 6.重建數據庫 rpm : --rebuilddb :重建數據庫,一定會重新建立 --initdb :初始化數據庫。沒有則進行建立 7.檢驗來源合法性,及軟件完整性 rpm -K /path/to/file_name rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5 #導入秘鑰 scp :scp命令用於在Linux下進行遠程拷貝文件的命令,和它類似的命令有cp,不過cp只是在本機進行拷貝不能跨服務器,而且scp傳輸是加密的。可能會稍微影響一下速度 #將本地文件傳送到遠程服務器 scp /home/daisy/full.tar.gz root@172.19.2.75:/home/root #將遠程服務器文件傳送傳到本地 scp [email protected]:/home/root/others/music /home/space/music/1.mp3
yum:
CentOS: yum, dnf URL: ftp://172.16.0.1/pub/ YUM: yellow dog, Yellowdog Update Modifier yum repository: yum repo 存儲了眾多rpm包,以及包的相關的元數據文件(放置於特定目錄下:repodata); 文件服務器: ftp:// http:// nfs:// file:/// yum客戶端: 配置文件: /etc/yum.conf:為所有倉庫提供公共配置 /etc/yum.repos.d/*.repo:為倉庫的指向提供配置 倉庫指向的定義: [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,意為隨機挑選; cost= 默認為1000 yum命令的用法: yum [options] [command] [package ...] command is one of: * install package1 [package2] [...] * update [package1] [package2] [...] * update-to [package1] [package2] [...] * check-update * upgrade [package1] [package2] [...] * upgrade-to [package1] [package2] [...] * distribution-synchronization [package1] [package2] [...] * remove | erase package1 [package2] [...] * list [...] * info [...] * provides | whatprovides feature1 [feature2] [...] * clean [ packages | metadata | expire-cache | rpmdb | plugins | all ] * makecache * groupinstall group1 [group2] [...] * groupupdate group1 [group2] [...] * grouplist [hidden] [groupwildcard] [...] * groupremove group1 [group2] [...] * groupinfo group1 [...] * search string1 [string2] [...] * shell [filename] * resolvedep dep1 [dep2] [...] * localinstall rpmfile1 [rpmfile2] [...] (maintained for legacy reasons only - use install) * localupdate rpmfile1 [rpmfile2] [...] (maintained for legacy reasons only - use update) * reinstall package1 [package2] [...] * downgrade package1 [package2] [...] * deplist package1 [package2] [...] * repolist [all|enabled|disabled] * version [ all | installed | available | group-* | nogroups* | grouplist | groupinfo ] * history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats] * check * help [command] 顯示倉庫列表: repolist [all|enabled|disabled] 顯示程序包: list # yum list [all | glob_exp1] [glob_exp2] [...] # yum list {available|installed|updates} [glob_exp1] [...] 安裝程序包: install package1 [package2] [...] reinstall package1 [package2] [...] (重新安裝) 升級程序包: update [package1] [package2] [...] downgrade package1 [package2] [...] (降級) 檢查可用升級: check-update 卸載程序包: remove | erase package1 [package2] [...] 查看程序包information: info [...] 查看指定的特性(可以是某文件)是由哪個程序包所提供: provides | whatprovides feature1 [feature2] [...] 清理本地緩存: clean [ packages | metadata | expire-cache | rpmdb | plugins | all ] 構建緩存: makecache 搜索: search string1 [string2] [...] 以指定的關鍵字搜索程序包名及summary信息; 查看指定包所依賴的capabilities: deplist package1 [package2] [...] 查看yum事務歷史: history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats] 安裝及升級本地程序包: * localinstall rpmfile1 [rpmfile2] [...] (maintained for legacy reasons only - use install) * localupdate rpmfile1 [rpmfile2] [...] (maintained for legacy reasons only - use update) 包組管理的相關命令: * groupinstall group1 [group2] [...] * groupupdate group1 [group2] [...] * grouplist [hidden] [groupwildcard] [...] * groupremove group1 [group2] [...] * groupinfo group1 [...] 如何使用光盤當作本地yum倉庫: (1) 掛載光盤至某目錄,例如/media/cdrom # mount -r -t iso9660 /dev/cdrom /media/cdrom (2) 創建配置文件 [CentOS7] name= baseurl= gpgcheck= enabled= yum的命令行選項: --nogpgcheck:禁止進行gpg check; -y: 自動回答為“yes”; -q:靜默模式; --disablerepo=repoidglob:臨時禁用此處指定的repo; --enablerepo=repoidglob:臨時啟用此處指定的repo; --noplugins:禁用所有插件; yum的repo配置文件中可用的變量: $releasever: 當前OS的發行版的主版本號; $arch: 平臺; $basearch:基礎平臺; $YUM0-$YUM9 http://mirrors.magedu.com/centos/$releasever/$basearch/os 創建yum倉庫: createrepo [options] <directory> 程序包編譯安裝: testapp-VERSION-release.src.rpm --> 安裝後,使用rpmbuild命令制作成二進制格式的rpm包,而後再安裝; 源代碼 --> 預處理 --> 編譯(gcc) --> 匯編 --> 鏈接 --> 執行 源代碼組織格式: 多文件:文件中的代碼之間,很可能存在跨文件依賴關系; C、C++: make (configure --> Makefile.in --> makefile) java: maven C代碼編譯安裝三步驟: ./configure: (1) 通過選項傳遞參數,指定啟用特性、安裝路徑等;執行時會參考用戶的指定以及Makefile.in文件生成makefile; (2) 檢查依賴到的外部環境; make: 根據makefile文件,構建應用程序; make install 開發工具: autoconf: 生成configure腳本 automake:生成Makefile.in 建議:安裝前查看INSTALL,README 開源程序源代碼的獲取: 官方自建站點: apache.org (ASF) mariadb.org ... 代碼托管: SourceForge Github.com code.google.com c/c++: gcc (GNU C Complier) 編譯C源代碼: 前提:提供開發工具及開發環境 開發工具:make, gcc等 開發環境:開發庫,頭文件 glibc:標準庫 通過“包組”提供開發組件 CentOS 6: "Development Tools", "Server Platform Development", 第一步:configure腳本 選項:指定安裝位置、指定啟用的特性 --help: 獲取其支持使用的選項 選項分類: 安裝路徑設定: --prefix=/PATH/TO/SOMEWHERE: 指定默認安裝位置;默認為/usr/local/ --sysconfdir=/PATH/TO/SOMEWHERE:配置文件安裝位置; System types: Optional Features: 可選特性 --disable-FEATURE --enable-FEATURE[=ARG] Optional Packages: 可選包 --with-PACKAGE[=ARG] --without-PACKAGE 第二步: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
client : 配置文件:指定yum 倉庫的信息,路徑等 yum工具作為rpm包的軟件管理器,可以進行rpm包的安裝、升級以及刪除等日常管理工作,而且對於rpm包之間的依賴關系可以自動分析,大大簡化了rpm包的維護成本。 yum工具的配置,主要由兩個文件控制:/etc/yum.conf以及/etc/yum.repos.d/filename.repo 關於/etc/yum.conf文件:主要承擔全局配置[main],此外也可以在此處配置軟件倉庫(repository) 關於/etc/yum.repos.d/filename.repo:主要承擔具體軟件倉庫的配置(若上面yum.conf中配置了軟件倉庫,此處也可以選擇不配置),filename可自行定義。 參數解釋如下: [rhel-debuginfo]:用於區分不同的repository,在一個filename.repo文件中,可以定義一個或者多個repository name:用於對repository的描述 baseurl:用於指定獲取rpm包的源位置,支持http://、ftp://、file://三種協議。 enabled:用於定義此軟件倉庫是否可用。0:不可用,1:可用 gpgcheck:定義是否對rpm包進行GPG校驗。 gpgkey:用於定義校驗的gpg密鑰文件的位置。 以下是關於管理的常用命令 yum repolist : 查看可用的軟件倉庫信息 yum list rpm包 : 查看rpm包的安裝情況,支持通配符*,若為被安裝,顯示可用的軟件倉庫 yum list installed |grep rpm包: 查看rpm包是否被安裝 yum info rpm包 : 查看rpm包詳細信息 yum check-update : 檢查可用的rpm包更新 yum install rpm包 : 安裝rpm包,支持通配符* yum remove rpm包 : 刪除rpm包 yum clean packages : 清除rpm包緩存 yum clean headers : 清除rpm頭文件緩存 yum clean all : 清除rpm頭文件以及包緩存 yum -y update :更新yum 源, yum makecache : 就是把服務器的包信息下載到本地電腦緩存起來 *************************** 運行命令生成緩存: yum clean all yum makecache #替換yum 必須要做的動作 ******************************** wget 命令: wget 命令用來從指定的URL 下載文件。 編譯環境,開發環境 手動編譯安裝; make :項目管理工具, Makefile : make install :安裝 **************************************************** #準備編譯環境,安裝"development tool" 編譯安裝的三步驟: ./configure --help :獲取腳本使用幫助 --prefix=/path/to/somewhere : --sysconfdir=/path/to/config_file ;指定配置文件安裝位置 make make install ************************************************ 這些都是典型的使用GNU的AUTOCONF和AUTOMAKE產生的程序的安裝步驟。 ./configure是用來檢測你的安裝平臺的目標特征的。比如它會檢測你是不是有CC或GCC,並不是需要CC或GCC,它是個shell腳本。 make是用來編譯的,它從Makefile中讀取指令,然後編譯。 make install是用來安裝的,它也從Makefile中讀取指令,安裝到指定的位置。 AUTOMAKE和AUTOCONF是非常有用的用來發布C程序的東西。 **************************************************** ./configure --prefix=/usr/local/nginx --conf-path=/etc/nginx/nginx.conf 其中我們通過--prefix制定了安裝路徑, 通過--conf-path制定了配置文件的具體位置 1.修改path 環境變量,能夠識別二進制程序路勁 2. 添加額外的lib 庫路徑 3.頭文件:include netstat -ntlp: -t或--tcp:顯示TCP傳輸協議的連線狀況; -u或--udp:顯示UDP傳輸協議的連線狀況; -r :顯示路由 -p:
軟件包管理(rpm,yum)