軟件運行和編譯
ABI :Application Binary Interface 應用程序二進制接口
Windows和Linux不兼容
PE格式 ELF格式
庫級別的虛擬化:
Linux:WINE
Windows:Cywin
API:Application Programming應用程序的開發接口
POSIX 通用
程序源代碼–>預處理–>編譯–>匯編–>鏈接
靜態編譯:.a
libxxx.a
把程序對應的依賴庫復制一份到包
升級難,需要重新編譯
占用空間較多,遷移容易
動態編譯:.so
只把依賴加做一個動態鏈接
libxxx.so
占用空間較少,升級方便
包管理器
二進制應用程序的組成部分:
二進制文件、庫文件、配置文件、幫助文件
程序包管理器:
debian:deb文件、dpkg包管理器
redhat:rpm文件、rpm包管理器
rpm:Redhat Package Manager
RPM Package Manager
包命名
源代碼:name-VERSION.tar.gz|bz2|xz
rpm包命名方式:
name-VERSION-release.arch.rpm
例:bash-4.2.46-19.e17.x86_64.rpm
常見的arch:
x86 :i386 i486 i586 i686
x86_64
noarch
包:分類和拆包
Application-VERSION-ARCH.rpm:主包
Application-devel-VERSION-ARCH.rmp 開發子包
Application-utils-VERSION-ARHC.rpm 其他子包
Application-libs-VERSION-ARHC.rpm 其他子包
包之間:可能依賴,甚至循環依賴
解決依賴包管理工具:
yum:rpm包管理器的前端工具
apt-get:deb包管理器前端工具
zypper:suse上的rpm前段管理工具
dnf:Fedora 18+ rpm包管理器前端管理工具
庫文件
查看二進制程序所依賴的庫文件
ldd/PATH/TO/BINARY_FILE
管理及查看本機裝載的庫文件
idconfig
/sbin/ldconfig -p :顯示本機已經緩存的所有可用庫文件名及文件路徑映射關系
配置文件:/etc/ld.so.conf,/etc/ld.so.conf.d/*.conf
緩存文件:/etc/ld.so.cache
包管理器
程序包管理器:
功能:將編譯好的應用程序的各組文件打包一個或幾個程序包文件,從而方便快捷的實現程序包的安裝、卸載、查詢、升級、和校驗等管理操作
1、包文件組成(每個包獨有)
RPM包內的文件
RPM的元數據,如名稱,版本,依賴性,描述等安裝或卸載時運行的腳本
2、數據庫(公共):/var/lib/rpm
程序包名稱及版本
依賴關系
功能說明
包安裝后生成的各文件路徑及校驗碼信息
程序包的來源
管理程序包的方式:
使用包管理器:rpm
使用前端工具:yum,dnf
獲取程序包的途徑:
1.系統發版的光盤或官方的服務器:
CentOS鏡像:
https://www.centos.org/download/
http://mirrors.aliyun.com
http://mirrors.sohu.com
http://mirrors.163.com
2.項目官方站點
3.第三方組織
Fedora-EPEL
Rpmforge :RHEL推薦,包很全
搜索引擎:
http://pkgs.org
http://rpmfind.net
http://rpm.pbone.net
http://sourceforge.net/
4.自己制作
rpm包管理
CentOS系統上使用rpm命令管理程序包:
安裝、卸載、升級、查詢、校驗、數據庫維護
安裝:
rpm{-i|–install}[install-options]PACKAGE_FILE
-v:verbose
-vv:
-h:顯示執行進度
rpm -ivh 常用
[install-options]
–test:測試安裝
–nodeps:忽略依賴關系
–replacepkgs| replacefiles 覆蓋安裝 | 替換安裝
–nosignature:不檢查數字簽名
–nodigest:不檢查包完整性
–noscripts:不執行程序包腳本
rpm包升級
rpm -U:安裝有舊版本程序包,則“升級”,如果不存在舊版本程序包,則“安裝”
rpm -F:安裝有舊版本程序包,則“升級”,如果不存在舊版本程序包,則不執行升級操作
–oldpackage:降級
–force:強制安裝
包查詢
rpm2cpio 包文件|cpio itv 預覽包內文件
rpm2cpio 包文件|cpio -id “.conf”釋放包內文件
rpm -a 查詢所有包
-f 查看指定的文件由哪個程序包安裝shengc
-p 針對未安裝的程序包文件做查詢操作
–changelog 查詢rpm包的changelog
-c 查詢程序的配置文件
-d 查詢程序的文檔
-i information
-l 查看指定的程序包安裝后生成的所有文件
–scripts 程序包自帶的腳本
-R 查詢指定的程序包所依賴的CAPABILITY
包校驗
rpm -V 看是否更改過
S 大小
M 文件類型
5 哈希值
D 設備的主要和次要號碼
L 鏈接
U 所有者
G 所屬組
T m時間
數據庫:/var/lib/rpm
yum
yum :rpm的前端程序,可解決軟件包相關依賴性,可在多個倉庫之間定位軟件包,up2date的代替工具
yum repository:yum repo ,儲存了眾多rpm包,以及包的相關的元數據文件(放置特定目錄repodata下)
文件服務器:
ftp://
http://
file://
yum配置文件
/etc/yum.conf:為所有倉庫提供公共配置
/etc/yum.repos.d/*.repo:為倉庫的指向提供配置
倉庫指向的定義:
[倉庫名稱]
baseurl=地址
gpgcheck={1|0}
enabled={1|0}
常用的幾項
yum源
阿里云repo文件:
http://mirrors.aliyun.com/repo/
CentOS系統yum源
阿里云:
http://mirrors.aliyun.com/centos/$releasever/os/x86_64/
教學環境:
http://172.16.0.1/cobbler/ks_mirror/$releasever/
Epel的yum源:
阿里云:
http://mirrors.aliyun.com/epel/$releasever/x86_64
教學環境:
http://172.16.0.1/cobbler/ks_mirror/$releasever/x86_64/
yum命令
yum repolist [all|enabled|disabled]顯示倉庫列表
yum list 顯示程序包
yum install 安裝程序包
yum reinstall 重新安裝
yum update 升級程序包
yum downgrade 降級程序包
yum check-update 檢查升級
yum remove 刪除
yum info 查看包的信息
yum clean 清除緩存 在/var/cache/yum/$basearch/$releasever緩存
yum search 搜索指定相關的包
查看yum 事務歷史:
yum history
yum history info 6 查看歷史
yum history undo 6 撤銷
在centos7實現光盤yum源
1安裝
yum install autofs
2現在啟動
systemctl start autofs
3開機啟動
systemctl enable autofs
4 cat /etc/yum.repos.d/base.repo
[centos7]
name=centos7 repo
baseurl=file:///misc/cd
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
實驗:實現yum 網絡倉庫
1 安裝網絡服務ftp為例
yum install vsftpd
2現在啟動
systemctl start vsftpd centos7
service vsftpd start centos6
3開機啟動
systemctl enable vsftpd centos7
chkconfig vsftpd on centos6
4 清除防火墻
iptables -F
systemctl disable firewalld.service centos7
chkconfig iptables off centos6
5復制rpm包文件到共享的網絡目錄
/var/ftp/pub/app/
6 創建yum metadata 生成repodata/
yum install createrepo
createrepo /var/ftp/pub/app/
7 客戶端配置
[app]
baseurl=ftp://192.168.33.128/pub/app/
gpgcheck=0
實驗:在centos7 編譯安裝httpd2.4.25
1安裝源碼包
download 源碼包
tar xvf httpd-2.4.25.tar.bz2
2安裝開發包組
yum groupinstall “Development tools”
3 cd /root/httpd-2.4.25
yum install apr-devel
yum install apr-util-devel
yum install pcre-devel
./configure –prefix=/app/httpd24 –sysconfdir=/etc/httpd24/
4 make
5 make install
6 軟件使用
指定路徑
cat /etc/profile.d/httpd24.sh
PATH=$PATH:/app/httpd24/bin
7 apachectl start|stop
netstat -tnl 查看端口
磁盤管理
機械硬盤結構:
head:磁頭
track:磁道
cylinder:柱面
sector:扇區,512bytes
分區:
兩種分區方式:MBR,GPT
MBR: 主要分區 1-4
擴展1-4
邏輯 5-
sector 512
GPT:
分區工具
fdisk 創建MBR分區
gdisk 創建GPT分區
parted 高級分區操作
fdisk /dev/sdb
gdisk /dev/sdb 類似fdisk
fdisk -p 分區列表
-t 更改分區類型
-n 創建新分區
-d 刪除分區
-w 保持并退出
-q 不保存并退出
新加分區同步:partx -a /dev/..
刪除分區同步:partx -d –nr M-N /dev/..
partprobe 同步磁盤
partde用法,實時生效
parted /dev/sdb mklabel gpt|msdos 建分區
parted /dev/sdb print 看分區
parted /dev/sdb mkpart primary 11000M
parted /dev/sdb rm 1 刪除第一個分區
parted -l 查看所有硬盤分區
文件系統
linux文件系統:ext2,ext3,ext4,xfs,swap
日志型文件系統:ext3,ext4,xfs…
非日志型文件系統:ext2,vfat
mkfs命令:
mkfs.FS_TYPE /dev/DEVICE
ext4
xfs
btrfs
vfat
mkfs -L 設定卷標
blkid 查看塊信息
blkid -U UUID 根據UUID來查找對應設備
findfs LABEL …根據卷標搜索
findfs UUID…根據UUID搜索
tune2fs -U UUID:修改UUID
uuidgen:取新的UUID
fsck -y :修復
掛載mount
掛載方法:moumt DEVICE MOUNT_POINT
mount -L:根據卷標掛載
mount -U:跟據UUID掛載
-t:指明文件系統
-n:隱藏掛載
-B: 文件掛載文件
-o remount:指定權限
cat /proc/mounts查看最全的掛載信息
findmnt MOUNT_POINT查看是否掛載
fuser -v … 查看訪問文件的進程
fuser -km … 殺掉進程
umount … 取消掛載
mount -a 刷新掛載
swap 實現
1fdisk 分區
fdisk sdc1 t 82
2 mkswap /dev/sdc1 -L swap2 格式化
3 vim /etc/fstab 寫入vim
/dev/sdc1 swap swap pri=100 0 0
4生效 swapon -a啟用
5 swapon -s 查看
刪除swap分區
1 swapoff /dev/sdc1禁用
2 free
3 vim /etc/fstab
4 fdisk /dev/sd刪除分區
文件swap
dd if=/dev/zero of=/swapfile bs=1Mcount=2048
mkswap /swapfile
vim /etc/fstab
swapon -a
刪除swap file
swapoff /swapfile
vim /etc/fstab
rm -f /swapfile
原創文章,作者:yaobinbin,如若轉載,請注明出處:http://www.www58058.com/74111
對linux下的軟件包管理和磁盤管理進行了詳細的介紹,內容寫的很詳細排版也很好,可以把實驗的流程再加入進來,加油,加油!