其实它源于一条群友问。简单说就是hplip(HP打印机实用程序)不认为Kali是Debian发行版。那时候说的是:改/etc/os-release到DEBIAN,不行的话走AUR编译成Arch的安装包,自己手动解压到对应位置。
我感觉我的描述有点太过简略,且极具误导性,所以发博客了。
什么情况下应该使用这种邪道方法
安装包选择顺位
在同一发行版:发行版官方源 > 适配发行版的第三方源 > 上游发行版官方源(older > 同级) > 适配上游发行版的第三方源(older > 同级) > 适配当前版本发行版的可执行文件安装程序(.run) > 适配兼容于当前版本发行版的可执行文件安装程序(.run) > 适配上一版本发行版的可执行文件安装程序 > 适配兼容于上一个版本发行版的可执行文件安装程序 > 手动编译
不同发行版(新旧顺序看内核版本):(同一发行版) > 旧发行版的安装包 > 新发行版的安装包
什么时候使用
很简单,官方提供的安装方法全部失效的时候。
使用前的重要说明
- 不要作死在每个包都用这种方法!这只是临时方案!发行版太老就更新发行版!!!!!!
- 不要试图替换任意已存在的文件!
- 不要应用在内核、C库(libc)、编译工具链(gcc等)上!版本不够就更新发行版!
- 不要在任意生产环境应用该方案!!!!!该方案只是临时方案!
- 做好备份!做好系统其它部件被搞炸的准备!
- 不要使用NixOS等不支持FHS的发行版提供的包!
具体操作方法
预准备
- 安装依赖。看依赖哪些包,装好一切。
- 安装zstd(新deb/Ubuntu deb,Arch)、brotli(没见有人在用)、gzip(大部分包管理器使用的压缩格式)等压缩程序。
解压缩
常规状况
找到对应的包,下载并解压。
在解压后你会发现这么一个结构:一个是模拟的根目录(软件包管理器会将里面的东西复制到对应位置),一个是配置文件存放处(主要是告诉包管理器前中后期都该做什么,以及包的基础检索信息。一般使用文本编辑器打开就好)。(例如deb、rpm)
你要做的就是像软件包管理器一样执行好每个步骤到设置完成。
AUR等来源的包(脚本)
偷懒
你需要一个环境来运行脚本打包。一般的,你需要对应环境的容器,例如Arch可以参照安装Arch Linux的方法(使用arch-install-scripts,从pacstrap开始)安装容器,并从AUR下载脚本运行makepkg(你仍然需要在容器里安装一遍依赖,而且,内核头(linux-headers)需要自己从宿主里提取复制到容器里的对应位置)。然后按常规状况提供的方案继续。
不需要对应环境
脚本本质上还是脚本。对Debian来说,你可以试试makedeb等工具,并将依赖什么的自己安装好后删掉字段。此时它大概率能跑起来并生成对应的包。
发表回复