linux笔记4.0

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux笔记4.0相关的知识,希望对你有一定的参考价值。

命令:
mount 挂载光盘
wget 下载文件
du 查看使用空间(文件和目录磁盘使用的空间)
-s只显示总和(sum),-h以K,M,作为单位
dd if= of= bs= count= 复制文件并对原文件的内容进行转换和格式化处理
if代表输入文件(/dev/zore/全零的字符设备)
of代表输出文件
bs代表字节为单位的块大小
count代表被复制的块数


1、误删处理
开机进救援模式:
CentOS6:进光盘-->Rescue install system
CentOS7:进光盘-->Troubleshooting-->Rescue a CentOS system
寻找删除文件或目录,用相对路径还原
2、rpm误卸载:
进救援模式,用rmp重装
注意:安装路径用特殊命令:--root=/mnt/sysimage

软件包管理

软件运行和编译
ABI:Application Binary Interface(应用程序二进制接口)操作系统接口标准
API:Application Programming Interface(应用程序设计接口)
程序源代码-->预处理-->编译-->汇编-->链接(链接库文件)
静态编译:.a(静态库:lib.a)
动态编译:.so(动态库:lib.so)

链接
链接主要作用是把各个模块之间相互引用的部分处理好,使各个模块间能正确的衔接,分为静态链接和动态链接
静态链接
把程序对应的依赖库复制一份到包
libXXX.a
嵌入程序包
升级难,需要重新编译
占用较多空间,迁移容易
动态链接
只把依赖加做一个动态链接
libXXX.so
链接指向
占用空间少,升级方便

开发语言
系统级开发
c
c++
应用级开发
java
delphi
Python
go
php
perl
ruby

包管理器
二进制应用程序的组成部分
二进制文件、库文件、配置文件、帮助文件
程序包管理器
debian:deb文件、dpkg包管理器
rehat:rpm文件、rpm包管理器,rpm(RPM Package Manager)

包命名
源代码:name-VERSION(版本号).tar.gz|bz2|xz
VERSION:major(主版本号).minor(次要版本号).release(发行号)
rpm包:name-VERSION-release.arch.rpm
release:release.OS
常见的arch(架构):i686、x86_64、平台无关noarch

包安装工具
包之间:可能存在依赖关系,甚至循环依赖
解决依赖包管理工具:
yum:rpm包管理器前端工具(底层调用rpm,不能完全代替rpm)
apt-get:deb包管理器前端工具
zypper:suse上的rpm前端管理工具
dnf:Fedora 18+ rpm前端管理工具

库文件
查看二进制程序所依赖的库文件
ldd /PATH/TO/BINARY_FILE
管理及查看本机装载的库文件
ldconfig:加载库文件
/sbin/ldconfig -p/:显示本机已经缓存的所有可用库文件名及文件路径映射关系
配置文件:/etc/ld.so.conf,/etc/ld.so.conf.d/*.conf
缓存文件:/etc/ld.so.cache

包组成(每个包独有)
RPM包内文件
RPM的元数据(名称,版本,依赖性,描述等)
安装或卸载时用的脚本(前pre;后post)
数据库(公共):/var/lib/rpm
程序包名名称及版本
依赖关系
功能说明
包安装后生成的各文件路径及校验码信息

程序包的来源
获取程序包的途径:
(1)系统发版的光盘或官方的服务器
CentOS镜像(版本太老,一般不用)
https://www.centos.org/download/
http://mirrors.aliyun.com
http://mirrors.sohu.com
http://mirrors.163.com
(2)项目官方站点
(3)第三方组织
Fedora-EPLE:Extra Packages for Enterprise Linux
Rpmforge:RHEL推荐,包很全
搜索引擎:
http://pkgs.org
http://rpmfind.net
http://rpm.pbone.net
https://sourceforge.net/
(4)自己制作
注意:第三方包建议要检查其合法性(来源合法性,程序包完整性)

rpm包管理
CentOS上使用rpm命令管理程序包:
安装、卸载、升级、查询、校验、数据库维护

安装:
rpm -i(--install);v(显示安装过程);h(以#显示程序包管理执行进度)
--text:测试安装,不是真正执行安装,即dry run模式
--nodeps:忽略依赖关系,强制安装
--replacepkgs|replacefiles:覆盖安装,强制重装
--nosignature:不检查来源合法性(不安全)
(附:rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-{6,7}:导入钥匙)
--nodigest:不检查包完整性(不安全)
--noscripts:不执行脚本

升级:
-U(--upgrade)有旧版本则升级,没有旧版本则安装
-F(--freshen)有旧版本则升级,没有旧版本则不执行升级操作
不建议使用升级操作,会覆盖旧版本;内核升级一般直接安装新版本并保留原版本,但一般软件不支持保留两个版本
--oldpackage:降级
--force:强制安装
注意:如果原程序包的配置文件安装后曾被修改,升级时,新版本提供的同一配置文件不会覆盖被修改过的配置文件,而是把新版本的文件重命名(filename。rpmnwe)后保存

查询
rpm -q(--query)查询 [select-options] [query-options] 包名(不需要路径)
select-options(选择选项)
-a:所有包
-f:查看指定文件由哪个程序包安装生成
-p:针对尚未安装的程序包文件做查询操作(这对文件名而不是包名)
--whatprovides CAPABILITY(能力):查询指定的功能由哪个包所提供
--whatrequires CAPABILITY:查询指定的功能被哪个包所依赖
rpm2cpio 包文件|cpio -itv:预览包内文件
rpm2cpio 包文件|cpio -id:“*.conf” 释放包内文件
query-options(问题选项)
--changelog:查询rpm包的changelog
-c:查询程序的配置文件
-d:查询程序的文档
-i:informatio描述信息
-l:查看指定的程序包安装后生成的所有文件
--scripts:程序包自带脚本
--provides:列出指定程序包所提供的能力
-R:查询指定的程序包所依赖的能力
常用:-qi、-qf、-qp后跟rpm文件、-ql

卸载
-e(--erase)卸载
--allmatches:删除所有匹配到的
--nodeps
--noscript
--notriggers:忽略触发器
--test:测试卸载

校验
-V(--verify)校验
结果:
S:file size differs
M:mode differs(include 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

包来源合法性及包完整性校验
公钥加密
对称:加密、解密使用同一密钥
非对称:密钥是成对的
public key:公钥,公开所有人
secret key:私钥,不能公开
先导入密钥才能进行校验
导入:
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-{6,7}:导入密钥
(光盘中路径:
6:/media/CentOS_6.9_Final/RPM-GPG-KEY-CentOS-6
7:/run/media/root/CentOS\ 7\ x86_64/RPM-GPG-KEY-CentOS-7)
校验:
rpm -K|checksig:检查包的完整性和签名
查看密钥:
rpm -qa “gpg-pubkey*”:查看导入的密钥内容

rpm数据库
数据库重建:/var/lib/rpm
rpm --initdb|--rebuilddb
initdb:初始化,不存在则新建,存在则不执行任何操作
rebuilddb:重建已安装的包头的数据库索引目录
建议不重建数据库

YUM
CentOS:yum、dnf
YUM:Yellowdog Updata Modfiler,rpm的前端程序,可解决软件包相互依赖性,可在多个库之间定位软件包,up2data的替代工具
基于c/s结构(client/server)
yum repository:yum repo(yum软件仓库的配置文件)存储了众多rpm包以及包的相关的元数据文件,放置于特定目录repodata下
文件服务器:
http://、https://、ftp://、file://

yum配置文件
/etc/yum.conf:为所有仓库提供公共配置(很少改动)
cachedir(缓存目录)=/var/cache/yum/$basearch(CPU架构)/$releasever(版本号)
keepcache(保留安装包缓存)=0(默认)
debuglevel(调试)
logfile(yum日志路径)=/var/log/yum.log
exactarch(架构)
obsoletes(淘汰)
gpgcheck(检查包签名和完整性)=1(默认)
plugins(插件启用)
installonly_limit(并行安装)=5(同时安装5个包)
bugtracker_url(bug提示)
distroverpkg(系统发行版本)

/etc/yum.repos.d/*.repo:为仓库的指向提供配置
[repositoryID](不能有空格)
name=repository名或描述信息
baseurl=//路径(可以是本地光盘,也可以是网络)
gpgcheck=0不检查|1检查
gpgkey=导入密钥路径
enabled=0禁用|1不禁用(默认)
enablegroups(禁用组)
failovermethod(挑选路径)=roundrobin(随机挑选,默认)|priority(按顺序)
cost(优先级)=默认为1000(越小越高)
mirrorlist=存放路径的文件

利用网上现成的yum源配置:
(1)用wget命令下载到/etc/yum.repos.d/下
(2)yum-config-manager --add-repo=网址:直接生成yum源
--disable|--enable 仓库名:禁用|启用仓库

yum命令
用法:
显示仓库列表:
yum repolist[all|enabled|disabled](可用|禁用)
显示程序包:
yum list[all|glob(通配符)](可跟多个包)
yum list[available(可获得的)|install(已安装的)|updates(更新的)][glod]
安装程序包:
yum install package1 [package2] [...](可安装多个)
yum reinstall package1 [package2] [...](重新安装)
升级程序包(不建议使用)
yum update package1 [package2] [...]
yum downgarde package1 [package2] [...]
检查可用升级:
yum check-update
卸载程序包:
yum remove|erase package1 [package2] [...]
查看程序包:(类似rpm -qi)
yum info
查看指定的特性(可以是文件)是由哪个程序包所提供:(查询文件的话,类似rpm -qf)
yum provides|whatprovides feature(特性)/file
清理本地缓存:(/var/cache/yum/$basearch/$releasever缓存)
yum clean [package|metadata元数据|expire-cache失效缓存|rpmdb|plugins插件|all]
构建缓存:(一般不需要手工构建,默认存在)
yum makecache
搜索:
yum search string(字符串),1以制定关键字搜索程序包名及summary(摘要)信息
查看指定包所依赖的capabilties(能力):
yum deplist package
查看yum历史:
yum history
配合undo使用可撤销历史操作:
yum history undo #(历史条目),redo重做该条历史
yum日志:
/var/log/yum.log
用yum安装和升级本地程序包:
yum localinstall(用install替代) rpmfile/rpmpackage
较rpm安装的优势在于可自动安装依赖的包
yum localupdate(用update代替) rpmfile/rpmpackage
包组管理:
查看包组名称:
yum grouplist
安装包组:
yum groupinstall(yum安装包组大小写不敏感,安装包大小写敏感)
查看包组信息:
yum groupinfo
升级包组:
yum groupupdate
卸载包组:
yum groupremove

选项:
--nogpgcheck:禁止进行gpgcheck
-y:自动回答“yes”
-q:静默模式
--disablerepo=repoidglob:临时禁用此处指定的repo
--enablerepo=repoidglob:临时启用此处指定的repo
--noplugins:禁用所有插件

yum仓库
自定义创建仓库:
createrepo 目录(存放rpm包)

程序包编译
程序包编译安装:
源代码-->预处理-->编译-->汇编-->链接-->执行
make项目管理器,用来实现上面的复杂流程
make:(针对C、C++,java用maven)
configure脚本(定制安装,如路径)-->Makefile.in(模板文件)-->Makefile(记录定制内容,如安装路径)

编译安装三步骤
1、./configure
(1)通过选项传递参数,指定启用特性(功能)、安装路径等,根据选择及Makefile.in,生成Makefile
(2)运行时,检查依赖的外部环境(软件依赖性)
2、运行make,根据Makefile文件,构建应用程序
3、make install 复制文件到相应的路径
注意:安装前查看INSTALL,README

以上是关于linux笔记4.0的主要内容,如果未能解决你的问题,请参考以下文章

LFS Linux From Scratch 笔记(经验非教程)

Docker 搭建 JIRA 备忘笔记

Linux ❀ RHCE自研教学笔记链接梳理

Linux ❀ RHCE自研教学笔记链接梳理

Ubuntu通过源代码编译安装Octave 4.0

Ubuntu/Linux 笔记应用 为知笔记(支持markdown)