yum
YUM: Yellowdog Update Modifier,rpm的前端程序,用來解決軟件包相關依賴性,可以在多個庫之間定位軟件包,up2date的替代工具
yum repository: yum repo,存儲了眾多rpm包,以及包的相關的元數據文件(放置于特定目錄repodata下)
yum對軟件包的管理機制
—–引用了鳥哥linux私房菜的圖
yum配置文件
yum客戶端配置文件:
/etc/yum.conf:為所有倉庫提供公共配置
/etc/yum.repos.d/*.repo:為倉庫的指向提供配置
倉庫指向的定義格式:
[repositoryID]
name=Some name for this repository
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch= $basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
enabled={1|0}
gpgcheck={1|0}————-(相當于rpm -K 查找鑰匙?。?br />gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
enablegroups={1|0}
failovermethod={roundrobin|priority}
默認為:roundrobin,意為隨機挑選;
cost= 默認為1000
意義:
-
[base]:代表容器的名字!中刮號一定要存在,里面的名稱則可以隨意取。但是不能有兩個相同的容器名稱, 否則 yum 會不知道得該到哪里去找容器相關軟件列表檔案。
-
name:只是說明一下這個容器的意義而已,重要性不高!
-
mirrorlist=:這個的意思是指定多個baseurl的文件路徑,就能使用多個baseurl了;
-
baseurl=:這個最重要,因為后面接的就是容器的實際網址! mirrorlist 是由 yum 程序自行去捉映像站臺, baseurl 則是指定固定的一個容器網址!我們剛剛找到的網址放到這里來啦!
-
enable=1:就是讓這個容器被啟動。如果不想啟動可以使用 enable=0 !
-
gpgcheck=1:還記得 RPM 的數字簽名嗎?這就是指定是否需要查閱 RPM 檔案內的數字簽名!
-
gpgkey=:就是數字簽名的公鑰文件所在位置!使用默認值即可
其中 baseurl= 所指定的文件路徑有三種
文件服務器:
ftp://
http://
file:/// —————(最后一個表示根/的意思)
注意在配置yum倉庫的時候要到 /etc/yum.repos.d/ 里面 新建一個 *.repo 文件,然后把里面其他的 .repo 文件移走。這樣才能使用你所配置的yum倉庫文件。(文件不能有錯誤)!!
yum-config-manager —-一個能直接生成yum倉庫 .repo的命令
生成 172.16.0.1_cobbler_ks_mirror_CentOS-X86_64_.repo
yum-config-manager –add-repo= http://172.16.0.1/cobbler/ks_mirror/CentOS-Xx86_64/
-
yum-config-manager –disable “倉庫名" 禁用倉庫
-
yum-config-manager –enable “倉庫名” 啟用倉庫
yum命令用法
語法:yum [options] [command] [package …]
安裝: install package1 [package2] […]
install :后面接要安裝的軟件!
重新安裝:reinstall package1 [package2] […] (重新安裝)
update :后面接要升級的軟件,若要整個系統都升級,就直接 update 即可
顯示程序包:yum list [all | glob_exp1] [glob_exp2] […]
list :列出目前 yum 所管理的所有的軟件名稱不版本,有點類似 rpm -qa;
顯示倉庫列表: repolist [all|enabled|disabled]
升級程序包:
update [package1] [package2] […]
downgrade package1 [package2] […] (降級
檢查可用升級:yum check-update
卸載程序包: remove | erase package1 [package2] […]
卸載時也會把依賴于此的包也會卸載
查看程序包information:
info […] 類似 rpm -qai 的執行結果;
查看指定的特性(可以是某文件)是由哪個程序包所提供:provides | whatprovides feature1 [feature2] […]
provides:仍檔案去搜尋軟件!類似 rpm -qf 的功能!
搜索:search string1 [string2] […]
以指定的關鍵字搜索程序包名及summary信息
查看指定包所依賴的capabilities:
deplist package1 [package2] […]
清理本地緩存:clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
root@www ~]# yum clean [packages|headers|all]
選項
packages:將已下載的軟件檔案刪除
headers :將下載的軟件文件頭刪除
all :將所有容器數據都刪除!
構建緩存:
makecache
其他一些選項
-
-y :當 yum 要等待用戶輸入時,這個選項可以自動提供 yes 的響應;
-
–nogpgcheck:禁止進行gpg check
-
-q:靜默模式
-
–disablerepo=repoidglob:臨時禁用此處指定的repo
-
–enablerepo=repoidglob:臨時啟用此處指定的repo
-
–noplugins:禁用所有插件
例如列出 yum 服務器上面提供的所有軟件名稱
[root@www ~]# yum list Installed Packages <==已安裝軟件 Deployment_Guide-en-US.noarch 5.2-9.el5.centos installed Deployment_Guide-zh-CN.noarch 5.2-9.el5.centos installed Deployment_Guide-zh-TW.noarch 5.2-9.el5.centos installed ....(中間省略).... Available Packages <==還可以安裝的其他軟件 Cluster_Administration-as-IN.noarch 5.2-1.el5.centos base Cluster_Administration-bn-IN.noarch 5.2-1.el5.centos base ....(底下省略).... # 上面提供的意丿為:『 軟件名稱 版本 在那個容器內 』
列出目前服務器上可供本機進行升級的軟件有哪些?
[root@www ~]# yum list updates <==一定要是 updates ! Updated Packages Deployment_Guide-en-US.noarch 5.2-11.el5.centos base Deployment_Guide-zh-CN.noarch 5.2-11.el5.centos base Deployment_Guide-zh-TW.noarch 5.2-11.el5.centos base # 上面就列出在那個容器內可以提供升級的軟件不版本!
列出提供 passwd 這個檔案的軟件有哪些
[root@www ~]# yum provides passwd passwd.i386 : The passwd utility for setting/changing passwords using PAM passwd.i386 : The passwd utility for setting/changing passwords using PAM # 就是上面的這個軟件提供了 passwd 這個程序!
刪除已下載過的所有容器的相關數據 (含軟件本身與列表)
[root@www ~]# yum clean all
如何使用光盤當作本地yum倉庫:
(1) 掛載光盤至某目錄,例如/media/cdrom
# mount /dev/cdrom /media/cdrom(2) 創建配置文件
[CentOS7]
name=
baseurl=
gpgcheck=
enabled=
高級yum使用
包組管理的相關命令:
語法 :[root@www ~]# yum [群組功能] [軟件群組]
選項:
-
grouplist :列出所有可使用的『套件組』,例如 Development Tools 之類的;
-
groupinfo :后面接 group_name,則可了解該 group 內含有的所有套件名;
-
groupinstall:這個好用!可以安裝一整組的套件群組!
-
groupremove :移除某個套件群組;
例:查閱目前容器不本機上面的可用與安裝過的軟件群組有哪些? [root@www ~]# yum grouplist Installed Groups: Office/Productivity Editors System Tools ....(中間省略).... Available Groups: Tomboy Cluster Storage Engineering and Scientific
查看yum事務歷史:
-
history [info|list|packages-list|packages-info|
-
summary|addon-info|redo|undo|
-
rollback|new|sync|stats]
-
yum history
-
yum history info 6
-
yum history undo 6
安裝及升級本地程序包:
localinstall rpmfile1 [rpmfile2] […]
(用install替代)
localupdate rpmfile1 [rpmfile2] […]
(用update替代)
yum 的 repo 配置文件中可用的變量
$releasever : 當前OS的發型版的主版本號 $arch : 平臺(x86_64 i386) $basearch :基礎平臺 內置自定義變量 $YUM0--YUM9 從網上ftp下載時 lftp 網址 在這里面!mkdir --- !表示用shell內部的命令 lcd 表示用本地shell的cd命令 mget 文件名 表示下載該文件
yum倉庫
yum的repo配置文件中可用的變量:
$releasever: 當前OS的發行版的主版本號
$arch: 平臺,i386,i486,i586,x86_64等
$basearch:基礎平臺;i386
$YUM0-$YUM9:自定義變量
實例:
http://server/centos/$releasever/$basearch/
http://server/centos/7/x86_64
http://server/centos/6/i384
創建yum倉庫:
createrepo [options] 要創建的倉庫的目錄所在位置
1 、 把要用的軟件包下載到本地 , 自建一個目錄
2 、 用 createrepo 后面加上這個目錄名,就可以得出生成的軟件的元數據。
3 、 把此目錄設置成軟件baseurl 的地址。
4 、 設置好了以后用 yum repolist 或者 yum makecache
生成一下列表就可以使用了!
程序包編譯
程序包編譯安裝:
Application-VERSION-release.src.rpm –> 安裝后,使用rpmbuild命令制作成二進制格式的rpm包,而后再安裝
src————》這種得就表示是源碼包!
-
源代碼–>預處理–>編譯(gcc)–>匯編–>鏈接–>執行
-
源代碼組織格式:
多文件:文件中的代碼之間,很可能存在跨文件依賴關系
C、C++:make (項目管理器,configure –> Makefile.in –> makefile)
java: maven
makefile.in文件就是一個makefile的模板
configure腳本用處就是允許用戶傳遞參數用來自定義安裝位置等信息,編譯參數,啟用特性,安裝位置!
此腳本運行能結合 Makefile.in 文件,用來生成makefile
編譯安裝
C代碼編譯安裝三步驟:
-
1、./configure:
-
(1) 通過選項傳遞參數,指定啟用特性、安裝路徑等;執行時會參考用戶的指定以及makefile.in文件生成makefile
-
(2) 檢查依賴到的外部環境
-
2、make:依賴于makefile文件,構建應用程序,它只是一個項目管理工具,
-
3、make install:復制文件到相應路徑
注意:make自己不是編譯器,它是調用類似 gcc 編譯器來完成功能的
開發工具:
有可能configure腳本不會給你下面的命令就是解決這個問題的
autoconf: 生成configure腳本
automake:生成Makefile.in
注意:安裝前查看INSTALL,README
開源程序源代碼的獲取:
官方自建站點:
apache.org (ASF)
mariadb.org
…
代碼托管:
SourceForge.net
Github.com
code.google.com
c/c++編譯器: gcc (GNU C Complier)
編譯C源代碼
前提:
-
提供開發工具及開發環境
-
開發工具:make, gcc等
-
開發環境:開發庫,頭文件
-
glibc:標準庫
通過“包組”提供開發組件
CentOS 6: "Development Tools"
Centos 7: "Server Platform Development"
編譯安裝
第一步:configure腳本
選項:指定安裝位置、指定啟用的特性
–help: 獲取其支持使用的選項
選項分類:
安裝路徑設定:
–prefix=/PATH: 指定默認安裝位置,默認為/usr/local/
–sysconfdir=/PATH:配置文件安裝位置
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]
兩個問題:
1、把rpm軟件、內核不小心刪除怎么恢復
[root@qzx ~]# rpm -e kernel --nodeps grubby fatal error: unable to find a suitable template grubby: doing this would leave no kernel entries. Not writing out new config. warning: erase unlink of /lib/modules/2.6.32-642.el6.x86_64/weak-updates failed: No such file or directory warning: erase unlink of /lib/modules/2.6.32-642.el6.x86_64/modules.order failed: No such file or directory [root@qzx yum.repos.d]# rpm -e rpm --nodeps [root@qzx yum.repos.d]# yum list
進光盤救援模式恢復
以下是CentOs 6演示
開機就快按 esc 進入上圖模式
進入修復模式
回車下一步,語言鍵盤默認就好
這個是設置網絡,不用設置,no
繼續
直接下一步
默認,就選第一個打開一個shell
在此中用rpm把刪的文件重新裝回原來系統即可,這一步centos6&7都通用,7就是前面不太相同
尋找故障模式
進入修復模式
輸入 1 繼續
這句話就是要打開一個shell 回車就行
后邊的和centos6就一樣了
2、編譯安裝apache服務
1、先從網上下載要安裝的程序包
httpd-2.2.29.tar.bz2
2、解壓文件
tar xvf httpd-2.2.29.tar.bz2
3、查看INSTALL文件
cd 到 httpd-2.2.29 文件中
cat INSTALL 文件
可以看到
For complete installation documentation, see [ht]docs/manual/install.html or http://httpd.apache.org/docs/2.2/install.html $ ./configure --prefix=PREFIX $ make $ make install $ PREFIX/bin/apachectl start
對于此中提到的 configure 文件的選項可以用 configure –help來查看
Fine tuning of the installation directories:---指定安裝路徑的
4、指明安裝路徑./configure –prefix=PREFIX
我這里寫的是 /testdir/Apache
5、make(make后可以用 du -sh 查看 會發現變大了許多)
6、make install
安裝完成就可以看到生成的文件了
[root@qzx httpd-2.2.29]# cd /testdir/Apache/ [root@qzx Apache]# ls bin build cgi-bin conf error htdocs icons include lib logs man manual modules
7、開啟
到bin目錄下 有一個 apachectl 文件,此文件就控制著apache的工作
[root@qzx bin]# ./apachectl start httpd: apr_sockaddr_info_get() failed for qzx.centos6.8 httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
用 netstat -tan 查看 :80 端口是否開啟
如果開啟就表示服務已經運行。
或者 links 10.1.253.75
如果不成功表示有可能防火墻沒關
telnet 10.1.253.75 80
ping這個端口
不能連上表示可能防火墻沒關
關閉防火墻命令
iptables -F
8、安裝后補充
-
(1)、導出二進制程序目錄至環境變量 PATH中;
-
export PATH=/testdir/Apache/bin:$PATH
-
編輯配置文件 /etc/profile.d/apache.sh(創建程序名.sh)
-
(2)、由于不是默認安裝,所以要導出庫路徑
-
ldconfig [-v]
-
添加新的庫文件所在目錄至此文件中 即在文件中寫 /testdir/Apache/lib
-
編輯 /etc/ld.so.conf.d/apache.conf
-
讓系統重新生成緩存:
-
(3)、導出頭文件(創建連接)
-
ln -sv /testdir/Apache/include /usr/include/apach
-
由于默認是include 文件下,而安裝后是安裝在當前路徑下所以要導出到 /usr/include下
-
(4)、導出幫助手冊
-
添加即可
-
編輯/etc/man.config文件
# MANPATH /testdir/Apache/man
原創文章,作者:qzx,如若轉載,請注明出處:http://www.www58058.com/39971
內容整體很完整,有理論有操作,突顯用心;整篇博客還是能讓人看到很多專業性所在,還能看出很用心的地方,革命尚未成功,同志仍需努力啊,加油!