公司內部建立apt源

有一篇建立pypi源的在這里需要的可以查看:公司內部建立pypi源-CSDN博客

背景,公司內部有很多工具僅供內部使用,如果用apt的方式就比較方便,只需要修改sources.list將源添加進去就可以了。我們接下來的操作就是為了實現這個需求。

一共三部分,第一部分,安裝nginx搭建web 服務器!第二部分,建立APT源目錄結構!第三部分客戶端添加源到sources.list并測試安裝成功!

1.安裝nginx搭建web服務器:

sudo apt install nginx

(1)在/var/www/html/目錄下創建apt源文件夾
?

cd /var/www/html/mkdir ubuntu

配置web服務器參數:

sudo vim /etc/nginx/sites-availabe/test 

內容修改如下:

server {listen 80;server_name 8.8.8.8;root /var/www/html;index index.nginx-debian.html; #這里的文件按照/var/www/html目錄下面實際的文件填!不要一上來就寫index.html!這里是一個小坑location /ubuntu { #這里也不是非要寫ubuntu 具體要按照實際填寫,俺準備將apt源放在ubuntu下面,ubuntu是我上面新創建的文件夾autoindex on;try_files $uri $uri/ = 404;}
}
sudo ln -s /etc/nginx/sites-availabe/test /etc/nginx/sites-enable

開啟服務器:

systemctl restart nginx.service
systemctl status nginx.service

如果nginx server啟動不成功,執行下面命令進行分析:

sudo nginx -t

上面這個命令會提示你/etc/nginx/sites-available/test是否有錯誤,我就是第一次沒成功,因為我把root /var/www/html 寫成了 billxu /var/www/html 這里自己不要瞎改哦!浪費時間!

好了,現在你解決了一些問題,或者直接就啟用成功,恭喜,你現在可以在其他可以ping通你這個server服務器,web 頁面訪問你的服務器了!

瀏覽器輸入:http://8.8.8.8

頁面顯示如下:

說明你成功了!

你也可以訪問:http://8.8.8.8/ubuntu 這時候會出現目錄,但是你的目錄目前是空的。

2.建立APT源目錄結構(不要著急執行命令,先看一下5~7行命令注意事項)

準備工作,安裝包管理工具dpkg:

sudo apt install dpkg-dev

這里要啰嗦幾句,咳咳,apt對目錄十分敏感,所以我們創建文件目錄什么的要絕對認真!

1.cd /var/www/html/ubuntu
2.sudo mkdir -p dists/focal/main/binary-amd64
3.sudo mkdir -p pool/main
4.sudo cp /home/xu/tool-1.0.0-amd64.deb pool/main
5.sudo apt-ftparchive packages pool/main/ > dists/focal/main/binary-amd64/Packages
6.sudo apt-ftparchive -c=release.conf release dists/focal > /var/www/html/ubuntu/dists/focal/Release
7.sudo gpg --output dists/focal/InRelease --clearsign /var/www/html/ubuntu/dists/focal/Release

1~4行命令不會有什么問題,從第5行開始就需要注意了!

第5行生成的Packages文件中包括Filename:pool/main/tool-1.0.0-amd64.deb 這里是告訴apt 這個deb的下載目錄,我一開始的錯誤命令是這樣的:

sudo apt-ftparchive packages /var/www/html/ubuntu/pool/main/ > /var/www/html/ubuntu/dists/focal/main/binary-amd64/Packages 大錯特錯的!!!千萬不要這樣寫!!!這個命令Packages文件中,Filename:/var/www/html/ubuntu/pool/main/tool-1.0.0-amd64.deb這樣會導致在web服務器根本下載不下來這個deb,因為根本不存在!!!

第6行有一個-c=release.conf ,這個也是在測試才發現的,如果不加這個參數客戶端提示如下:

查了一下原因是因為Release文件沒有Codename!創建文件release.conf內容如下:

(py38) xu@xu-ArcherCity:/var/www/html/ubuntu$ cat release.conf
APT::FTPArchive::Release {Origin "YourRepo";Label "YourRepo";Suite "stable";Codename "focal";Architectures "amd64";Components "main";Description "Local APT Repository";
};

第7行如果提示‘‘No secret key’’執行失敗,在運行之前要執行:

gpg --full-generate-key #生成密鑰,按照提示執行
gpg --list-keys #查看剛才填寫的密鑰uid
gpg --armor --output /var/www/html/ubuntu/public.key --export uidname # 這個public.key 客戶端需要用

好了所有步驟執行完之后我們進行最后一步!

3.客戶端添加源到source.list并測試安裝成功!

客戶端執行操作非常容易:

首先,將第二步生成的public.key添加到自己的目錄

sudo apt-key add public.key

其次,修改source.list

sudo vi /etc/apt/sources.list
deb http://8.8.8.8/ubuntu focal main #添加進去

最后執行apt update 更新源

sudo apt update

最最后就可以執行sudo apt install tool!!!發現可以執行成功!

ps:sudo gpg --output dists/focal/InRelease --clearsign /var/www/html/ubuntu/dists/focal/Release 這個命令我執行了好幾次,沒有執行成功,提示:clear-sign failed: No secret key ,后來發現是有個clear-sign的進程一直在執行,后面kill了就好!

pss:

gpg: ? ? ? ?? Version :2.2.19-3ubuntu2.2

dpkg-dev :Version: 1.19.7ubuntu3.2

nginx:?????? Version: 1.18.0-0ubuntu1.5

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/77500.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/77500.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/77500.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

UE5中如何修復后處理動畫藍圖帶來的自然狀態下的metablriger身體綁定形變(如聳肩)問題

【[metablriger] UE5中如何修復后處理動畫藍圖帶來的自然狀態下的metablriger身體綁定形變(如聳肩)問題】 UE5中如何修復后處理動畫藍圖帶來的自然狀態下的metablriger身體綁定形變(如聳肩)問題

AWS Bedrock生成視頻詳解:AI視頻創作新時代已來臨

?? TL;DR: AWS Bedrock現已支持AI視頻生成功能,讓企業無需深厚AI專業知識即可創建高質量視頻內容。本文詳解Bedrock視頻生成能力的工作原理、應用場景和實操指南,助你快速掌握這一革命性技術。 ?? AWS Bedrock視頻生成:改變內容創作的游戲規則 還記得幾年前,制作一個專…

1.2 測試設計階段:打造高質量的測試用例

測試設計階段:打造高質量的測試用例 摘要 本文詳細介紹了軟件測試流程中的測試設計階段,包括測試用例設計、測試數據準備、測試環境搭建和測試方案設計等內容。通過本文,讀者可以系統性地了解測試設計的方法和技巧,掌握如何高效…

jQueryHTML與插件

1.jQuery 事件機制 1.1 注冊事件 bind()、on()方法向被選元素添加一個或多個事件處理程序,以及當事件發生時運行的函數 $("p").on({"click": function () {alert("點擊了")},"mouseenter": function () {…

MySQL 觸發器與存儲過程:數據庫的自動化工廠

在數據世界的工業區,有一座運轉高效的自動化工廠,那里的機器人日夜不停地處理數據…這就是 MySQL 的觸發器與存儲過程系統,它讓數據庫從"手工作坊"變成了"現代化工廠"… 什么是 MySQL 觸發器與存儲過程?&…

PostgreSQL-中文字段排序-修改字段的排序規則

最新版本更新 https://code.jiangjiesheng.cn/article/365?fromcsdn 推薦 《高并發 & 微服務 & 性能調優實戰案例100講 源碼下載》 -- 修改字段的排序規則 ALTER TABLE "public"."your_table_name" ALTER COLUMN "name" TYPE varcha…

GitHub優秀項目:數據湖的管理系統LakeFS

lakeFS 是一個開源工具,它將用戶的對象存儲轉換為類似Git的存儲庫。使用戶可以像管理代碼一樣管理數據湖。借助 lakeFS,可以構建可重復、原子化和版本化的數據湖操作--從復雜的ETL作業到數據科學和分析。 Stars 數11090Forks 數3157 主要特點 強大的數據…

頁面編輯器CodeMirror初始化不顯示行號或文本內容

延遲刷新 本來想延遲100毫秒的,但是會出現樣式向左偏移的情況,于是試了試500毫秒,發現就沒有問題了,可能是樣式什么是需要一個加載過程吧。 useEffect(() > {editorRef.current?.setValue(value || );setTimeout(() > {edi…

使用 Spring Boot 和 Uniapp 搭建 NFC 讀取系統

目錄 一、NFC 技術原理大揭秘1.1 NFC 簡介1.2 NFC 工作原理1.3 NFC 應用場景 二、Spring Boot 開發環境搭建2.1 創建 Spring Boot 項目2.2 項目基本配置 三、Spring Boot 讀取 NFC 數據3.1 NFC 設備連接與初始化3.2 數據讀取邏輯實現3.3 數據處理與存儲 四、Uniapp 前端界面開發…

臺式電腦插入耳機沒有聲音或麥克風不管用

目錄 一、如何確定插孔對應功能1.常見音頻插孔顏色及功能2.如何確認電腦插孔?3.常見問題二、 解決方案1. 檢查耳機連接和設備選擇2. 檢查音量設置和靜音狀態3. 更新或重新安裝聲卡驅動4. 檢查默認音頻格式5. 禁用音頻增強功能6. 排查硬件問題7. 檢查系統服務8. BIOS設置(可選…

Gerrit的安裝與使用說明(Ubuntu)

#本頁面按192.168.60.148服務器舉例進行安裝配置 1.權限配置 ## 使用root或者有sudo權限用戶執行 # 創建gerrit用戶 sudo useradd gerrit # 設置gerrit用戶的密碼 sudo passwd gerrit # 增加sudo權限 sudo visudo 在root ALL(ALL:ALL) ALL行下添加如下內容 gerrit ALL(ALL:…

Visual Studio 2019 配置VTK9.3.1

文章目錄 參考博客1、 VTK下載和編譯2、vs2019配置vtk9.3.1參考博客 Visual Studio 2022 配置VTK9.3.0 1、 VTK下載和編譯 見博客 CMake編譯VTK 2、vs2019配置vtk9.3.1 新建一個項目 寫入以下代碼 #include <vtkActor.h> #include <vtkAssembly.h> #include…

C++進階——C++11_右值引用和移動語義_可變參數模板_類的新功能

目錄 1、右值引用和移動語義 1.1 左值和右值 1.2 左值引用和右值引用 1.3 引用延長生命周期 1.4 左值和右值的參數匹配 1.5 右值引用和移動語義的使用場景 1.5.1 左值引用主要使用場景 1.5.2 移動構造和移動賦值 1.5.3 右值引用和移動語義解決傳值返回問題 1.5.4 右值…

HTTP協議原理深度解析:從基礎到實踐

引言 在互聯網技術體系中,HTTP(HyperText Transfer Protocol)協議如同數字世界的"通用語言",支撐著全球超50億網民的日常網絡交互。作為爬蟲開發、Web應用構建的核心技術基礎,理解HTTP原理是每個開發者必須掌握的技能。本文將從協議本質、技術演進、安全機制三…

Web品質 - 重要的HTML元素

Web品質 - 重要的HTML元素 在構建一個優秀的Web頁面時,HTML元素的選擇和運用至關重要。這些元素不僅影響頁面的結構,還直接關系到頁面的可用性、可訪問性和SEO表現。本文將深入探討一些關鍵的HTML元素,并解釋它們在提升Web品質方面的重要性。 1. <html> 根元素 HTM…

【AI提示詞】競品分析專家

提示說明 對產品進行競品分析&#xff0c;明確產品定位和優化營銷策略。 提示詞 # 角色:競品分析專家## 背景: 需要對旗下產品A進行競品分析,明確產品定位和優化營銷策略。## 描述: - 作者:張三 - 版本:1.0 - 語言:中文## 注意事項: 保持客觀公正態度,用數據說話,給出具體的…

4-6記錄(B樹)

找左邊右下或者右邊左下 轉化成了前驅后繼的刪除 又分好幾種情況&#xff1a; 1. 只剩25&#xff0c;小于2&#xff0c;所以把父親拉到25旁邊&#xff0c;兄弟的70頂替父親 對于25&#xff0c;25的后繼就是70&#xff0c;25后繼的后繼是71&#xff08;中序遍歷) 2. 借左子樹…

什么是RACI矩陣,應用在什么場景?

一、什么是RACI RACI矩陣是一種用于明確項目或任務中角色與責任的管理工具&#xff0c;通過定義不同人員在任務中的參與程度來避免職責不清的問題。以下是其核心要點&#xff1a; ?RACI的含義? ● ?R&#xff08;Responsible&#xff09;執行者?&#xff1a;直接完成任務…

深入理解全排列算法:DFS與回溯的完美結合

全排列問題是算法中的經典問題&#xff0c;其目標是將一組數字的所有可能排列組合列舉出來。本文將詳細解析如何通過深度優先搜索&#xff08;DFS&#xff09;和回溯法高效生成全排列&#xff0c;并通過模擬遞歸過程幫助讀者徹底掌握其核心思想。 問題描述 給定一個正整數 n&a…

在 Dev-C++中編譯運行GUI 程序介紹(二)示例:祝福程序

在 Dev-C中編譯運行GUI 程序介紹&#xff08;二&#xff09;示例&#xff1a;祝福程序 前期見&#xff1a; 在 Dev-C中編譯運行GUI 程序介紹&#xff08;一&#xff09;基礎 https://blog.csdn.net/cnds123/article/details/147019078 示例1、祝福程序 本文中的這個祝福程序是…