7、yum 学习笔记

Linux的程序包管理:

软件包的组成部分:

二进制程序 /bin,/sbin,/usr/bin,/usr/sbin,/usr/local/bin,/usr/local/sbin

lib,/usr/lib,/lib64,/usr/lib64,/usr/local/lib,/usr/local/lib64

/etc/ld.so.conf,/etc/ld.so.conf.d/*.conf

配置文件 /etc

帮助文件 man文件,info文件,README,INSTALL,ChangeLog


man COMMAND

到某路径下查找与命令名同名的通常以.gz结尾的压缩文件的名字

/usr/share/man/


ldd命令:

查看应用所依赖的共享库

ldd [options] FILE...


rpm包的使用:

rpm包命名格式:

源程序:name-version.tar.{gz|bz2|xz}

version: major.minor.release


rpm包:name-version-release.arch.rpm

release:通常包含rpm的制作发行号,还包含适用的OS

bash-4.3.2-2.el6.x86_64.rpm


来源合法性验正:

源程序:通过md5或sha1校验码验正;

rpm包:发行商提供的合法性是可信的

验正包完整性:校验码

验正来源合法:公钥



获取rpm包的途径:

1、发行商的光盘或站点服务器

以CentOS为例:

http://mirrors.163.com

http://mirrors.sohu.com

2、http://rpmfind.net

3、http://rpm.pbone.net



rpm包管理:安装

# rpm -ivh [install-options] /path/to/rpm_package 安装软件包,显示安装进度

[install-options]

--test 仅测试,不真正执行安装过程

--nodeps 忽略依赖关系

--replacepkgs 重新安装

原来的配置文件不会被覆盖,新安装的配置文件将会重命名为以.rpmnew为后缀的文件



rpm包管理:卸载

#rpm -e [install-options] package_name 卸载软件包

[install-options]

--nodeps 忽略依赖关系



rpm包管理:查询


#rpm -qa 查询所有已经安装的包

#rpm -q package_name 查询某单个包是否安装

#rpm -qi package_name 查询包的描述信息

#rpm -ql package_name 查询包安装之后在当前系统生成文件列表

#rpm -qd package_name 查询包安装后生成的帮助文档

#rpm -qc package_name 查询包安装后生成的配置文件

#rpm -qf /path/to/somefile 查询某文件是哪个包安装生成的

#rpm -q --scripts package_name 查询包相关的脚本

脚本有四类:

preinstall 安装前脚本

postinstall 安装后脚本

preuninstall 卸载前脚本

postuninstall 卸载后脚本


查询尚未安装的rpm包文件的相关信息:

#rpm -pqi /path/to/package_file 查询包的描述信息

#rpm -pql /path/to/package_file 查询包安装之后在当前系统生成文件列表

#rpm -pqd /path/to/package_file 查询包安装后生成的帮助文档

#rpm -pqc /path/to/package_file 查询包安装后生成的配置文件



rpm包之升级:


#rpm -Uvh [install-options] /path/to/package_file 升级或安装

#rpm -Fvh [install-options] /path/to/package_file 升级

[install-options]

--nodeps 忽略依赖关系

--force 强行安装



rpm包管理:检查包安装后生成的文件是否被修改过;

#rpm -V package_name


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



rpm包管理:检验来源合法性和软件包完整性

包完整性:通过单向加密机制(md5|sha1)

来源合法性:通过公钥加密机制(RSA)


导入制作者的公钥,CentOS发行版的公钥在iso文件中;

导入命令:rpm --import /path/to/gpg-key-file


#pm -K --nosignature /path/to/package_file 只检查完整性,不检查来源合法性 #pm -K --nodigest /path/to/package_file 不检查完整性,只检查来源合法性

#pm -K /path/to/package_file 既检查完整性,又检查来源合法性


rpm包管理:数据库重建

数据库:/var/lib/rpm/


#rpm --initdb 初始化,如果事先不存在一个数据库,则新建之;

#rpm --rebuilddb 重建,直接重建数据库,会覆盖原有的库;



yum客户端:

1、配置文件:指定各可用的yum仓库;

2、缓存元数据:yum会到各可用yum仓库获取元数据,并缓存至本地;

3、分析元数据:根据具体操作请求完成元数据分析,可能包括检查依赖关系、文件列表等信息;

4、执行具体操作:


客户端配置文件指定对应服务器访问方式:

ftp ftp://server/path/to/repo

http http://server/path/to/repo

nfs nfs://server/nfs_path

file file:///path/to/repository


要使用yum管理应用程序,首先得配置其可用的yum仓库,保存在配置文件中:

/etc/yum.conf

/etc/yum.repos.d/*.repo


配置文件格式:由两段组成,类似windows的ini配置文件

[main] :主配置段

[repo] :仓库配置段


配置repo:

[repo_ID]

name=String

baseurl=仓库的访问路径

enabled={1|0}

gpgcheck={1|0}

gpgkey=公钥文件(可以在本地,也可是服务器端路径)

cost=定义此仓库开销,默认为1000


[base]

name=CentOS 6.5 X86_64 relase

baseurl=http://172.16.0.1/cobbler/ks_mirror/centos-6.5-x86_64/

enabled=1

gpgcheck=1

gpgkey=http://172.16.0.1/cobbler/ks_mirror/centos-6.5-x86_64/RPM-GPG-KEY-CentOS-6



yum的各命令:

# yum repolist 列出所有可用yum repo

#yum clean all 清理缓存


#yum list [all|installed|available] 列出[所有的安装包|已安装包|可安装包]

# yum info package_name 列出包的描述信息

# yumwhatprovides|provides /path/to/somefile 查询某文件是由哪个包安装生成的


# yuminstall package_name 安装指定的程序包

# yum reinstall package_name 重新安装指定的程序包

# yumerase package_name 卸载指定的程序包

# yumcheck-update 检查可升级的包

# yumupdate package_name 升级指定的程序包

# yum downgrade package_name 降级指定的程序包

# yum grouplist 列出所有包组

# yum groupinfo "group_name" 显示包组信息

# yum groupinstall "group_name" 安装指定的包组

# yum groupremove "group_name" 卸载指定的包组


如果系统为CentOS 5,常用的开发包组为“Development Tools”和“Development Libraries”

如果系统为CentOS 6,常用的开发包组为“Development Tools”和“Server Platform Development”


安装本地包:

# yum install /path/to/package_file

手动禁止检查来源及完整性:--nogpgcheck

# yum --nogpgcheck install /tmp/zsh-2.3.1-2.el6.x86_64.rpm



练习:安装相关的包组,确保如下命令可执行

# gcc --version

gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-4)

Copyright (C) 2010 Free Software Foundation,Inc.

This is free software; see the source for copying conditions. There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


#yum -y groupinstall "Development tools" "Server Platform Development"



yum repository: 文件服务器

repodata/:

repomd.xml:


测试实现yum repository的配置:

1、准备文件服务器;使用httpd为例,请事先确保已经安装httpd程序包;

2、在/var/www/html目录,使用一个目录来保存准备制作成为yum仓库的所有rpm包;

# cd /var/www/html

# lftp 172.16.0.1/pub/Sources/6.x86_64

# lftp: > mirror openstack

# bye

3、创建yum仓库

# rm -rf /var/www/html/openstack/repodata

# createrepo /var/www/html/openstack

4、启动httpd服务

# service httpd start

5、配置使用自建的yum仓库

[openstack]

name=Openstack Repository

baseurl=http://172.16.100.7/openstack/

enabled=1

gpgcheck=0

6、配置好epel的yum源

7、测试使用

# yum install openstack-keystone



程序包管理之编译安装:


源程序:

项目工程:把代码分散于多个源代码文件

GNU/make


autoconf: configure脚本

检查编译环境是否编译需求,并定义当前程序编译时启用哪个特性或功能,以及安装路径的定义等等;

结果:会根据Makefile.in文件生成makefile文件

automake: Makefile.in文件

用于结合configure脚本生成makefile文件

makefile文件是make命令的配置文件



编译安装的步骤:

1、拿到源代码,并解压:

# tar xf package-version.tar.{gz|bz2|xz}

注意:展开后的目录名通常为package-version

2、切换至源码目录中

# cd package-version

3、执行configure脚本

# ./configure

4、编译

# make

5、安装

# make install



configure脚本的通用功能:

我们需要定义的配置:

1、指定安装路径:

--prefix=/usr/local/package_name

--sysconfdir=/etc/package_name

2、指定启用/禁用的特性:

--enable-feature: 例如--enable-fpm

--disable-feature: 例如 --disable-socket

3、指定所依赖功能、程序或文件

--with-function:启用某功能

--without-function:禁用某功能


不同的程序,其configure脚本功能不同,要获取帮助:

./configure --help


练习:

1、编译安装nginx,并启动之;

2、编译安装axel,并试用之;

3、编译安装httpd,并启动之;



/usr/local/apache/bin


二进制程序:

# vim /etc/profile.d/apache.sh

PATH=/usr/local/apache/bin:/usr/local/apache/sbin:$PATH

export PATH


头文件输出给系统:

# ln -sv /usr/local/apache/include /usr/include/httpd


库文件输出:

# vim /etc/ld.so.conf.d/httpd.conf

/usr/local/apache/lib


让系统重新生成库文件路径缓存

# ldconfig



导出man文件:

# vim /etc/man.config

MANPATH /usr/local/apache/man

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2280端口映射到公网,发现经常被暴力破解,自己写了个临时封禁ip功能的脚本,实现5分钟内同一个ip登录密码错误10次就封禁这个ip5分钟,并且进行邮件通知使用步骤openwrt为19.07.03版本,其他版本没有测试过安装bashmsmtpopkg
#!/bin/bashcommand1&command2&wait从Shell脚本并行运行多个程序–杨河老李(kviccn.github.io)
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/phpls-ls 2.编辑修改.bash_profile文件(没有.bash_profile文件的情况下回自动创建)sudovim~/.bash_profile在文件的最后输入以下信息,然后保存退出exportPATH="/Applications/MAMP/bin/php/php7.2.20/b
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如zh_CN之类的语言包,进行中文语言包装:apt-getinstalllanguage-pack-zh-hans3、安装好后我们可以进行临时修改:然后添加中文支持: locale-genzh_CN.UTF-8临时修改> export LC_ALL='zh_CN.utf8'> locale永久
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexadecimalbash2#[0~1]0[0~7]0x[0~f]or0X[0~f]perl0b[0~1]0[0~7]0x[0~f]tcl0b[0~1]0o[0~7]0x[0~f]bashdifferentbaserepresntationreference2.StringlengthLanguageStr
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全命令补全方法:yum-yinstallbash-completionsource/usr/share/bash-completion/bash_completionsource<(kubectlcompletionbash)echo"source<(kubectlcompletionbash)">>~/.bashrc 
参考这里启动jar包shell脚本修改过来的#!/bin/bash#默认应用名称defaultAppName='./gadmin'appName=''if[[$1&&$1!=0]]thenappName=$1elseappName=$defaultAppNamefiecho">>>>>>本次重启的应用:$appName<
#一个数字的行#!/bin/bashwhilereadlinedon=`echo$line|sed's/[^0-9]//g'|wc-L`if[$n-eq1]thenecho$linefidone<1.txt#日志切割归档#!/bin/bashcd/data/logslog=1.logmv_log(){[-f$1]&&mv$1$2
#文件增加内容#!/bin/bashn=0cat1.txt|whilereadlinedon=[$n+1]if[$n-eq5]thenecho$lineecho-e"#Thisisatestfile.\n#Testinsertlineintothisfile."elseecho$linefidone#备份/etc目录#
# su - oraclesu: /usr/bin/ksh: No such file or directory根据报错信息:显示无法找到文件 /usr/bin/ksh果然没有该文件,但是发现存在文件/bin/ksh,于是创建了一个软连接,可以规避问题,可以成功切换到用户下,但无法执行系统自带命令。$. .bash_profile-ksh: .: .b
history显示历史指令记录内容,下达历史纪录中的指令主要的使用方法如果你想禁用history,可以将HISTSIZE设置为0:#exportHISTSIZE=0使用HISTIGNORE忽略历史中的特定命令下面的例子,将忽略pwd、ls、ls-ltr等命令:#exportHISTIGNORE=”pwd:ls:ls-ltr:”使用HIS
一.命令历史  1.history环境变量:    HISTSIZE:输出的命令历史条数,如history的记录数    HISTFILESIZE:~/.bash_history保存的命令历史记录数    HISTFILLE:历史记录的文件路径    HISTCONTROL:     ignorespace:忽略以空格开头的命令
之前在网上看到很多师傅们总结的linux反弹shell的一些方法,为了更熟练的去运用这些技术,于是自己花精力查了很多资料去理解这些命令的含义,将研究的成果记录在这里,所谓的反弹shell,指的是我们在自己的机器上开启监听,然后在被攻击者的机器上发送连接请求去连接我们的机器,将被攻击者的she
BashOne-LinersExplained,PartI:Workingwithfileshttps://catonmat.net/bash-one-liners-explained-part-oneBashOne-LinersExplained,PartII:Workingwithstringshttps://catonmat.net/bash-one-liners-explained-part-twoBashOne-LinersExplained,PartII
Shell中变量的作用域:在当前Shell会话中使用,全局变量。在函数内部使用,局部变量。可以在其他Shell会话中使用,环境变量。局部变量:默认情况下函数内的变量也是全局变量#!/bin/bashfunctionfunc(){a=99}funcecho$a输出>>99为了让全局变量变成局部变量
1、多命令顺序执行;  命令1;命令2  多个命令顺序执行,命令之间没有任何逻辑联系&&  命令1&&命令2  逻辑与,当命令1正确执行,才会执行命令2||  命令1||命令2  逻辑或,当命令1执行不正确,才会执行命令2例如:ls;date;cd/home/lsx;pwd;who ddif=输入文件of=输
原博文使用Linux或者unix系统的同学可能都对#!这个符号并不陌生,但是你真的了解它吗?首先,这个符号(#!)的名称,叫做"Shebang"或者"Sha-bang"。Linux执行文件时发现这个格式,会把!后的内容提取出来拼接在脚本文件或路径之前,当作实际执行的命令。 Shebang这个符号通常在Unix系统的脚本
1、历史命令history[选项][历史命令保存文件]选项:-c:  清空历史命令-w:  把缓存中的历史命令写入历史命令保存文件 ~/.bash_historyvim/etc/profile中的Histsize可改存储历史命令数量历史命令的调用使用上、下箭头调用以前的历史命令使用“!n”重复执行第n条历史
目录1.Shell脚本规范2.Shell脚本执行3.Shell脚本变量3.1环境变量3.1.1自定义环境变量3.1.2显示与取消环境变量3.1.3环境变量初始化与对应文件的生效顺序3.2普通变量3.2.1定义本地变量3.2.2shell调用变量3.2.3grep调用变量3.2.4awk调用变量3.3
   http://www.voidcn.com/blog/wszzdanm/article/p-6145895.html命令功能:显示登录用户的信息命令格式:常用选项:举例:w显示已经登录的用户及正在进行的操作[root@localhost~]#w 11:22:01up4days,21:22, 3users, loadaverage:0.00,0.00,0.00USER