一、RedHat/centos包管理
1. 包管理工具RPM
(1) 簡介
最早用在 RedHat的包管理器,現(xiàn)在已經(jīng)成為linux常見的包管理系統(tǒng)。RPM包有兩種類型:
- 二進制RPM包
- 源碼RPM包
可以在www.rpmfind.net網(wǎng)站查詢軟件包,也可以查到其依賴項:
(2) RPM包命名規(guī)則
如:Nginx-1.16.1-1.el7.x86_64.rpm
- nginx:軟件包名
- 1.16.1:軟件版本
- 1:軟件發(fā)布次數(shù)
- el7:適合的Linux平臺
- x86_64:適合的硬件平臺
- rpm:擴展名
(3) 常用操作
# 查詢是否安裝
rpm -q 包名
# 查詢所有已經(jīng)安裝的RPM包
rpm -qa
# 查詢軟件包詳細信息
rpm -qi 包名
# 查詢文件安裝位置
rpm -ql 包名
# 查詢文件屬于哪個RPM包
rpm -qf 文件名
# 查詢軟件包的依賴性
rpm -qR 包名
使用RPM安裝軟件
命令格式:
rpm -ivh 包全名
選項:
- -i 安裝
- -v 顯示詳細信息
- -h 顯示進度
- --nodeps 不檢測依賴性
校驗
rpm -V 已安裝的包名
選項:-V 校驗指定rpm包中的文件(verify)驗證內(nèi)容中的8個信息的具體內(nèi)容如下:
- s 文件大小是否改變
- M 文件的類型或文件的權限(rwx)是否被改變
- 5 文件MD5校驗和是否改變(可以看成文件內(nèi)容是否改變)
- D 設備的主從代碼是否改變
- L 文件路徑是否改變
- U 文件屬性(所有者)是否改變
- G 文件屬組是否改變
- T 文件的修改時間是否改變
升級
rpm -Uvh 包全名
選項:
- -U 升級
卸載
rpm -e 包名
選項:
- -e 卸載
- --nodeps 不檢測依賴性
下面安裝nginx過程示例:
# 下載公鑰簽名
wget http://nginx.org/keys/nginx_signing.key
# 下載軟件
wget http://gninx.org/packages/centos/7/x86_64/RPMS/nginx-1.14.0-1.el7_4.ngx.x86_64.rpm
# 導入公鑰
rpm --import nginx_signing.key
# 驗證簽名
rpm --checksig nginx-1.14.0-1.el7_4.ngx.x86_64.rpm
# 輸出檢驗結果
nginx-1.14.0-1.el7_4.ngx.x86_64.rpm: rsa sha1 (md5) pgp md5 確定
# 安裝
rpm -i -v -h nginx-1.14.0-1.el7_4.ngx.x86_64.rpm
# 輸出內(nèi)容
錯誤:依賴檢測失敗:
libcrypto.so.10(OPENSSL_1.0.2)(64bit) 被 nginx-1:1.14.0-1.el7_4.ngx.x86_64 需要
# 安裝openssl1.0.2
rpm -qa openssl
# 輸出
openssl-1.0.1e-34.el7.x86_64
# 到rpmfind上查找下載地址
wget http://rpmfind.net/linux/centos/7.8.2003/os/x86_64/Packages/openssl-libs-1.0.2k-19.el7.x86_64.rpm
# 安裝openssl依賴,這里不加--force有可能無法成功
rpm -ivh openssl-libs-1.0.2k-19.el7.x86_64.rpm --force
# 再安裝nginx
rpm -i -v -h nginx-1.14.0-1.el7_4.ngx.x86_64.rpm
# 查詢
rpm -qa
rpm -qi nginx-1.14.0-1.el7_4.ngx.x86_64
# 如果要卸載,執(zhí)行:
# rpm -e nginx-1.14.2-1.el7_4.ngx.x86_64
2. 依賴管理工具yum
(1) yum簡介
yum自動化解決RPM包的依賴項問題,由兩個重要的組成部分:
- RPM包
- 倉庫
# 示例:使用yum安裝httpd服務
yum -y install httpd
# 升級所有包,也升級軟件和系統(tǒng)內(nèi)核
yum -y update
# 升級所有包,不升級軟件和系統(tǒng)內(nèi)核
yum -y upgrade
升級前,應當對系統(tǒng)作快照。
(2) yum源
(a) 手動更換阿里云源
源的管理是/etc/yum.repos.d/CentOS-Base.repo文件。官方源地址:
baseurl=http://mirrorlist.centos.org/?release=releasever&arch=basearch&repo=os
阿里云:
[base]
# name描述
name=CentOS-$releasever - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
# 1開啟本地更新模式,0關閉
enabled=1
# 1表示檢查,0不檢查
gpgcheck=1
# 檢查的key,如果上一行是0,這一行就不用寫
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
(b) wget下載阿里源
cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.back
wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
yum clean all
yum makecache
二、 Debian(深度系統(tǒng)、Ubuntu等)
1. 使用rpm
對于基于Debian的系統(tǒng)(包含Ubuntu、國產(chǎn)深度系統(tǒng))不能直接使用RPM安裝軟件,可以將RPM轉換為deb格式,但建議盡量使用后面的dpkg方式。
(1) 安裝rpm
sudo apt-get install rpm -y
由于軟件一般有很多依賴,即使安裝了rpm,用它裝軟件也很困難。
(2) rpm轉deb
sudo apt-get install alien fakeroot
fakeroot alien JAVAse*.rpm
sudo dpkg -i javase*.deb
2. 包管理工具dpkg
dpkg是Debian Packager的縮寫,是Debian系統(tǒng)的軟件包管理工具,可以用來安裝已經(jīng)下載的deb包。
常用命令:
# 查看軟件的狀態(tài)
dpkg -l wps*
dpkg -l "nginx*"
# 查看軟件安裝到什么地方
dpkg -L 軟件包名稱
# 卸載軟件
sudo dpkg -P wps-office
# 刪除安裝的文件,不刪除配置文件,同-r
dpkg --remove
# 安裝文件和配置文件都刪除,同-P
dpkg --purge
# 安裝軟件
dpkg -i file.deb
# 查找包的詳細信息
dpkg -s package
# 列出deb包的內(nèi)容
dpkg -c package.deb
# 解開 deb 包的內(nèi)容
dpkg -unpack package.deb
# 配置包
dpkg -configure package
3. 依賴管理工具apt-get
apt-get命令用于管理deb包,主要用于Debian系統(tǒng),最初發(fā)布于1998年。建議使用apt代替apt-get,apt是apt-get,apt-cache,apt-config常用命令的集合。
命令格式:
sudo apt-get xxxx
常用命令:
# 更新軟件包列表
sudo apt-get update
# 安裝軟件
sudo apt-get install packagename
# 卸載軟件,刪除配置文檔
sudo apt-get remove --purge packagename
# 卸載軟件,保留配置文檔
sudo apt-get remove packagename
# 刪除包及依賴的軟件包
sudo apt-get autoremove --purge packagename
# 刪除包及其依賴的軟件包+配置文件
dpkg --force-all --purge packagename
# 刪除apt-get自動備份的軟件
apt-get autoclean
# 把安裝的軟件的備份也刪除,但不影響軟件使用
apt-get clean
# 更新軟件包
apt-get upgrade
# 推薦用來替代上一條指令 ,系統(tǒng)升級到新版本
apt-get dist-upgrade
# 在軟件包列表中搜索字符串
apt-cache search string
# 查找已安裝或可用的軟件包
aptitude
# 顯示軟件包信息
apt-cache showpkg pkgs
# 打印可用軟件包列表
apt-cache dumpavail
# 顯示軟件包記錄
apt-cache show pkgs
# 打印軟件包列表軟件包的名稱
apt-cache pkgnames
# 查看文件屬于哪個已安裝的軟件包
dpkg -S filename
# 列出軟件包中的文件
dpkg -L package
# 列出所有已安裝的軟件包
dpkg -l
# 查找包含指定文件的軟件包,包含未安裝的
apt-file search filename
# 用來清除已卸載軟件包的.deb文檔
apt-get autoclean
# 列出包含條件的已安裝的包
apt list
# 編輯源列表
apt edit-sources
三、開機啟動項
1. 開機級別的概念
/etc/inittab用來設置開機級別。Debian系統(tǒng)默認沒這個文件,可以手工創(chuàng)建。
運行級別列表:
- 0 系統(tǒng)停止
- 1 單用戶系統(tǒng),不需要登陸
- 2 多用戶系統(tǒng)但不支持NFS,命令行模式登陸
- 3 完整多用戶模式,命令行模式登陸
- 4 未用
- 5 X11圖形模式,圖形模式登陸
- 6 重新啟動系統(tǒng)
沒有/etc/inittab文件時,系統(tǒng)將運行在2級別上。
2. Linux通用的啟動項設置方式
1. 建立軟連接方式設置自啟動
目錄 /etc/rc.d/rc[0-6].d 對應了7種運行級別,如級別5的啟動項內(nèi)容:
這里軟連接的格式: [K|S][1-100]servicename
- 系統(tǒng)運行級別是5時,關掉以K開頭的服務,打開以S開頭的服務
如果要自己寫一個腳本 teststart,要在級別3時啟動,就把腳本放到/etc/init.d下,建立軟連接:
ln -s /etc/init.d/teststart /etc/rc.d/rc3.d/S95teststart
2. /etc/rc.local開機啟動腳本
/etc/rc.local是 /etc/rc.d/rc.local的軟連接。
這里/var/lock/subsys/local 的修改時間,就是系統(tǒng)啟動時間。設置httpd自啟動
/etc/rc.d/init.d/httpd start
2. CentOS下的設置
1. centos使用chkconfig
chkconfig 是命令行用來進行上面第1條的設置。
系統(tǒng)會提示只顯示SysV服務,不包含原生systemd服務。
# 查看開機啟動項
chkconfig --list
# 查看sshd項
chkconfig --list sshd
# 關閉啟動項
chkconfig zookeeper off
# 開啟啟動項
chkconfig zookeeper on
# 添加服務到chkconfig
chkconfig --add sshd
2. centos中的系統(tǒng)命令
使用systemctl enable 服務名稱來設置開機啟動。
# 查詢啟動項
systemctl list-unit-files --type=service | grep 'enabled'
2. Ubuntu系統(tǒng)下的設置
(1) rcconf
sudo apt-get install rcconf
rcconf
(2) sysv-rc-conf
# 把/etc/init.d/teststart加入服務
sudo sysv-rc-conf teststart on
四、登陸/注銷時自動運行的程序
1. 登陸時運行腳本
/etc/profile
用戶登陸時,bash先自動執(zhí)行系統(tǒng)管理員建立的全局登陸腳本 :
然后會按順序查找以下文件:
- ~/.bash_profile
- ~/bash_login
- ~/.profile
只執(zhí)行最先找到的一個。
2. 注銷登陸時運行腳本
設置腳本:~/.bash_logout