午夜精品人妻久久久-成年美女很黄的网站-在线看片免费人成视久网app-国产精品美女无遮挡一区二区-91精品国产综合久久久久-国产的免费视频又猛又爽又刺激-在线看片免费人成视久网app-久久香蕉国产精品视频-av一区二区三区高清

linux基礎20課07,軟件包的安裝與管理 曉桂科技

軟件包的安裝與管理
一. rpm包
有哪幾種軟件包?
.rpm .deb(,等操作系統(tǒng)使用的軟件包)
.src.rpm
源碼包(一般都是壓縮的,tar.gz,tar.bz2,tgz)
源碼包--> .src.rpm --> .rpm
包名-發(fā)布版本-支持平臺.包類型后綴
yum-3.2.22-20.el5..rpm
yum—1.1.2-16.el6..rpm
xsane-0.991-5.el5.i386.rpm –上面這三個都是rpm包
nginx-0.8.4.tar.gz –這種包需要解壓,一般是源碼包
cacti-0.8.7b-1.fc8.src.rpm –源rpm包
i386 支持386平臺,386都是支持后在的586,686的平臺,但是反過來686不一定支持386,因為包它有對平臺做優(yōu)化,那386就不一定支持
支持任意平臺
64位平臺
.rpm 紅帽包管理
一般開發(fā)都開發(fā)出來的軟件發(fā)布為源碼包,因為源碼包的安裝比較麻煩 。公司自己發(fā)明了rpm包的格式,用一種很復雜方式去源碼包做成rpm包,這樣的話在的linux上安裝比較方便 。
其它的linux發(fā)行版也有其它的包格式,還有一種用得比較廣泛的包格式叫.deb(用于和等linux發(fā)行版)
32位的軟件是可以安裝到64位的
64位是不能安裝到32位平臺
# mkdir /yum
# mount /soft/rhel–6.3–dvd.iso /yum/ -o loop
rhel6下的iso鏡像里的目錄簡單介紹(不同版本會有少許差異)
–所有的軟件包全在此目錄(3654)
–這兩目錄跟系統(tǒng)啟動有關
里的軟件包分成五大類:
(32位和64位的軟件都有)
–高可用
–負載均衡
–存儲
–文件系統(tǒng)
–服務器
–這些目錄名其實就是軟件包的一個分類.目錄里存放的是不同分類軟件的信息(我們也叫軟件倉庫)
RPM-GPG-KEY– –這是所有的軟件包里gpg簽名名字
rpm包管理
# rpm -ivh zsh-4.3.10-5.el6..rpm
: zsh-4.3.10-5.el6..rpm:V3 RSA/ , key ID : NOKEY
… ########################################### [100%]
1:zsh ########################################### [100%]
–這是成功安裝
# rpm -ivh zsh-4.3.10-5.el6..rpm
: zsh-4.3.10-5.el6..rpm:V3 RSA/ , key ID : NOKEY
… ########################################### [100%]
zsh-4.3.10-5.el6. is
–這是已經(jīng)安裝過了
關于上面的警告信息 , 其實就是在說操作系統(tǒng)沒有這個軟件包相關的簽名信息;你用rpm命令來安裝,有沒有此警告無所謂 。但如果你用yum來安裝 , yum里一個參數(shù)為=0的話 , 則表示沒簽名沒問題,=1的話,則沒簽名就安裝不了 。
解決這問題:
# cd /yum/
# rpm — RPM-GPG-KEY–
依賴性的問題
# rpm -ivh scsi–utils-1.0.24-2.el6..rpm
error::
.so.1()(64bit) isby scsi–utils-1.0.24-2.el6.
.so.1(.0)(64bit) isby scsi–utils-1.0.24-2.el6.
.so.1(.1)(64bit) isby scsi–utils-1.0.24-2.el6.
.so.1()(64bit) isby scsi–utils-1.0.24-2.el6.
.so.1(.0)(64bit) isby scsi–utils-1.0.24-2.el6.
perl(::) isby scsi–utils-1.0.24-2.el6.
isby scsi–utils-1.0.24-2.el6.
–這些依賴性怎么解決,如果你安裝的是rhel的iso里的包,那么它的依賴包也一定在iso里(如果你是安裝一個第三方的包,那么依賴性就不能保證全在iso里)
解決的過程很艱辛,具體查找的過程就不寫了,下面這是安裝順序,并且最后一句比較特殊,它是A依賴B,B又同時依賴A,要兩個一起安裝的一個典型例子
例子:安裝rpm -ivh xfig-plain-3.2.5-23.a.el6..rpm這個軟件的過程
# rpm -ivh Xaw3d-1.5E-15.1.el6..rpm
# rpm -ivh xfig-3.2.5-23.a.el6..rpm xfig–3.2.5-23.a.el6..rpm
# rpm -ivh xfig-plain-3.2.5-23.a.el6..rpm
沖突
如果已經(jīng)安裝了A包的老版本,再安裝A包的新版本
報錯里有關鍵字的時候 , 就是沖突了,
解決方法:
方法一:一般來說要先干掉沖突的包,再安裝新包
方法二: rpm -ivh –force xxx.rpm來強制安裝
# rpm -ivh -libs-1.28-5.el6..rpm
file /usr/lib64/.so.2.0.0 fromof -libs-1.28-5.el6.with file from-libs-1.28-4.el6.
但是也有特殊情況,比如我已經(jīng)安裝了A包,然后安裝B包時,報兩個包的其中一個文件沖突 , 怎么解決?
方法一:把這個文件mv走,然后安裝
方法二: rpm -ivh –force xxxx.rpm 強制安裝,那么這個沖突的文件會被覆蓋
方法三: rpm -ivh — xxxx.rpm 這個的參數(shù)表示不安裝它的文檔文件(如果你沖突的文件是一個文檔的話 。如果不是文檔文件,則要用其它相關參數(shù)
rpm -ivh — 脫離依賴性 但是包不一定能用,因為你少了一些依賴包的功能
rpm -ivh –nomd5 不檢驗md5值
rpm -ivh — 不想啟用或者自動執(zhí)行某些命令
rpm -ivh — 某個文件已經(jīng)安裝在系統(tǒng)上linux查看當前系統(tǒng)負載信息,或者沖突,可以用此參數(shù)覆蓋 注意:此操作無法復原
rpm -ivh — 重新安裝某個已經(jīng)安裝過的包,比如說一個包你修改過,但不知道改在哪里 , 可以這樣重新安裝
rpm -ivh –force 相當是強制安裝,是–和–
rpm -ivh –test 測試是否能安裝到此linux系統(tǒng)中
rpm -qa –查看你系統(tǒng)上已經(jīng)安裝的rpm包(注意,只限于rpm包)
# rpm -qa |grep mysql
rpm -ql
# rpm -ql mysql-5.1.61-4.el6. –查看一個軟件包都安裝了哪些文件 , 從這里也可以了解到linux安裝軟件是把文件按功能分散到各個目錄,后面的包名不用寫全
# rpm -qpl mysql-5.1.61-4.el6..rpm –如果你一個軟件包還沒有安裝,但你要查看一下安裝會產(chǎn)生哪些文件分布,可以加個p參數(shù),但后面的包名要寫全
rpm -qi mysql-5.1.61-4.el6. –查看軟件包有關信息和說明
# rpm -qf `which mount` –查看一個文件屬于哪個軟件包,rpm源碼包查不到
util-linux-ng-2.17.2-12.7.el6.
# rpm -qc–查配置文件
# rpm -e mysql-5.1.61-4.el6. –刪除一個rpm包的安裝,但是刪除也有依賴性.erase
問題:使用 &后打開失敗,報錯為 not found,如何解決?
思路:
1,報命令找不到,一般馬上會想到是軟件包沒安裝,去安裝軟件
2,如果安裝時報 ,那說明,軟件已經(jīng)安裝,但可能少了命令文件和其它一些文件
3 , 最好的解決方法 rpm -ivh -10.0.5-1.el6_2..rpm –force
二. src.rpm包
xxx.src.rpm
這種包是需要重編譯
rpm 源碼包,根據(jù)你的硬件情況編譯成適合你的系統(tǒng)的rpm安裝包
# rpm -qpi acl-2.2.49-6.el6..rpm
……
RPM: acl-2.2.49-6.el6.src.rpm –用rpm -qi查看任何rpm包都會有類似這樣的一句,表示它的src.rpm包的名字
……
你可以這樣來理解,rpm包由src.rpm包產(chǎn)生,src.rpm包由源碼包+.spec宏文件產(chǎn)生
源碼+spec --> src.rpm -- > rpm
你現(xiàn)在的iso里的rpm包對應的src.rpm包都可以到的ftp服務器上找到,路徑為
ftp:////linux///en/os/SRPMS
# ls /root/ –此目錄不存在
# rpm -ivh zlib-1.2.3-27.el6.src.rpm
# ls /root//
–這個目錄里就有zlib的源碼包
SPECS –這個目錄里的文件就是宏文件
編譯方法一:
#–ba zlib.spec –對宏文件編譯成rpm包(需要源碼的支持)
Wrote: /root//SRPMS/zlib-1.2.3-27.el6.src.rpm
Wrote: /root//RPMS//zlib-1.2.3-27.el6..rpm
Wrote: /root//RPMS//zlib-devel-1.2.3-27.el6..rpm
Wrote: /root//RPMS//zlib–1.2.3-27.el6..rpm
Wrote: /root//RPMS//-1.2.3-27.el6..rpm
Wrote: /root//RPMS//-devel-1.2.3-27.el6..rpm
Wrote: /root//RPMS//zlib–1.2.3-27.el6..rpm
–編譯完后,在倒數(shù)幾行那都有類似上面的信息 , 可以看到已經(jīng)編譯成了rpm包了
【linux基礎20課07,軟件包的安裝與管理 曉桂科技】編譯方法二:
#— zlib-1.2.3-27.el6.src.rpm –直接對src.rpm包編譯出rpm包,結果與上面方法一樣
兩種方法對較:
第二種就是不需要對宏文件進行修改 , 直接編就可以
第一種就是你可以按自己的需求對宏文件進行修改,再編
問題:
如果你要在你的linux上安裝一個第三方的軟件,你希望下載一個rpm包來安裝,如果你在網(wǎng)站沒有找到對應該你的操作系統(tǒng)版本的rpm包 , 你會怎么做?
你下載不對應你系統(tǒng)的版本的包來安裝很可能會產(chǎn)生問題,那么你可以有多種方法:
方法一:找src.rpm包,然后在你的操作系統(tǒng)上編出rpm包,那么這個rpm包肯定是適合你的系統(tǒng)平臺的
方法二:用源碼版
三. yum
簡單來說就是方便你安裝rpm軟件包,會自動幫你解決依賴性
在里使用和yum類似的軟件名為apt-get
配置yum你需要配置服務端(軟件倉庫)和客戶端(要安裝軟件的機器)
yum的配法分為本地和遠程,這里我們先只使用本機yum(也就是服務端和客戶端在同一臺機器)
軟件倉庫的配法 , 直接把iso掛載到一個目錄就OK了
# mkdir /yum –你可以隨意建立一個iso的掛載目錄,我這里為/yum/
# mount /soft/rhel–6.3–dvd.iso /yum/ -o loop
客戶端的本地yum配法
# vim /etc/yum.conf –主配置文件,但一般不用它
/etc/yum.repos.d/xxx.repo –這個目錄下只要以.repo結尾的文件就是子配置文件
# rm /etc/yum.repos.d/* -rf –默認有兩文件,沒用,刪掉
# vim /etc/yum.repos.d/.repo –新建一個以repo結尾的文件就可以
[] –軟件倉庫名,自定義
name= –標識名,自定義
=file:///yum/ –這一條最重要,它表示你的倉庫的地址 。本地倉庫的寫法file:/// 要接三個/
=1 –等于1表示打開倉庫 , 等于0表示不使用此倉庫
=0 –不驗證gpg簽名
上面這一段配置就包含了iso鏡像里的大部分軟件,完整的配置如下
[]
name=
=file:///yum/
=1
=0
[]
name=
=file:///yum/
=1
=0
[]
name=
=file:///yum//
=1
=0
[]
name=
=file:///yum//
=1
=0
[]
name=
=file:///yum/
=1
=0
保存后linux查看當前系統(tǒng)負載信息,使用yum clean all刷新配置(建議修改過yum的配置后就使用一次這個命令)
# yum clean all
# yum list –列出所有倉庫的軟件,能列出來表示你的配置無誤
# yum
# yummysql
# yummysql*
=========================================================================
Arch
Size
=========================================================================
:
mysql5.1.61-4.el6882 k
mysql-bench5.1.61-4.el6427 k
mysql–java1:5.1.17-6.el61.4 M
mysql–odbc5.1.-7.el6114 k
mysql-devel5.1.61-4.el6127 k
mysql-5.1.61-4.el68.6 M
mysql-test5.1.61-4.el65.2 M
for :
–apis0.1-1.el6163 k
axis1.2.1-7.2.el61.5 M
bcel5.2-7.2.el61.4 M
-jaf1.0-15.4.el6100 k
-mail1.1.1-9.4.el6479 k
-specs1.0-3.4.M2.el6110 k
-specs-1.0-3.4.M2.el66.9 k
—1:0.4-5.4.el673 k
—1:3.1-0.6.el6580 k
—1.0.4-10.el652 k
java-1.5.0-gcj1.5.0.0-29.1.el6146 k
1:0.10k-5.el6197 k
-utils1.7.5-3.12.el659 k
log4j1.2.14-6.4.el6679 k
mx4j1:3.0.1-9.13.el61.1 M
perl-DBD-MySQL4.013-3.el6134 k
perl-DBI1.609-4.el6707 k
perl-Time-HiRes4:1.9721-127.el647 k
1.5-4.4.el6105 k
0.5-9.1.el6705 k
slf4j1.5.8-7.el6132 k
2.2.14-11.el6378 k
1.5.2-7.8.el6157 k
xml–apis1.3.04-3.6.el6439 k
xml–1.1-4.18.el6145 k
=========================================================================
32 (s)
Totalsize: 26 M
size: 165 M
Is this ok [y/N]: –OK的話就輸入y回車確認,就開始自動安裝了
如果你yumxxx -y 或者yumxxx -y
yum或者 yum erase來刪除rpm軟件包
yummysql* –要刪除的包數(shù)和yummysql*不一定一樣的
例:下面我用yummysql*時刪除了如下這么多個軟件(不同情況測試是會不一樣的) 。
:
. 0:1.2.1-2.el6 . 0:1.4.4-7.el6
-. 0:1.4.4-7.el6 . 0:1.10-33.el6
. 0:4.3.3-2.el6 . 1:4.3.4-5.el6
-libs. 1:4.3.4-5.el6 . 7:4.3.4-5.el6
-. 0:4.3.4-7.el6 . 6:4.3.4-5.el6
-libs. 6:4.3.4-5.el6 -. 0:4.3.4-9.el6
–libs. 0:4.3.4-9.el6 -. 0:4.3.4-23.el6
–libs. 0:4.3.4-23.el6 . 6:4.3.4-5.el6
-libs. 6:4.3.4-5.el6 . 7:4.3.4-6.el6
-libs. 7:4.3.4-6.el6 . 6:4.3.4-14.el6
-. 0:4.3.4-3.el6 . 6:4.3.4-3.el6
-libs. 6:4.3.4-3.el6 . 7:4.3.4-11.el6_0.1
-libs. 7:4.3.4-11.el6_0.1 . 6:4.3.4-5.el6
-libs. 6:4.3.4-5.el6 -. 0:4.3.4-5.el6
–libs. 0:4.3.4-5.el6 . 0:4.3.4-4.el6
-. 0:4.3.4-4.el6 -. 0:4.3.4-5.el6
–libs. 0:4.3.4-5.el6 . 6:4.3.4-7.el6
-libs. 6:4.3.4-7.el6 kdm. 0:4.3.4-23.el6
. 0:4.3.3-1.el6 . 0:-1.el6
kipi-. 0:0.8.0-5.el6 kipi–libs. 0:0.8.0-5.el6
kmid. 0:2.0-0.14..el6 konq-. 0:4.3.3-5.el6
ksig. 0:1.1-0.10..el6 . 0:0.5.1-4.1.el6
perl-DBD-MySQL. 0:4.013-3.el6 . 2:2.6.6-2.2.el6_1
qt-mysql. 1:4.6.2-24.el6 -lsb. 0:4.0-3.el6
. 0:1.0.7-11.el6 . 0:2.3.1-1.2.el6
. 0:9.0.4-20.el6
!
問題是我再次yummysql*安裝時只安裝9個,那么另外50個軟件包要不要再裝回來呢?
=============================================================================================================================
ArchSize
=============================================================================================================================
:
mysql5.1.61-4.el6882 k
mysql-bench5.1.61-4.el6427 k
mysql–java1:5.1.17-6.el61.4 M
mysql–odbc5.1.-7.el6114 k
mysql-devel5.1.61-4.el6127 k
mysql-libs5.1.61-4.el61.2 M
mysql-5.1.61-4.el68.6 M
mysql-test5.1.61-4.el65.2 M
for :
perl-DBD-MySQL4.013-3.el6134 k
=============================================================================================================================
9 (s)
Totalsize: 18 M
size: 136 M
Is this ok [y/N]:
答案:如果你不能確認這些包是否需要,請最好裝回去.
# cat /var/log/yum.log |grep “Aug 20″|grep|awk ‘{print $5}’ |xargs yum-y
-----------------------------------
對應的組的用法
yum
yum組名
yum“組名1 組名2”
yum組名
-------------------------------------
使用yum時你可能會出現(xiàn)的幾個問題:
1,有如下錯誤
file:///yun//.xml: [Errno 14] Could not open/read file:///yun//.xml
–這就表示這個路徑找不到軟件倉庫,檢查你的路徑是否正確,改正過來就可以
2,由上面引出的問題 , 它什么會報找不到xxx//.xml呢?
yum的路徑不是寫軟件包的路徑,而是寫的路徑(你可以把.xml文件想象成是這個倉庫里的物品清單)
3,比如你當前的目錄下有一個文件叫,那么你在當前目錄下使用yumperl*會現(xiàn)問題
# yumperl*
: -id, -, , –
:
-based .
to read
up
No.
Error:to do
解決方法;換個目錄執(zhí)行yumperl*就可以了
4,如果你安裝時出現(xiàn)類似下面的錯誤
# yum
: :V3 RSA/ , key ID : NOKEY
key for -2.2.2-11.el6..rpm is not
解決方法:
1 , rpm — RPM-GPG-KEY–
2,把yum配置文件里=0 把1改為0
5 , 下面的錯誤表示當前yum正在被其它進程使用 。解決方法:查看是否有其它終端或進程在使用yum
yum不能雙開 。
app isthe yum lock;for it to exit…
The otheris: yum
: 61 M RSS (360 MB VSZ)
: Wed Aug 20 15:06:42 2014 – 10:18 ago
State : , pid: 14824
=0
[]
name=
=file:///yum/
=1
=0
可以使用yum來安裝第三方軟件 , 它會在軟件倉庫里解決依賴
# yum/root/-8.1.7-1.i486.rpm –yum解決依賴
# rpm -ivh /root/-8.1.7-1.i486.rpm –自己解決依賴
6. 掛載/yum目錄
要保持/yum一直是掛載的
# vim /etc/rc.local
mount -o loop /share/iso/rhel–6.3–dvd.iso /yum/ –可以開機自動掛載
——————————————————————
如何手動自己做一個軟件倉庫
1,mkdir // –創(chuàng)建一個目錄,存放第三方的這些rpm包(最好保證所有的依賴包都放在這里)
2,cp xxx.rpm // –把所有這些第三方包拷貝到此目錄
3,# yum–安裝這個軟件,就會有命令
#// –此命令會自動掃描你這個目錄里所有的rpm包,并產(chǎn)生對應的/.xml文件
4,在/etc/yum.repos.d/.repo文件里再加上一段
[]
name=
=file:////
=1
=0
四. 源碼包
rpm包:優(yōu)點有安裝方便 , 速度快;缺點有功能被定死
源碼包:優(yōu)點有功能可以自定義;缺點有安裝麻煩,要求安裝人員技術水平較高
–這個網(wǎng)站是一個源碼的發(fā)布平臺
# wget
# wget
fuse-2.7.1.tar.gz — filein user space,就是一個文件系統(tǒng)的掛載模塊
ntfs–2014.2.15.tgz –讓linux支持ntfs格式掛載的一個軟件包
問題:
linux支持ntfs嗎?
linux內核是支持的,只不過rhel內核沒有加上這個功能,因為rhel沒有必要去支持ntfs這種文件系統(tǒng),實際環(huán)境里面也不可能有這種需求 。但學習環(huán)境還是可能用到 , 因為有人要用ntfs格式的移動硬盤與linux拷數(shù)據(jù)
解決方法:
第一:編譯內核
第二:找第三方軟件 , 安裝上來支持
一般安裝一個源碼的步驟
1,最好先看或文件找到它的安裝說明
2,./ –這個命令后可接各種不同的參數(shù),這些參數(shù)就代表了你要加哪些功能 。今天不討論其它參數(shù),只討論一個 –=/path ,指定安裝路徑
3,make –這個命令的執(zhí)行時間比較長(以軟件大小而異),它就相當于是按照你定義好參數(shù)的把這個軟件做出來
4,make–是把做好的軟件安裝到你指定的目錄(這個指定參數(shù)也是在./里可以去改的)
tar xf fuse-2.7.1.tar.gz -C /usr/src/ –這條命令是把這個源碼包解壓到/usr/src
# cd /usr/src/fuse-2.7.1/
# ./
# make
# make
#fuse –把安裝好的模塊加載 在rhel6.3下測試的是自帶了fuse模塊,也就是說你可以不用裝這個軟件,直接去裝下面的軟件就可以支持ntfs了
# tar xf /soft/ntfs–2014.2.15.tgz -C /usr/src/
# cd /usr/src/ntfs–2014.2.15/
# ./
# make
# make
# which mount.ntfs-3g –安裝完后,有此命令就表示成功了
/sbin/mount.ntfs-3g
用此命令去掛載ntfs文件系統(tǒng)的用法
# mount.ntfs-3g /dev/sdxx /mnt
對的討論
在fuse源碼里的文件里有這么一句
You may also need to add ‘/usr/local/lib’ to ‘/etc/ld.so.conf’ and/or
run .
先理解什么是庫文件
# ldd /bin/ls –庫可以理解成運行程序需要的功能(類似里的.dll文件),此命令就是查看ls命令需要使用哪些庫,這些庫缺一不可
linux-vdso.so.1 => ()
.so.1 => /lib64/.so.1 ()
librt.so.1 => /lib64/librt.so.1 ()
.so.2 => /lib64/.so.2 ()
.so.1 => /lib64/.so.1 ()
libc.so.6 => /lib64/libc.so.6 ()
libdl.so.2 => /lib64/libdl.so.2 ()
/lib64/ld-linux-x86-64.so.2 ()
.so.0 => /lib64/.so.0 ()
.so.1 => /lib64/.so.1 ()
我安裝fuse這個軟件,它的庫文件默認會安裝到 $/lib,所以它會安裝到/usr/local/lib.
但如果另一個軟件要用到fuse相關的庫 , 那么它能否找到/usr/local/lib下的庫文件呢?
默認系統(tǒng)只會找/lib/,/lib64/,/usr/lib/,/usr/lib64這幾個目錄,所以/usr/local/lib你可以加到里,讓別人要使用你的庫的時候能夠找到你的位置
# vim /etc/ld.so.conf.d/fuse.conf –在此子目錄里建立一個自定義的名,只要以.conf結尾就可以,加上你的庫的目錄路徑
/usr/local/lib
#–保存后 , 使用此命令讓它生效
源版包的刪除,直接rm -rf 刪除它所有的相關文件就行了
本文到此結束 , 希望對大家有所幫助 。