分类目录归档:技术

deb 软件包里都有什么

日常工作学习常常会在 Debian 系操作系统中完成,特别是最近自己开始打包、安装,发现 .deb 安装包甚至可以包含内核,且 Debian 就是通过这种方式来管理内核的,那么 deb 软件包中究竟有那些内容呢?

deb是 Debian软件包 格式,文件扩展名 为.deb,跟Debian的命名一样,deb也是因Debra Murdock(Debian创始人Ian Murdock的前妻)而得名。处理这些包的经典程序是 dpkg ,经常是通过 apt 来运作。

流行的的 Ubunut,国内的 Deepin、麒麟等操作系统都是使用这一软件包格式进行软件包管理和分发的,今天就来简单探索一下 deb 软件包中都有什么东西。

这里以 dpkg 软件包为例,看一下这其中都包括了那些内容:

$ ar t dpkg_1.19.7_amd64.deb
debian-binary
control.tar.gz
data.tar.xz
$ ar x dpkg_1.19.7_amd64.deb
$ ls
control.tar.gz  data.tar.xz  debian-binary  dpkg_1.19.7_amd64.deb
$ tar tJf data.tar.xz | head -n 16
...
./etc/dpkg/
./etc/dpkg/dpkg.cfg
./etc/dpkg/dpkg.cfg.d/
...
$ tar tJf control.tar.xz
...
./control
...
$ cat debian-binary
2.0

使用 ar (建立,修改档案或从档案中抽取成员的软件工具)可以看到 Debian 包的 ar 存档格式由三个文件组成:

  • debian-binary : 指定软件包格式版本,在 Debian Buster 中它仍然是2.0版本。
  • control.tar.xz : 包含所有可用的 元信息,比如包的 名称 和 版本,以及在(取消)安装之前、期间或之后运行的一些脚本。
  • data.tar.xz, data.tar.bz2, data.tar.gz : 包含要从包中提取的所有文件; 这是存储可执行文件、库、文档等的地方。

这就是 deb 软件包中包含的内容,想要更详细的了解其中内容推荐大家阅读 《Debian管理员手册》,必将受益匪浅。

参考文献

Google Adsense 注意事项

最近刚刚通过了 Google Adsense 的审核,加入了其联盟,兴奋之余不忘思考,既然如此艰难的通过了审核,虽然我也不知道为什么之前为什么一直不通过(没有给出具体原因),我也不知道为什么突然就通过了。总之来之不易,一定加倍珍惜,多多输出好的内容来回报社会。

于是在这里记下我在网上搜索的,特别是结合了 Google Adsense 规范内容总结出的一些注意事项,未来需格外小心:

注意事项

  • 不要点击自己的 Google 广告。
  • 不要请求他人点击您的 Google 广告。
  • 仔细选择广告的展示位置。
  • 谨慎选择网站的推广方式。
  • 使用 Google Analytics(分析)。
  • 请勿篡改 AdSense 代码。
  • 不要使用弹出式提示或自动软件安装机制。

参考文献

CDN 中的 「回源HOST」与「源站」

在配置网站 CDN 时总是搞不清其中「回源HOST」与「源站」的区别,因此在这里简单记录。

源站和回源HOST的区别:

  • 源站:源站决定了回源时请求到的具体IP地址。
  • 回源HOST:回源HOST决定了回源请求访问到该IP地址上的具体站点。回源HOST即回源域名,当源站服务器上提供多个域名服务时,CDN节点回源时在源站访问的具体站点域名。

例子一:源站是域名

如果源站为www.a.com,回源HOST为www.b.com。那么实际回源是请求到www.a.com解析到的IP地址其对应主机上的www.b.com站点。

例子二:源站是IP地址

源站为1.1.1.1,回源HOST为www.b.com。那么实际回源的是1.1.1.1对应主机上的www.b.com站点。

参考文献

新 Hugo 博客相关记录笔记

2021年10月21日,基于以下原因,我打算重建自己的博客,这次直接使用顶级域名:

  • blog.frytea.com 内容太过庞杂,不成体系,很难重新做规整;
  • blog.frytea.com 目前采用的付费主题虽然各方面做的都比较均衡,但是在google网站扫描过程中还是发现许多加载缓慢的因素,无法优化;
  • blog.frytae.com 作为我的主站申请 google adsense 多次没有通过,原因未知;
  • blog.frytea.com 目前主题由于其定位,无法作为一个个人网站的索引,目前是分成两套体系分别进行。

新网站目标

  • 内容成体系、有结构、有深度
  • 可作为个人引导页,引导到我的各种其他站点
  • SEO 友好
  • 包含各种宣传自己的页面:产品集、个人简历等;
  • 分专题来撰写文章:技术探索、奇思妙想、人生复盘;最终希望每一部分都能作为一本书进行。

新网站参考

网站定制开发参考

Homebrew 安装策略(M1芯片 Macbook)

换了 m1 芯片的 Macbook 之后第一个感受到的就是使用 homebrew 的不一样,由于不同的芯片架构,其安装方法也有不同,在这简单记录。

Arm Mac 安装步骤

# arm homebrew 同时设为国内源
/bin/zsh -c "$(curl -fsSL https://gitee.com/huwei1024/HomebrewCN/raw/master/Homebrew.sh)"

# 可在 .bashrc 追加下列内容实现 intel 和 arm 共存
alias abrew='arch -arm64 /opt/homebrew/bin/brew'
alias ibrew='arch -x86_64 /usr/local/bin/brew'

安装更新国内 homebrew 镜像源

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

说明

根据官方规划,ARM 版 Homebrew 必须安装在 /opt/homebrew 路径下,而非此前的 /usr/local/Homebrew。

参考文献

pve-kernal 编译安装步骤

以 pve-release-6.x ,基于 debian buster 为例:

  • Step1: 配置国内 PVE 镜像源
# 配置 pve 软件包国内镜像源
$ echo "deb https://mirrors.tuna.tsinghua.edu.cn/proxmox/debian buster pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list
$ wget https://enterprise.proxmox.com/debian/proxmox-ve-release-6.x.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-6.x.gpg
  • Setp2:安装依赖包

Install build dependencies (i got these from the pve-kernel/debian/control file):

apt install asciidoc-base automake bc bison cpio debhelper dh-python file flex gcc git kmod libdw-dev libelf-dev libiberty-dev libnuma-dev libpve-common-perl libslang2-dev libssl-dev libtool lintian lz4 perl-modules python-minimal rsync sed sphinx-common tar xmlto zlib1g-dev
  • Step3:获取 pve-kernel 源码

Clone proxmox-kernel

git clone https://git.proxmox.com/git/pve-kernel.git
  • Step4:初始化子项目

initialize the submodules

make submodule

If that fails Fabian told me that you have cd in each submodule and do “git fetch –tags”

  • Step5:编译
make

It will build with ALL cores

会自动编译,不需要设置多线程,它会自动调用多线程编译。编译完当前目录的 .deb 包就是内核包,直接使用 dpkg -i 安装即可。

Q&A

  • dwarves_1.20 too old
echo 'deb http://ftp.de.debian.org/debian sid main' > /etc/apt/sources.list
sudo apt-get update
sudo install dwarves
  • 磁盘空间不足,扩容
# 查看当前磁盘的分区形式,确定新磁盘的盘符
$ fdisk -l
# 开始分区(以 /dev/vda 为例)
$ fdisk /dev/vda
# 键入 n 继续,保持默认即可
# 键入 p 查看分区
# 键入 w 将分区写入分区表
# 将分区表同步到系统
$ partprobe
# 设置新分区的格式(以 /dev/xvda6 为例)
$ mkfs -t ext4 /dev/xvda6
# 将新分区挂载 (以 /opt 为例)
$ mount /dev/xvda6 /opt
# 查看挂载结果
$ df -TH

参考文献

Tmux 使用笔记

Tmux 是一个终端复用器(terminal multiplexer),用起来就离不开。网上有很多 Tmux 使用指南,但是用下来发现还是自己整理一遍才能真正的记住,于是有了这篇文章,本文意在整理 tmux 最常用操作,详细的操作指南请移步 「tmux(1) manual page」。

基本概念

tmux采用C/S模型构建,输入tmux命令就相当于开启了一个服务器,此时将 新建一个会话(session),会话中默认新建一个窗口(window),窗口中默认新建一个面板 (pane) 。

  • 一个 tmux session 可以包含多个 window, window 默认充满 session 。
  • 一个 window 又可以包含多个 pane ,且都处于同一界面下。

常用操作

以下按照 Ctrl 和 Alt 的简写记录,周知。 C -> Ctrl A -> Alt

  • 新建和断开
tmux               # 新建一个无名称的会话
tmux new -s demo   # 新建一个名称为demo的会话
tmux detach        # 断开当前会话,会话在后台运行

tmux a             # 默认进入第一个会话
tmux a -t <>       # 进入之前的会话

tmux kill-session -t demo # 关闭demo会话
tmux ls                   # 查看所有会话

C-b d    # 断开当前会话
C-b C-Z  # 挂起当前会话

C-b c    # 新建 window
C-b &    # 关闭当前窗口(关闭前需输入y or n确认)

C-b "    # 下侧新建面板
C-b %    # 右侧新建面板
C-b x    # 关闭当前面板(关闭前需输入y or n确认)
  • 切换会话
C-b 0~9  # 切换到指定 window
C-b p    # 切换到上一 window
C-b n    # 切换到下一 window
C-b f    # 快速定位到 window(输入关键字匹配窗口名称)

C-b s    # 显示 session 列表,用于选择并切换
C-b w    # 显示 windows 列表,用于且切换窗口
C-b q    # 显示 pane 编号,在编号消失前输入对应的数字可切换面板

C-b ←↑→↓ # 移动光标切换 pane
C-b ;    # 切换到上一 pane
C-b o    # 切换到下一 pane
  • 调整布局
C-b !          # 将当前 pane 拆分为一个独立 window
C-b z          # 最大化当前面板,重复一次恢复正常(v1.8版本新增)
C-b {          # 向前置换当前面板
C-b }          # 向后置换当前面板
C-b C-o        # 顺时针旋转当前窗口中的所有面板
C-b A-o        # 逆时针旋转当前窗口中的所有面板
C-b space      # 在自带的面板布局中循环切换
C-b A + ←↑→↓   # 以5个单元格为单位调整当前面板边缘
C-b C + ←↑→↓   # 以1个单元格为单位调整当前面板边缘(Mac下被系统快捷键覆盖)

参考文献