混沌OA!一款开源免费的PHPOA

《混沌OA》是一套采用PHP+MYSQL开发的Swoole高性能OA系统,Vue.js前端技术栈构建,采用模块化技术架构的新型智慧企业OA管理系统。

普格县政府公文系统:黄石港区政府办公oa系统中Linux系统软件包的管理

2026-06-21 08:39:33

普格县政府公文系统:黄石港区政府办公oa系统中Linux系统软件包的管理存的管理体系,进销存是围绕着销售的一系列操作,进就是采购,销就是销售,存就是库存,从采购到库存的掌控,让企业的管理更加细助用户搜索、安装和管理软件,而软件通常以「包」的形式存储在仓库「repository」中,对软件包的使用和管理被称为包管理,本章我们将介绍 RedHat 系统中为我们提供的解决方案,RPM和YUM包管理机制. ♥ 文章声明 ♥ 该系列文章部分文字描述,整理于以下文献,化繁为简. 《鸟哥的Linux私房菜 (基础学习篇 第三版)》 - 作者:鸟哥 《Linux就该这么学》 - 作者:刘遄 由于自由软件的蓬勃发展,加上大型 Unix


Python高级变量类型:

目标列表元组字典字符串公共方法变量高级知识点回顾Python 中数据类型可以分为 数字型 和 非数字型 数字型 整型 (int)浮点型(float)布尔型(bool) 真 True 非 0 数 —— 非零即真 In : In : print smoke_list蓝利群 In : print smoke_list芙蓉王 In : print smoke_list万宝路 In : print smoke_list In : In : smoke_list.reverse() In : for smoke in smoke_list: ...: print smoke ...: 万宝路芙蓉王蓝利群 In : In : smoke_list.insert(1,黄金龙) In : for smoke in smoke_list: ...: print smoke ...: 万宝路黄金龙芙蓉王蓝利群 In : In ,并且所有这些(区分大小写的)字符都是小写,则返回 True string.isupper() 如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True

拟逮捕福建晋华前总裁陈正坤等人:

但对被告逐一发布逮捕令,是适当的行动,也符合政府要求。」而就在两周前,台中法院对于美光起诉联电窃取商业机密一案已经进行了宣判。 值得关注的是,陈正坤是台湾DRAM界老将,17年出任福建晋华总经理,协助建厂。在此之前,他还是联电的副总经理。 美方对中方企业的发难已经数见不鲜,此案背后的政治压力可想而知。报道中指出,这三人都是台湾公民,法律专家表示,他们没有出庭美国法院的动机。中国大陆和台湾和美国之间都没有引渡条约。 发展至今,DRAM三巨头三星、海力士、美光呈现三足鼎立的态势,2019年市场占率分别为50.9%、29.2%、18.5%。美光1978年成立于美国,是全球最大的半导体储存和影像产品制造商之一。 晋华集成是由福建省电子信息集团、及泉州、晋江两级政府共同出资设立。一直以来,它专注于DRAM领域,与台湾联华电子开展技术合作。

卢驭龙谈无人驾驶:不能让人工智能取代我们的灵魂:

人类和机器人恋爱,最后机器人却把人类给套路了……2017年12月6日,卢驭龙在微博中发布了一条关于深圳无人驾驶公交车上线的消息。 据了解,此次无人驾驶公交车采用了“阿尔法巴智能驾驶公交系统”,源自中国未来新能源与智能公交系统(CBSF)示范项目,据资料显示,智能公交车满载25人,其中有17个座位、8人站立。 但卢驭龙认为,司机也许会消失,但赛车手不会,任何追求极致的人都是独一无二的!卢驭龙自创业以来,一直视“改良世界”为己任。 在2012年,深圳驭龙航天科技有限公司成立的时候,身为CEO的卢驭龙就提出了一套太空探索计划,并命名为“驭龙太空探索计划”。 为了完成二十年筹备一万亿资金的目标,卢驭龙的技术团队还将众多技术运用到生活改良上,成立了深圳驭龙电器有限公司。比如卢驭龙最新发明的驭龙电焰灶。

堆栈 jvm 太难懂?买房子总能理解了吧:

首先,政府画了一个圈,“走过路过不要错过哈,新鲜出炉的地块,各种优惠政策,减税减税再减税,快来看看啊~”,然后一堆大企业蜂拥而上,“给我留一块~”,“我也要~”。 再来看看电脑内存,其实我们的电脑就是政府部门,每一次一开机,就开始要喝,“内存开始大派送啦,需要的快来领啊”,然后各种开机启动的应用程序开始抢内存,什么聊天的啊,杀毒的啊,浏览器啊,当然还有系统自带的功能 应用程序和系统程序占用内存电脑开机进行的内存免费大派送跟我们的政府规划很像,在座的各位都是大佬,内存要多少有多少。然后我们打开java的时候,java也成功的分到了一块内存空间。 java有个名词叫java虚拟机(JVM),你就可以理解为他是一个虚拟的系统,他干了很多和系统类似的活,系统把内存交给java以后,就由 jvm 来负责规划内存。 就像我们上面说的,政府部门划了地给开发商,java自己也划地分给他下面的小弟。那么java里面的小弟又是啥?

普格县政府公文系统:黄石港区政府办公oa系统中Linux系统软件包的管理

CRM系统,分为采购管理与产品管理、库存管理两大模块,通过采购,出库,入库管理,以及库存数量,让企业各个商品一目了然,也让销售人员实现实时跟进产品状态、库存,及时作出销售策略。当库存达到安全库存时,就提醒采购人员要进行产品的采购啦,也提醒销售人员在推销产品时要注意,可以适当推销库存量大的产品,及时作出销售策略。而出库数和入库数则方便之后商品进行盘点时出现的差异,查看出库、入库数是否有差异。入库、出库数也是商品的流动痕迹的一种记录,时刻可以追寻商品流动记录。 一系列的操作,让企业的进销存管理得到有效控制和管理,也让销售人员及时了解到自己企业的产品状态。虽然使用源码编译安装可以具有提高速度个性化的定制等优点,但对于 Linux发行商来说,则不容易管理软件包,毕竟不是每个人都会进行源码编译的,如果能够将软件预先在相同的硬体与系统上面编译好在发布的话,不就能够让相同的 Linux 发行版,同时拥有相投的版本了吗,如果再加上简易的安装/移除/管理等机制的话,对于软体控管就会更加简单,大多数现代类 Unix 操作系统都提供了一个集中的软件包管理机制,以帮助用户搜索、安装和管理软件,而软件通常以「包」的形式存储在仓库「repository」中,对软件包的使用和管理被称为包管理,本章我们将介绍 RedHat 系统中为我们提供的解决方案,RPM和YUM包管理机制. ♥ 文章声明 ♥ 该系列文章部分文字描述,整理于以下文献,化繁为简. 《鸟哥的Linux私房菜 (基础学习篇 第三版)》 - 作者:鸟哥 《Linux就该这么学》 - 作者:刘遄 由于自由软件的蓬勃发展,加上大型 Unix-Like 主机的强大性能,让很多软件开发者将他们的软件发布出来,后来 Linux 发展起来后,由一些企业或社区打包成为特定的发行版,RedHat就是这方面的龙头老大,但后来发现这些发行版的软件管理机制相当的混乱,没有一种统一的管理方式,这时候各大厂商开始着力研究如何有效的管理这些文件,RedHat提出了rpm和Yum仓库的解决方案,时至今日Yum已成为服务器上使用最多的软件管理工具.此外还有一种dpkg格式的软件安装包,是社区来维护的,下面我们来具体介绍这两种软件包吧. 目前在 Linux 界软件安装方式最常见的有两种,分别是: ● DPKG 包 这个机制最早是由 Debian Linux 社区所开发出来的,通过 dpkg 的包管理, Debian 打包软件就能够简单的安装,同时还能提供安装后的软件维护与更新,只要是衍生于 Debian 的其他 Linux 发行版都 dpkg 这个机制来管理软件的,包括 B2D,Ubuntu,Kali Linux 等. ● RPM 包 这个机制最早是由 Red Hat 这家公司开发出来的,后来实在很好用,因此很多 Linux 发行版,就使用这个机制来作为软件安装的管理方式,包括 RedHat,Fedora,CentOS,SuSE等知名厂商都在使用它. 如前所述,不论是DPKG还是RPM,这些软件包或多或少都会有依赖关系问题,那么各大 Linux 发行商是如何解决这个问题的呢 ? 目前的 Linux 发行商,在dpkg管理机制上就开发出 APT 包管理工具, RPM 则依开发商的不同,有RedHat系统的YUM,以及SuSE系统的YOU,Mandriva系统的urpmi都在使用RPM下面我们使用的是RedHat系统,所以说使用的管理机制为 RPM 机制,所以我们使用YUM,下面就让我们来谈谈 RPM 与 YUM 的关系吧. 软件管理之RPM RPM 全名是 "RedHat Package Manager" 简称则为 RPM 顾名思义,当初这个软件管理的机制就是由 Red Hat 这家公司开发出来的 RPM 是以一种数据库记录的方式来将你所需要的软件安装到你的 Linux 系统的一套管理机制. RPM命令是RPM软件包的管理工具,rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎,逐渐受到其他发行版的采用,RPM套件管理方式的出现,让Linux易于安装,升级,间接提升了Linux的适用度. 那么 RPM 包的特点有哪些呢 ? ⦁ 有专门的工具进行安装、卸载、升级和管理软件,管理起来更加方便. ⦁ 安装简洁、速度快,由于使用RPM无需编译所以安装效率非常高. ⦁ RPM包由于经过了封装,所以我们无法直接获取其源代码. ⦁ 由于经过了封装,所以其功能选择性差,功能定制不灵活. RPM包的命名方式有哪些 ? i386,i586,i686,noarch,x86_64代表的含义是 ? 代码语言:javascript 复制 [root@localhost ~]# ls -lh total 3.1M -r--r--r--. 1 root root 1.8M Jan 17 2018 bind-9.9.4-61.el7.x86_64.rpm -r--r--r--. 1 root root 1.2M Jan 8 2018 httpd-2.4.6-80.el7.x86_64.rpm bind .9.9.4 -61 .el7 .x86_64 .rpm ↑ ↑ ↑ ↑ ↑ ↑ ① ② ③ ④ ⑤ ⑥ 1.软件名称:本例软件名为bind 2.软件版本:本例软件版本为9.9.4-61 3.发布次数:本例修改了61次 4.编译平台:编译平台有(el8=RHEL8,el7=RHEL7,el6=RHEL6) 5.适合平台:平台有(i386,i586,i686,noarch,x86_64) 6.打包格式:这里是rpm包,还有一种gpkg包. 好了,看了这么多内容,下面我们开始进入正题,分别来介绍这些命令的含义吧. ◆RPM 安装软件◆ 因为安装软件是ROOT的工作,因此你得要是ROOT的身份才能够使用RPM这个命令的,用RPM来安装很简单,下面我们就来先看他的参数说明吧. 代码语言:javascript 复制 [root@localhost ~]# rpm --help 命令语法:[ rpm [选项] 包名称 ] -i #安装一个新的rpm软件包 -v #显示安装详细过程 -h #以"#"号显示安装的进度 --nodeps #不检测依赖安装 --force #强制安装,不管软件是否存在,都强制重新安装(修复软件) --test #测试安装,不真正安装,检测软件依赖关系 --prefix #指定安装路径,不按照默认路径安装 --replacefiles #以覆盖写入方式安装 --replacepkgs #重复安装软件 --justdb #更新软件在数据库内的相关信息 --nosignature #忽略数字证书检测 --noscripts #禁止软件安装过程中执行某些命令 一般来说RPM的安装选项与参数大约就是这些了,通常建议直接使用 -ivh 就好了,如果安装的过程中发现问题,一个一个去将问题找出来,尽量不要使用 "暴力安装" ,就是通过 --force 去强制安装,因为可能会发生很多不可预期的问题,除非你很清楚的知道使用上面的参数后,安装的结果是你预期的. ◆RPM 查询信息◆ RPM在查询的时候,其实查询的地方是在 /var/lib/rpm/ 这个目录下的数据文件,另外RPM也可以查询未安装的RPM软件资料,下面我们先来看看可用的参数吧. 代码语言:javascript 复制 [root@localhost ~]# rpm --help 命令语法:[ rpm [选项] 包名称 ] [查询已安装软件] -q 软件名 #查看指定软件是否安装 -qa #查看系统中所有已安装的软件 -qi 软件名 #查看指定软件的详细信息 -qc 软件名 #列出软件所以设置文件 -qd 软件名 #列出软件所以帮助文件 -ql 软件名 #查看指定软件安装的目录和文件列表 -qR 软件名 #查看指定软件的依赖关系 –qf 文件或目录 #查询文件或者目录,是由哪个软件包安装产生的 [查询未安装软件] -qpi 包全名 #查看指定未安装软件的详细信息 -qpl 包全名 #查看指定未安装软件的默认安装位置(预览) -qpR 包全名 #查看指定未安装软件的依赖关系 实例1:使用rpm -qi查看一个软件的详细说明. 代码语言:javascript 复制 [root@localhost ~]# rpm -qi tree Name : tree Version : 1.6.0 Release : 10.el7 Architecture: x86_64 Install Date: Thu 15 Nov 2018 07:18:16 AM EST Group : Applications/File Size : 89505 License : GPLv2+ Signature : RSA/SHA256, Wed 02 Apr 2014 05:33:48 PM EDT, Key ID 199e2f91fd431d51 Source RPM : tree-1.6.0-10.el7.src.rpm Build Date : Mon 27 Jan 2014 12:29:58 PM EST Build Host : x86-020.build.eng.bos.redhat.com Relocations : (not relocatable) Packager : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla> Vendor : Red Hat, Inc. URL : http://mama.indstate.edu/users/ice/tree/ Summary : File system tree viewer Description : The tree utility recursively displays the contents of directories in a tree-like format. Tree is basically a UNIX port of the DOS tree utility. 实例2:使用rpm -ql查看软件安装释放的目录. 代码语言:javascript 复制 [root@localhost ~]# rpm -ql tree /usr/bin/tree /usr/share/doc/tree-1.6.0 /usr/share/doc/tree-1.6.0/LICENSE /usr/share/doc/tree-1.6.0/README /usr/share/man/man1/tree.1.gz 实例3:使用rpm -qR查看软件依赖关系. 代码语言:javascript 复制 [root@localhost ~]# rpm -qR tree libc.so.6()(64bit) libc.so.6(GLIBC_2.14)(64bit) libc.so.6(GLIBC_2.2.5)(64bit) libc.so.6(GLIBC_2.3)(64bit) libc.so.6(GLIBC_2.3.4)(64bit) libc.so.6(GLIBC_2.4)(64bit) rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rtld(GNU_HASH) rpmlib(PayloadIsXz) <= 5.2-1 实例4:使用rpm -qf查看指定文件是由那个包安装的. 代码语言:javascript 复制 [root@localhost ~]# rpm -qf /bin/bash bash-4.2.46-30.el7.x86_64 [root@localhost ~]# rpm -qf /bin/ls coreutils-8.22-21.el7.x86_64 实例5:使用rpm -qpi查看一个未安装软件详细信息. 代码语言:javascript 复制 [root@localhost ~]# rpm -qpi bind-9.9.4-61.el7.x86_64.rpm warning: bind-9.9.4-61.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY Name : bind Epoch : 32 Version : 9.9.4 Release : 61.el7 Architecture: x86_64 Install Date: (not installed) Group : System Environment/Daemons Size : 4556343 License : ISC Signature : RSA/SHA256, Wed 17 Jan 2018 05:28:47 AM EST, Key ID 199e2f91fd431d51 Source RPM : bind-9.9.4-61.el7.src.rpm Build Date : Wed 17 Jan 2018 04:15:44 AM EST Build Host : x86-034.build.eng.bos.redhat.com Relocations : (not relocatable) Packager : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla> Vendor : Red Hat, Inc. URL : http://www.isc.org/products/BIND/ Summary : The Berkeley Internet Name Domain (BIND) DNS (Domain Name System) server Description : BIND (Berkeley Internet Name Domain) is an implementation of the DNS (Domain Name System) protocols. BIND includes a DNS server (named), which resolves host names to IP addresses; a resolver library (routines for applications to use when interfacing with DNS); and tools for verifying that the DNS server is operating properly. ◆RPM 升级软件◆ 使用 RPM 来升级真是太简单了,就以 -Uvh 或 -Fvh 来升级即可,而 -Uvh 与 -Fvh 可以用的选项与参数,跟 install 是一样的,不过 -U 与 -F 的意义还是不太一样的,下面我们来开一下它的配置信息吧. 代码语言:javascript 复制 [root@localhost ~]# rpm --help 命令语法:[ rpm [选项] 包名称 ] -v #显示安装详细过程 -h #以"#"号显示安装的进度 -U #升级安装,若没安装,则直接安装,若安装有旧版本,则升级安装 -F #升级安装,若没安装,则不安装,必须有旧版本,才进行升级安装 由上面的说明来看,如果你想要大量的升级系统旧版本的软件,使用 -Fvh 则是比较好的作法,因为没有安装的软件不会安装到你的系统,但是需要注意的是,如果你使用的是 -Fvh ,偏偏你的机器上没有安装该软件,那么该软件并不会被安装在你的 Linux 主机上面,所以请重新以 ivh 来安装吧. ◆RPM 验证证书◆ 验证(Verify)的功能主要在于提供系统管理员一个有用的管理机制,作用的方式是使用 "/var/lib/rpm" 下面的数据库数据内容来比对目前 Linux 系统的环境下的所有软件信息,也就是说当你有文件不小心遗失,或者因为你误删除掉了某软件的文件,我们就用这个简单的方法来验证一下原本的软件系统吧,好让你了解这一阵子到底是修改到哪些文件,下面我们先来看一下它的常用参数吧. 代码语言:javascript 复制 [root@localhost ~]# rpm --help 命令语法:[ rpm [选项] 包名称 ] -V 软件名 #验证指定软件安装后的完整性,及文件的元数据是否发生变化 -Va #列出目前系统上所有被改动过的文件 -Vf 文件名 #验证指定文件是否被修改过 -Vp 文件名 #列出该软件内可能被改动过的文件 下面,我们通过验证一个文件,看其是否被修改过吧. 代码语言:javascript 复制 [root@localhost ~]# rpm -Vf /etc/profile S.5....T. c /etc/profile #↑ 验证结果 ↑ 文件类型 ↑ 文件位置 你会发现在文件名 /etc/profile 之前有个 c 然后就是一堆奇怪的文字了,那个c代表的是配置文件,至于最前面的八个选项,我们在下面说明一下吧: 验证结果具体的信息: s -------------> 文件大小是否改变 M -------------> 权限是否被改变 5 -------------> 文件的MD5校验和是否改变(即文件内容) D -------------> 主从设备号是否改变(/dev/) L -------------> 文件路径是否改变 U -------------> 文件的属主是否改变 G -------------> 文件的属组是否改变 T -------------> 文件的修改时间是否改变 文件类型具体分类: c -------------> 配置文件 d -------------> 普通文件 g -------------> 鬼子文件,该文件不应在RPM包中 l -------------> 授权文件 r -------------> 描述文件 经过验证的功能,你就可以知道那个文件被更动过,那么如果该文件的变更是预期中的,那么就没有什么大问题,但是如果该文件是非预期的,那么是否被入侵了了呢,所以说一般配置文件被改动比较正常,要是二进制文件被改动,可能是被入侵了,我们就要提高警惕了啊,毕竟对于一个运维人员来说,背黑锅还是很不爽的啊. 谈完了程序的验证后,不知道你有没有发现一个问题,那就是,验证只能验证程序内的数据与 /var/lib/rpm/里面的数据是否对应而已,如果该程序数据库所提供的数据本身就有问题,那你使用验证的手段也无法确定该软件的正确性啊.下面就出现了数字证书的概念. 就像你自己的签名一样,我们的软件开发商原厂所推出的软件也会有一个厂商自己的证书系统,只是这个证书被数字化了而已,厂商可以生成一个专属的数字证书,并将该证书的公钥(public key) 放入其发行版中,当你要安装一个RPM时,系统会执行以下流程: ⦁ 首先必须找到原厂的公钥文件,然后进行安装 ⦁ 然后安装RPM包时,会去提取RPM包中的证书信息,然后和本机安装的原厂证书进行验证 ⦁ 如果验证通过,则允许安装;如果验证不通过,则不允许安装并警告 我们 RedHat 使用的数字证书系统为 GNU 计划的 GnuPG (GNU Privacy Guard, GPG)可以通过加密运算,算出独一无二的专属金钥系统或者是数字证书系统,我们也会知道首先必须要安装原厂的GPG数位证书的公钥才行,以下是数字证书的存放位置,其有两份,操作系统中有一份,原厂光盘里也有一份. 代码语言:javascript 复制 [root@localhost ~]# ls -lh /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release -rw-r--r--. 1 root root 3.2K Feb 28 2018 /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release [root@localhost ~]# ls -lh /mnt/RPM-GPG-KEY-redhat-release -r--r--r--. 1 root root 3.2K Feb 28 2018 /mnt/RPM-GPG-KEY-redhat-release 从上面的输出结果,可知证书的位置,下面我们开始安装它. 代码语言:javascript 复制 [root@localhost ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release 那安装完成之后,那我们先列出金钥软件名称后,再以 -qi 的方式来查询看一下软件的信息吧. 代码语言:javascript 复制 [root@localhost ~]# rpm -qa |grep pubkey gpg-pubkey-2fa658e0-45700c69 gpg-pubkey-fd431d51-4ae0493b [root@localhost ~]# rpm -qi gpg-pubkey-2fa658e0-45700c69 Name : gpg-pubkey Version : 2fa658e0 Release : 45700c69 Architecture: (none) Install Date: Thu 15 Nov 2018 09:39:17 AM EST Group : Public Keys Size : 0 License : pubkey Signature : (none) Source RPM : (none) Build Date : Fri 01 Dec 2006 06:05:13 AM EST Build Host : localhost Relocations : (not relocatable) Packager : Red Hat, Inc. (auxiliary key) <security@redhat.com> Summary : gpg(Red Hat, Inc. (auxiliary key) <security@redhat.com>) Description : -----BEGIN PGP PUBLIC KEY BLOCK----- Version: rpm-4.11.3 (NSS-3) mQGiBEVwDGkRBACwPhZIpvkjI8wV9sFTDoqyPLx1ub8Sd/w+YuI5Ovm49mvvEQVT VLg8FgE5JlST59AbsLDyVtRa9CxIvN5syBVrWWWtHtDnnylFBcqG/A6J3bI4E9/A UtSL5Zxbav0+utP6f3wOpxQrxc+WIDVgpurdBKAQ3dsobGBqypeX6FXZ5wCgou6C =d/bm -----END PGP PUBLIC KEY BLOCK----- 重点就是最后面出现的那一串乱码啦,那可是作为数字证书非常重要的一环,如果你忘记加上数字证书,很可能很多原版软件就不能让你安装,除非你利用 rpm 时选择略过证书. ◆RPM 卸载软件◆ 移除的选项很简单,直接通过 -e 即可移除,不过经常发生由于软件依赖关系而无法卸载的情况,下面看一下他的参数吧 代码语言:javascript 复制 [root@localhost ~]# rpm --help 命令语法:[ rpm [选项] 包名称 ] -e #卸载软件(注意卸载顺序) --nodeps #不检测依赖卸载 由于 RPM 软件常常会安装/移除/升级等,某些动作或许可能会导致 RPM 数据库 /var/lib/rpm/ 内的数据损坏,果真如此的话,我们可以使用 --rebuilddb 这个选项来重建一下数据库文件. ◆RPM 提取文件◆ 代码语言:javascript 复制 例如提取tree目录下的文件并恢复到指定文件 [root@localhost ~]# ls -l total 48 -rw-rw-r-- 1 root root 47508 Jul 4 2014 tree-1.6.0-10.el7.x86_64.rpm [root@localhost ~]# rpm2cpio tree-1.6.0-10.el7.x86_64.rpm |cpio -idv #提取tree包中的文件 ./usr/bin/tree ./usr/share/doc/tree-1.6.0 ./usr/share/doc/tree-1.6.0/LICENSE ./usr/share/doc/tree-1.6.0/README ./usr/share/man/man1/tree.1.gz 177 blocks [root@localhost ~]# ll total 48 -rw-rw-r-- 1 root root 47508 Jul 4 2014 tree-1.6.0-10.el7.x86_64.rpm drwxr-xr-x 4 root root 30 Sep 20 05:17 usr 软件管理之YUM 我们在本章一开始开始的地方谈到过 YUM 这个东西,这个 YUM 是通过分析 RPM 的标头数据后,根据各软件的相关性,制作出软件依赖解决方案,然后可以自动处理软件的依赖属性问题,以解决软件安装或移除与升级的问题,事实上RedHat在放出系统时,已经搭建好了提供给全球使用的软件源,所以理论上,我们不需要处理任何设定值,只要能够连接上Intelnet,就可以使用Yum来更新数据了. ◆本地YUM源配置◆ 虽然Yum工具,只需要你的主机连接互联网,就可以直接使用,但是有些时候我们需要自定义Yum源实现加速,下面我们将配置一个本地Yum源,来使用光盘中的软件,其他网络配置操作步骤相同,只是会在baseurl参数后面会有所区别. 1.首先默认情况下,我们的系统是没有给我们配置Yum源的,在这里我们需要在指定配置文件中创建一个以.repo结尾的文件. 代码语言:javascript 复制 [root@localhost ~]# cat /etc/yum.repos.d/redhat.repo [server] name="redhat yum" baseurl=file:///mnt enabled=1 gpgcheck=0 >>[server] ----------> 代表容器的名称,可以随便写 >>name ----------> 给容器起的名字,可自定义 >>mirrorlist ----------> 列出容器可以使用的镜像站点,不用可屏蔽 >>baseurl ----------> 默认镜像地址,可写本地地址,也可写FTP地址 >>enabled=1 ----------> 就是让容器启动 >>gpgcheck=0 ----------> 关闭证书检测 >>gpgkey ----------> 证书保存位置 2.第一步配置完毕以后,接下来我们来检查一下配置是否生效,和生成缓存文件. 代码语言:javascript 复制 [root@localhost ~]# yum repolist all Loaded plugins: product-id, search-disabled-repos, subscription-manager This system is not registered with an entitlement server. You can use subscription-manager. repo id repo name status Server "rhel7" enabled: 5,099 repolist: 5,099 [root@localhost ~]# yum makecache Loaded plugins: product-id, search-disabled-repos, subscription-manager This system is not registered with an entitlement server. You can use subscription-manager. Server | 4.3 kB 00:00:00 Metadata Cache Created 到此本地Yum仓库就配置好啦,下面是一些拓展信息. 网易Yum源仓库地址 wget http://mirrors.163.com/.help/CentOS6-Base-163.repo wget http://mirrors.163.com/.help/CentOS7-Base-163.repo 常用RPM包查询网站 curl https://centos.pkgs.org/ curl http://rpmfind.net/ curl https://dl.fedoraproject.org/pub/ ◆网络YUM源配置◆ 由于RedHat默认自带的YUM源需要注册才能更新,我们想不花钱也可以更新,需要将RedHat的YUM源替换成Centos的,如果你直接使用的是Centos的系统那么这一步可以跳过了,你可以直接使用官方提供的YUM仓库地址,下面我们来看一下如何替换RHEL系统的YUM文件吧. 1.查看RHEL7里面默认安装的YUM包文件,强制删除自带的YUM包,再见. 代码语言:javascript 复制 [root@localhost ~]# rpm -qa |grep "yum" yum-rhn-plugin-2.0.1-10.el7.noarch yum-metadata-parser-1.1.4-10.el7.x86_64 yum-3.4.3-158.el7.noarch [root@localhost ~]# rpm -qa |grep "yum" |xargs rpm -e --nodeps [root@localhost ~]# rpm -qa |grep "python-urlgrabber" |xargs rpm -e --nodeps [root@localhost ~]# rpm -qa |grep yum 3.下载好Centos的YUM包文件,并忽略依赖,强制安装. 代码语言:javascript 复制 [root@localhost ~]# wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-metadata-parser-1.1.4-10.el7.x86_64.rpm [root@localhost ~]# wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-3.4.3-161.el7.centos.noarch.rpm [root@localhost ~]# wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.31-50.el7.noarch.rpm [root@localhost ~]# wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-utils-1.1.31-50.el7.noarch.rpm [root@localhost ~]# wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/python-urlgrabber-3.10-9.el7.noarch.rpm [root@localhost ~]# ls -lh total 1.6M -rw-r--r-- 1 root root 109K Nov 12 10:19 python-urlgrabber-3.10-9.el7.noarch.rpm -rw-r--r-- 1 root root 1.3M Nov 12 10:27 yum-3.4.3-161.el7.centos.noarch.rpm -rw-r--r-- 1 root root 28K Jul 4 2014 yum-metadata-parser-1.1.4-10.el7.x86_64.rpm -rw-r--r-- 1 root root 34K Nov 12 10:27 yum-plugin-fastestmirror-1.1.31-50.el7.noarch.rpm -rw-r--r-- 1 root root 122K Nov 12 10:27 yum-utils-1.1.31-50.el7.noarch.rpm [root@localhost ~]# rpm -ivh --nodeps *.rpm 4.更换YUM源地址 代码语言:javascript 复制 [root@localhost ~]# rm -fr /etc/yum.repos.d/* [root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 5.修改CentOS-Base.repo文件中的$releasever全部替换为版本号7,直接更新缓存即可. 代码语言:javascript 复制 [root@localhost ~]# vim /etc/yum.repos.d/CentOS-Base.repo :%s/$releasever/7/g [root@localhost ~]# yum clean all [root@localhost ~]# yum makecache ◆YUM 仓库查询◆ 代码语言:javascript 复制 [root@localhost ~]# yum --help 命令语法:[ yum [选项] 包名称 ] -y #自动化安装,无需应答 installroot #安装时指定安装位置 search #搜索指定包文件 list #显示全部可用列表 info #显示软件相关信息 grouplist #查询所有已安装和可安装的软件组 groupinfo #列出软件组中包含的软件 provides #通过关键字查找安装包 指定安装位置: 使用installroot指定软件安装位置. 代码语言:javascript 复制 [root@localhost ~]# yum install -y --installroot=/tmp/ tree Loaded plugins: product-id, search-disabled-repos, subscription-manager This system is not registered with an entitlement server. You can use subscription-manager. Server | 4.3 kB 00:00:00 (1/2): Server/group_gz | 145 kB 00:00:00 (2/2): Server/primary_db | 4.1 MB 00:00:00 Package tree-1.6.0-10.el7.x86_64 already installed and latest version Nothing to do [root@localhost ~]# 查软件信息: 使用yum info命令查看软件具体信息. 代码语言:javascript 复制 [root@localhost ~]# yum info tree Loaded plugins: product-id, search-disabled-repos, subscription-manager This system is not registered with an entitlement server. You can use subscription-manager. Installed Packages Name : tree Arch : x86_64 Version : 1.6.0 Release : 10.el7 Size : 87 k Repo : installed From repo : Server Summary : File system tree viewer URL : http://mama.indstate.edu/users/ice/tree/ License : GPLv2+ Description : The tree utility recursively displays the contents of directories in a : tree-like format. Tree is basically a UNIX port of the DOS tree : utility. 查包文件: 使用provides通过关键字查询指定包,如下可知tree命令是由tree-1.6.0-10.el7.x86_64包安装的. 代码语言:javascript 复制 [root@localhost ~]# yum provides tree Loaded plugins: product-id, search-disabled-repos, subscription-manager This system is not registered with an entitlement server. You can use subscription-manager. tree-1.6.0-10.el7.x86_64 : File system tree viewer Repo : Server tree-1.6.0-10.el7.x86_64 : File system tree viewer Repo : @Server ◆YUM 清理缓存◆ 代码语言:javascript 复制 [root@localhost ~]# yum clean packages #清除缓存目录下的软件包 [root@localhost ~]# yum clean headers #清除缓存目录下的 headers [root@localhost ~]# yum clean oldheaders #清除缓存目录下旧的 headers [root@localhost ~]# yum clean all #清除下载的临时软件包和缓存 [root@localhost ~]# yum makecache #建立软件包缓存,提高查询速度 [root@localhost ~]# yum update #更新所有需要更新的软件&内核 ◆yum安装卸载◆ 代码语言:javascript 复制 [root@localhost ~]# yum install [软件名] #全部安装 [root@localhost ~]# yum groupinsall [软件组名] #安装程序组 [root@localhost ~]# yum remove [软件名] #删除软件 [root@localhost ~]# yum groupremove [软件组名] #删除软件组 ◆yum更新升级◆ 代码语言:javascript 复制 [root@localhost ~]# yum update [软件名] #全部更新 [root@localhost ~]# yum check-update #检查可更新的程序 [root@localhost ~]# yum upgrade [软件名] #升级指定程序包 [root@localhost ~]# yum groupupdate [组软件名] #升级程序组 ◆安装图形界面◆ 代码语言:javascript 复制 [root@localhost ~]# yum -y install xorg* [root@localhost ~]# yum -y groupinstall "X Window System" [root@localhost ~]# yum -y groupinstall Desktop [root@localhost ~]# yum -y groupinstall "Chinese Support" [root@localhost ~]# startx 软件管理之DPKG "dpkg"是"Debian Packager"的简写,为"Debian"专门开发的软件管理系统,方便软件的安装、更新及移除.所有源自"Debian"的"Linux "发行版都使用"dpkg",这个机制最早是由 Debian Linux 社区所开发出来的,通过 dpkg 的包管理, Debian 打包软件就能够简单的安装,同时还能提供安装后的软件维护与更新,只要是衍生于 Debian 的其他 Linux 发行版都 dpkg 这个机制来管理软件的,dpkg本身是一个底层的工具.上层的工具,如APT,被用于从远程获取软件包以及处理复杂的软件包关系,包括 B2D,Ubuntu,Kali Linux 等. 代码语言:javascript 复制 root@kali:~# dpkg --help 命令语法:[ dpkg [选项] 包名称 ] -i #安装软件包 -r #删除软件包 -P #删除软件包的同时删除其配置文件 -L #显示软件包文件列表 -l #显示已安装软件包列表 -c #显示软件包内文件列表 -s #显示指定软件包的详细状态 --unpack #解开软件包 --confiugre #配置软件包 安装软件: 通过使用-i选项安装pack.deb软件. 代码语言:javascript 复制 root@kali:~# dpkg -i pack.deb root@kali:~# dpkg --install pack.deb 删除软件: 通过使用-rP选项删除pack.deb软件(包括配置文件). 代码语言:javascript 复制 root@kali:~# dpkg -rP pack.deb root@kali:~# dpkg --remove pack.deb 列出软件包: 通过使用-l选项列出系统已安装的软件包. 代码语言:javascript 复制 root@kali:~# dpkg -l 详细信息: 通过使用-s显示指定软件详细信息. 代码语言:javascript 复制 root@kali:~# dpkg -s bash root@kali:~# dpkg -I bash 软件管理之APT Advanced Package Tool又名apt-get,是一款适用于Unix和Linux系统的应用程序管理器.最初于1998年发布,用于检索应用程序并将其加载到Debian Linux系统.Apt-get成名的原因之一在于其出色的解决软件依赖关系的能力.其通常使用.deb-formatted文件,但经过修改后可以使用apt-rpm处理红帽的Package Manager(RPM)文件,Apt-get在Linux社区得到广泛使用,成为用来管理桌面、笔记本和网络的重要工具.随着Linux在企业中的普及,Windows和Mac用户了解如何使用apt-get加载应用程序有一定的好处. 代码语言:javascript 复制 root@kali:~# apt --help 命令语法:[ apt [选项] 包名称 ] -i #安装软件包 list #根据名称列出软件包 search #搜索软件包描述 show #显示软件包细节 install #安装软件包 remove #移除软件包 autoremove #卸载所有自动安装且不再使用的软件包 update #更新可用软件包列表 upgrade #通过安装/升级软件来更新系统 apt-get安装: 代码语言:javascript 复制 root@kali:~# sudo apt-get install package #安装包 root@kali:~# sudo apt-get install package --reinstall #重新安装包 root@kali:~# sudo apt-get -f install #修复安装 root@kali:~# sudo apt-get bulid-dep package #安装相关的编译环境 apt-get删除: 代码语言:javascript 复制 root@kali:~# sudo apt-get remove package #删除包 root@kali:~# sudo apt-get remove package --purge #完全删除包 root@kali:~# sudo apt-get -f autoremove #把软件附加项也删掉 root@kali:~# sudo apt-get autoremove --purge software #删除的更彻底些 apt-get更新: 代码语言:javascript 复制 root@kali:~# sudo apt-get update #更新源 root@kali:~# sudo apt-get upgrade #更新已安装的包 root@kali:~# sudo apt-get dist-upgrade #升级系统 apt-get修复: 代码语言:javascript 复制 root@kali:~# sudo apt-get source package #下载该包的源代码 root@kali:~# sudo apt-get clean && sudo apt-get autoclean #清楚无用的包 root@kali:~# sudo apt-get check #检查是否有损坏的依赖 root@kali:~# sudo dpkg -i package #安装后缀是deb的 apt-get搜索: 代码语言:javascript 复制 root@kali:~# sudo apt-cache search package #搜索软件包 root@kali:~# sudo apt-cache show package #获取软件包信息 root@kali:~# sudo apt-cache depends package #了解使用该包依赖哪些包 root@kali:~# sudo apt-cache redepends package #查看该包被哪些包依赖

Go 插件功能的实现方式:

官方实现golang 1.8 及以上版本提供了一个创建共享库(shared object)的新工具,称为 Plugins。 init20210728 17:07:21 hello togettoyou20210728 17:07:21 I am plugin 定义一个插件总结:package 包名需要定义为 main必须有可导出的变量或函数不需要 main 函数插件加载时会先执行 init 函数Traefik Yaegi 实现Yaegi 是 Traefik 开源的 Go 解释器。 Traefik 自身的插件实现就是使用的 Yaegi 。Yaegi 运行在 Go 运行时之上,可以直接作为嵌入式解释器,或使用交互式 shell ,解释运行 Go 代码。 创建代码目录结构如下:│ go.mod│ go.sum│ main.go│└─plugin └─src └─hello go.mod hello.go 这里有个注意点,Yaegi 的插件需要放在 src

【独家深度】一家传统银行迈入大数据时代的“艰难心(辛)路历程”:

银行要提升系统的处理能力,传统的IOE架构大部分需要垂直升级而不能水平扩展,而垂直升级的成本是非线性增长,曾光尧打了个比方:“一台32核的小型机价格至少是同样配置的X86服务器的10倍以上,但由32核升级为 虽然互联网企业在当下只是对银行某一块金融业务造成了影响,但是,就如同曾光尧所说:“包括微众银行在内的各互联网金融机构一旦拿到相关经营牌照,肯定都会推出各种各样的金融创新业务,同传统银行展开直接竞争。 曾光尧称,以银行内部的风险预警模型数据批处理为例的话,以前系统跑一次批量至少需要两三个小时,而现在只需要20分钟就可以;以前每天200万次的并发量都让系统不堪重负,现在我们的应用服务架构可实现单节点每秒七万次以上的并发服务能力 曾光尧满怀欣喜地告诉记者:“在客户服务、风险管理、内部管控、营销管理等多个业务领域,都提升了我们恒丰银行的运营效率和市场竞争力,效果很明显啊”。大数据相关新技术的运用,拓展了传统应用的业务支持能力。 此外,基于大数据的系统架构,在容错能力方面也会得到提升,即使出现个别机器宕机也不会丢失任何数据,影响任何服务。不间断的服务能力减少了系统的运维成本,也提高了系统开发效率。

尘埃落定!特斯拉(上海)获营业执照,注资1亿:

整理 | Just出品 | AI科技大本营(公众号ID:rgznai100)5 月 14 日,据国家企业信用信息公示系统消息,特斯拉(上海)有限公司已于 5 月 10 日获上海浦东新区市场监管局核发的营业执照 根据营业执照信息,公司法人代表为 Xiaotong Zhu,应该就是特斯拉中国区总裁朱晓彤。百度百科资料显示,朱晓彤毕业于新西兰奥克兰理工大学,并在美国杜克大学富卡商学院获得 MBA 学位。 早在去年 6 月,就曾有传言称特斯拉要在上海建厂,建厂选址为上海浦东新区临港开发区,不过当时上海临港当时发公告对此予以否认。 继中国政府上月宣布最早今年就将允许外资新能源汽车制造商全资拥有在华工厂后,特斯拉正在加紧推进其在华建厂计划。 就连亚太区负责人也换成了土生土长的中国人任宇翔,现在负责全球销售事务。而在这之前,马斯克就曾公开表示特斯拉非常重视其在中国的发展和计划。

蜜蜂舆情:2018年上半年湖南高校舆情分析报告:

舆情发生地主要较为集中在湖南省会城市——长沙,其中岳麓区大学城达到8件。此外,在湘潭、衡阳等地区的高校舆情产生的频次也较高(见图2)。 图2 2018年上半年湖南高校舆情事件地域分布  3、湖南高校舆情事件传播渠道分析  从传播渠道来看,微博所产生的信息数量已远远超过传统媒体,占比30%;其次是微信,占比25%,其中湖南科技大学宿舍发生 另值得一提的是,社区论坛、报刊、政务网站对事件的曝光相对较少,占比均为10%。 在公共安全相关的高校舆情中,不仅有危及学生人身安全的殴打事件,更有如寝室死亡、高楼坠亡等大学生非正常死亡负面事件(见图4)。 此外,由高校行政管理漏洞也受到网民关注。这类型事件日益获得关注的同时,也反映出学生在自身权利受到损害时,主动维权意识的增强。

核心应用、核心优势

PHPOA为您提供安全、稳定、开源的一站式服务平台

💡

智能流程引擎

用户可根据自身特有需求,通过可视化自定义工作审批流程及审批节点。

智能表单引擎

傻瓜化的表单自定义功能,用户可以根据公司、行业需求来定义数据表单样式及表单项。

🔄

低代码开发引擎

不满意功能?无需代码基础,适合业务人员、IT开发及其他各类行政人员使用的数字化开发平台

📱

AI智能体

在复杂的工作查询场景中,通过AI多端接入,轻松开启智能AI办公。

🔍

自定义报表

提供特有的企业管理、报表自定义模版,使得管理工作更便捷、更专业。

🌐

多语言集成引擎

支持语言包自助集成,自由控制权限、切换,满足国际化管理应用场景。

多生态适配,源代码全开放

旨在为企业提供一站式、数智化转型的全方位解决方案

1

源代码全开放

源代码全开放,模块化开发框架。

2

多平台支持

支持Windows\Linux\Android\Ios\鸿蒙\微信

3

国产化应用

支持国产化操作系统及数据库,一键切换、快速安装。

PHP全开源数智化企业管理

一款安全、稳定、开源、免费的PHPOA产品,适应于企事业单位

简单透明的定价

选择适合您需求的安装计划,无隐藏费用

开源免费版

¥0重在分享、平衡生态
免费下载
独立部署
社群交流
开始免费使用

企业版

¥6980/永久
包安装、包上线(远程)
核心功能支持
独立部署
专属一对一QQ服务
永久授权
免费升级
移动端H5、APP、小程序
联系我们