搭建本地仓库源

news/2024/10/31 1:29:33/

 一、如何搭建仓库源

         之前讲了定制ISO的方法:使用chroot定制系统,但有时候我们想自定义的安装包不在上游的仓库源中,在我们本地应该怎么办呢?如果我们将deb包拷贝到iso目录再安装有点过于麻烦了,而且还可能需要手动处理一些依赖问题,因此我们可以考虑搭建一个本地或者说内网的仓库源,便于定制系统应用,以下是我创建的例子:

        创建文件夹,当作仓库源的根目录,然后在里面创建子目录或者直接放置deb也行,我这里下载了d-feet的deb安装包,解压之后修改了control文件中的版本和依赖,将版本号加1并新加了qdbus-qt5的依赖:

         然后重新生成了deb包:

dpkg -b d-feet_0.3.16-4_all/

        然后进入到deb目录下生成Packages文件:

sudo apt-ftparchive packages . > Packages

        最后生成Release文件:

sudo apt-ftparchive release . > Release

        这样一个简单的本地仓库源就搭建好了。

        注意:每次更新了仓库中的包之后都要更新这两个文件。

        我们试一下将它添加到本地的list文件中去(可能需要使用root用户):

echo "deb [trusted=yes] file:/home/feng/test/deb ./" >> /etc/apt/sources.list.d/test.list

        注意如果不加[trusted=yes]可能会提示没有数字签名。

        然后更新列表并查看:

feng@feng:~/test/deb$ sudo apt update
[sudo] feng 的密码:
获取:1 file:/home/feng/test/deb ./ InRelease
忽略:1 file:/home/feng/test/deb ./ InRelease
获取:2 file:/home/feng/test/deb ./ Release [816 B]
获取:2 file:/home/feng/test/deb ./ Release [816 B]     
获取:3 file:/home/feng/test/deb ./ Release.gpg                                                                                                                                                             
忽略:3 file:/home/feng/test/deb ./ Release.gpg                                                                                                                                                             
命中:4 http://archive.build.openkylin.top/openkylin yangtze InRelease                                                                                                                                      
命中:5 http://archive.build.openkylin.top/openkylin yangtze-security InRelease                                                                                                                             
命中:6 http://packages.microsoft.com/repos/code stable InRelease                                                                                       
命中:7 http://archive.build.openkylin.top/openkylin yangtze-updates InRelease                                                                          
命中:8 http://software.openkylin.top/openkylin/yangtze default InRelease                                                                               
获取:9 http://cz.archive.ubuntu.com/ubuntu jammy InRelease [270 kB]                                                               
忽略:10 https://www.scootersoftware.com bcompare4 InRelease                             
命中:11 https://www.scootersoftware.com bcompare4 Release
已下载 270 kB,耗时 3秒 (95.7 kB/s)                     
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
有 749 个软件包可以升级。请执行 ‘apt list --upgradable’ 来查看它们。feng@feng:~/test/deb$ sudo apt search d-feet
正在排序... 完成
全文搜索... 完成  
d-feet/未知 0.3.16-4 all [可从该版本升级:0.3.16-3]D-Bus object browser, viewer and debugger

        可以看到我自己源中的版本。

        然后看是否能正常安装,在安装之前先强制卸载qdbus-qt5:

sudo dpkg --force-all -P qdbus-qt5 

        安装:

         如图,将会自动安装依赖qdbus-qt5。

二、如何共享仓库源

        搭建仓库源怎么分享给其它人呢?其实方法有很多,可以通过http,ftp,ssh等,这里就介绍通过apach搭建http服务器的用法,也仅限局域网内使用。要在公网上使用分享给别人,应该还需要数字签名等认证才行,这里不做介绍。

        前置条件:假如我们已经在服务器上面搭建好了仓库:/home/lz/deb/

        安装apach2:

sudo apt-get update
sudo apt-get install apache2

        配置http:

        deb.conf名字可变

sudo vim /etc/apache2/sites-available/deb.conf

        写入以下内容保存退出:

<VirtualHost *:80>ServerAdmin webmaster@localhostDocumentRoot /var/www/html<Directory /var/www/html/deb-repo>Options Indexes FollowSymLinks MultiViewsAllowOverride NoneOrder allow,denyallow from all</Directory>ErrorLog ${APACHE_LOG_DIR}/error.logCustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

        将仓库复制到html目录下并修改权限:

sudo cp -a /home/lz/deb/ /var/www/html/
sudo chmod -R +rx /var/www/html/deb/

        然后在客户端机器上添加源到list中即可访问该仓库源:


echo "deb [trusted=yes] http:192.168.2.114:/deb ./" >> /etc/apt/sources.list.d/test.list

这样,在制作镜像的时候,就可以很方便的安装自己的包以及其依赖包


http://www.ppmy.cn/news/62556.html

相关文章

什么是UN38.3/UN38.3/MSDS+货物运输鉴定报告是什么?怎么做?

一&#xff1a;什么是UN38.3? UN38.3是指在联合国针对危险品运输专门制定的《联合国危险物品运输试验和标准手册》的第3部分38.3款&#xff0c;简称UN38.3。 据国际航协《危险物品规则》的相关规定&#xff0c;对适用于包括但不限于单独或与设备一起运输的属可充电型锂电池的手…

SpringBoot Starter 作用及原理,你真的清楚吗?

本文会以 mybatis 为例&#xff0c;通过对比 mybatis-spring 和 mybatis-spring-boot-starter 代码示例&#xff0c;了解 Starter 的作用。并对 mybatis-spring-boot-starter 进行简单剖析&#xff0c;了解 Starter 原理。 什么是 Starter 大家都知道基于 SpringBoot 开发项目…

SpringBoot的yml多环境配置3种方法

目录 方式一&#xff1a;多个yml文件 步骤一、创建多个配置文件 步骤二、applicaiton.yml中指定配置 方式二&#xff1a; 单个yml文件 方式三&#xff1a;在pom.xml中指定环境配置 步骤一、创建多个配置文件 步骤二、在application.yml中添加多环境配置属性 步骤三、在po…

Java的自定义注解

java元注解和自定义注解的区别 Java的自定义注解是一种元数据&#xff0c;可以应用于类、方法、字段等程序元素上&#xff0c;以提供额外的信息或指示。 自定义注解包括注解声明、元注解、运行时处理器三个部分。注解声明指定了注解的名称、作用域、成员等信息&#xff1b;元注…

ElastaicSearch 查询

match_all&#xff1a;匹配所有 match&#xff1a;分词单个匹配 【分词包含query&#xff0c;就可以被检索到&#xff0c;类似contains包含】 multi_match&#xff1a;分词多个匹配 【任何一个分词包含query&#xff0c;就可以被检索到】 term&#xff1a;全词单个匹配 terms&a…

JSP企业电子投票系统(源代码+论文+开题报告+外文翻译+文献综述)

J2EE已经成为开发商创建电子商务应用的事实标准。正是认识到J2EE平台作为一种可扩展的、全功能的平台&#xff0c;可以将关键的企业应用扩展到任何Web浏览器上并可适合多种不同的Internet数据流、可连接到几乎任何一种传统数据库和解决方案、使企业经理根据多家企业所提供的产品…

QML信号与信号槽实践指南:轻松掌握现代软件开发的关键技术

这里写目录标题 &#xff08;一&#xff09;QML简介1.1 QML概述1.2 QML的基本语法1.3 QML与C的交互 &#xff08;二&#xff09;QML信号基本概念2.1 QML中的信号2.2 QML信号的作用与优势 &#xff08;三&#xff09;QML信号槽基本概念3.1 QML中的槽3.2 QML信号槽的使用与实践 &…

石头科技2022年营收实现双位数增长,以技术实力打响创新价值战

近日&#xff0c;石头科技披露了2022年度财务报告&#xff0c;报告显示&#xff0c;在在较大内外部压力下&#xff0c;石头科技2022年营收依然实现双位数增长&#xff0c;且境内外销售收入平稳增长。 该公司在近年来不断完善其产品矩阵&#xff0c;目前已推出手持无线吸尘、商…