rpm包管理、yum倉庫、ftp、http服務、編譯安裝

一、軟件包管理

1.1 軟件包管理

APIApplication Programming Interface  應用程序開發接口;程序員面對的編程接口

POSIXportable operating system:可移植操作系統接口

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

靜態編譯:    共享編譯:.so     

ABIApplication Binary Interface   應用程序的二進制接口;程序應用者面對運行程序接口

二進制文件接口Windows Linux 不兼容  :ELF(Executable and Linkable Format);PEPortable Executable

    庫級別的虛擬化:Linux: WINE    ;Windows: Cywin

1.2 包管理器

二進制應用程序的組成部分二進制文件、庫文件、配置文件、幫助文件

程序包管理器:debian deb 文件, dpkg 包管理器 ;redhat: rpm 文件, rpm 包管理器

rpm: Redhat Package Manager       ;RPM Package Manager

1.2.1 包命名

源代碼:name -VERSION.tar.gz|bz2|xz  VERSION(版本號): major.minor.release(開發版)minor為偶數是穩定版

rpm 包命名方式:name  -VERSION-release.arch.rpm

              例:bash-4.2.46-19.el7.x86_64.rpm

          VERSION: major.minor.release  ;  release release.OS

   常見的arch(架構)x86: i386, i486, i586, i686 ,x86_64: x64, x86_64, amd64 ;powerpc: ppc

   跟平臺無關:noarch

1.2.2 包命名和工具

  1包:分類 和 拆包

Application-VERSION-ARCH.rpm:  主包  ;  Application-devel-VERSION-ARCH.rpm  開發子包

Application-utils-VERSION-ARHC.rpm  其它子包 ; Application-libs-VERSION-ARHC.rpm  其它子包

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

解決依賴包管理工具:yum rpm 包管理器的前端工具  

              apt-get deb 包管理器前端工具 ;zypper: suse 上的rpm 前端管理工具

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

1.2.3 庫文件

    查看二進制程序所依賴的庫文件 ldd /PATH/TO/BINARY_FILE

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

        /sbin/idconfig –p顯示本機已經緩存的所有可用庫文件名及文件名的路徑映射關系

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

       庫文件緩存文件/etc/ld.do.cache

1.2.4 程序包管理器

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

1 、包文件組成 ( 每個包獨有)RPM包內的文件;RPM 元數據,如名稱,版本,依賴性,描述

                             安裝或卸載時運行的腳本

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

程序包的來源

    管理程序包的方式: 使用管理器rpm  ;使用前端工具:yum,dnf

    獲取程序包的途徑:

(1)系統發版的光盤或官方的服務器;CentOS 鏡像:

            https://www.centos.org/download/    ;    http://mirrors.aliyun.com

            http://mirrors.sohu.com             ;    http://mirrors.163.com

(2)項目官方站點

(3)第三方組織:Fedora-EPELExtra Packages for Enterprise Linux    Rpmforge:RHEL 推薦,包很全

搜索引擎:http://pkgs.org  ;http://rpmfind.net  ;http://rpm.pbone.net  ;https://sourceforge.net/

v (4) 自己制作

v  注意:檢查其合法性( 來源合法性, 程序包的完整性)

二、rpm包管理

CentOS系統上使用rpm命令管理程序包:安裝、卸載、升級、查詢、校驗、數據庫維護

2.1 安裝軟件包

  rpm  –ivh  PACKAGE-FILE…

rpm -i|–install[install-options] PACKAGE_FILE

[install-options]-test:  測試安裝,但不真正執行安裝;dry run 模式

–nodeps :忽略依賴關系  ;–replacepkgs | replacefiles重復覆蓋安裝  –nosignature:  不檢查來源合法性

–nodigest :不檢查包完整性  ;–noscripts :不執行 程序包腳本

%pre: ; 安裝前腳本; –nopre   ;   %post: ; 安裝后腳本; –nopost

%preun: ; 卸載前腳本; –nopreun   ;  %postun:  卸載后腳本; –nopostun

2.2 軟件包升級

rpm -U|–upgrade[install-options] PACKAGE_FILE

rpm  {-F|–freshen} [install-options] PACKAGE_FILE

upgrade :安裝有舊版程序包,則“升級”  ;  如果不存在舊版程序包,則“安裝”

freshen :安裝有舊版程序包,則“升級”   ;  如果不存在舊版程序包,則不執行升級操作

rpm -Uvh PACKAGE_FILE …         ;             rpm -Fvh PACKAGE_FILE …

–oldpackage :降級          ;            –force:強行升級

升級注意項:(1不要對內核做升級操作;linux支持多內核版本并存,因此,只需要直接安裝新內核版本

    2如果原程序包的配置文件安裝后曾被修改,升級時,新版本的提供的同一個 配置文件并不會直接覆蓋老  版本的配置文件,而是把新版本的文件重命名(FILENAME.rpmnew)后保留

2.3 rpm包查詢query

rpm {-q|–query} [select-options] [query-options]

v   [select-options]

-a: 所有包  ;-f:  看指定的文件由哪個程序包安裝生成  ;-p rpmfile :針對尚未安裝的程序包文件做查詢操作;

–whatprovides CAPABILITY :查詢指定的 CAPABILITY由哪個包所提供

–whatrequires CAPABILITY :查詢指定的 CAPABILITY 被哪個包所依賴

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

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

     [query-options]

–changelog :查詢rpm 包的changelog

-c:  查詢程序的配置文件  ; -d:  查詢程序的文檔  ;  -i: information查詢包的信息

-l:  查看指定的程序包安裝后生成的所有文件  ;  -R:  查詢指定的程序包所依賴的 的CAPABILITY

–scripts :程序包自帶 的腳本    ;  –provides:  列出指定程序包所提供的 的CAPABILITY

2.3.1 組合查詢

-q僅查詢,后面接的軟件名是否安裝  ;  -qa:列出所有的已經安裝在本機Linux上面的所有軟件名稱

-qi:列出該軟件詳細信息information  ;  -ql:列出該軟件所有的文件與目錄所在完整文件名

qc:列出該軟件的所有config文件/etc/下面的文件名) ;-qd:列出該軟件的所有幫助軟件(man

-qR:列出該軟件有關的依賴軟件所含的文件(Required ;qf:后接文件名找出此文件屬于哪一個已安裝的軟件 

-qp [ icdlR]查詢某個RPM的信息,而非已安裝軟件的信息。

2.4 rpm包卸載

rpm {-e|–erase} [–allmatches] [–nodeps] [–noscripts] [–notriggers] [–test] PACKAGE_NAME …

2.5 rpm包校驗

包來源合法性驗正及完整性驗正:

   完整性驗正:SHA256  ;  來源合法性驗正:RSA

v 公鑰加密:(1)對稱加密:加密、解密使用同一密鑰;  (2)非對稱加密:密鑰是成對兒的

   public key:  公鑰,公開所有人         ;       secret key:  私鑰,  不能公開

導入所需要公鑰:rpm –import / etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

         rpm -K|checksig rpmfile 檢查包的完整性和簽名

     rpm -qa gpg-pubkey*

CentOS 7 發行版光盤提供: RPM-GPG-KEY-CentOS-7

2.6 數據庫重建

   vim  /var/lib/rpm   ldd :查詢二進制執行命令所調用的庫如:ldd /bin/ls   ldd /bin/cat

rpm {–initdb|–rebuilddb}

initdb:  初始化   如果事先不存在數據庫,則新建之;否則,不執行任何操作

rebuilddb :重建已安裝的包頭的數據庫

三、yum

    yumyellowdog update modifier)依賴于rpm     CentOS安裝包的命令: yum, dnf

YUM: Yellowdog Update Modifier ,rpm 的前端程序,用來解決軟件包相關依賴性,

     可以在多個庫之間定位軟件包, up2date 的替代工具

3.1 yum倉庫

    yum依賴于數據庫,使用yum,必須要建立yum倉庫yum repository: yum repo):存儲了眾多rpm包,以及rpm包的相關的元數據文件(放置于特定目錄repodata 下)里面包括:包之間的依賴性、校驗、查詢、等信息。

    元數據存放在:文件服務器:ftp:// ;http://; file://;在本機中以后可以用命令自動生成,只需要包文件。

yum 客戶端配置文件:不同終端只能一個人使用yum

    /etc/yum.conf 為所有倉庫提供公共配置  ;  /etc/yum.repos.d/*.repo :為倉庫的指向提供配置

3.1.2 yum倉庫指向的定義

      元數據文件repodata的父目錄即為倉庫指向的路徑

[repositoryID][CentOS]  ;  name=Some name for this repository(為倉庫指名) ;

baseurl=url://path/to/repository/;  [ftp:// http://; file:///mnt/yum本機/mnt/yum];

enabled={1|0} 0表示倉庫禁用) ;   gpgcheck={1|0}0表示不檢查合法性-import  ;

(開放源代碼密鑰)gpgkey=URL  ;  enablegroups={1|0} (是由支持用戶組)

failovermethod={roundrobin|priority},默認為:roundrobin ,意為多個url隨機挑選;

cost= 默認為1000可以建多個倉庫,cost代表價格,cost值越低,優先級越高)

3.1.3 yum客戶端的建立

   生成172.16.0.1_cobbler_ks_mirror_CentOS-X-x86_64_.repo  repo鏡像文件  

  yum-config-manager –add-repo=http://172.16.0.1/cobbler/ks_mirror/CentOS-X-x86_64/

v yum-config-manager –disable “ 倉庫名" 禁用倉庫

v yum-config-manager –enable “ 倉庫名”啟用倉庫  適用于交互式腳本)

顯示倉庫列表yum repolist [all|enabled|disabled]  顯示所有可安裝的包

3.1.4 yum程序包管理

yum list    查看包的列表   yum info  查看包的信息:包含的內容

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

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

v  安裝程序包:相對于rpm,yum能簡便安裝,不用考慮依賴性直接安裝依賴的包

yum install package1 [package2] […]

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

    升級程序包:

yum update [package1] [package2] […]

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

v  檢查可用升級:

yum check-update

v  卸載程序包:不能卸載所依賴的包,導致卸載不干凈,留下垃圾。

yum remove | erase package1 [package2] […]

cat /var/log/yum.log 查看yum安裝卸載日志

3.1.5 查看程序包information 

yum info […]

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

  yum provides | whatprovides feature1 [feature2][…]    ——rpm  -qf

v  清理本地緩存:cat /etc/yum.conf à 得到cachedir=var/cache/yum/…  一般緩存元數據和其他的數據

  yum clean [ packages | metadata | expire-cache過期緩存) |rpmdb | plugins | all ]

如果遇到新安裝yum報錯,而且配置文件沒啥問題,那就清除一下緩存以前yum配置文件緩存)

v  構建緩存:yum makecache

搜索:yum search string1 [string2] […]以指定的關鍵字搜索程序包名及summary 信息

v  查看指定包所依賴的capabilities 

yum deplist package1 [package2] […]

v  查看yum 事務歷史:

yum history [info|list|packages-list|packages-info|summary|addon-info|redo重做)|undo撤銷)|

rollback|new|sync|stats]

yum history   = cat /var/log/yum.log

yum history info 6

yum history undo 6

查看歷史上安裝的包,指定第6info,撤銷安裝的第6,這個相當于能直接卸載依賴性的包

v日志文件存放/var/log/yum.log

安裝及升級本地程序包:

yum localinstall rpmfile1 [rpmfile2] […]      ( install 替代)

yum localupdate rpmfile1 [rpmfile2] […]     ( update 替代)

 

3.1.6包組管理的相關命令

yum groupinstall group1 [group2] […]  安裝CentOS安裝選項 Development tools

yum groupupdate group1 [group2] […]

yum grouplist [hidden] [groupwildcard] […]查看包組的列表

yum groupinfo group1 […] 查看的信息,包含的內容:必選組,默認,可選

查看顯示=”代表隨著包組一塊安裝的

yum groupremove group1 [group2] […]

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

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

# mount /dev/cdrom /media/cdrom

(2)  創建配置文件

[CentOS7]   name=   baseurl=    gpgcheck=    enabled=

4.1 yum倉庫示例

[centos7]

baseurl=http://172.18.0.1/cobbler/ks_mirror/CentOS-7-1511-x86_64/

#gpgcheck=0

gpgkey=http://172.18.0.1/cobbler/ks_mirror/CentOS-7-1511-x86_64/RPM-GPG-KEY-CentOS-7

enabled=1

4.2 yum 的命令行選項

–nogpgcheck :禁止進行gpg check

-y:  自動回答為yes”    -q :靜默模式

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

–noplugins

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

$releasever:  當前OS 的發行版的主版本號    $arch:  架構平臺,i386,i486,i586,x86_64

$basearch :基礎平臺;i386,x86_64

$YUM0-$YUM9: 自定義變量

v  實例:

http://server/centos/$releasever/$basearch/  不管操作系統的版本5,6,7直接能夠找到對應版本所需的倉庫

http://server/centos/7/x86_64     http://server/centos/6/i384

v  自己創建yum 倉庫:首先要拿到rpm包,

rpm -ivh /misc/cd/Packages/vsftpd-2.2.2-21.el6.x86_64.rpm

     再創建元數據:createrepo [options] <directory>

4.3 光盤的自動掛載/misc/cd

 cat  /etc/yum.repos.d/wang.repo (查看yum倉庫的配置文件)

yum -y install autofs   下載autofs軟件

systemctl  enable  autofs   === centos7   chkconfig autofs on  ===  centos6  開通autofs服務

reboot  重啟

 cat  /etc/yum.repos.d/wang.repo 查看yum倉庫的配置文件是否如下:

    [base]    baseurl=file:///misc/cd/    gpgcheck=0

五、ftp服務

   創建yum倉庫,為網絡客戶服務

rpm -ivh /misc/cd/Packages/vsftpd-3.0.2-10.el7.x86_64.rpm  下載vsftpd服務軟件包,自動創建/var/ftp/pub目錄。

systemctl  start  vsftpd   === centos7      systemctl  enable  vsftpd === centos7下次啟動繼續執行)

service   vsftpd  start  ===  centos6       chkconfig  vsftpd  on ===  centos6 (啟動ftp服務)

iptables  -F   (清空防火墻)  setenforce  0   禁用selinux守護 策略

rpm –ivh /misc/cd/Packages/createrepo….rpm  下載創建倉庫元數據的軟件包createrepo

cp  *.rpm  /var/ftp/pub/7      復制軟件包到/var/ftp/pub/7目錄下

createrepo /var/ftp/pub/7 創建 /var/ftp/pub/7/repodata元數據 文件)之后才能訪問ftp共享文件。

在客戶端上:

[root@centos7 ~]# cat /etc/yum.repos.d/base.repo

[base]

baseurl=ftp://172.16.253.230/pub/$releasever/

gpgcheck=0

mount -o loop /root/CentOS-6.8-x86_64-bin-DVD1.iso  /var/ftp/pub/6 掛載iso鏡像文件到/var/ftp/pub/6v  

六、http服務

6.1程序包編譯安裝

v Application-VERSION-release.src.rpm –>  安裝后,使用rpmbuild 命令制作成二進制格式的rpm包,而后 再安裝

v  源代碼–> 預處理–> 編譯–> 匯編–> 鏈接–> 執行

v  源代碼組織格式:多文件:文件中的代碼之間,很可能存在跨文件依賴關系。

6.1.1 編譯C 源代碼

準備: 提供開發工具及開發環境 yum groupinstall Development Tools”)

       開發工具:make, gcc等      開發環境:開發庫,頭文件glibc :標準庫)

實現:通過 “包組”提供開發組件

    CentOS 6:   Development Tools      Server Platform Development

    CentOS 7:   Development Tools      Development and Creative Workstation

C 、C++ make ( 項目管理器,configure增加參數) –>Makefile.in 模版文件)–> makefile)

java maven相當于c 代碼的編譯安裝三步驟

6.1.2 C代碼編譯安裝三步驟

1 、./configure:執行命令必須在解壓縮的目錄下       

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

(2)  檢查依賴到的 外部環境,如依賴的軟件包

2 、make :根據makefile 文件,構建應用程序,文件終生成二進制文件

3 、make install: 復制文件到相應路徑

開發工具:autoconf:  生成configure 腳本          ;        automake :生成Makefile.in

v    注意:安裝前  configure – -help   查看cat  INSTALL ,README。

開源程序源代碼的獲?。?/span>

1官方自建站點:apache.org (ASF Apache Software Foundation)  ; mariadb.org  ;  

2代碼托管:SourceForge.net     Github.com     code.google.com                     

c/c++ 編譯器: gcc (GNU C Complier)      

 

第一步:configure 腳本

選項:指定安裝位置、指定啟用的特性    –help:  獲取其支持使用的選項

選項分類:

安裝路徑設定:–prefix=/PATH:  指定默認安裝位置, 默認為/usr/local/    –sysconfdir=/PATH :配置文件安裝位置

System types:  系統類型

Optional Features:  可選特性  –disable-FEATURE   –enable-FEATURE[=ARG]

Optional Packages:  可選包,    –with-PACKAGE[=ARG], 依賴包    –without-PACKAGE, 禁用依賴關系

v第二步:make

v第三步:make install  

6.1.3 安裝后的配置

(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|man_db.conf 文件

添加一個MANPATH     

七、完整安裝編譯安裝http服務

1 yum groupinstall "Development Tools" 獲取開發(make)編譯gcc)工具,獲取開發環境(開發庫,頭文件)

2 yum install lftp  使用ftp服務下載 http 安裝包

      lftp  172.16.0.1/pub/Sources/sources/httpd/httpd-2.2.29.tar.bz2

      get  httpd-2.2.29.tar.bz2 下載)  bye:退出當前模式  

      tar xvf httpd-2.2.29.tar.bz2解壓)

   必須ping172.16.0.1,可以檢查路由設置,設置默認路由:route add default eth0  ;route -n

3  cat README  INSTALL  查看幫助,建立文檔

4  yum install gcc 必須要先確定有編譯工具gcc

    ./configure  –help  生成makefile文件

    ./configure  –prefix=/usr/local/wanghttp 默認安裝目錄  –sysconfdir=/etc/wanghttp/  設置默認安裝配置文件

5  make (根據makefile 文件,構建應用程序,最文件終生成二進制文件)

6  make install  復制二進制文件到相應路徑

7  vim  /etc/profile.d/wanghttp.sh  編輯全局profile.d文件 ,設置自動執行的環境變量

        PATH=$PATH:/usr/local/wanghttp/bin

8  vim /etc/man.configCentOS6  | man_db.conf  CentOS7

       導入幫助手冊路徑  MANPATH /usr/local/wanghttp/man

9  vim /etc/ld.so.conf.d/wanghttp.conf

     /usr/local/wanghttp/lib  創建數據庫   ;  ldconfig (加載庫)

10  ln -s  /usr/local/wanghttp/include/  /usr/include/wanghttp(指向鏈接的頭文件)

11  apachectl start

     以前安裝的httpd沖突,需要卸載

     如果不成的話就把hash -r,看是不是路徑問題

netstat -ant 查看80端口(http的默認端口)

iptables -F  清空防火墻

12 測試查看網頁links ip 172.16.222.222     curl ip 172.16.222.222

13  切換到編輯網頁路徑:cd /usr/local/wanghttp/htdocs

echo "welcome to mage" > index.html  更改內容


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

(0)
lyxlyx
上一篇 2016-11-27
下一篇 2016-11-27

相關推薦

  • Linux如何快速查找需要執行的命令

    大家知道,對于熟悉命令行的用戶來說,命令行操作比圖形界面操作高效、簡潔,那么Linux是如何快速找到命令的位置呢?今天剛學了這一部分,與大家分享。         Linux將命令分為內部命令和外部命令,這是由于一些命令是常用的,需要常駐內存以減少檢索時間,所以集成在shell之…

    2017-07-15
  • 文本處理章練習題

    2017.7.27練習 1、找出ifconfig “網卡名” 命令結果中本機的IPv4地址 ifconfig |head -n 2 |tail -n 1|tr -s ” ” : |cut -d: -f4   2、查出分區空間使用率的最大百分比值 df|tr -s ‘ ‘ %|sort -t% -k5 …

    2017-07-29
  • OpenStack Icehouse私有云實戰部署

    前言 相信你一定對“云主機”一詞并不陌生吧,通過在Web頁面選擇所需主機配置,即可快速定制一臺屬于自己的虛擬主機,并實現登陸操作,大大節省了物理資源。但這一過程是如何實現的呢?本文帶來OpenStack Icehouse私有云實戰部署。 OpenStack 簡介 OpenStack是由網絡主機服務商Rackspace和美國宇航局聯合推出的一個開源項目,Ope…

    Linux干貨 2015-07-29
  • 第二十二周作業

    1、請描述本地文件系統和分布式文件系統的特點; 本地文件系統: 本地文件系統主要是指Ext2,Ext3,Btrfs,XFS這類(很難概括,只好舉例子),它們通常提供以下功能: 1.擴展性:隨著系統容量的增加保持性能,不隨容量變化而導致性能震蕩。比如一個目錄下的海量文件,在EXT2/3中由于目錄設計問題會導致較大的性能問題。再比如EXT2/3中的Metadat…

    2017-09-23
  • 第一周的博客作業

    1.計算機的組成以及功能:     cpu:就是中央處理器,運算和判斷計算機的數據;     儲設器:存儲計算機的數據;     主板:鏈接多的計算機的硬件;     I/O設備:輸入,輸出設備,,如…

    Linux干貨 2017-01-05
  • 從Linux小白到大?!c狼共舞的日子3

    馬哥教育網絡班21期+第3周課程練習 1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [root@localhost ~]# who root :0   2016-07-23 08:55 (:0) wangsining pts…

    Linux干貨 2016-07-26
欧美性久久久久