linux軟件管理

軟件管理

一般而言,能夠經過後綴區別源碼包和二進制包php

  • 以.rpm .deb結尾的軟件包稱之爲二進制包,已經經過GCC編譯後的
  • 以.tar .tar.gz .zip .rar 結尾稱爲源碼包,須要編譯

目錄node

二進制包
    rom包管理
    yum包管理
    
源碼包
    tar包管理
    
文件的管理和歸檔

1二進制包

1.1rpm軟件包管理

centos操做系統中有一款默認軟件管理的工具,即紅帽包管理工具(red hat package manager , RPM)mysql

rpm使用時,什麼狀況下使用軟件包全名,何時使用軟件包名?nginx

  • 包全名:對安裝和更新升級時使用
  • 包名:對已經安裝過的軟件包進行操做時,好比查找已經安裝的某個包,卸載包等,使用包名(默認是去目錄/var/lib/rpm下進行搜索.當一個rpm包安裝到系統上以後,安裝信息通暢會保存到本地)

安裝

選項c++

  • -i install的意思,安裝軟件包
  • -v 顯示附加信息,提供更多詳細信息
  • -h 安裝時輸出######標記

1,掛載光盤git

[root@localhost ~]# mount /dev/cdrom /mnt

2,安裝sql

[root@localhost ~]# rpm -ivh /mnt/Packages/zsh-5.0.2-31.el7.x86_64.rpm

3,查看是否安裝成功shell

[root@localhost ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/zsh

查詢

rpm -q 查詢. 常與下面參數組合使用.數據庫

  • -a 查詢全部已經安裝的軟件包
  • -f 查詢 文件所屬哪一個軟件包,反向查詢
  • -i 顯示已經安裝的rpm軟件包信息,後面直接跟包名
  • -l 查詢軟件包中,文件安裝的位置
  • -p 查詢未安裝軟件包的相關信息,後面要跟軟件的命名
  • -R 查詢軟件包的依賴性

-q 查詢指定的包是否安裝vim

[root@localhost ~]# rpm -q zsh
zsh-5.0.2-31.el7.x86_64

-qa 查詢全部已經安裝包

[root@localhost ~]# rpm -qa | grep vi
vim-minimal-7.4.160-5.el7.x86_64

-qf 查詢文件或命令屬於哪一個安裝包

[root@localhost ~]# which ifconfig
/usr/sbin/ifconfig
[root@localhost ~]# rpm -qf /usr/sbin/ifconfig 
net-tools-2.0-0.24.20131004git.el7.x86_64

-qpi 查詢軟件包的信息

# 對於未安裝的包
[root@localhost ~]# rpm -qpi /mnt/Packages/php-mysql-5.4.16-46.el7.x86_64.rpm 
Name        : php-mysql
Version     : 5.4.16

對於已經安裝的包
[root@localhost ~]# rpm -qi net-tools
Name        : net-tools
Version     : 2.0
Release     : 0.24.20131004git.el7

-qpl 查詢軟件包要安裝的位置

對於未安裝的包
[root@localhost ~]# rpm -qpl /mnt/Packages/net-tools-2.0-0.24.20131004git.el7.x86_64.rpm 
/bin/netstat
/sbin/arp
/sbin/ether-wake
/sbin/ifconfig
/sbin/ipmaddr
/sbin/iptunnel

對於已經安裝的包
[root@localhost ~]# rpm -ql net-tools
/bin/netstat
/sbin/arp
/sbin/ether-wake
/sbin/ifconfig

校驗

-qf 查看軟件包內容是否被修改,用於檢驗命令沒有被黑客修改

[root@localhost ~]# which find
/usr/bin/find
[root@localhost ~]# rpm -qf /usr/bin/find
findutils-4.5.11-6.el7.x86_64

[root@localhost ~]# rpm -V findutils     #檢查包,沒有輸出結果就是沒有被修改
[root@localhost ~]# rpm -Vf /usr/bin/find    #檢查具體文件,沒有輸出結果就是沒有被修改

如何查看系統中全部的rpm包及安裝的文件有沒有被黑客修改?

[root@localhost ~]# rpm -Va
.M.......  g /boot/initramfs-3.10.0-957.el7.x86_64.img
S.5....T.  c /etc/sysconfig/authconfig
校驗時候參考了/var/lib/rpm目錄下的rpm數據庫信息

卸載和升級

卸載

[root@localhost ~]# rpm -e zsh
[root@localhost ~]# rpm -qa | grep zsh
[root@localhost ~]#

強制卸載

不建議使用.有依賴關係是建議使用yum來卸載

[root@localhost ~]# rpm -e --nodeps zsh

升級

由於升級時候會有一些依賴包要解決,因此通常咱們使用(yum update 包),來升級

rpm -Uvh

1.2 yum軟件管理程序

  • yellow dog updater,Modified
  • 基於RPm包管理,可以從指定的服務器自動下載RPM包而且安裝,能夠自動處理依賴性關係,而且一次安裝全部以來的軟件包.基於c/s架構
  • yum提供了查找,安裝,刪除某一個,一組甚至所有軟件包的命令

1本地yum源

1掛載光盤

mount /dev/cdrom /mnt

2備份配置文件

[root@localhost ~]# mv /etc/yum.repos.d/ /etc/yum.repo.d
[root@localhost ~]# mkdir /etc/yum.repos.d

3建立yum本地源

[root@localhost ~]# vim /etc/yum.repos.d/centos7.repo       #名稱任意,可是必定要.repo結尾
[centos7]                        #yum源名稱,在本服務器上是唯一的
name=centos7                #yum源描述信息
baseurl=file:///mnt            #yum源的路徑(ftp://...    HTTP://...     file:///...)
enabled=1                   #1啓用yum源 , 0爲禁用
gpgcheck=0                  #1使用公鑰校驗rpm包的正確性,0爲不校驗

4清除yum緩存

[root@localhost ~]# yum clean all
Loaded plugins: fastestmirror
Cleaning repos: centos7

2配置網絡源

1下載阿里yum源並保存到指定路徑

wget 下載. -O指定保存位置

[root@localhost ~]# wget -O /etc/yum.repos.d/CentOS.Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

2清除yum緩存

[root@localhost ~]# yum clean all
3當centos推出新版本的系統後,yum源不能用了該怎麼辦呢?
cat /etc/yum.repos.d/CentOS.Base.repo
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/

其中$releasever表明的是系統版本

[root@localhost ~]# cat /etc/centos-release
CentOS Linux release 7.6.1810 (Core)

自動識別本地系統版本,和網站中的最新的版本對應.因此應該更改配置文件中的版本信息

1 查看 
發現網站中http://mirrors.aliyun.com/centos/    centos版本最新的是7.6.1810
2 替換
[root@localhost ~]# sed -i 's/$releasever/7.6.1810/g' /etc/yum.repos.d/CentOS.Base.repo 
3更新
[root@localhost ~]# yum clean all

yum經常使用操做

安裝和升級

yum install -y httpd          #安裝軟件包
yum update httpd             #升級軟件包,改變軟件設置和系統設置,系統版本內核都升級
yum upgrade httpd                 #升級軟件包,不改變軟件設置和系統設置,系統版本升級,內核不改變
yum -y update               #系統內能升級的軟件都會升級

檢索

yum info net-tools              #查詢rpm包的做用
yum provides /usr/sbin/ifconfig      #查詢文件是哪個軟件安裝的,同rpm -qf
yum search vim      #按照關鍵字搜索軟件包

卸載

yum remove zsh        #卸載包

yum安裝開發工具軟件包組

查看有哪些軟件包組
[root@localhost ~]# yum grouplist

安裝開發工具組
[root@localhost ~]# yum groupinstall "Development Tools"

源碼包

源碼安裝Nginx

安裝

1安裝依賴

[root@localhost ~]# yum -y install gcc gcc-c++ make zlib-devel pcre pcre-devel openssl-devel

2解壓

[root@localhost ~]# tar zxvf nginx-1.16.0.tar.gz

3安裝軟件

[root@localhost ~]# cd nginx-1.16.0
[root@localhost nginx-1.16.0]# ./configure --prefix=/usr/local/nginx
[root@localhost nginx-1.16.0]# make -j 4     
[root@localhost nginx-1.16.0]# make install

詳解

./configure

  • 能夠指定安裝路徑,例如 --prefix=/usr/local/nginx
  • 啓用或者禁用某項功能
  • 檢查安裝環境
  • 最終生成:Makefile

make -j 4

  • 按Makefile文件編譯
  • 經過4核心CPU來完成

make install

  • 按Makefile定義的文件路徑安裝

make clean

  • 當咱們想指定安裝路徑,這時就須要刪除上次生成的Makefile. 或者能夠刪除源碼包,從新解壓.

刪除源碼包

make uninstall

可是不少時候刪除不乾淨
因此通常安裝時指定路徑--prefix=/usr/local/nginx
這樣進行操做時,能夠直接對這個路徑進行操做

錯誤解決方法

can't find ext2fs library

根據提示,安裝ext2fs庫

通常咱們能夠RPM安裝,經過按tab鍵補齊.不行的話能夠查找關鍵字

[root@localhost ~]# rpm -ivh /mnt/Packages/ext2fs
[root@localhost ~]# ls /mnt/Packages/*ext2fs*
[root@localhost ~]# ls /mnt/Packages/*2fs*
/mnt/Packages/e2fsprogs-libs-1.42.9-13.el7.i686.rpm
/mnt/Packages/e2fsprogs-libs-1.42.9-13.el7.x86_64.rpm

還能夠經過yum search ext2fs來檢索

[root@localhost ~]# yum search ext2fs

當咱們把庫已經安裝,可是configure時又說找不到,怎麼辦

咱們還須要安裝該庫的頭文件

/mnt/Packages/e2fsprogs-devel-1.42.9-13.el7.x86_64.rpm

總結

  • rpm+yum:方便,軟件版本低,穩定性好,管理方便
  • 源碼編譯:麻煩,軟件版本新,能夠定製,穩定性和管理稍差,可是性能好
    通常LAMP或LNMP架構時,咱們會用源碼

文件的歸檔和壓縮

好處:節約硬盤的資源,加快文件傳輸速率

tar命令:打包文件

選項

  • -c 建立壓縮包
  • -x 解壓還原文件
  • -v 顯示執行詳細過程
  • -f 指定文件
  • -t 不解包,查看包中的內容
  • -C 指定解壓位置

把/boot/grub/打包到指定路徑

[root@localhost ~]# tar -cvf /home/harry1/grub.tar /boot/grub/
/boot/grub/
/boot/grub/splash.xpm.gz

解包grub.tar到指定路徑

[root@localhost ~]# tar xvf grub.tar 
boot/grub/
boot/grub/splash.xpm.gz

將多個目錄和文件打包成一個軟件包

[root@localhost ~]# tar -cvf /home/harry1/back.tar /etc/passwd /etc/group /home/harry1/
/etc/passwd
/etc/group
/home/harry1/

不解包,只查看包中的內容

[root@localhost ~]# tar -tvf /home/harry1/back.tar 
-rw-r--r-- root/root       941 2019-06-05 05:17 etc/passwd
-rw-r--r-- root/root       519 2019-06-05 05:17 etc/group
...

在使用絕對路徑名歸檔文件時,默認從文件名中刪除該路徑前面的/符號,這樣解壓時,會直接解壓到當前目錄.否則會覆蓋原路徑中的文件

歸檔+壓縮

參數

  • -z 以gzip方式壓縮 擴展名tar.gz
  • -j 以bz2方式壓縮 擴展名tar.bz2
  • -J 以xzx方式壓縮 擴展名tar.xz

tar.gzip

壓縮
[root@localhost ~]# tar zcvf /home/harry1/etc.tar.gz /etc
解壓縮
[root@localhost ~]# tar zxvf /home/harry1/etc.tar.gz -C /opt/

tar.bz2

壓縮
[root@localhost ~]# tar jcvf /home/harry1/etc.tar.bz2 /etc
解壓縮
[root@localhost ~]# tar jxvf /home/harry1/etc.tar.bz2 -C /opt/

tar.xz

壓縮
[root@localhost ~]# tar Jcvf /home/harry1/etc.tar.xz /etc
解壓縮
[root@localhost ~]# tar Jxvf /home/harry1/etc.tar.xz -C /opt/

通過測試,解壓縮時若是存在相同文件,會直接覆蓋,不會詢問

效果

  • r < tar.gzip < tar.bz2 < tar.xz
  • ,所用的時間越長
相關文章
相關標籤/搜索