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 20:33
下一篇 2016-11-27 20:35

相關推薦

  • 0803linux基礎小記

    讓普通用戶無法登錄: centos 6  touch /etc/nologin echo "wating" > /etc/nologin 普通用戶登錄時不能進入系統,有提示信息 centos7  touch /etc/nologin 或touch /run/nologin  chage -l …

    Linux干貨 2016-08-05
  • 常用命令總結

    ifconfig查看IP地址 date查看日期和時間 cd跳轉到任何目錄 useradd新建一個普通用戶 passwd給用戶設置密碼 poweroff   halt    關機 reboot  重啟 cal  查看日歷 cal -y 查看一年日歷 env  export&nbsp…

    Linux干貨 2017-04-04
  • 集中管理利器-puppet快速入門-上

    帶著問題來學習 ?  從如下內容來看,如何自定義安裝用戶想要的東西呢?                                        …

    Linux干貨 2015-04-22
  • 揭開鏈接文件的面紗——從根本上剖析硬鏈接與軟鏈接異同

    在linux的學習過程中,鏈接文件的學習讓不少人頭疼,很多同學往往分不清什么是硬鏈接,什么是軟鏈接,對于兩者的概念和區別常常容易混淆、搞不清楚。今天我們就從原理、從根本上為大家辨析一些兩者之間的區別,相信大家在看完這篇文章之后對鏈接文件會有一個清晰正確的認識。 1、在實現原理上不同 硬鏈接,涉及到文件的底層模式,因此被稱為硬鏈接文件。硬鏈接文件只是一個指針指…

    Linux干貨 2016-10-20
  • Linux網絡配置基礎二(網絡模塊與nmcli命令)

    Linux網絡配置基礎二 相關命令 lsmod命令 lsmod命令用于顯示已經加載到內核中的模塊的狀態信息。執行lsmod命令后會列出所有已載入系統的模塊。Linux操作系統的核心具有模塊化的特性,應此在編譯核心時,務須把全部的功能都放入核心。您可以將這些功能編譯成一個個單獨的模塊,待需要時再分別載入。第一列:表示模塊的名稱第二列:表示模塊的大小第三列:表示…

    Linux干貨 2016-09-09
  • linux系統自動安裝之PXE

    PXE(集成在網卡上的)預啟動執行環境 (能夠通過網絡實現操作系統安裝) PXE工作原理1、Client向PXE Server上的DHCP發送IP地址請求消息,DHCP檢測Client是否合法(主要是檢測Client的網卡MAC地址),如果合法則返回Client的IP地址,同時將啟動文件pxelinux.0的位置信息一并傳送給Client2、Client向P…

    2018-01-16
欧美性久久久久