deb 软件包里都有什么

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

debDebian软件包 格式,文件扩展名.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.xzdata.tar.bz2data.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

参考文献