Ubuntu中添加和修改Apt Repository

使用Ubuntu Software Center或 apt/apt-get等命令行工具安装软件包时,软件包是从一个或多个 apt 软件库(software repositories)下载的。APT repository是一个网络服务器或本地目录,其中包含可被 APT 工具读取的 deb 软件包和元数据文件(deb packages and metadata files)。
Apt Sources (Apt源)
在 Ubuntu 和其他所有基于 Debian 的发行版中,apt 软件仓库都是在 /etc/apt/sources.list 文件或 /etc/apt/sources.list.d/ 目录下的单独文件中定义的。/etc/apt/sources.list.d/目录内的版本库文件名必须以 .list 结尾。
这种list文件 是Linux的高级打包工具(APT: Advance Packaging Tool)的一个配置文件,它保存了安装软件包和应用程序的远程资源库的URL和其他信息。
简单的讲,当安装命令被执行时,例如:apt-get install <package_name>,然后软件包管理系统在/etc/apt/sources.list和/etc/apt/sources.list.d/中寻找远程资源库链接的列表文件,并搜索需要下载的应用程序。
列表文件有两个地方而不是一个,其中一个原因是为了确保数据在系统更新时不会被覆盖/丢失。/etc/apt/source.list可能会在更新中被覆盖,就像发生在/etc/profile上类似。这也是为什么一般放在/etc/profile文件中的自定义配置最好放在/etc/profile.d/目录中。
/etc/apt/sources.list文件的一般语法格式如下: 
The general syntax of the /etc/apt/sources.list file takes the following format:
deb http://repo.tld/ubuntu distro component...
  • 该行的第一个字段定义存档类型。存档类型可以是 deb 或 deb-src。deb 意味着软件源包含 .deb 软件包,已经被编译好了,而 deb-src 则意味着源代码软件包,需要被编译。
  • 第二个字段是版本库 URL。
  • 第三个字段表示发布代码(distribution code)名称,如 beaver、xenial 等。或者说是软件库的版本名称。
  • 最后的字段是软件库的组件或类别。默认的 Ubuntu 软件库分为四个组件:main、restricted、universe 和 multiverse。表明该软件如何提供给终端用户。如果是第三方软件库,一般来说只有一个类别。
打开系统菜单的“Software & Updates”,能看到这四个分类的含义:
  • 由 Canonical 支持的自由和开源软件(主干)
  • 社区维护的自由和开源软件(通用)
  • 设备专有驱动程序(受限)
  • 受版权或法律问题限制的软件(多元)
* Canonical-supported free and open-source software(main)
* Community-maintained free and open-source software (universe)
* Proprietary drivers for devices(restricted)
* Software restricted by copyright or legal issues (multiverse)
/etc/apt/sources.list.d/目录下的文件格式与常规的 sources.list 文件格式相同。
======== 分割线 ========
如何修改Apt repository?
默认的Ubuntu里使用的服务器,都是美国服务器( archive.ubuntu.com)。如果网络延迟(network latency)过高的话,就需要选择一个网速快的镜像网站(mirror )。
第一种自动修改方法(Automatic Way):
1,打开系统菜单,点击 Software & Updates.
2,选择"Download from:",更改为other。
3,在弹出的对话框里,从列表中选择一个服务器。
4,更新索引(Reload)
$ sudo apt-get update
第二种手动修改方法(Manual Way):
1,首先要知道可用的镜像服务器(mirrors)。
列表地址: Mirrors : Ubuntu (launchpad.net)
2,修改URL地址
将/etc/apt/sources.list中的地址修改成你需要的地址。最简单的方法是使用nano。
$ sudo nano /etc/apt/sources.list  
3,更新索引(Reload)
$ sudo apt-get update
备注:
手动修改sources.list文件之前,最好备份一下,有备无患:
$ sudo cp /etc/apt/sources.list /etc/apt/sources_init.list
======== 分割线 ========
使用系统菜单添加第三方Apt Repository
打开了系统菜单里的“Software & Updates”,里面除了设置软件更新选项外,还能添加第三方软件库。
1,使用Authentication菜单,添加公钥文件,验证下载软件包的有效性。
大多数软件库都会提供一个公钥,用于验证需要下载和导入的软件包。
2,在“Other Software”里,添加第三方软件库的URL。
======== 分割线 ========
使用命令行来手动添加Apt repository
要添加或删除软件库,你需要以具有 sudo 权限的用户或 root 登录。
虽然 Ubuntu 的默认软件库中有成千上万的应用程序,但有时您可能需要从第三方软件库中安装软件。
在 Ubuntu 和 Debian 系统上添加 apt 仓库有两种方法。第一种方法是使用 add-apt-repository 命令,第二种方法是使用文本编辑器手动添加仓库。
Installing add-apt-repository (add-apt-repository command not found ) (安装 add-apt-repository工具
add-apt-repository 是一个 Python 脚本,允许你在 /etc/apt/sources.list 或 /etc/apt/sources.list.d 目录下的单独文件中添加 APT 软件库。该命令也可用于删除已存在的软件库。
如果你的系统上没有 add-apt-repository 命令,你会收到一条错误信息,提示 "add-apt-repository command not found"。
add-apt-repository 工具包含在 software-properties-common 软件包中。要安装它,请运行以下命令:
$ sudo apt update
$ sudo apt install software-properties-common
Adding Repositories with add-apt-repository(使用 add-apt-repository命令添加软件库
add-apt-repository 命令的基本语法如下:
add-apt-repository [options] repository
其中的repository既可以是可以添加到 sources.list 文件的普通软件库条目,比如:deb http://repo.tld/ubuntu distro component,也可以是 ppa:<user>/<ppa-name> 格式的 PPA软件库。
要查看 add-apt-repository 命令的所有可用选项,请在终端输入 man add-apt-repository。
默认情况下,在 ubuntu 18.04 及更高版本中,如果导入了软件库公钥,add-apt-repository 也会更新软件包索引。
软件包索引(package index)是一个数据库,其中记录了当前系统可用软件库中的所有可用软件包。
假设你想从 MongoDB 官方软件库中安装 MongoDB。 首先导入软件库的公钥:
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
使用下面的命令添加 MongoDB 存储库:
$ sudo add-apt-repository 'deb [arch=amd64] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse'
软件库将被添加到 sources.list 文件中。
现在你可以从新启用的软件库中安装任一软件包:
$ sudo apt install mongodb-org
如果出于任何原因,你想移除先前启用的软件库,请使用 --remove 选项:
$ sudo add-apt-repository --remove 'deb [arch=amd64] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse'
Adding PPA Repositories(添加PPA软件库)
个人软件包存档(PPA)是一项允许用户上传 Ubuntu 源软件包的服务,这些软件包是用 Launchpad 作为 apt 仓库构建和发布的。
Personal Package Archives (PPA) is a service that allows users to upload Ubuntu source packages that are built and published with Launchpad as an apt repository.
添加 PPA软件库时,add-apt-repository 命令会在 /etc/apt/sources.list.d/ 目录下创建一个新文件。
例如,要添加提供 FFmpeg 4.x 版本的 Jonathon F's PPA,可以运行:
$ sudo add-apt-repository ppa:jonathonf/ffmpeg-4
出现提示时按 Enter 键,版本库将被启用。
Press [ENTER] to continue or Ctrl-c to cancel adding it.
PPA版本库公钥将自动下载并注册。
将PPA 添加到系统后,就可以安装软件库的软件包了:
$ sudo apt install ffmpeg
apt 命令将安装软件包及其所有依赖的软件包。
Manually Adding Repositories(手动添加软件库)
如果想对软件库sources的组织方式有更多控制,可以手动编辑 /etc/apt/sources.list 文件,并在文件中添加一条apt软件库信息。
为便于演示,我们将启用 CouchDB 软件库,然后安装该软件。CouchDB 是由 Apache 软件基金会维护的免费开源容错 NoSQL 数据库。
要添加软件库,请使用文本编辑器打开 sources.list 文件:
$ sudo nano /etc/apt/sources.list
在文件末尾添加一行版本库信息:
deb https://apache.bintray.com/couchdb-deb bionic main
与其使用文本编辑器编辑文件,不如使用以下命令将软件库信息行添加到 sources.list 文件中:
$ echo "deb https://apache.bintray.com/couchdb-deb $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list
$(lsb_release -cs) 将打印 Ubuntu 的代号。例如,如果您的 Ubuntu 版本为 18.04,该命令将打印 bionic。
另一种方法是在 /etc/apt/sources.list.d/ 目录下创建一个新的软件库文件。
手动配置软件库时,还需要将软件库公共密钥手动导入系统。可以使用 wget 或 curl :
$ curl -L https://couchdb.apache.org/repo/bintray-pubkey.asc | sudo apt-key add -
上述命令应输出 OK,这意味着 GPG 密钥已成功导入,该软件库中的软件包将被视为可信软件包。
从新添加的软件库安装软件包之前,必须更新软件包索引:
$ sudo apt update
软件包索引更新后,你就可以从新添加的软件库安装软件包了:
$ sudo apt install couchdb
Conclusion (总结)
上面已经展示了如何在 Ubuntu 中添加 apt 软件库。同样的说明适用于任何基于 Debian 的发行版,包括 Kubuntu、Linux Mint 和 Elementary OS。
参考:
1,Linuxize
How To Add Apt Repository In Ubuntu | Linuxize
2,Ubuntubuzz
How To Change Ubuntu Repository Mirror Sources (ubuntubuzz.com)
3, Dev.to
What's inside /etc/apt/sources.list - DEV Community

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2808170.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Linux之项目部署与发布

目录 一、Nginx配置安装&#xff08;自启动&#xff09; 1.一键安装4个依赖 2. 下载并解压安装包 3. 安装Nginx 4. 启动 nginx 服务 5. 对外开放端口 6. 配置开机自启动 7.修改/etc/rc.d/rc.local的权限 二、后端部署tomcat负载均衡 1. 准备2个tomcat 2. 修改端口 3…

Linux笔记之LD_LIBRARY_PATH详解

Linux笔记之LD_LIBRARY_PATH详解 code review! 文章目录 Linux笔记之LD_LIBRARY_PATH详解1.常见使用命令来设置动态链接库路径2.LD_LIBRARY_PATH详解设置 LD_LIBRARY_PATH举例注意事项 3.替代方案使用标准路径编译时指定链接路径优先使用 rpath 还是 runpath&#xff1f;注意…

嵌入式软件分层设计的思想分析

“嵌入式开发&#xff0c;点灯一路发” 那今天我们就以控制LED闪烁为例&#xff0c;来聊聊嵌入式软件分层: ——————————— | | | P1.1 |-----I<|--------------<| | | | P2.1 |-------------/ ---------…

【JavaEE】_synchronized关键字——监视器锁monitor lock

目录 1. synchronized的特性 2. synchronized的使用 3. Java标准库中的线程安全类 1. synchronized的特性 &#xff08;1&#xff09;互斥&#xff1a; 前文已经介绍&#xff0c;某个线程执行到某个对象的synchronized中时&#xff0c;其他线程如果也执行到同一个对象&…

Git笔记——4

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言 一、操作标签 二、推送标签 三、多人协作一 完成准备工作 协作开发 将内容合并进master 四、多人协作二 协作开发 将内容合并进master 五、解决 git branch -a…

第十二章 Linux——日志管理

第十二章 Linux——日志管理 基本介绍系统常用日志日志管理服务日志轮替基本介绍日志轮替文件命名logrotate配置文件自定义加入日志轮转应用实例 日志轮替机制原理查看内存日志 基本介绍 日志文件是重要的系统信息文件&#xff0c;其中记录了许多重要的系统事件&#xff0c;包…

【操作系统】磁盘文件管理系统

实验六 磁盘文件管理的模拟实现 实验目的 文件系统是操作系统中用来存储和管理信息的机构&#xff0c;具有按名存取的功能&#xff0c;不仅能方便用户对信息的使用&#xff0c;也有效提高了信息的安全性。本实验模拟文件系统的目录结构&#xff0c;并在此基础上实现文件的各种…

[c++] 工厂模式 + cyberrt 组件加载器分析

使用对象的时候&#xff0c;可以直接 new 一个&#xff0c;为什么还需要工厂模式 &#xff1f; 工厂模式属于创建型设计模式&#xff0c;将对象的创建和使用进行解耦&#xff0c;对用户隐藏了创建逻辑。 个人感觉上边的表述并没有说清楚为什么需要使用工厂模式。因为使用 new 创…

12个的无时间限制的录屏软件详细比较

您可能尝试过许多录制程序&#xff0c;但大多数都会在30 分钟后停止录制萤幕。如果您需要录制较长的内容&#xff0c;特别是为公司会议或简报进行录制&#xff0c;您将必须找到最好的没有时间限制的录屏软件。这款录音软体可以让您长时间录音而没有任何麻烦。下面列出了12 款无…

亚马逊产品数据抓取

抓取数据 启动抓取 &#xff0c;亚马逊平台前台网站中可以查看、抓取、分析的一系列数据源&#xff0c;其数据种类繁多&#xff0c;本系统主要抓取产品列表&#xff08;包含主图、标题、价格、review分值、prime服务信息等&#xff09;、Listing详情信息&#xff08;包含5点描…

MyBatis---初阶

一、MyBatis作用 是一种更简单的操作和读取数据库的工具。 二、MyBatis准备工作 1、引入依赖 2、配置Mybatis(数据库连接信息) 3、定义接口 Mapper注解是MyBatis中用来标识接口为Mapper接口的注解。在MyBatis中&#xff0c;Mapper接口是用来定义SQL映射的接口&#xff0c;通…

超68万售出,sedo域名登顶最新一期交易排行榜

.com三字母域名售价超过68万人民币&#xff0c;币圈对应的四字母域名近期被曝光售价超过68万人民币。 近日&#xff0c;sedo平台交易信息显示&#xff0c;一个三字母域名被拍卖出10.5万美元&#xff0c;折合人民币超过68万人民币。 据查询&#xff0c;其注册时间为1995年&…

【FreeRTOS】任务创建

参考博客&#xff1a; ESP-IDF FreeRTOS 任务创建分析 - [Genius] - 博客园 (cnblogs.com) 1.什么是任务 1&#xff09;独立的无法返回的函数称为任务 2&#xff09;任务是无线循环 3&#xff09;无返回数据 2.任务的实现过程 1.定义任务栈 裸机程序&#xff1a;统一分配到一…

五种多目标优化算法(MOFA、NSWOA、MOJS、MOAHA、MOPSO)性能对比(提供MATLAB代码)

一、5种多目标优化算法简介 多目标优化算法是用于解决具有多个目标函数的优化问题的一类算法。其求解流程通常包括以下几个步骤&#xff1a; 1. 定义问题&#xff1a;首先需要明确问题的目标函数和约束条件。多目标优化问题通常涉及多个目标函数&#xff0c;这些目标函数可能…

软考44-上午题-【数据库】-数据定义语言DDL

一、SQL server数据库的体系结构 SQL server数据库的体系结构是由视图、基本表、存储文件&#xff0c;三级结构组成。 【回顾】&#xff1a;数据库的三级模式结构 视图&#xff1a;外模式 存储文件&#xff1a;内模式 基本表&#xff1a;概念模式 二、SQL语言的分类 SQL语言按…

Yolo v9 “Silence”模块结构及作用!

论文链接&#xff1a;&#x1f47f; YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information 代码链接&#xff1a;&#x1f47f; https://github.com/WongKinYiu/yolov9/tree/main Silence代码 class Silence(nn.Module):def __init__(self):supe…

2024最新零基础入门|白帽黑客学习教程,从0到黑客高手!

新手如何通过自学黑客技术成为厉害的白帽黑客&#xff1f; 我目前虽然算不上顶尖的白帽大佬&#xff0c;但自己在补天挖漏洞也能搞个1万多块钱。 给大家分享一下我的学习方法&#xff0c;0基础也能上手学习,如果你能坚持学完&#xff0c;你也能成为厉害的白帽子&#xff01; …

Escalate_Linux(4)-利用SUDO实现提权

利用SUDO实现提权 利用用户的sudo授权获得root的shell cat /etc/passwd cat /etc/sudoers 命令没有权限 echo "cat /etc/sudoers" >/tmp/ls chmod 755 /tmp/ls export PATH/tmp:$PATH /home/user5/script 想办法更改user1的口令 echo echo "user1:xiao…

【电子通识】为什么单片机芯片上会有多组VDD电源?

在单片机芯片规格书中&#xff0c;我们经常能看到多个组VDD的设计&#xff0c;如下红框所示管脚都是VDD管脚。 为什么需要这样设计&#xff1f;只设置一个VDD管脚&#xff0c;把其他的VDD管脚让出来多做几个IO或是其他复用功能不好吗&#xff1f;接下来我们从单片机内部的电路结…

ubuntu 22.04LTS的一些使用心得

前言 笔者一直在折腾ubuntu作为开发的主力系统&#xff0c;尤其是最近微信和各种软件陆续支持Debian系列&#xff0c;很多软件都可以用了&#xff0c;当然开源的软件大部分是跨平台的&#xff0c;尤其是idea系列。 X11 OR Wayland 关于X11和wayland&#xff0c;笔者还是使用…