Linux程序包管理
API:Application Programming Interface
POSIX:Portable OS
程序源代碼-->預處理-->編譯-->彙編
靜態編譯:
共享編譯:.so
ABI:Application Binary Interface
Windows與linux不兼容
庫級別的虛擬化:
liunx:WINE
Windows:Cywin
靜態和動態鏈接
鏈接主要作用是把各個模塊之間相互引用的部分處理好,使得各個模塊之間能
夠正確地銜接,分爲靜態鏈接和動態鏈接
靜態鏈接
把程序對應的依賴庫複製一份到包
libxxx.a
嵌入程序包
升級難,需重新編譯
佔用較多空間,遷移容易
動態鏈接
只把依賴加做一個動態鏈接
libxxx.so
連接指向
佔用較少空間,升級方便
系統級開發:
C
C++
應用級開發:
java
Python
php
二進制應用程序包的組成部分:
二進制文件、庫文件、配置文件、幫助文件
程序包管理器:
debian:deb,dpt,dpkg包管理器
redhat:rpm,rpm
rpm:Redhat Package Manager
RPM is Package Manager
Gentoo
Archlinux
file命令:查看文件類型
開放源碼:就是程序代碼,寫給人類看的程序語言,但機器並不認識,所以無法執行;
編譯程序:將程序代碼轉譯爲機器看得懂的語言,就類似翻譯者的角色;
可執行文件:經過編譯程序變成二進制程序後,機器看的懂所以可以執行的文件;
函式庫:就類似子程序的角色,可以被呼叫來執行的一段功能函數;
安裝gcc等軟件開發工具:
yum groupinstall 'Development Tools'
編譯安裝步驟:
解壓:tar
./configure
make clean 非必要步驟
make
make install 安裝到預定的目錄中
ldconfig -p:列出目前有的所有函式庫資料內容(在/etc/ld.so.cache內的資料!)
ldconfig [-f conf] [-C cache]
/etc/ld.so.conf
/etc/ld.co.cache
ldd:判斷某個可執行的binary文件還有什麼動態函式庫
ldd [-vdr] [filename]
-v:列出所有內容信息;
-d:重新將資料有遺失的link點繡出來;
-r:將ELF有關的錯誤內容繡出來;
md5sum/sha1sum/sha256sum [-bct] filename
md5sum/sha1sum/sha256sum [--status|--warn] --check filename
-b:使用binary的讀檔方式,默認爲Windows/DOS文件型態的讀取方式;
-c:校驗文件指紋;
-t:以文字型態來讀取文件指紋;
包命名
源代碼:name-VERSION.tar.gz
VERSION:major.minor.release
rpm包命名方式:
name-VERSION-release.ARCH.rpm
VERSION:major.minor.release
ARCH:release.os.arch
release.arch:
release:release.OS
常見的arch:
x86:i386,i486,i586,i686
x86_64:x64,x86_64,amd64
powerpc:ppc
跟平臺無關:noarch
包工具
testapp:分類和拆包
testapp-VERSION-ARCH.rpm:主包
testapp-devel-VERSION-ARCH.rpm:開發子包
Application-utils-VERSION-ARHC.rpm 其它子包
Application-libs-VERSION-ARHC.rpm 其它子包
包之間:可能存在依賴關係,甚至循環依賴
X,Y,Z
解決依賴包管理工具:
yum:rpm包管理器的前端工具;
apt-get:deb包管理器前端工具;
zypper:suse上的rpm前端管理工具;
dnf:Fedora 22+ rpm包管理器前端管理工具;
庫文件
查看二進制程序所依賴的庫文件:
ldd /path/to/BINARY_FILE
管理及查看本機已經轉載的庫文件:
ldconfig:
-p:顯示本機已經緩存的所有可用庫文件及文件路徑映射關係;
配置文件爲:/etc/ld.so.conf /etc/ld.so.conf.d/*.conf
緩存文件:/etc/ld.so.cache
映射關係
配置文件:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf
緩存文件:/etc/ld.so.cache
程序包管理:
功能:將編譯好的應用程序的各組文件打包一個或幾個程序包文件,從而方便快捷地實現程序包的安裝、卸載、查詢、升級和校驗等管理操作;
1、程序包文件的組成清單(每個包獨有)
RPM包內的文件清單
RPM的元數據,如名稱,版本,依賴性,描述等
安裝或卸載時運行的腳本
2、數據庫(公共)
程序包名稱及版本
依賴關係
功能說明
安裝生成的各文件的文件路徑及校驗碼信息
管理程序包的方式:
使用包管理器:rpm
使用前端工具:yum,dnf
獲取程序包的途徑:
1、系統發版的光盤或官方的服務器:
CentOS鏡像:
https://opsx.alibaba.com/mirror
http://mirrors.aliyun.com
http://mirrors.163.com/
http://mirrors.sohu.com/
2、項目官方站點
3、第三方組織:
Fedora-EPEL
Extra Packages for Enterprise Linux
Rpmforge:RHEL推薦,包很全
搜索引擎:
http://pkgs.org
http://rpmfind.net
http://rpm.pbone.net
https://sourceforge.net/
4、自己製作
建議:第三方包建議要檢查其合法性,來源合法性,程序包的完整性
CentOS系統上rpm命令管理程序包:
安裝、卸載、升級、查詢、校驗、數據庫維護
安裝:
rpm {-i|--install} [install-options] PACKAGE_FILE ...
rpm -ivh package_name
-i:install的意思
-v:verbose,查看更詳細的安裝信息畫面
-vv:更詳細的安裝信息
-h:以#顯示程序包管理執行進度:每個#表示2%的進度,以安裝信息列顯示安裝進度
rpm -ivh PACKAGE_FILE ...
[install-options]
--test:測試安裝,但不真正執行安裝過程;dry run模式;
強制安裝時的參數:
--nodeps:忽略依賴關係;
--replacepkgs:重新安裝;重新安裝某個已經安裝過的軟件!可使用這個選項來重複安裝!
--replacefiles:如果在安裝的過程當中出現了[某個文件已經被安裝在你的系統上面]的信息,
又或許出現版本不合的訊息(confilcting files)時,可以使用這個參數來直接覆蓋文件。
--nosignatue:不檢查來源合法性;
--nodigest:不檢查包完整性
--noscripts:不執行程序包腳本片段;
%pre:安裝前腳本; --nopre
%post:安裝後腳本; --nopost
%preun:卸載前腳本 --nopreun
%postun:卸載後腳本 --nopostun
升級:
-Uvh:如果沒有安裝過,系統將予以直接安裝;如果有安裝過舊版軟件,則系統自動更新至新版;
-Fvh:只有安裝在linux系統內的軟件纔會被升級;
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:強制升級;這個參數其實就是 --replacefiles 與 --replacepkgs的綜合體;
注意: 1、不要對內核做升級操作:linux支持多內核版本並存,因此,直接安裝新版本內核;
2、如果原程序包的配置文件安裝後曾被修改,升級時,新版本的提供的同一配置文件並不會直接覆蓋老版本的配置文件,
而把新版本的文件重命名(FILENAME,rpmnew)後保留;
查詢:
rpm {-q|--query} [select-options] [query-options]
rpm -qa
rpm -q[lcdR] 已安裝的軟件名稱
rpm -qf 存在於系統上面的某個文件名
rpm -qp[licdR] 未安裝的某個文件名
-q:僅查詢,後面接的軟件名稱是否有安裝;
-qa:列出所有的,已經安裝在本機Linux系統上面的所有軟件名稱;
-qi:列出該軟件的詳細信息(information),包含開發商、版本與說明等;
-ql:列出該軟件所有的文件與目錄所在完整文件名(list);
-qc:列出該軟件的所有配置文件(找出在/etc/底下的檔名而已);
-qd:列出該軟件的所有說明文件(找出與man有關的文件而已);
-qR:列出與該軟件有關的相依軟件所含的文件(Required的意思);
-qf:由後面接的文件名,找出該文件屬於哪一個已安裝的軟件;
-q --scripts:列出是否含有安裝後需要執行的腳本檔,可用以debug喔!
查詢某個RPM文件內含有的信息:
-qp[icdlR]:注意-qp後面接的所有參數以上面的說明一致。但用途僅在於找出某個RPM文件內的信息,而非已安裝的軟件信息!注意!
[select-options]:
-a:所有包
-f:查詢指定的文件由那個程序包安裝生成
-p /PARH/TO/PACKAGE_FILE:針對尚未安裝的程序包文件做查詢操作;
--whatprovides CAPABILITY:查詢指定的CAPABILITY由那個包所提供;
--whatrequires CAPABILITY:查詢指定的CAPABILITY由那個包所依賴;
rpm2cpio 包文件|cpio –itv 預覽包內文件
rpm2cpio 包文件|cpio –id “*.conf” 釋放包內文件
[query-options]:
--changelog:查詢rpm包的changelog;
-c:查詢程序包的配置文件;
-d:查詢程序的文檔;
-i:information;
-l:查看指定的程序包安裝後生成的所有文件;
--scripts:程序包自帶的腳本片段;
-R:查詢指定的程序包所依賴的CAPABILITY;
--provides:列出指定程序包所提供的CAPABILITY;
用法:
-qi PACKAGE,-qf FILE,-qc PACKAGE,-ql PACKAGE,-qd PACKAGE
-qpi PACKAGE_FILE,-qpl PACKAGE_FILE,...
-qa
卸載:rpm -e:移除,注意移除的依賴問題
rpm {-e|--erase} [--allmatches] [--justdb] [--nodeps] [--noscripts]
[--notriggers] [--test] PACKAGE_NAME ...
當包卸載時,對應的配置文件不會刪除, 以FILENAME.rpmsave形式保留
校驗:
rpm {-V|--verify} [select-options] [verify-options]
S file Size differs
M Mode differs (includes permissions and file type)
5 digest (formerly MD5 sum) differs
D Device major/minor number mismatch
L readLink(2) path mismatch
U User ownership differs
G Group ownership differs
T mTime differs
P caPabilities differ
包來源合法性驗證及完整性驗證:
完整性檢查:SHA256
來源合法性驗證:RSA
公鑰加密:
對稱加密:加密、解密使用同意密鑰
非對稱加密:密鑰是成對兒的,
public key:公鑰,公開
secret key:私鑰,不公開
導入所需要公鑰:
rpm --import /PATH/FROM/GPG-PUBKEY-FILE
Centos 7發行版光盤提供的密鑰文件:RPM-GPG-KEY-CentOS-7
rpm -K|checksig rpmfile 檢查包的完整性和簽名
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
CentOS 7發行版光盤提供:RPM-GPG-KEY-CentOS-7
rpm -qa “gpg-pubkey*”
數據庫重建:
/var/lib/rpm/:目錄,RPM文件被安裝到系統上,該軟件的信息就會被寫入/var/lib/rpm/目錄下的數據庫文件中了
rpm {--initdb|--rebuilddb}
initdb:初始化
如果事先不存在數據庫,則新建之;否則,不執行任何操作;
rebuilddb:重建數據庫,重建已安裝的包頭的數據庫索引目錄(/var/lib/rpm/內的文件破損)
無論當前存在與否,直接重新創建數據庫;
下面大括號的部分暫時未找到相關資料,建議暫時不要關注這部分內容
{
--prefix 新路徑:
驗證與數字簽名(Verify/signature)
rpm -Va
rpm -V 已安裝的軟件名稱
rpm -Vp 某個RPM文件的檔名
rpm -Vf 在系統上面的某個文件
選項與參數:
-V:後面加的是軟件名稱,若該軟件所含的文件被更動過,纔會列出來;
-Va:列出目前系統上面所有可能被更動過的文件;
-Vp:後面加的是文件名,列出該軟件內可能被更動過的文件;
-Vf:列出某個文件是否被更動過;
}
CentOS:yum,dnf
YUM:yellow dog,yellowdog update modifier
rpm的前端程序,可解決軟件包相關依賴性,可在多個庫之間定位軟件包,up2date的替代工具
yum repository:yum repo
存儲了衆多rpm包,以及包的相關的元數據文件(放置於特定目錄下:repodata):
文件服務器:
ftp://
http://
nfs://
file:///
yum客戶端:
配置文件:
/etc/yum.conf:爲所有倉庫提供公共配置
/etc/yum.repos.d/*.repo:爲倉庫的指向提供配置
列出目前yum server所使用的軟件庫:yum repolist all 顯示結果中最右邊有寫enabled纔是有激活的。
修改軟件庫產生的問題與解決之道
由於使用的軟件庫版本有新舊之分,yum會先下載軟件庫的清單到本機的/var/cache/yum裏面去!
注意:由於修改了網址卻沒有修改軟件庫名稱(中括號內的文字),可能機會造成本機的列表與yum服務器的列表不同步,此時就會出現無法更新的問題了!
此時,需要清除掉本機上面的舊數據即可!
yum clean [packages|headers|all]
packages:將已下載的軟件文件刪除
headers :將下載的軟件文件頭刪除
all :將所有軟件庫數據都刪除
倉庫的定義:
[repositoryid]
name=Some name for this repository
baseurl=url://path/to/repository/
enabled=[1|0]
gpgcheck=[1|0]
gpgkey=URL
enablegroups={1|0}
failovermethod={roundrobin|priority}
默認爲roundrobin即隨機挑選
priority:按順序訪問
cost=
開銷數字,默認爲1000
yum倉庫
yum的repo配置文件中可用的變量:
$releasever: 當前OS的發行版的主版本號
$arch: 平臺,i386,i486,i586,x86_64等
$basearch:基礎平臺;i386, x86_64
$YUM0-$YUM9:自定義變量
http://mirrors.magedu.com/centos/$releaserver/$basearch/os
示例:
http://server/centos/$releasever/$basearch/
http://server/centos/7/x86_64
http://server/centos/6/i386
yum源
阿里雲repo文件
http://mirrors.aliyun.com/repo/
CentOS系統的yum源
阿里雲:https://mirrors.aliyun.com/centos/$releasever/os/x86_64/
清華大學:https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/os/x86_64/
EPEL的yum源
阿里雲:https://mirrors.aliyun.com/epel/$releasever/x86_64
阿里巴巴開源軟件
https://opsx.alibaba.com/
yum-config-manager
生成172.16.0.1_cobbler_ks_mirror_CentOS-X-x86_64_.repo
yum-config-manager --add-repo= http://172.16.0.1/cobbler/ks_mirror/7/
yum-config-manager --disable “倉庫名" 禁用倉庫
yum-config-manager --enable “倉庫名” 啓用倉庫
yum命令的用法:
yum [options] [command] [package ...]
yum [option] [查詢工作項目] [相關參數]
* install package1 [package2] [...]
* update [package1] [package2] [...]
* update-to [package1] [package2] [...]
* update-minimal [package1] [package2] [...]
* check-update
* upgrade [package1] [package2] [...]
* upgrade-to [package1] [package2] [...]
* distribution-synchronization [package1] [package2] [...]
* remove | erase package1 [package2] [...]
* autoremove [package1] [...]
* list [...]
* info [...]
* provides | whatprovides feature1 [feature2] [...]
* clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
* makecache [fast]
* groups [...]
* search string1 [string2] [...]
* shell [filename]
* resolvedep dep1 [dep2] [...]
(maintained for legacy reasons only - use repoquery or yum provides)
* localinstall rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use install)
* localupdate rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use update)
* reinstall package1 [package2] [...]
* downgrade package1 [package2] [...]
* deplist package1 [package2] [...]
* repolist [all|enabled|disabled]
* repoinfo [all|enabled|disabled]
* repository-packages <enabled-repoid> <install|remove|remove-or-reinstall|remove-or-distribution-syn‐
chronization> [package2] [...]
* version [ all | installed | available | group-* | nogroups* | grouplist | groupinfo ]
* history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
* load-transaction [txfile]
* updateinfo [summary | list | info | remove-pkgs-ts | exclude-updates | exclude-all | check-running-ker‐
nel]
* fssnapshot [summary | list | have-space | create | delete]
* fs [filters | refilter | refilter-cleanup | du]
* check
* help [command]
顯示倉庫列表:
* repolist [all|enabled|disabled]
顯示程序包:列出目前yum所管理的所有的軟件名稱與版本,有點類似rpm -qa;
* list [...]
yum list [all | glob_exp1] [glob_exp2] [...]
yum list available [glob_exp1] [...]
yum list updates [glob_exp1] [...]
yum list installed [glob_exp1] [...]
安裝程序包:
* install package1 [package2] [...]
重新安裝程序包:
* reinstall package1 [package2] [...]
升級程序包:
* update [package1] [package2] [...]
若要整個系統都升級,就直接update即可
降級:
* downgrade package1 [package2] [...]
檢查可用升級:
* check-update
卸載程序包:移除功能
* remove | erase package1 [package2] [...]
查看程序包information 有點類似rpm -qai的執行結果;
* info [...]
查看指定的特性(可以使某文件)是由哪個程序包所提供:從文件去搜尋軟件!類似rpm -qf的功能;
* provides | whatprovides feature1 [feature2] [...]
清理本地緩存:
* clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
構建緩存:
* makecache [fast]
搜索:搜尋某個軟件名稱或者是描述(description)的重要關鍵字;
* search string1 [string2] [...]
以指定的關鍵字搜索程序包名及summary信息;
查看指定包所依賴的capabilities:
* deplist package1 [package2] [...]
查看yum事務歷史:
* history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
yum history undo 任務ID 撤銷ID對應的任務
yum history redo 任務ID 重做ID對應的任務
安裝及升級本地程序包:
* localinstall rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use install)
* localupdate rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use update)
包組管理的相關命令:
* groupinstall group1 [group2] [...]
* groupupdate group1 [group2] [...]
* grouplist [hidden] [groupwildcard] [...]
* groupremove group1 [group2] [...]
* groupinfo group1 [...]
如何使用光盤當做本地yum倉庫:
1、掛載光盤至某目錄,例如/media/cdrom
mount -r -t iso9660 /dev/cdrom /media/cdrom
2、創建設置文件
#注意[]中的名稱不能有空格,如果有空格,使用yum repolist時會提示Bad id
[CentOS7]
name=
baseurl=
gpgcheck=
enabled=
yum的命令行選項:
--nogpgcheck:禁止進行gpg check;
-y:自動回答爲“yes”;當yum要等待用戶輸入時,這個選項可以自動提供yes的響應;
-q:靜默模式;
--disablerepo=repoidglob:臨時禁用此處指定的repo;
--enablerepo=repoidglob:臨時啓用此處指定的repo;
--noplugins:禁用所有插件;
######## --installlroot=/some/path:將該軟件安裝在/some/path而不使用默認路徑
創建yum倉庫:
yum -y install createrepo
用法:
createrepo [options] <directory>
DNF:
DNF 介紹:新一代的RPM軟件包管理器。DNF 發行日期是2015年5月11日,DNF 包管理器採用Python 編寫,發行許可爲GPL v2,首先出現在Fedora 18 發行版中。在 RHEL 8.0 版本正式取代了 YUM,DNF包管理器克服了YUM包管理器的一些瓶頸,提升了包括用戶體驗,內存佔用,依賴分析,運行速度等
安裝所需軟件包,依賴epel源
wget http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/dnf-conf-0.6.4-2.sdl7.noarch.rpm
wget http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64//dnf-0.6.4-2.sdl7.noarch.rpm
wget http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/python-dnf-0.6.4-2.sdl7.noarch.rpm
yum install python-dnf-0.6.4-2.sdl7.noarch.rpm dnf-0.6.4-2.sdl7.noarch.rpm dnf-conf-0.6.4-2.sdl7.noarch.rpm
配置文件:/etc/dnf/dnf.conf
倉庫文件:/etc/yum.repos.d/ *.repo
日誌: /var/log/dnf.rpm.log
幫助:man dnf
dnf 用法:與yum一致
dnf [options] <command> [<arguments>...]
dnf --version
dnf repolist
dnf clean all
dnf makecache
dnf list installed
dnf list available
dnf search nano
dnf history
dnf history undo 1
程序包的編譯安裝:
testapp-VERSION-release.src.rpm --> 安裝後,使用rpmbuild命令製作成二進制格式的rpm包,而後再安裝;
源代碼——預處理——編譯(編譯器gcc)——彙編——鏈接——執行
源代碼組織格式:
多文件:文件中的代碼之間,很可能存在跨文件依賴關係;
C、C++:make 項目管理器
make(configure腳本 --> Makefile.in --> makefile)
java:maven
C語言源代碼編譯安裝三步驟:
./configure
a、通過選項傳遞參數,指定啓用特性、安裝路徑等;執行時會參考用戶的指定以及makefile.in文件生成makefile;
b、檢查依賴到的外部環境;
make
根據makefile文件,構建應用程序
make install
複製文件到相應路徑
開發工具:
autoconf:生成configure腳本;
automake:生成Makefile.in
建議:安裝前查看INSTALL,README
開源程序源代碼的獲取:
官方自建站點;
apache.org(ASF:Apache Software Foundation))
mariadb.org
代碼託管:
SourceForge
Github.com
code.google.com
c、c++編譯器:gcc(GNU C Complier)
編譯C源代碼:
前提:提供開發工具及開發環境
開發工具:make,gcc等
開發環境:開發庫,頭文件
glibc:標準庫
實現:通過“包組”提供開發組件
CentOS6:Development tools Server Platform Development
CentOS7:Development tools
生產實踐:(基於最小化安裝的系統)
yum install gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel zlib-devel vim lrzsz tree screen lsof tcpdump wget ntpdate net-tools iotop bc zip unzip nfs-utils
編譯安裝:
第一步:configure腳本
選項:指定安裝位置、指定啓用的特性
--help:獲取其支持的選項
選項分類:
安裝路徑設定:
--prefix=/path/to/somewhere:指定默認安裝位置:默認爲/usr/local
--sysconfdir=/path/to/somewhere:配置文件安裝位置;
System types:支持交叉編譯
Optional Features:可選特性
--disable-FEATURE
--enable-FEATURE[=ARG]
Optional Packages:可選包
--with-PACKAGE[=ARG] 依賴包
--without-PACKAGE 禁用依賴關係
注意:通常被編譯操作依賴的程序包,需要安裝此程序包的“開發”組件,其包名一般類似於name-devel-VERSION
第二步:make
第三步:make install
安裝後的配置:
a、導出二進制程序目錄至PATH環境變量中:
編輯/etc/profile.d/NAME.sh
export PATH=/PATH/TO/BIN:$PATH
b、導出庫文件路徑
編輯/etc/ld.so.conf.d/NAME.conf
添加新的庫文件所在目錄至此文件中;
讓系統重新生成緩存:
ldconfig [-v]
c、導出頭文件
基於鏈接的方式實現:
ln -sv
d、導出幫助手冊
編輯/etc/man.config文件
添加一個MANPATH
練習:
1、yum的配置和使用:保羅yum repository的創建;
2、編譯安裝apache2.4;啓動此服務;
博客作業:程序包管理:rpm、yum、編譯
yum實驗:
1、關閉selinux和firewalld
1.1、關閉selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
1.2、關閉firewalld
centos7:設置爲開機禁止啓動和關閉防火牆(重啓的話不需要關閉也可以)
systemctl disable firewalld
systemctl stop firewalld
centos6:設置爲開機禁止啓動和關閉防火牆iptables(重啓的話不需要關閉也可以)
chkconfig iptables off
service iptables stop
2、安裝httpd
yum -y install httpd
瀏覽器可以訪問即爲成功
網站默認的存放目錄爲:
/var/www/html
根據阿里雲等的源配置創建目錄:mkdir -pv /var/www/html/centos/{6,7}/os/x86_64/
3、掛載centos7和centos6的光盤
注意在虛擬機中設置6和7的鏡像後,如果無法識別,請執行以下命令
一般執行第一個中的host0即可,如果不行再執行host1,host2,執行完畢後,可以使用lsblk命令查看分區
echo '- - -' > /sys/class/scsi_host/host0/scan
echo '- - -' > /sys/class/scsi_host/host1/scan
echo '- - -' > /sys/class/scsi_host/host2/scan
光盤掛載
mount /dev/sr0 /var/www/html/centos/7/os/x86_64/
mount /dev/sr1 /var/www/html/centos/6/os/x86_64/
4、配置yum源
centos7:
備份/etc/yum.repos.d下的所有文件
mkdir /etc/yum.repos.d/backup
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup
創建/etc/yum.repos.d/base.repo文件
[Centos7]
name=Centos7
baseurl=http://192.168.41.151/centos/7/os/x86_64/
gpgcheck=0
centos6:
備份/etc/yum.repos.d下的所有文件
mkdir /etc/yum.repos.d/backup
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup
創建/etc/yum.repos.d/base.repo文件
[base]
name=base
baseurl=http://192.168.41.151/centos/6/os/x86_64/
gpgcheck=0
配置完成後,使用yum repolist查看是否成功。
擴展:
一、配置yum源
1、yum源配置:以centos7爲例
編輯/etc/yum.repos.d/base.repo文件,注意baseurl的位置
[Centos7]
name=Centos7
baseurl=file:///var/www/html/centos/7/os/x86_64/
http://192.168.41.151/centos/7/os/x86_64/
gpgcheck=0
2:創建一個文件
vim /root/yumlise.txt
內容如下:
file:///var/www/html/centos/7/os/x86_64/
http://192.168.41.151/centos/7/os/x86_64/
修改/etc/yum.repos.d/base.repo文件,使用mirrorlist配置
[Centos7]
name=Centos7
#baseurl=file:///var/www/html/centos/7/os/x86_64/
http://192.168.41.151/centos/7/os/x86_64/
mirrorlist=file:///root/yumlise.txt
gpgcheck=0
注意:
刪除虛擬除了eth0、ens33、lo之外的等其他網卡
yum remove libvirt-daemon
類似pan0的需要設置虛擬機USB設備中與藍牙有關的選項取消勾選
二、強制卸載rpm還原方法
rpm -e rpm --nodeps:忽略依賴關係,強制卸載
虛擬機啓動滾動條按ESC鍵一次,只能按一次,否則不能進入選擇CD-ROM的界面
選擇cd-rom啓動後,進入營救模式,輸入1繼續
鍵入rpm命令看是否能否使用,繼續查看光盤是否掛載沒,如果沒有掛載,請重新掛載
重新安裝rpm:需要使用--root參數指定root根目錄的位置
rpm -ivh /run/install/repo/Packages/rpm-4.11.3-35.el7.x86_64.rpm --root=/mnt/sysimage/