avatar
文章
155
标签
73
分类
16

Home
Archives
Link
About
Liarlee's Notebook
搜索
Home
Archives
Link
About
DockerFile笔记
发表于2019-04-24|更新于2025-05-10|Docker
Dockerfile的书写规则及Dockerfile的指令说明。 Docker的镜像存储到Overlay2 Docker images ls # 查看所有的Docker Images Docker exec -it Container_Name /bin/sh # 将容器启动并执行shell命令行 Docker Images Docker Images中有启动容器所需要的文件系统及内容,用于启动并创建Docker容器,采用分层机制,最底层为bootfs,之上是rootfs rootfs:Docker的根文件系统,由Kernel挂载为“ReadOnly”模式,而后通过联合挂载技术额外挂在一个可写层 bootfs:用于系统引导的文件系统,包括bootloader及kernel,容器启动之后自动卸载 Docker Images Layer下层的镜像称为父镜像,最底层的叫做Base Images Aufs - Advanced multi-layered unification filesystem Overlayfs - 3.18版本被合并到Linux内核 Docker的分层镜像,除了Aufs,还支持btrfs,devicemapper和vfs Docker Registry - Docker daemon自动视图从DockerHub拉取镜像文件 Docker Registry的分类 Sponsor Registry:第三方,提供给客户或Docker社区 Mirror Registry:第三方,只给客户使用 Vendor Registry:由发布Docker镜像的供应商提供 Private Regisry:通过设有防火墙及额外的安全层的私有实体提供 云原生 - 面向云环境的运行了云系统本身的调用的程序。通过环境变量进行配置 Webhooks - 自动创建镜像 Quay.io 除了DockerHub其他的镜像仓库 docker pull quay.io/coreos/flannel:latest Docker镜像的保存与恢复docker save -o myimages.gz IMAGE_NAME1 IMAGE_NAME2 # 将多个镜像保存到本地压缩文件 scp myimages.gz # 传输镜像到其他节点 docker load -i myimages.gz # 在新的节点加载镜像 Docker FileDockerFile存在的意义docker exec CONTAINER –> vi –> RELOADDocker的容器不利于我们对需要反复调试的服务进行更改,通过Dockerfile的修改可快速调整容器的配置。 自定义镜像的方法基于Docker容器制作镜像 创建你需要的容器,Docker commit命令进行镜像的制作 docker run –name b1 -it busybox mkdir -p /data/html vi /data/html/index.html docker commit -p b1 docker tag IMAGE_ID REPOSITORY:TAG docker image ls docker image rm IMAGE_TAG docker imspect – cmd字段自动标志启动自动运行的命令 更改docker的默认运行命令 docker commit -p -a ‘Liarlee’ -c ‘CMD [“/bin/httpd”,”-f”,”-h”,”/data/html”]’ b1 hayden/httpd:v0.2 docker login -u USERNAME 登录到服务器 docker push Liarlee/httpd 基于DockerFile制作DockerImageDockerfile Format # 开头的为注释文字 INSTRUCTION arguments,采用指令+参数的格式 Dockerfile执行的时候是从上至下执行的 第一个非注释行必须是FROM指令 .dockerignore文件路径记录,可以通配,打包时忽略list中的文件可以使用环境变量替换BASH SHELL:echo ${NAME:-tom} 给一个变量设置一个默认值echo ${NAME:+tom} 如果变量有数值,强行改为默认值 - FROMFROM指定的镜像将自动拉取作为底层的镜像进行制作; FROM <repository>[:tag] FROM <repository>@<HASH number> EXAMPLE: FROM centos:latest # 使用Centos的最新发行镜像作为底层镜像 - MAINTAINER提供制作人的信息,废弃不用了,现在使用LABEL MAINTAINER "LiarLee<Test@LiarLee.com>" - LABELLABEL是给镜像指定元数据的命令 LABEL maintainer="LiarLee<Test@LiarLee.com>" - COPY复制本地文件或目录到镜像文件系统中。 COPY \<src> ... \<dest> COPY ["\<src>" ... "\<dest>"] \<src> -- 相对路径 \<dest> -- 绝对路径 - 指定的src目录,会将目录下的所有文件复制到目的地,但是不会将src复制。 - 如果使用了多个src,或者src使用了通配,目的必须是个目录 - 如果dest不存在会被自动创建 COPY /etc/passwd /etc/passwd # 与cp命令相似,复制本地目标文件到容器文件系统中 COPY /usr/local/src/nginx/* /usr/local/src/nginx/ # 如果目标目录不存在需要先行创建 Docker Build命令[root@Hayden test]# docker build -h Flag shorthand -h has been deprecated, please use --help Usage: docker build [OPTIONS] PATH | URL | - Build an image from a Dockerfile Options: --add-host list Add a custom host-to-IP mapping (host:ip) --build-arg list Set build-time variables --cache-from strings Images to consider as cache sources --cgroup-parent string Optional parent cgroup for the container --compress Compress the build context using gzip --cpu-period int Limit the CPU CFS (Completely Fair Scheduler) period --cpu-quota int Limit the CPU CFS (Completely Fair Scheduler) quota -c, --cpu-shares int CPU shares (relative weight) --cpuset-cpus string CPUs in which to allow execution (0-3, 0,1) --cpuset-mems string MEMs in which to allow execution (0-3, 0,1) --disable-content-trust Skip image verification (default true) -f, --file string Name of the Dockerfile (Default is 'PATH/Dockerfile') --force-rm Always remove intermediate containers --iidfile string Write the image ID to the file --isolation string Container isolation technology --label list Set metadata for an image -m, --memory bytes Memory limit --memory-swap bytes Swap limit equal to memory plus swap: '-1' to enable unlimited swap --network string Set the networking mode for the RUN instructions during build (default "default") --no-cache Do not use cache when building the image --pull Always attempt to pull a newer version of the image -q, --quiet Suppress the build output and print image ID on success --rm Remove intermediate containers after a successful build (default true) --security-opt strings Security options --shm-size bytes Size of /dev/shm -t, --tag list ...
Fedora开机启动速度的优化
发表于2019-01-13|更新于2025-05-10|Linux
一直认为我的虚拟机性能不够所以导致自己的机器开桌面环境,开机慢慢慢慢慢慢…….今天终于发现了原因….. 过程使用systemd-analyze 命令使用systemd-analyze blame 命令罗列所有的启动的服务和耗时 我的机器耗时间最长的是 dnf-makecache.service 占用了 1min 8.124s; plymouth-quit-wait.service 占用了 1min 744ms 配置所以关闭它,阻止今后开机的时候启动 systemctl disable dnf-makecache.service systemctl disable dnf-makecache.timer 或者就直接把这个服务指向 /dev/null 也是可以的, 总体来说就是让他开机的时候不要继续启动。 systemctl mask dnf-makecache.service systemctl mask dnf-makecache.timer systemctl mask plymouth-quit-wait.service systemctl mask firewalld.service 尽量不使用DHCP使用固定的IP可以提高启动速度,其他的不需要服务可以自行关闭即可 优化后的结果[root@localhost ~]# systemd-analyze Startup finished in 3.091s (kernel) + 1.669s (initrd) + 5.211s (userspace) = 9.971s [root@localhost ~]# systemd-analyze blame 2.868s vmware-tools.service 1.317s lvm2-monitor.service 1.115s dev-mapper-fedora\x2droot.device 1.044s fwupd.service 865ms NetworkManager-wait-online.service 834ms systemd-udev-settle.service 794ms dracut-initqueue.service 715ms udisks2.service 566ms sssd.service 533ms initrd-switch-root.service 443ms abrtd.service 404ms systemd-udev-trigger.service 326ms systemd-journal-flush.service 280ms ModemManager.service 259ms libvirtd.service 251ms polkit.service 209ms chronyd.service 199ms NetworkManager.service 192ms systemd-vconsole-setup.service 164ms accounts-daemon.service 149ms user@42.service 146ms systemd-udevd.service 143ms dracut-cmdline.service 137ms dracut-pre-pivot.service 137ms systemd-tmpfiles-setup-dev.service 134ms systemd-sysctl.service 131ms packagekit.service 124ms gssproxy.service 119ms fedora-readonly.service 116ms lvm2-pvscan@8:2.service 111ms user@0.service 110ms avahi-daemon.service 105ms auditd.service 105ms dmraid-activation.service 101ms gdm.service 86ms systemd-user-sessions.service 71ms fedora-import-state.service 65ms initrd-parse-etc.service 58ms upower.service 51ms systemd-logind.service 47ms var-lib-nfs-rpc_pipefs.mount 47ms systemd-fsck@dev-disk-by\x2duuid-e37f7ce7\x2d367b\x2d4e28\x2d8c1e\x2d3b98d1e4d441.service 46ms systemd-journald.service 45ms systemd-tmpfiles-setup.service 44ms boot.mount 41ms home.mount 41ms wpa_supplicant.service 40ms dev-hugepages.mount 37ms nfs-config.service 35ms plymouth-read-write.service 33ms rpc-statd-notify.service 30ms systemd-remount-fs.service 30ms systemd-fsck@dev-mapper-fedora\x2dhome.service 27ms geoclue.service 27ms cups.service 26ms colord.service 24ms livesys.service 23ms rtkit-daemon.service 22ms dracut-pre-udev.service 21ms dev-mqueue.mount 21ms dracut-shutdown.service 20ms sysroot.mount 20ms switcheroo-control.service 20ms plymouth-start.service 19ms plymouth-switch-root.service 19ms kmod-static-nodes.service 16ms dev-mapper-fedora\x2dswap.swap 16ms initrd-cleanup.service 15ms systemd-fsck-root.service 13ms livesys-late.service 10ms sys-kernel-debug.mount 6ms systemd-update-utmp-runlevel.service 6ms initrd-udevadm-cleanup-db.service 6ms systemd-update-utmp.service 6ms systemd-random-seed.service 5ms tmp.mount 2ms sys-kernel-config.mount 可以通过命令查看systemd的一些信息: systemctl --failed # 查看所有启动或者运行失败的服务 systemctl status # 查看系统启动之后的所有Service 以及状态 Mark Tips axel dnf可用的多线程更新 yum-fastestmirror 自动挑选最快的服务器更新 附加一个systemd的使用教程:- ClickThisLink 附加一个plymouth的教程:- ClickThisLink
VMwareTools共享文件夹方案
发表于2019-01-08|更新于2025-05-10|Linux
升级了VMware Workstation 15, 迁移过来Fedora 27的虚拟机里面不能共享剪贴板,不能拖拽复制,共享文件夹设置之后不会挂载在/mnt/hgfs目录下,找到的解决方案如下: 解决共享剪贴板 fedora 27下,直接安装 dnf update -y dnf install -y open-vm-tools-desktop OR dnf install -y open-vm-* 重启虚拟机即可 解决挂载VMware共享文件不显示 这个问题我的解决办法是: 卸载这个机器上的open-vm-tools所有包,安装VMware提供的Tools,才可以正常使用 那么步骤如下: dnf remove -y opem-vm-* reboot ------------ 在VMware中,选择安装VMwareTools,然后提示推荐使用Open-VM-Toools工具,输入YES,强制安装 一路回车,直到出现Enjoy. reboot 重启之后可以在/mnt/hgfs目录下看见共享的目录了,完美 如果需要可以添加一条指令在/etc/fstab条目,vim /etc/fstab - .host:/SHAREDFOLDERNAME /mnt/hgfs vmhgfs defaults 0 0 收工
荣耀8-刷LineageOS14.1简述
发表于2018-07-08|更新于2025-05-10|Linux
荣耀8刷LineageOS 14.1 , 感谢XDA的大神们。用到的刷机包我转存了一份到微云,链接在末尾。 一 基本情况 设备: 华为荣耀8 FRD-AL10 国行 初始系统版本: B396 EMUI 5.0.1 解锁状态: Phone Unlocked 二 需要准备的原料 手机 SD卡 电脑一台,USB线一根 荣耀8海外版安装包 Name:update.zip & update_data_full_hw_usa.zip OpenKirin TWRP 3.1.1.1 Name:twrp-3.1.1-1-frd.img LineageOS ROM From XDA Name:lineage-14.1-20170812-Unofficial.zip OpenGAPPS Name:open_gapps-arm64-7.1-stock-20180705.zip SuperSU Name:SuperSU-v2.82-201705271822.zip Dolby ATOM安装包 三 流程1 解锁手机 首先需要进行华为手机的解锁,百度一下有很多,所以不再过多的介绍。 需要知道是我大华为要关闭后续的解锁服务了,所以今后即便是刷如果你没有解锁码也只能作罢。 2 复制安装包到SD卡 在SD卡上新建一个文件夹,名字叫做packages , 或者其他也可以。 复制4-9项文件到SD卡 将SD卡放入手机。 3 写入TWRP 解锁之后可以使用命令来写入TWRP Recovery。 Recovery使用的openkirin项目组的版本。请自行确保驱动及手机的连接处于正常状态即可。 打开adb工具目录,在工具目录中使用Shift+鼠标右键,将文件夹在命令行或Powershell中打开。 adb.exe devices —— ## 查看是否识别手机成功。 adb.exe reboot fastboot ——— ## 将手机重启至fastboot模式. NOTE – 进入fastboot的方式,除了adb reboot fastboot之外还可以,关机,手机连接电脑,开机键加*音量-*,直到出现fastboot界面为止。 fastboot.exe flash recovery ./twrp-3.1.1.1-frd.img —— ## 写入Recovery fastboot.exe reboot —— ## 重启手机。 4 安装海外版ROM XDA原帖 – HERE 拔掉数据线,关机,长按 音量+ 和 开机 , 直到出现 解锁警告 和 Your device is booting now … 进入Recovery,一次进入Install – Select Storage – Micro SDCard – OK – Packages。 点击update.zip – Swipt to confirm Flash. 等待写入成功后会自动重启。 自动进入eRecovery安装更新,这个是正常的,不用管他就好。 安装更新之后会自动重启,这个时候TWRP会被覆盖,也就是说你的TWRP手机上已经没有了,被替换成了ROM里面华为默认的recovery,需要重新进入fastboot再写入一次TWRP。 按照写入TWRP的步骤再来一次即可。 NOTE – 如果提示写入TWRP失败,需要再使用解锁码解锁一次手机,不要需要管fastboot界面的那个提示。我的手机当时显示的是已经解锁,但是其实是没有的,需要2次解锁手机才可以写入TWRP。 再次进入TWRP之后,重复第2步,找到update_data_full_hw_usa.zip – Swipt to confirm Flash. 自动写入成功后会自动重启,进入系统后查看关于手机,其中名称变为NRD90M。说明我们已经可以写入LineageOS了。 5 卡刷LineageOS XDA原帖 – HERE 我用的是US Model – FRD-L14C567 – B360 ,可以使用。 重启手机,进入TWRP, 双清,格式化data分区。 选择lineage-14.1-20170812-Unofficial.zip – Swipt to confirm Flash. 等待写入成功之后重启。NOTE – 如果写入之后一直卡在开机动画,解决方法是进入TWRP – 格式化data分区即可。 第一次开机的过程可能有些慢,但是只要第一进入了系统就可以了,后面不会再出现问题了。 刷入LineageOS完成。 6 安装SuperSU SuperSU官网 – HERE 选择SuperSU-v2.82-201705271822.zip – Swipt to confirm Flash. 进入系统就可以看到了,可以直接使用。 如果不是用SuperSU,可以使用Magisk,好像这个好用一些。 7 安装OpenGAPPS OpenGAPPS官网 – HERE 进入TWRP, 选择open_gapps-arm64-7.1-stock-20180705.zip – Swipt to confirm Flash. 重启之后就可以在系统里面看到了,我选择的这个版本是替换系统应用的版本,所以可以提供一个近乎于原生的体验。 8 安装杜比ATOMS XDA原帖 – HERE 选择dax_lemax2_v1.6.3.zip – Swipe to confirm Flash.NOTE – 帖子中给出了五个安装包,我基本上是尝试到第二个的时候成功了,所以我在这个把原帖放出来是说,可能这个需要不同的机型去尝试。 重启可以在系统应用中直接看到。可以开启或者关闭。 可以选择使用Viper或者Dolby,看自己的喜好了。NOTE – 这种应用,我觉得有一个就够了,其实只是优化一下外放的效果。 四 结尾只是不习惯如此多的ROM里面内置了很多我不使用的应用,还不能删除。其实还是那句话,不建议刷机,如果你知道自己在做什么。 五 共享下载资源包括我所有文中使用到的安装包及文件,我上传到了微云,下载链接如下。NOTE – opengapps的安装包我替换成了pico,这样不需要翻墙,只有Google的框架和基础应用,也不会替换系统应用。下载地址 – HERE密码:9yn57o
Hexo备份和恢复
发表于2018-07-03|更新于2025-05-10|Hexo
hexo 博客的备份和还原方法。 这里是介绍安装步骤:Hexo_Install 尝试在我写博客的虚拟机里面使用了一个破坏性的命令,dnf autoremove 这个命令导致我的虚拟机彻底坏了。我恢复了快照,但是是两个月前的记录了, 对于如何回复自己的博客内容, 找到了这样一个解决方案。 思路 在 github 上设置一个新的分支 hexo。 在这个分支上放置自己工作目录下的原始文件。 每次推送Blog到github的时候同时推送自己的工作目录到github。 当需要恢复自己的本地环境的时候,直接从github上面Clone下来就可以了。 之前的思路是去hexo的工作目录下面找blog的项目,编译之后推送静态页面到gtihub。现在是直接把工作目录传上去,用的时候下载下来。 步骤 准备一个新的工作目录, 在目录下git clone 自己的 Blog 项目。git clone https://github.com/xxxx/xxxx.github.io.git 创建目录结构。 到 xxxx.github.io 目录下面,保留下面的 .git 目录,删除所有的其余目录。 将之前的hexo工作目录的所有文件复制到 xxxx.github.io 下。 在 xxxx.github.io 目录下放置 .gitignore 文件,内容如下: .DS_Store Thumbs.db db.json *.log node_modules/ public/ .deploy*/ cd 到 xxxx.liarlee.io 目录下,使用命令新建分支: git checkout -b hexo 将hexo工作目提交到缓存 git add --all 提交到github的hexo分支 git commit -m "SaySomethingHERE“ 推送到自己博客项目的hexo分支下 git push --set-upstream origin hexo 现在项目下面就有两个分支了, main 分支 和 hexo 分支, main 分支里面是 渲染好的前端静态文件, hexo 分支里面是整个项目原始代码以及配置文件。 新的完整更新步骤git add --all git commit -m "SaySomethingHERE" git push origin hexo hexo clean && hexo g -d 恢复hexo的工作目录 sudo cnpm install -g hexo-cli dnf install -y npm sudo npm install -g cnpm –registry=https://registry.npm.taobao.org cd Liarlee.github.io/Liarlee sudo cnpm install -no-bin-links sudo cnpm install hexo-deployer-git 去Github上面添加机器的ssh public key 尝试使用hexo d , 查看是否可以成功。
RPM制作的笔记
发表于2018-07-03|更新于2025-05-10|Linux
关于制作RPM包的笔记~ 一. 制作RPM包教程源码包的制作教程基于RHEL 5 & 6,当我写这个的时候还没有7版本, 我会在后续更新新版本的路数(大半夜翻到这个破防了, 来自18年的flag , 现在是时间是 2023 - 08 - 18 , 过了。 1. Rpm包的制作流程简述 放置源码进入SOURCES文件夹 写好SPEC文件 运行rpmbuild命令,自动执行安装和清理 自动将所有的源码解压到BUILD目录 自动安装所有的源码程序到BUILDROOT目录 自动根据SPEC文件里面的file程序段打包到rpm包中 自动进行后续的清理 生成完整的RPM包 手动进行安装测试 2. 如何做准备需要明确的几个问题: 我们需要做一个什么样的RPM包,这个RPM包使用来做什么的,RPMs不一定包含的是二进制的内容,不一定需要编译。 至少我们需要源码,注意原材料的收集。 官方建议使用干净的源码,如果有补丁需要在制作的过程中打上补丁。 同一个软件,不同版本的RPM,新版本是否可以支持升级旧版本。需不需要清理旧版本的文件。升级是否会造成冲突。 依赖关系。 每一个PRM包都提供一种功能,Capability,可以被其他的PRM包依赖。RPM包的名字和所安装的文件都可以给其他的软件提供依赖。 自身名字的意义,提供的每一文件也可以被依赖, 他的安装和运行需要依赖于其他的RPM包本身或者所具有的文件,叫做依赖关系。 两类依赖关系,编译依赖和安装依赖。 规划依赖关系,写SPEC文件。 制作RPMs。 简单测试RPMs。 3. RPMs的规划 是否是应用程序,是否需要补丁,是否需要新的功能。 是一个程序的库文件 是一个系统配置文件集 是一个文档文件包 是否拆分完整的软件,例如:MySQL-5.5.22.tar.gz,在制作RPM包的时候被拆分为MySQL,mysql-server,mysql-devel,等等。 是一个二进制还是源码,当时都有。例如:src.rpm,里面包括了 source.tar.gz 和 spec,需要使用者安装完成之后编译再安装。 4. 制作过程1. 设计目录结构(set Up the Directory structure)制作RPM过程中千万不能用root用户每个版本对于目录的要求不同,五个不同的目录: BUILD:不需要放任何的内容,这个目录是真正工作的目录。用于解压编译源码。 RPMS:制作完成的RPM包放在这个里面,里面的目录的名字和结构与特定平台架构有关,可以交叉平台编译。 SOURCES:所有收集的源码都在这个目录里面。 SPECS:放置SPEC文件,作为制作过程的指导说明。以软件包的名字命名,以.spec结尾。 SRPMS:放置了SRC(source)格式的RPM包。红帽提供了默认的制作目录,在/usr/src/redhat. [LiarLee@localhost ~] tree /usr/src/redhat 2. 放置文件到正确的指定的目录(Place The Sources in the Right dirctory)。 我们首先需要自己制定自己的制作源码目录,在不使用root用户的前提下进行制作,需要修改系统的宏,来制定新的工作目录。修改工作目录的过程如下: 使用命令查看默认的宏: [LiarLee@localhost ~] rpmbuild --showrc \\ 显示所有的相关宏定义 _build——表示目录; __rm——表示命令 使用命令查看默认的配置文件: [LiarLee@localhost ~] rpmbuild --showrc | grep macrofiles \\ 显示配置文件的全局路径和文件名 \\ 权限由小到大,后一个文件的参数覆盖前面所有的定义 \\ 所以我们在家目录下创建隐藏文件.rpmmacros可以直接配置自定义的设置。 使用命令查看默认的工作目录定义: [LiarLee@localhost ~] rpmbuild --showrc | grep _topdir \\ 显示默认的工作目录宏定义 \\ 以相同的模式在.rpmmacros中直接覆盖配置,可以更改工作目录 更改topdir的宏,使用rpmbuilder的用户,创建.rpmmacros,添加内容配置宏: [LiarLee@localhost ~] vim .rpmmacros \\ Create .rpmmacros file %_topdir /home/rpmbuilder/rpmbild/ [LiarLee@localhost ~] mkdir -pv rpmbuild/{BUILD,RPMS,SOURCES,SPEC,SRPMS} [LiarLee@localhost ~] rpmbuild --showrc | grep _topdir \\ Review the Result 3. 创建一个spec文件(Create A Spec File that Tells the Rpmbuild Command what to do)。 spec文件使用软件的名字版本作为文件名;.spec作为扩展名。 rpm -qi mysql & rpm -qpi mysql,命令查看rpm信息,信息从spec文件中定义,软件包信息说明段落定义。 spec文件有如下几个段落: The introduction section设置软件包的基本信息Summary: \\ 简单描述 Name: \\ 软件名字 Version: \\ 版本号 Release: \\ 发行号 License: \\ 协议 Group: \\ GROUP范围在这个文件中描述 /usr/share/doc/rpm-*/GROUPS URL: \\ 从何处获取的站点链接,下载路径 Packager: \\ 制作者<制作者邮箱> Vendor: \\ 制作者的公司或者本人名字 Source: \\ 源文件地址,一个链接地址 BuildRoot: \\ 制作RPM包的时候的虚拟Root目录 BuildRequires: \\ 制作过程依赖于哪些软件包的名字 The prep section解压源码包到BUILD目录的段,cd到需要的目录,设置环境变量。%prep %setup The build section这是源码包安装的make过程.%build ./configure OR %configure ./make OR %{__make} make % {?_smp_mflags} \\ 多对称处理器加速编译 The install section这里是安装make install过程。系统中有install命令,install方式类似于COPY模式.%install %{__rm} %{__make} install DESTDIR="%{buildroot}" %find_lang %{name} 5. The script section 这里是定义执行需要的脚本,用来配置环境。例如:添加Apache用户. %pre Note:安装前执行 %post Note:安装后执行 %preun Note:卸载前执行 %postun Note:卸载后执行 6. The clean section 清理之前所用到的BuildRoot目录的。 %clean %{__rm} 7. The files section 对安装的软件的程序进行规划,哪些文件安装到那个文件夹,**BUILDROOT下的所有文件必须在这个段中存在** %files %config(noreplace) \\ 不替换旧的配置 8. The changelog section 记录版本迭代 * Wed Apr 11 2012 Liarlee.site <Liarlee@site.com> - ReleaseNumber 更改时间 - Comments - Comments 4. 开始编译(Build The Source and Binary RPMs) rpmbuild命令说明: rpmbuild -bp \\ 执行到prep section rpmbuild -bc \\ 执行到build section rpmbuild -bi \\ 执行到install section rpmbuild -bs \\ 制作源码格式的制作 rpmbuild -bb \\ 制作二进制格式的rpm包 rpmbuild -ba \\ 执行全部格式,BOTH二进制和源码 rpmbuild -bl \\ BUILDROOT存在但是没有在FILES段中为包含进去的文件的CHECK命令 关于安装错误的说明:在执行过程中如果有报错我们只需要去按照提示修正错误即可,在执行结束之后会在RPMS目录下生成需要的RPM包和RPM-DEBUG包.我们只需要RPM包即可,使用rpm -ivh进行安装测试.[LiarLee@localhost ~] rpmbuild -ba SoftwareName.spec \\开始制作的命令 rpm2cpio命令的说明 src-rpm包只是将源码打包成RPM格式,当我们安装src.rpm格式的安装包的时候会把包含的文件,解压到用户默认的工作目录下,所以这种格式的RPM包我们不用安装,直接制作RPM包即可.进行rebuild OR recompile. [LiarLee@localhost ~] rpm2cpio mysql.src.rpm > mysql.cpio [LiarLee@localhost ~] rpm2cpio mysql.src.rpm | cpio -t 两个网站的推荐(搜索SRC-RPM包的站点): rpmfind.net rpm.pbone.net 二. 从头开始写新的SPEC Files制作RPM包的核心是写SPEC files,难以掌握的地方介绍SPEC文件的基本语法和简单用法 1. Spec Files OverviewSPEC file里面都是指令,告诉RPMBuild命令如何一步一步解压,编译,做成不同的RPM包,依赖关系。 Macro是指的变量大多数的字段由tag+value组成,tag是标签–Directives,不区分大小写;value是区分大小写的. 1.1 宏的自定义用户自定义宏 : %define macro_name value引用方式 : %{macro_name} OR %macro_name 1.2 注释的方式使用#来进行注释%–不能在注释中使用,如果必须使用需要双写%% %prep \#this is a comment for %%prep 2. Defining Package Infomatio ...
Docker中运行DCM4CHEE-arc-light
发表于2018-07-02|更新于2025-05-10|Healthcare-IT
在Docker中安装DCM4CHEE-arc-light项目。 因为需要进行测试所以使用了DCM4CHEE, 但是DCM4CHEE现在的版本已经很古老了, 从而我接触了两个古老的PACS程序, 一个是Windows平台上有名的ClearCanvas, 还有一个就是DCM4CHEE。在安装的过程中遇到了很多的麻烦。 看到官方有把项目放在docker上, 所以决定直接使用。直接记录了所有的组件启动的方式和命令, 方便今后的查阅。 DCM4CHEE-arc-light是目前比较新项目了,我这里写下了最小的安装模式, 基本上足够我日常测试使用了。 这几个Docker容器是: Docker docker网桥 DAOCloud加速器 OpenLDAP PostgreSQL数据库 DCM4CHEE-arc-light本体 DCM4CHEE_Docker_Command Install Docker component: dnf install -y docker Create the dcm4chee bridge network: docker network create dcm4chee_default DAOCloud加速器配置docker: curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1dac9f0.m.daocloud.io Start OpenLDAP Server: docker run --network=dcm4chee_default --name ldap \ -p 389:389 \ -v /etc/localtime:/etc/localtime:ro \ -v /var/local/dcm4chee-arc/ldap:/var/lib/ldap \ -v /var/local/dcm4chee-arc/slapd.d:/etc/ldap/slapd.d \ -d dcm4che/slapd-dcm4chee:2.4.44-13.2 Start PostgreSQL: docker run --network=dcm4chee_default --name db \ -p 5432:5432 \ -e POSTGRES_DB=pacsdb \ -e POSTGRES_USER=pacs \ -e POSTGRES_PASSWORD=pacs \ -v /etc/localtime:/etc/localtime:ro \ -v /var/local/dcm4chee-arc/db:/var/lib/postgresql/data \ -d dcm4che/postgres-dcm4chee:10.0-13 Start Wildfly With DCM4CHEE Archive 5: docker run --network=dcm4chee_default --name arc \ -p 8080:8080 \ -p 8443:8443 \ -p 9990:9990 \ -p 11112:11112 \ -p 2575:2575 \ -e POSTGRES_DB=pacsdb \ -e POSTGRES_USER=pacs \ -e POSTGRES_PASSWORD=pacs \ -e WILDFLY_WAIT_FOR="ldap:389 db:5432" \ -v /etc/localtime:/etc/localtime:ro \ -v /var/local/dcm4chee-arc/wildfly:/opt/wildfly/standalone \ -d dcm4che/dcm4chee-arc-psql:5.13.2 Start the three applications use on command: docker start ldap db arc Stop the three application: docker stop ldap db arc 附加说明:Host 说明:dcm4chee_docker: 11.11.11.209/dcm4chee-arc/ui2 Github Project DCM4CHEE-arc-light Note HL7 Relative Features Weasis Integrationhttps://github.com/dcm4che/dcm4chee-arc-light/wiki/Weasis-Viewer-Integration
安装Maven教程
发表于2018-06-25|更新于2025-05-10|Linux
安装Maven过程,备忘。 下载安装包 Maven Download Links 解压安装包:tar xzvf apache-maven-3.5.4-bin.tar.gz 设置环境变量: vim /etc/profile export M2_HOME=/usr/local/apache-maven/apache-maven-3.2.5 export M2=$M2_HOME/bin export MAVEN_OPTS=-Xms256m -Xmx512m 添加环境变量到PATH: export PATH=M2:PATH
Docker基本命令说明
发表于2018-05-28|更新于2025-05-10|Docker
docker基础命令的说明。 Docker常用命令的说明Docker Pull\ 下载一个Image [root@localhost ~]# docker pull nginx:lastest Using default tag: latest Trying to pull repository docker.io/library/nginx ... sha256:0fb320e2a1b1620b4905facb3447e3d84ad36da0b2c8aa8fe3a5a81d1187b884: Pulling from docker.io/library/nginx Digest: sha256:0fb320e2a1b1620b4905facb3447e3d84ad36da0b2c8aa8fe3a5a81d1187b884 Status: Image is up to date for docker.io/nginx:latest Docker Push\ 上传一个Image Docker Run\ 启动一个Container [root@localhost ~]# docker run nginx Docker Kill\ 结束一个Container [root@localhost ~]# docker kill flamboyant_thompson Docker System Prune\ 清理Docker的无用文件,包括未使用的容器和不具有Dangling的镜像(不具有启动能力的Image) Docker Images\ 列出所有的docker images [root@localhost ~]# docker images ONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1cca834eb80c nginx "nginx -g 'daemon ..." 57 seconds ago Up 56 seconds 80/tcp flamboyant_thompson 769aefe85e29 achabill/lh-toolkit "dockerize -wait t..." 3 hours ago Up 3 hours 0.0.0.0:8080->8080/tcp sad_payne 93431e5f2f66 achabill/lh-mysql:latest "docker-entrypoint..." 3 hours ago Up 3 hours 0.0.0.0:3308->3306/tcp brave_mcclintock Docker search\ 搜索特定名称的image [root@localhost ~]# docker search nginx INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED docker.io docker.io/nginx Official build of Nginx. 8564 [OK] docker.io docker.io/nginx Official build of Nginx. 8564 [OK] docker.io docker.io/jwilder/nginx-proxy Automated Nginx reverse proxy for docker c... 1334 [OK] docker.io docker.io/jwilder/nginx-proxy Automated Nginx reverse proxy for docker c... 1334 [OK] docker.io docker.io/richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable ... 547 [OK] docker.io docker.io/richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable ... 547 [OK] docker.io docker.io/jrcs/letsencrypt-nginx-proxy-companion LetsEncrypt container to use with nginx as... 367 [OK] docker.io docker.io/jrcs/letsencrypt-nginx-proxy-companion LetsEncrypt container to use with nginx as... 367 [OK] docker.io docker.io/kong Open-source Microservice & API Management ... 187 [OK] docker.io docker.io/kong Open-source Microservice & API Management ... 187 [OK] docker.io docker.io/webdevops/php-nginx Nginx with PHP-FPM 103 [OK] docker.io docker.io/webdevops/php-nginx Nginx with PHP-FPM 103 [OK] docker.io docker.io/kitematic/hello-world-nginx A light-weight nginx container that demons... 98 docker.io docker.io/kitematic/hello-world-nginx A light-weight nginx container that demons... 98 docker.io docker.io/bitnami/nginx Bitnami nginx Docker Image 50 [OK] docker.io docker.io/bitnami/nginx Bitnami nginx Docker Image 50 [OK] docker.io docker.io/zabbix/zabbix-web-nginx-mysql Zabbix frontend based on Nginx web-server ... 50 [OK] docker.io docker.io/zabbix/zabbix-web-nginx-mysql Zabbix frontend based on Nginx web-server ... 50 [OK] docker.io docker.io/1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5 ubuntu-16-nginx-php-phpmyadmin-mysql-5 35 [OK] docker.io docker.io/1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5 ubuntu-16-nginx-php-phpmyadmin-mysql-5 35 [OK] docker.io docker.io/linuxserver/nginx An Nginx container, brought to you by L ...
Systemd 关闭 Firewalld
发表于2018-05-11|更新于2025-05-10|Linux
如何彻底关闭 Fedora27 的 Firewalld,防止每次重启自动开启。 如何彻底关闭 Fedora27 的 FirewalldFedora 的 Firewalld,每次重启都会自动启动,不会彻底关闭,我们需要特殊的方式来关闭。 直接移除 dnf remove firewalld 指向不存在的设备 systemctl mask firewalld # 表示直接将这个服务指向了/dev/null,无法启动也无法被其他的程序直接调用。 systemctl disable firewalld # 开机的时候不会自动启动,但是接受其他的服务调用并启动。 配置 rc.local 服务 新建rc.local文件。 vim /etc/rc.d/rc.local 写入需要开机启动的命令或者脚本。 #!/bin/bash echo "Autostart..." /usr/bin/firefox 启动服务,配置开机自启。systemctl enable --now rc-local.service
1…13141516
avatar
Liarlee
Archlinux User, Support Engineer
文章
155
标签
73
分类
16
Follow Me
公告
都道无人愁似我,今夜雪,有梅花,似我愁。
最新文章
CheatSheet_Kubernetes2333-12-08
CheatSheet_Linux2333-12-08
CheatSheet_awscli2333-12-08
CheatSheet_Databases2333-12-08
Fortio 笔记2025-05-09
TrueNAS Core 自动更新UI证书2024-11-15
分类
  • AWS2
  • Application5
  • Books5
  • Database8
  • Docker6
  • EKS5
  • ESXi1
  • ElasticSearch2
标签
TrueNasCore btrfs Repo Android ElasticSearch Git Redis KVM LogAgent Headscale MongoDB Cilium Orthanc Prometheus Ranger VPC FileSystem JAVA Network Steam NAS RPM Memory Ceph Fedora Filesystem Nvidia GRUB2 Strace AWS CPU Firefox 诗 EBS Ansible Python RIME SElinux Database Hexo
归档
  • 十二月 23334
  • 五月 20251
  • 十一月 20241
  • 九月 20242
  • 八月 20241
  • 七月 20243
  • 六月 20242
  • 五月 20244
网站资讯
文章数目 :
155
本站总字数 :
183k
本站访客数 :
本站总访问量 :
最后更新时间 :
©2020 - 2025 By Liarlee
框架 Hexo|主题 Butterfly
搜索
数据库加载中