程序包管理rpm、yum与简单编译安装程序
Linux程序包管理
Linux中软件的安装主要有两种形式:一种是直接下载源代码包自行编译后安装,另一种直接获取rpm软件包进行安装。
程序的组成部分:
二进制程序:程序的主体文件,比如我们运行一个ls命令就是一个二进制程序。
库文件:程序的公用功能模块,比如A程序需要用一个打印机,B程序也需要一个打印机就可以公用这一个模块了。在window下库文件为.dll格式,linux下为/lib/*so格式的文件。
配置文件:通过设置配置文件来改变程序启动时的运行特征。
帮助手册:使用的帮助文档。
软件的默认安装路径:
除了自行下载源码编译安装的软件可以自定义安装路径之外,rpm包的安装都是按照自身预设的安装路径进行安装,主要有以下几类
1./:系统根目录,在此安装的文件通常是os在运行时需要调用到的程序
2./usr:此目录下一般情况下是提供基本服务的软件
3./usr/local:此目录下一般情况下是用户自行安装的第三方软件
1、系统相关:
配置文件路径:/etc
二进制文件路径:/bin 、/sbin
库文件路径:/lib
2、系统提供功能服务相关
配置文件路径:/etc
二进制文件路径:/usr/bin /usr/sbin
库文件:/usr/lib
3、第三方软件:
配置文件路径/usr/local/etc
二进制文件路径:/usr/local/bin /usr/local/sbin
库文件:/usr/local/lib
4、帮助手册
主要都存放在/usr/share/man和/usr/local/share/man
在生产环境下:usr可以单独分区或者放到另一块硬盘上,软件和相关文件放在usr下重做系统或者换到另一台主机时可以直接运行。
注意:有些特殊的应用程序放置于libexec目录下
有些第三方程序安装在/opt目录中。
程序包管理器的功能:
在linux系统下安装程序时,需要将程序的不同文件放置在以上路径里面,或者更改相关系统配置文件指定到程序的目录下,如果有很多程序,配置文件有很多就大大降低了系统效率。手动安装到系统指定的目录下,就会很麻烦。所以程序包管理器的功能就是将编译好的程序打包成一个文件或有限的几个文件,可用于实现便捷地安装、卸载、升级、查询、校验等程序管理功能;
现在程序包管理器主要有2种:rpm和deb。
程序包管理器也必须有以下功能:
1、程序的组成清单(每个程序包独有):例如windows下很多软件管理器里面的程序列表。
文件清单:例如程序的安装有哪些文件。
安装卸载时运行的脚本:例如在windows下的软件卸载程序。
2、数据库(公共)
程序名及版本
程序包之间依赖关系:程序间少了一个都运行不了。
功能说明:对应包基本功用是什么。例如windows下,QQ程序是聊天(功用)的,酷狗是听音乐的。
安装生产的各文件的文件路径及校验码信息:效验码信息是提示某某文件已经改变,防止文件给莫名篡改。
程序包命名:
程序包的版本命名:
testapp-VERSION
程序包-版本号
VERSION:major.minor.release
major:主版本号:( 有重大更新,比如win xp ,win 7,win 8等等)
minor:次版本号:(修复一些漏洞,功能等等)
release:发行号,修订号 (修复小BUG,修订一些小小的东西)
rpm包的命名:name-Major.Minor.Release-release.arch.rpm
例:bash-4.3.2-1.X86_64.rpm
-Release:rpm包自己的发行号,与源代码的发行号无关;仅用于标识对rpm自身的修订,有时候,此release可能还会包含适用的OS,例如bash-4.3.2-1.centos6.X86_64.rpm
arch:使用的硬件平台
x86:i386,i486,i586,i686等;
x86_64:amd64:X86_64
powerpc:ppc
noarch:跟硬件平台无关;
获取程序包的途径:
1、系统原发行光盘或者官方站点服务器;
2、程序项目官方站点;
如redhat官方网站
3、知名的有信誉的第三方组织或者搜索引擎;
搜索引擎:http://rpmfind.net,http://rpm.pbone.net,http://pkgs.org
4、自己制作;
建议:包安装之前要合法性验证
来源合法性
包的完整性
程序包管理器RPM和Yum的关系:
RPM(全称为 RedhatPackage Manager)是由redhat公司提供的软件包管理器 ,可以实现软件包的安装、查询、卸载、升级以及校验等但是rpm不能很好的解决软件之间的依赖关系
Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。
系统程序包管理rpm的应用:
安装:-ivh,--nodeps,--replacepkgs
卸载:-e,--nodeps
升级:-Uvh,-Fvh,--nodeps,--oldpackage
查询:-q,-qa,-ql,-qf,-qi,-qc,-qd,-q --changelogs,-q --provides,-q --requires
校验:-v来源合法性、完整性:--import,-K,--nodigest,--nosignature
数据库重建:--initdb,--rebuilddb
安装:-ivh,--nodeps,--replacepkgs
rpm {-i|--install}
[install-options] PACKAGE_FILE ...
{-i|--install} # -i或者长选项--install 安装
[install-options] # 安装选项,可省略的,需要用到就调用
PACKAGE_FILE: # rpm包文件
....
# 可以为多个
[install-options]:
--replacepkgs: # 重新安装
--nodeps: # 忽略依赖关系
--test: # 测试安装,而不执行真正的安装过程;dry run模式;
安装:-ivh,--nodeps,--replacepkgs
-ivh # 以进度条显示详细的安装信息
-v # 显示详细信息,可以用vv表示,多个v表示越多的详细信息
-h # 以进度条显示安装过程。
--nodeps # 忽略依赖关系。
--replacepsgs # 重新安装软件
卸载:-e,--nodeps
rpm {-e|--erase}
[--nodeps]
[--test] PACKAGE_NAME ...
rpm -e PACKAGE_NAME... # 直接卸载操作会卸载相应的依赖程序。
--nodeps # 忽略依赖关系
--test # 卸载测试
可以先测试下会卸载哪些东西
注意:如果包的配置文件安装后曾被改动过,卸载时,此文件将不会删除,而是被重命名(源文件加.rpmsave后缀)并保留;
升级:-Uvh,-Fvh,--nodeps,--oldpackage
rpm {-U|--upgrade}
[install-options] PACKAGE_FILE ... # 直接升级安装,系统没有这软件也会安装
rpm {-F|--freshen}
[install-options] PACKAGE_FILE ... # 升级安装,如果系统没有这软件就不会安装,只升级时一般用这个命令
[install-options]
--oldpackage # 降级安装
--force
# 忽略冲突,强制执行过程;
注意:不要对内核包执行升级操作,可能重启导致不兼容而挂掉;linux支持多版本内核并存,因此,建议对新版本内核可直接安装;有些程序在升级时会有冲突。
注意:如果原程序包的配置文件安装后曾被改动,升级时,新版本的文件并不会直接覆盖老版本的文件,而是把新版本的文件重命(加后缀.rpmnew)名后保留;
查询:-q,-qa,-ql,-qf,-qi,-qc,-qd,-q --changelogs,-q --provides,-q --requires
rpm {-q|--query}
[select-options]
[query-options]
[select-options]
、rpm -q PACKAGE_NAME # 查询某包(程序)是否安装:
、rpm -qa # 查询已安装的所有包
、rpm -qf /path/to/somefile # 查询某文件是由哪个包安装生成
、rmp -qpl PACKAGE_NAME # 查询尚未安装包的相关信息:
rmp -qpi PACKAGE_NAME # 查询尚未安装包的相关信息:
.....
[query-options]
、rpm -qi PACKAGE_NAME # 查询某包的简要说明信息
、rpm -ql PACKAGE_NAME # 查询某包安装后生成的所有文件的列表
、rpm -qc PACKAGE_NAME # 查询某包安装后生成的所有配置文件的列表
、rpm -qd PACKAGE_NAME # 查询某包安装后生成的所有帮助文件的列表
、rpm -q --changelog PACKAGE_NAME # 查询某rpm包制作时随版本变化的changelog列表信息
、rpm -q --provides PACKAGE_NAME # 查询某包提供的capabilities
、rpm -q --requires PACKAGE_NAME # 查询某包所依赖的capabilities
、rpm -q --scripts # 查询某包安装卸载时的脚本
安装卸载脚本有四种:
preinstall: 安装前执行的脚本
postinstall: 安装后执行的脚本
preuninstall: 卸载前执行的脚本
postuninstall: 卸载后执行的脚本
校验:-v来源合法性、完整性:--import,-K,--nodigest,--nosignature
检查包安装之后生成的文件是否发生了改变
rpm {-V|--verify}
[select-options]
[verify-options]
常用用法: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 # caPabilities发生改变
包来源合法性及完整性验证(安装或卸载时常用):
rpm --import PUBKEY ... # 导入公钥文件,必须先导入公钥文件才能完成校验
rpm {-K|--checksig} [--nosignature] [--nodigest] PACKAGE_FILE ...
--nosignature:不检查来源合法性
--nodigest:不检查完整性
数据库重建:--initdb,--rebuilddb
rpm {--initdb|--rebuilddb}
--initdb # 初始化:如果事先不存在数据,则会更新,否则,不执行任何操作
--rebuilddb # 重建构建:无论当前是否已经存在的数据库,都会直接重建并覆盖现有数据库
系统程序包管理yum的应用:
yum是YellowdogUpdater Modified的缩写,它是一种基于自身软件库的安装,它可以通过查询软件库的连接ftp:// http://
yum repository :yum仓库
存储了众多rpm包,以及包的相关元数据的文件(放在repodata目录中)服务器
yum客户端:
配置文件:指向仓库的位置以及各种配置信息,每个yum客户可以有多个可用的yum仓库:
yum的公共配置文件 /etc/yum.conf
yum repository仓库的配置文件/etc/yum.repos.d/*.repo
yum的公共配置文件 /etc/yum.conf 描述:参考http://www.cnblogs.com/mchina/archive/2013/01/04/2842275.html
vim /etc/yum.conf
[main]
#[]表示对哪一段生效,main表示对所有的生效
cachedir=/var/cache/yum/$basearch/$releasever
#cachedir:yum缓存的目录,yum在此存储下载的rpm包和数据库,一般是/var/cache/yum/$basearch/$releasever
keepcache=0
不保存,为1就会保存
debuglevel=2
#debuglevel:除错级别,0──10,默认是2 貌似只记录安装和删除记录
logfile=/var/log/yum.log
#日志文件
exactarch=1
和0,代表是否只升级和你安装软件包cpu体系一致的包,如果设为1,则如你安装了一个i386的rpm,则yum不会用1686的包来升级。
obsoletes=1
#这是一个update 的参数,具体请参阅yum(8),简单的说就是相当于upgrade,允许更新陈旧的RPM包。
gpgcheck=1
和0两个选择,分别代表是否是否进行gpg校验,如果没有这一项,默认是检查的。
plugins=1
#是否启用插件,默认1为允许,0表示不允许。我们一般会用yum-fastestmirror这个插件。
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=19&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
# PUT YOUR REPOS HERE OR IN separate files named file.repo
#如果需要自定义仓库,可以添加在本配置文件中
# in /etc/yum.repos.d
#或者放在/etc/yum.repos.d/目录下后缀名为.repo的文件
yum repository仓库的配置文件/etc/yum.repos.d/*.repo描述:
[base-debuginfo] # 仓库名
name=CentOS-6
-
Debuginfo # 描述信息
baseurl=http://debuginfo.centos.org/6/$basearch/ # 访问路径,可以指向多个
gpgcheck=1 # 检查此仓库文件完整性和来源合法性
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-Debug-6 # 指向密钥路径
enabled=0 # 是否启用此仓库
yum仓库相关的命令:
仓库查看:repolist(所有仓库),list(程序包),grouplist(所有包组)
yum repolist # 列出所有可用仓库
yum list {all|installed|available} # 列出所有程序包:可以使用通配符globbing
yum grouplist # 列出所有包组
缓存管理:
缓存文件:var/cache/yum
yum clean {all|packages}
yum makecache 生成缓存
yum 命令
yum [options] [command] [package(包) ...]
安装:install,reinstall
卸载:erase|remove(都可以使用)
升级:update,downgrade(卸载),check-update(可用升级)
查询:list,info,search(模糊匹配),provides(指定路径)
包组:grouplist(所有包组),groupinfo "包组名称",groupinstall(安装)"GROUP_NAME",yum install @GROUP_NAME,remove@(卸载),groupremove(卸载)
选项:--enablerepo=,--disablerepo=,-y:自动回答为yes,--nogpgcheck
构建仓库:createrepo
安装:install,reinstall
yum install PACKAGE_NAME # 安装语法
yum install PUBKEY_VERSION # 如果要安装指定版本的程序
yum reinstall PACKAGE_NAME # 重装指定的程序包
卸载:erase|remove(都可以使用)
yum erase | remove PACKAGE_NAME #依赖于指定程序包的其他包,会被一并卸载;
升级:update,downgrade(卸载),check-update(可用升级)
yum update PACKAGE_NAME # 默认格式,直接升级
yum update PUBKEY_VERSION # 如果有多个版本的升级包可用,可以升级到指定版本
yum downgrade PACKAGE_NAME # 可以降级到指定版本
yum check-update # 检查可用升级
查询:list,info,search(模糊匹配),provides(指定路径)
yum list # yum仓库内所有可安装程序包,可以使用通配符globbing
yum info PACKAGE_NAME # 显示指定程序包的摘要信息
yum search KEYWORD # 根据关键字模糊查询报名或包的sumary信息包含此KEYWORD的相关列表
yum provides|whatprovides /path/to/somefile # 查看文件是由哪个包生成的。
包组:grouplist,groupinfo,groupinstall,remove,groupremove
yum grouplist # 显示所有的包组
yum groupinfo "GROUP_NAME"
# 显示某包组的相关信息:
安装包组:
yum groupinstall "GROUP_NAME"
yum install @GROUP_NAME
卸载包组:
yum groupremove "GROUP_NAME"
yum remove @GROUP_NAME
yum 命令安装本地rpm包文件,也可以自动解决包的依赖关系。
yum localinstall /path/to/rpm_package_file...
yum install /path/to/rpm_package_file...
选项:--enablerepo=,--disablerepo=,-y:自动回答为yes,--nogpgcheck
--enablerepo=
# 启用指定的yum仓库
--disablerepo=
# 禁用指定的yum仓库
注意:优先级高于/etc/yum.repos.d/*.repo配置文件中定义的属性;
-y # 自动回答为yes,
--nogpgcheck # 不要检查包来源性和合法性
构建仓库:createrepo
createrepo [options]
<directory>
-g:给创建的包分组
createrepo <directory>
可以直接安装
yum客户端配置的高级用法:
;
2、baseurl中指定路劲时可使用变量
$releaserver:基于OS发行版的主版本号
$arch:平台
$basearch:基础平台,例如i686,i586,i486,i386i系列的基础平台都是i386:
$YUM0-YUM9
例如:http://mirrors.sohu.com/centos/$releaserver/os/$basearch
3、可以使用mirrorlist指定替换baseurl;
指向一个url,此url是一个文本文件,其中保存了大量镜像服务器列表;用户使用yum仓库时,会获取此列表文件,而后通过fastestmirror插件判断哪一个镜像为访问速度最快的服务器,并以之作为本次访问的baserul;
软件包安装之tar源码包编译安装
这里以C源程序为例:
编译安装源程序的前提:
提供开发环境:开发工具和开发库
包组:Development Tools、Server Platform Development、Desktop Platform Development、Debug Tools
yum -y install @Development
Tools
...
yum -y install @Server
Platform
Development
...
测试,如这命令不行可以使用yum groupinstall "GROUP_NAME"
编译C源程序的步骤:
1、./configure 检查编译环境,并根据指定的选项确定编译特性、安装路径等;
2、make:调用所需要的编译器根据makefile配置文件定义执行编译过程。
3、make install:安装程序
以编译安装httpd-2.2.25.tar.bz为例
首先解压缩
[root@localhost ~]# tar -jxf httpd-2.2.25.tar.bz2 # 解压缩源码包文件到当前目录下
[root@localhost ~]# cd httpd-2.2.25
# 进入到该目录下
[root@localhost httpd-2.2.25]# ll # 列出改文件目录
-rw-r--r--
1
500
500
14882
Nov
22
2004 ABOUT_APACHE
-rw-r--r--
1
500
500
18613
Jul
6
2012 acinclude.m4
-rw-r--r--
1
500
500
56952
Oct
6
2010
Apache.dsw
drwxr-xr-x 6
500
500
4096
Jun
29
2013 build
-rw-r--r--
1
500
500
2644
Aug
24
2007
BuildAll.dsp
-rw-r--r--
1
500
500
2692
Jul
30
2009
BuildBin.dsp
-rwxr-xr-x 1
500
500
5786
Sep
19
2012 buildconf
-rw-r--r--
1
500
500
130367
Jun
28
2013 CHANGES
-rw-r--r--
1
500
500
11701
Feb
28
2012 config.layout
-rwxr-xr-x 1
500
500
572978
Jun
29
2013 configure # 检查编译环境的文件
-rw-r--r--
1
500
500
24665
Jun
28
2013 configure.in
drwxr-xr-x 9
500
500
4096
Jun
29
2013 docs
-rw-r--r--
1
500
500
403
Nov
22
2004 emacs-style
-rw-r--r--
1
500
500
1248
May
7
2011 httpd.dep
-rw-r--r--
1
500
500
4124
Jun
12
2008 httpd.dsp
-rw-r--r--
1
500
500
8994
May
7
2011 httpd.mak
-rw-r--r--
1
500
500
12053
Jun
29
2013 httpd.spec
drwxr-xr-x 2
500
500
4096
Jun
29
2013 include
-rw-r--r--
1
500
500
4372
Jan
18
2012 INSTALL
-rw-r--r--
1
500
500
2909
Dec
8
2006
InstallBin.dsp
-rw-r--r--
1
500
500
5145
Nov
29
2005 LAYOUT
-rw-r--r--
1
500
500
30119
May
7
2011 libhttpd.dep
-rw-r--r--
1
500
500
17039
Jan
12
2007 libhttpd.dsp
-rw-r--r--
1
500
500
28503
May
7
2011 libhttpd.mak
-rw-r--r--
1
500
500
28690
Jan
19
2008 LICENSE
-rw-r--r--
1
500
500
8739
Nov
26
2008
Makefile.in
-rw-r--r--
1
500
500
34725
Oct
6
2010
Makefile.win
drwxr-xr-x 20
500
500
4096
Jun
29
2013 modules
-rw-r--r--
1
500
500
828
Jan
6
2013 NOTICE
-rw-r--r--
1
500
500
12894
Mar
16
2012
NWGNUmakefile
drwxr-xr-x 9
500
500
4096
Jun
29
2013 os
-rw-r--r--
1
500
500
5954
Jan
10
2007 README
-rw-r--r--
1
500
500
5332
Oct
14
2009 README.platforms
-rw-r--r--
1
500
500
2553
Dec
21
2010 README-win32.txt
-rw-r--r--
1
500
500
10183
Mar
14
2005 ROADMAP
drwxr-xr-x 3
500
500
4096
Jun
29
2013 server
drwxr-xr-x 5
500
500
4096
Jun
29
2013 srclib
drwxr-xr-x 4
500
500
4096
Jun
29
2013 support
drwxr-xr-x 2
500
500
4096
Jun
29
2013 test
-rw-r--r--
1
500
500
8183
Oct
18
2005 VERSIONING
[root@localhost httpd-2.2.25]#
./configure # 检查编译环境
./configure --help #脚本获取帮助
常用的选项:
--prefix=
# 指定安装路径,多数程序都有默认安装路径;
--sysconfdir=
# 指定配置文件安装路径;
[root@localhost httpd-2.2.25]#
./configure --prefix=/opt/httpd --sysconfdir=/etc/httpd.conf
# 指定安装路径为/opt/httpd 配置文件路径为/etc/httpd.conf
checking for ANSI C header files... yes # 编译环境检测成功
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
.....
config.status: creating build/pkg/pkginfo
config.status: creating build/config_vars.sh
config.status: creating include/ap_config_auto.h
config.status: executing default commands
[root@localhost httpd-2.2.25]#make # 在当前目录开始编译
.....
[root@localhost httpd-2.2.25]#make install # 编译成功后开始安装
.....
[root@localhost httpd-2.2.25]# cd /opt/httpd/bin # 进入到安装好了的目录下
[root@localhost ~]#
./httpd # 运行该进程,因为没有将该路径导入到PATH环境中,所以是这样子运行。
输入本地IP,已经安装好了。
如果源程序下不存在脚本文件可以参考下列方法
编译安装源程序方法:
1、展开源代码,找INSTALL、README:不存在此类文件时,找项目官方文档;
2、根据安全说明执行安装操作;
程序安装于专用目录时,安装后的配置:
1、导出二进制程序所在路径至PATH环境中
export PATH=/usr/local/niginx/sbin:$PATH
实现永久有效的办法:
/etc/profile.d/*.sh
程序包管理rpm、yum与简单编译安装程序的更多相关文章
- linux基础之程序包管理(rpm,yum)
一.rpm 安装:rpm { -i | --install } [ install-options ] PACKAGE_FILE... -v: 显示安装时的详细信息 -vv: 显示许多难以阅读的调试信 ...
- Linux程序包管理rpm与yum
Linux程序包管理 Linux中软件的安装主要有两种形式:一种是直接下载源代码包自行编译后安装,另一种直接获取rpm软件包进行安装. 程序的组成部分: 二进制程序:程序的主体文件,比如我们运行一个l ...
- 程序包管理rpm和yum
Linux程序包管理: API:Application Programming Interface源码包 POSIX:Portable OS 程序源代码 --> 预处理 --> 编译 -- ...
- Linux程序包管理之yum及源代码安装
第十六章.Linux程序包管理之yum及源代码安装 目录 yum介绍 yum配置文件 yum的repo配置文件中可用的变量 yum命令的使用 使用光盘作为本地yum仓库 如何创建yum仓库 编译安装的 ...
- 十七、程序包管理之yum和编译安装
YUM Redhat二次发行版 Yellow Dog Linux,上使用的yum(Yellowdog Update Modifier),由yellow dog 研发 yum命令的工作原理 1.接收用户 ...
- Linux 程序包管理-RPM
程序简介: POSIX(Portable Openratin System)跨平台系统:不同操作系统平台的标准C库(glibc)都是遵循POSIX规范的,这样基于标准库开发程序的源代码可以夸平台编译 ...
- Linux程序包管理初步-yum的使用
何为yum? yum:由yellow dog研发,全称Yellowdog Update Modifier 是rhel系列系统上rpm包管理器的前端工具,可用来自动解决依赖关系,从而更好的实现程序包的安 ...
- 【程序包管理】Linux程序包管理之yum源安装
yum源安装是我们工作中常用的一种方式,它是在Fedora和RedHat以及SUSE中基于rpm的软件包管理器,它可以使系统管理人员交互和自动化地更细与管理RPM软件包,能够从指定的服务器自动下载RP ...
- 程序包管理工具yum
yum 首先要有一个网络上或本地或远程的yum仓库.然后需要yum安装程序的机器去yum仓库下载yum元数据(包括包信息和依赖信息)到本地的cache里.当需要安装程序的时候,会查看yum源数据里是否 ...
随机推荐
- fiddler+android抓包工具配置使用
今天临时增加一个工作,手机需要抓包,查看了不同的抓包工具,最后确定使用fiddler抓包工具进行操作,这里以android为例记录一下工具的配置和使用操作. fiddler的安装 网上有很多fiddl ...
- 《RabbitMQ Tutorial》译文 第 3 章 发布和订阅
原文来自 RabbitMQ 英文官网的教程(3.Publish and Subscribe),其示例代码采用了 .NET C# 语言. In the previous tutorial we crea ...
- Spring Cloud 自定义ConfigServer
公司需要将系统配置信息中的敏感信息独立存放. 现有系统采用Spring Cloud Config提供配置信息,其中敏感信息主要是Db配置,分解本次需求: (1)数据库配置信息分离(主要是Db信息). ...
- Python爬虫:用BeautifulSoup进行NBA数据爬取
爬虫主要就是要过滤掉网页中没用的信息.抓取网页中实用的信息 一般的爬虫架构为: 在python爬虫之前先要对网页的结构知识有一定的了解.如网页的标签,网页的语言等知识,推荐去W3School: W3s ...
- web常见效果之轮播图
轮播图的展示效果是显而易见: HTML代码如下 <!DOCTYPE html> <html> <head> <meta charset="UTF-8 ...
- 根据实践经验,讲述些学习Java web能少走的弯路,内容摘自java web轻量级开发面试教程
在和不少比较上进的初级程序员打交道的过程中,我们总结出了一些能帮到合格程序员尽快进阶的经验,从总体上来讲,多学.多实践不吃亏.本文来是从 java web轻量级开发面试教程从摘录的. 1 哪些知识点 ...
- SSM学习(一)搭建基础框架
不知不自觉,工作也两年多了,由于公司一直用的是ssh框架,所以所学也一直是ssh.直到有一天,服务器被攻击,tomcat目录下总有莫名其妙的一些文件,这些文件通过远程ftp下载了一些病毒和木马,服务器 ...
- 自学Zabbix3.10.1.1-事件通知Notifications upon events-媒介类型email
自学Zabbix3.10.1.1-事件通知Notifications upon events-媒介类型email 配置媒介Email Administration→Media types->Cl ...
- Django学习(3)模板定制
在Django学习(一)一首情诗中,views.py中HTML被直接硬编码在代码之中,虽然这样便于解释视图是如何工作的,但直接将HTML硬编码到视图却不算一个好主意.因为: 对页面设计进行的任何改变都 ...
- iOS UIAlertController在Tableview中显示缓慢,迟钝,延迟
在UITableViewCell中弹窗Alert延迟.在cellForRow中:cell.selectionStyle = UITableViewCellSelectionStyleNone; 或者在 ...