yum
- yum: Yellowdog Update Modifier,rpm的前端程序,可解決軟件包相關依賴性,可在多個庫之間定位軟件包,up2date的替代工具
[root@Centos7~]#which yum
/usr/bin/yum
-
yum repository: yum repo,存儲了衆多rpm包,以及包的相關的元數據文件(放置於特定目錄repodata下)
http:// https:// ftp:// file://
-
yum客戶端配置文件:
/etc/yum.conf:爲所有倉庫提供公共配置 /etc/yum.repos.d/*.repo:爲倉庫的指向提供配置
- yum軟件的配置信息
yum的repo配置文件中可用的變量:
$releasever: 當前OS的發行版的主版本號
$arch: 平臺,i386,i486,i586,x86_64等
$basearch:基礎平臺;i386, x86_64
$YUM0-$YUM9:自定義變量
[root@Centos7~]#cat /etc/yum.conf 查看yum的默認信息
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0 * 是否保留rpm文件*
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1 *檢查rpm文件的完整性*
plugins=1
installonly_limit=5
# PUT YOUR REPOS HERE OR IN separate files named file.repo 新建文件後綴必須爲 repo
# in /etc/yum.repos.d 新建立yum配置文件存放位置
yum.repos.d目錄下默認存在的倉庫指向配置文件
[[email protected]]#ls
CentOS-Base.repo CentOS-fasttrack.repo CentOS-Vault.repo
CentOS-Debuginfo.repo CentOS-Media.repo
[root@Centos7/etc/yum.repos.d]#vim base.repo 文件後綴必須爲.repo格式
[base]
name=Centos7.4 cdrom
baseurl=file:///misc/cd 掛載的源是光盤
gpgcheck=1
gpgkey=file:///misc/cd/RPM-GPG-KEY-CentOS-7
[epel] epel指向方式
name=epel
baseurl=http://172.18.0.1/epel/7/x86_64/
gpgcheck=0 0代表不檢測安裝文件的完整性
查看yum源掛載情況
[root@Centos7/etc/yum.repos.d]#yum repolist
已加載插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
源標識 源名稱 狀態
base Centos7.4 cdrom 9,591
epel epel 5,919
repolist: 15,510
查看yum緩存信息
[[email protected]]#du -sh /var/cache/yum
35M /var/cache/yum
清除 yum 本地緩存
yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
[root@Centos7/etc/yum.repos.d]#yum clean all
已加載插件:fastestmirror, langpacks
源 'base' 在配置文件中未指定名字,使用標識代替
正在清理軟件源: base
Cleaning up everything
Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
Cleaning up list of fastest mirrors
[root@Centos7/etc/yum.repos.d]#du -sh /var/cache/yum
4.0K /var/cache/yum
yum軟件常出現異常的兩個原因,一個倉庫源的路徑問題!
另外一個就是yum緩存的問題,出現異常檢查路徑及清除yum緩存!
yum命令的用法
yum [options] [command] [package ...]
顯示倉庫列表: yum repolist [all|enabled|disabled]
顯示程序包:
yum list
yum list [all | glob_exp1] [glob_exp2] [...]
yum list {available|installed|updates} [glob_exp1] [...]
安裝程序包:
yum install package1 [package2] [...]
yum reinstall package1 [package2] [...] (重新安裝)
升級程序包:
yum update [package1] [package2] [...]
yum downgrade package1 [package2] [...] (降級)
檢查可用升級:
yum check-update
卸載程序包:
yum remove | erase package1 [package2] [...]
查看程序包
information: yum info [...]
查看指定的特性(可以是某文件)是由哪個程序包所提供:
yum provides | whatprovides feature1 [feature2]
查看yum歷史:
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
日誌 :
/var/log/yum.log
包組管理的相關命令:
yum groupinstall group1 [group2] [...]
yum groupupdate group1 [group2] [...]
yum grouplist [hidden] [groupwildcard] [...]
yum groupremove group1 [group2] [...]
yum groupinfo group1 [...]
yum的命令行選項:
--nogpgcheck :禁止進行gpg check
-y : 自動回答爲“yes”
-q :靜默模式
--disablerepo=repoidglob :臨時禁用此處指定的repo
--enablerepo=repoidglob :臨時啓用此處指定的repo
--noplugins :禁用所有插件
#如果建立yum服務器
- 生產環境如果能連接外網,即可方便連接外網的yum 源。
- 例如:
- 如果是局域網情況,準備好需要的rpm等文件,簡單搭建一個共享服務。
- 可以使用httpd 或者 vsftpd 軟件來搭建。
- 把準備好的源文件(包含源數據及rpm安裝包等文件)放到 /var/www/html 目錄下或者
- /var/ftp/pub 目錄下即可
- 對於建立的yum源目錄管理,要單獨建立。
[root@Centos7/var/ftp/pub]#mkdir centos/6/os/x86_64/ -pv mkdir: 已創建目錄 "centos" mkdir: 已創建目錄 "centos/6" mkdir: 已創建目錄 "centos/6/os" mkdir: 已創建目錄 "centos/6/os/x86_64/" [root@Centos7/var/ftp/pub]#tree . └── centos └── 6 └── os └── x86_64 4 directories, 0 files
- 將準備好的源文件全部下載到x86_64目錄下既可以(由於目前學習階段,就把光盤掛在到當前目錄下即可)
[root@Centos7/var/ftp/pub]#df 文件系統 1K-塊 已用 可用 已用% 掛載點 /dev/sda2 52403200 3597996 48805204 7% / devtmpfs 724776 0 724776 0% /dev tmpfs 739476 0 739476 0% /dev/shm tmpfs 739476 9216 730260 2% /run tmpfs 739476 0 739476 0% /sys/fs/cgroup /dev/sda3 20961280 32944 20928336 1% /app /dev/sda1 1247232 161556 1085676 13% /boot tmpfs 147896 8 147888 1% /run/user/0 /dev/sr0 3878870 3878870 0 100% /var/ftp/pub/centos/6/os/x86_64 [root@Centos7/var/ftp/pub]#df -h 文件系統 容量 已用 可用 已用% 掛載點 /dev/sda2 50G 3.5G 47G 7% / devtmpfs 708M 0 708M 0% /dev tmpfs 723M 0 723M 0% /dev/shm tmpfs 723M 9.0M 714M 2% /run tmpfs 723M 0 723M 0% /sys/fs/cgroup /dev/sda3 20G 33M 20G 1% /app /dev/sda1 1.2G 158M 1.1G 13% /boot tmpfs 145M 8.0K 145M 1% /run/user/0 /dev/sr0 3.7G 3.7G 0 100% /var/ftp/pub/centos/6/os/x86_64
啓動ftp服務
[root@Centos7~]#systemctl start vsftpd
關閉防火牆命令
[root@Centos7~]#systemctl stop firewalld --------->(Centos 6 service iptables stop)
開機默認不開啓防火牆命令
[root@Centos7~]#systemctl disable firewalld ------->(Centos6 chkconfig iptables off)
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
查看防火牆是否開啓命令
[root@Centos7~]#iptables -vnL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 byteskts bytes target prot opt inout source destination
關閉selinux 配置(修改爲SELINUX=permissive)
[root@Centos7~]#cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
**SELINUX=enforcing**
[root@Centos7~]#getenforce
Permissive
- 客戶端yum源設置
[[email protected]]#pwd /etc/yum.repos.d [[email protected]]#vim base.repo [base] name=ftp.centos6.9 base baseurl=ftp://172.18.7.77(服務器ip地址)/pub/centos/$releasever/os/$basearch/ gpgcheck=0
建立第三方軟件安裝包目錄,在目錄下生成目前安裝軟件的元文件等信息。
[root@Centos7/var/ftp/pub/app3]#createrepo . ---------> 在當前目錄下生成當前所有軟件的元文件 Saving Primary metadata Saving file lists metadata Saving other metadata Generating sqlite DBs Sqlite DBs complete [root@Centos7/var/ftp/pub/app3]#ls linux-4.13.16.tar.xz repodata ------------> repodata 爲生成的元文件目錄
- 系統光盤yum倉庫
系統安裝光盤作爲本地yum倉庫:
(1) 掛載光盤至某目錄,例如/mnt/cdrommount /dev/cdrom /mnt/cdrom
(2) 創建配置文件
[CentOS7]
name=
baseurl=
gpgcheck=
enabled=創建yum倉庫:
createrepo [options] <directory>
程序包編譯
- 程序包編譯安裝:
- Application-VERSION-release.src.rpm --> 安裝後,使用rpmbuild命令製作成二進制格式的rpm包,而後再安裝
- 源代碼-->預處理-->編譯-->彙編-->鏈接-->執行
-
源代碼組織格式:
多文件:文件中的代碼之間,很可能存在跨文件依賴關係
C、C++:make 項目管理器configure腳本 --> Makefile.in --> Makefile java: maven
- 編譯安裝
C語言源代碼編譯安裝三步驟:
1、./configure(1) 通過選項傳遞參數,指定啓用特性、安裝路徑等;執 行時會參考用戶的指定以及Makefile.in文件生成Makefile
(2) 檢查依賴到的外部環境,如依賴的軟件包2、make 根據Makefile文件,構建應用程序
3、make install 複製文件到相應路徑
開發工具:autoconf: 生成configure腳本
automake:生成Makefile.in注意:安裝前查看INSTALL,README
-
開源程序源代碼的獲取:
官方自建站點:
apache.org (ASF:Apache Software Foundation)
mariadb.org
...
代碼託管:
SourceForge.net
Github.com code.google.comc/c++編譯器: gcc (GNU C Complier)
-
編譯C源代碼:
準備:
提供開發工具及開發環境
開發工具:make, gcc等 開發環境:開發庫,頭文件
glibc:標準庫實現
通過“包組”提供開發組件
Development Tools
Server Platform Development -
httpd 軟件編譯安裝
下載源碼軟件包
準備編譯環境,安裝包組yum groupinstall "Development Tools"
-
第一步:configure腳本
選項:指定安裝位置、指定啓用的特性
--help: 獲取其支持使用的選項
選項分類:
安裝路徑設定:--prefix=/PATH: 指定默認安裝位置,默認爲/usr/local/
--sysconfdir=/PATH:配置文件安裝位置
System types:支持交叉編譯
Optional Features: 可選特性--disable-FEATURE
--enable-FEATURE[=ARG]Optional Packages: 可選包
--with-PACKAGE[=ARG],依賴包
--without-PACKAGE,禁用依賴關係注意:通常被編譯操作依賴的程序包,需要安裝此程序包的“開發”組件,其包名一般類似於name-devel-VERSION
-
第二步make -j 2
看提示補充安裝相應的包例如:apr-devel apr-util-devel openssl-devel pcre-devel
- 第三步make install,配置運行環境
安裝後的配置: 二進制程序目錄導入至PATH環境變量中
編輯文件/etc/profile.d/NAME.shexport PATH=/PATH/TO/BIN:$PATH
導入庫文件路徑
編輯/etc/ld.so.conf.d/NAME.conf
添加新的庫文件所在目錄至此文件中
讓系統重新生成緩存:ldconfig [-v]導入頭文件 基於鏈接的方式實現:ln -sv
導入幫助手冊編輯/etc/man.config|man_db.conf文件
添加一個MANPATH