ubuntu内网安装软件

2023-11-16

在生产环境中很少有连接外网的服务器,这里以ansible内网安装为例来介绍。

1、安装ansible(有外网)

1、ansible的安装包存在于ansible的PPA中,如果要下载PPA(个人软件包存档),就必须要使用apt-add-repository这个命令,而software-properties-common软件中包含这个命令,所以下载顺序如下:

root@ubuntu:~# sudo apt install software-properties-common
root@ubuntu:~# sudo apt-add-repository ppa:ansible/ansible
root@ubuntu:~# sudo apt update
root@ubuntu:~# sudo apt install ansible

2、免密设置:我个人做个多次实验,不免密就报错,所以尽量做免密吧。

root@ubuntu:~/ansible2# ssh-keygen
或者
root@ubuntu:~/ansible2# ssh-keygen  -t  rsa
# 然后一路回车就好
ssh-copy-id root@192.168.91.159

注:ssh-copy-id root@192.168.91.159可能会报错,因为Ubuntu默认root做免密,可以换成普通用户,也可以把ansible主机的~/.ssh/id_rsa.pub的内容添加到另一台的~/.ssh/authorized_keys内容后面做成手动免密。还可以对ssh的配置文件进行如下修改/etc/ssh/sshd_config,之后执行ssh-copy-id root@192.168.91.159

# Authentication:
LoginGraceTime 120
PermitRootLogin without-password
StrictModes yes

改成

# Authentication:
LoginGraceTime 120
#PermitRootLogin without-password
PermitRootLogin yes
StrictModes yes

到此,测试ansible可以使用测试命令如下:ansible netflow -m shell -a’date’

2、用deb包安装ansible(内网环境)

离线模式安装ansible,重点在于攻克root@ubuntu:~# sudo apt-add-repository ppa:ansible/ansible这个命令,了解他是干嘛的就可以成功了。好吧我在文章最后在对他就行解释吧,这个难关我没有攻克,于是我决定用ansible的deb包进行安装。
1、在离线机器上的操作

root@ubuntu:~# sudo apt-get --allow-unauthenticated -y install --print-uris ansible | cut -d\' -f2 | grep http:// > /var/tmp/download-list

2、把/var/tmp/download-list传到有网的机器上,然后执行如下操作把所需要的依赖包下载到当前目录,最好在下载一个sshpass的包

sudo wget -i download-list

3、使用dpkg命令进行离线安装

sudo  dpkg  -i   *.deb

注:如果wget下载后提示404等,那么可能是离线服务器的源的问题。把离线服务器换成阿里云源就可以了。
4、依照上面有网的操作做免密。

到此,离线安装结束。

5、不过我还查到一个下载依赖包的好办法(对ansible安装没有成功)

  1. 查看依赖:
apt-cache depends XXX
  1. 递归的方式下载 deb 依赖包
apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances --no-pre-depends XXX | grep -v i386 | grep "^\w")
  1. 使用dpkg命令进行离线安装:
dpkg -i *.deb

3、总结一下apt-add-repository命令

最近Ubuntu安装ansible遇到了这四个命令

root@ubuntu:~# sudo apt install software-properties-common
root@ubuntu:~# sudo apt-add-repository ppa:ansible/ansible
root@ubuntu:~# sudo apt update
root@ubuntu:~# sudo apt install ansible

1、什么是 PPA?
当你执行sudo apt-add-repository ppa:ansible/ansible的时候, /etc/apt/sources.list 文件中会多出一些URL。/etc/apt/sources.list这便是存储库,我感觉类似于centos的yum源。
在这里插入图片描述
当您执行 sudo apt update 命令时,Ubuntu 系统就会使用 APT 工具检查在线存储库,并将有关软件及其版本的信息存储到缓存中。 当您使用 sudo apt install package_name 安装软件时,系统就会使用该信息从存储实际软件的 URL 获取该软件包。

在存储库中添加地址,然后去下载,如果存储库中没有关于某个软件包的信息,终端中将返回以下错误:(感觉非常像yum源)

E: Unable to locate package

2、为什么要使用 PPA?

Ubuntu 的存储库控制着用户可以在系统上获得的软件版本。但如果 ISV 或开发人员发布了软件新版本,Ubuntu 的官方存储库不可能立即提供。为了确保系统稳定性,官方源会检查新版本是否与系统兼容,所以在软件发布新版本后,短时间内用户是无法通过 Ubuntu 的官方存储库来获得最新软件版本的。

3、为什么 PPA 不适用于所有 Ubuntu 发行版?

PPA 意味着个人包存档,请注意个人这个词,它暗示了这是开发人员所独有的东西,并没有得到分发的正式认可。

Ubuntu 提供了一个名为 Launchpad 的平台,让软件开发人员能够创建自己的存储库,方便最终用户将 PPA 存储库添加到 sources.list。当用户更新系统时,Ubuntu 系统就能够知道这个新软件的可用性,而且可以使用标准的 sudo apt install package_name 命令来安装它,就比如:

sudo add-apt-repository ppa:dr-akulavich/lighttable

sudo apt-get update

sudo apt-get install lighttable-installer

将上述命令总结一下就是:

1]、sudo add-apt-repository <PPA_info> 命令可以将 PPA 存储库添加到 sources.list 列表中

2]、sudo apt-get update 此命令更新软件包列表

3]、sudo apt-get install <package_in_PPA> 命令用于安装软件包

现在让我们详细拆解一下:

sudo add-apt-repository ppa:dr-akulavich/lighttable

上述命令中并没有列出存储库的 URL,这是因为该工具旨在对有关 URL 的信息进行抽象化。如果你添加 ppa:dr-akulavich/lighttable,将会获取到 Light Table;如果添加的是 ppa:dr-akulavich,将能够获取到上层存储库中的所有存储库或软件包。

基本上,当您使用 add-apt-repository 添加 PP A时,相当于手动执行类似如下命令:

deb http://ppa.launchpad.net/dr-akulavich/lighttable/ubuntu YOUR_UBUNTU_VERSION_HERE main

deb-src http://ppa.launchpad.net/dr-akulavich/lighttable/ubuntu YOUR_UBUNTU_VERSION_HERE main

上述 2 条命令是将存储库添加到 sources.list 的传统方法,而在添加 PPA 时会自动完成对 sources.list 文件的配置,而无需用户知道确切的存储库 URL 和操作系统版本,相当于是自动化的。

而相当重要的一点就是,使用 PPA 时它不会更改 Ubuntu 系统中的原始 sources.list 配置文件,而是根据最佳实践在 /etc/apt/sources.list.d/ 目录中创建列表文件和对应(save 扩展名)的备份文件。
在这里插入图片描述
4、如何下载 PPA
需要在互联网上搜索 PPA 名称,如 ppa:dr-akulavich/lighttable,就可以获得 Launchpad 这一官方 PPA 托管平台中的结果。当然,你也可以直接到 Launchpad 网站中进行搜索。
在这里插入图片描述
在这里插入图片描述
由于 Gdebi 在处理依赖项方面要好得多,建议使用 Gdebi 而非软件中心来安装这些 DEB 文件。

5、如何删除PPA安装的软件
建议在删除 PPA 之前事先删除通过 PPA 安装的软件,如果你只删除 PPA,则已经安装的软件仍然会保留在系统当中,而且还无法获得任何更新。

那么问题来了,如何判断哪些应用程序是通过 PPA 安装的呢?

1、找出通过PPA安装的软件

Ubuntu软件中心是不包括这个功能的,我们可以通过新立得包管理器来找出通过 PPA 安装的软件:

sudo apt install synaptic

在新立得包管理器中选择源自:如下是启动命令

root@ubuntu:~# synaptic

在这里插入图片描述
找到包后,您可以直接用新立得包管理器来删除它们,或者执行终端命令来删除:

sudo apt remove package_name

删除用 PPA 安装的软件包后,您可以继续从 sources.list 中删除 PPA。

2、以图形方式删除PPA

转到软件和更新——然后转到其它软件选项卡——查找要删除的 PPA:

在这里插入图片描述
你有两个选择:您取消选择 PPA 或直接用删除选项。

其区别在于:当您取消选择 PPA 条目时,系统会将 /etc/apt/sources.list.d 中的 ppa_name.list 文件注释掉;如果选择删除选项,就会直接删除 /etc/apt/sources.list.d 目录中的 ppa_name.list文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ubuntu内网安装软件 的相关文章

  • 更新Linux中的包含路径

    我的 my path to file 文件夹中有几个头文件 我知道如何将这些文件包含在新的 C 程序中 但每次我都需要在包含它之前输入头文件的完整路径 我可以在linux中设置一些路径变量 以便它自动查找头文件吗 您可以创建一个 makef
  • 当命令在 Ubuntu 终端中运行时,为什么 Dart 的“Process.start”无法执行 Ubuntu 命令?

    我有命令想用 Dart 调用 命令是sonar runner如果我在普通的 Ubuntu 终端中运行它 它会完美运行 这是因为我已经编辑了PATH in the profile文件 使其成为全局命令 但是 如果我写一个简单的Process
  • Python glob,操作系统,相对路径,将文件名放入列表中[重复]

    这个问题在这里已经有答案了 我正在尝试创建一个目录中所有文件的列表 其中文件名以 root 结尾 在阅读了论坛中的一些文章后 我尝试使用 glob 和 os listdir 的基本策略 但我都遇到了麻烦 首先 当我使用 import glo
  • “git add”返回“致命:外部存储库”错误

    我刚刚进入 git 的奇妙世界 我必须提交我对程序所做的一系列更改 位于名为的目录中 var www myapp 我创建了一个新目录 home mylogin gitclone 从这个目录中 我做了一个git clone针对公共回购 我能够
  • LINUX:如何锁定内存中进程的页面

    我有一个 LINUX 服务器 运行一个具有大量内存占用的进程 某种数据库引擎 该进程分配的内存太大 需要将其中一部分换出 换出 我想做的是将所有其他进程 或正在运行的进程的子集 的内存页面锁定在内存中 以便只有数据库进程的页面被换出 例如
  • 更改启动 Java 运行时后 IntelliJ IDEA 无法在 Ubuntu 上启动

    之前 我的 IntelliJ 运行得很好 但我使用的是 java 6 所以我的项目无法使用 gradle 运行 我用命令将java切换到版本8sudo update alternatives config java 我检查了java ver
  • 嵌入清单文件以要求具有 mingw32 的管理员执行级别

    我正在 ubuntu 下使用 i586 mingw32msvc 交叉编译应用程序 我很难理解如何嵌入清单文件以要求 mingw32 具有管理员执行级别 对于我的例子 我使用了这个hello c int main return 0 这个资源文
  • Linux无法删除文件

    当我找到文件时 我在删除它们时遇到问题 任务 必须找到带有空格的文件并将其删除 我的尝试 rm find L root grep i 但我有错误 rm cannot remove root test No such file or dire
  • 为什么 fork 炸弹没有使 android 崩溃?

    这是最简单的叉子炸弹 我在许多 Linux 发行版上执行了它 但它们都崩溃了 但是当我在 android 终端中执行此操作时 即使授予后也没有效果超级用户权限 有什么解释为什么它没有使 Android 系统崩溃吗 一句话 ulimit Li
  • 当我尝试在 .bashrc 中添加命令时出现命令未找到消息

    我问了一个问题如何在 bash shell 中编写漂亮优雅的 linux 命令 https stackoverflow com q 19720095 80353 当我尝试该建议时 我收到以下错误消息 Sorry command not fo
  • 如何才能将 TCP 连接返回到同一端口?

    机器是 RHEL 5 3 内核 2 6 18 有时我在 netstat 中注意到我的应用程序有连接 建立了 TCP 连接本地地址 and 国外地址是一样的 其他人也报告了同样的问题 症状与链接中描述的相同 客户端连接到本地运行的服务器的端口
  • 关键字“if”如何测试一个值是真还是假?

    在 bash 脚本中 if 1 then echo Yes else echo No fi Output Yes 它表示 1 被视为真值 但在代码中 word Linux letter nuxi if echo word grep q le
  • grep 排除文件的数组参数

    我想从我的文件中排除一些文件grep命令 为此我使用参数 exclude excluded file ext 为了更容易阅读 我想使用包含排除文件的 bash 数组 EXCLUDED FILES excluded file ext 然后将
  • ioctl 命令的用户权限检查

    我正在实现 char 驱动程序 Linux 并且我的驱动程序中有某些 IOCTL 命令仅需要由 ADMIN 执行 我的问题是如何在 ioctl 命令实现下检查用户权限并限制非特权用户访问 IOCTL 您可以使用bool capable in
  • 执行命令而不将其保留在历史记录中[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 在进行软件开发时 经常需要在命令行命令中包含机密信息 典型示例是将项目部署到服务器的凭据设置为环境变量 当我不想将某些命令存储在命令历史记
  • SSH,运行进程然后忽略输出

    我有一个命令可以使用 SSH 并在 SSH 后运行脚本 该脚本运行一个二进制文件 脚本完成后 我可以输入任意键 本地终端将恢复到正常状态 但是 由于该进程仍在我通过 SSH 连接的计算机中运行 因此任何时候它都会登录到stdout我在本地终
  • 创建反应应用程序:npm 错误!解析“...”附近时 JSON 输入意外结束

    描述错误 npx create react app my app不适合我 我试过npm cache clean force但我一次又一次地遇到同样的错误 重现步骤 npm cache clean force npm npx create r
  • 为什么 Linux 没有 DirectX API?

    在考虑现代显卡的 Windows 系统上 DirectX API 的驱动程序端实现时 我想知道为什么此实现在非 Windows 系统 尤其是 Linux 上不可用 由于明显缺乏此功能 我只能假设有一个我无视的充分理由 但在我的原始理解中 我
  • 调用 printf 系统子例程在汇编代码中输出整数错误[重复]

    这个问题在这里已经有答案了 来回 在windows7控制台窗口中运行gcc s2 asm 然后生成一个exe文件 运行a exe 然后崩溃 为什么 s2 asm 代码由以下源代码生成 int m m 1 iprint m s2 asm请参考
  • Google BQ:运行参数化查询,其中参数变量是 BQ 表目标

    我正在尝试从 Linux 命令行为 BQ 表目标运行 SQL 此 SQL 脚本将用于多个日期 客户端和 BQ 表目标 因此这需要在我的 BQ API 命令行调用中使用参数 标志 parameter 现在 我已经点击此链接来了解参数化查询 h

随机推荐

  • 逻辑回归中的损失函数的解释

    1 Logistic Regression 逻辑回归 逻辑回归是机器学习中的一个非常常见的模型 逻辑回归模型其实仅在线性回归的基础上 套用了一个逻辑函数 逻辑回归可以看做是两步 第一步和线性回归模型的形式相同 即一个关于输入x的线性函数 第
  • java有趣的技术分享ppt_【干货分享】盘点2020年流行的五大Java技术

    Java作为编程语言的老大 在编程语言排行榜一直占据前三地位 受到众多编程爱好者的追捧 再加上Java语言在各个领域的开发应用和高于其他行业的薪资待遇 使它成为许多零基础学习者的首选编程语言 为了帮助更多Java初学者 下面小编就和大家分享
  • 挑战利用ChatGPT写代码,真的能成功吗?

    使用姿势 1 由于ChatGPT的注册门槛较高 国内很多网站都是付费的或者有各种限制 我在 多御浏览器 中使用 无需注册就能免费体验ChatGPT 2 使用ChatGPT4 我的问题有些口水文 但是它依然能懂 设计一个表 支持树形结构 可以
  • VR原理讲解及开发入门

    本文是作者obuil根据多年心得专门为想要入门的VR开发者所写 由52VR网站提供支持 1 VR沉浸感和交互作用产生的原理 在之前 我们观看一个虚拟的创造内容是通过平面显示器的 52VR上次发布过一篇文章 一张图让你认识VR 在其中 你会看
  • python 安装scrapy是报错 building 'twisted.test.raiser' extension error: Microsoft Visual C++ 14.0 is req

    问题描述 在win7下 python 3 7 3 64位 在windows下 在dos中运行pip install Scrapy报错 building twisted test raiser extension error Microsof
  • 集群服务器安装时间同步服务(chrony)

    摘要 服务器之间的时间需要同步 但并不是所有机器可以直接连外网 这时可以用Chrony工具解决 解决方法是将其中一台设为时间服务器 然后其它服务器和这台时间服务器同步即可 chrony是两个用来维持计算机系统时钟准确性的程序 这两个程序命名
  • 表单页面美化(html、css)

    表单页面美化 html css 效果图片 实现代码 html部分就是平常的输入框 div class mainfont h1 在线预约 h1 div div class form div
  • OSW

    OSWatcher 工具 下载文档 Metalink Doc ID 301137 1 Oswatcher 主要用于监控主机资源 如CPU 内存 网络以及私有网络等 其中私有网络需要单独配置 需要说明的执行OSWatcher用户需要常见OS
  • 密码学概述

    一 密码学的起源与发展 密码学英文名称为Cryptography 密码学最为一门学科 是最近几十年开始迅速被人们重视和发展起来的 密码学往往与信息安全四个字精密的联系着 最早的密码学的 始祖 可以说是早在公元前几百年就已经出现了 当然 当时
  • 使用JDWP远程debug

    JDWP JDWP是Java Debug Wire Protocol 的缩写 它 定义了调试器 debugger 和被调试的Java虚拟机 target vm 之间的通信协议 SpringBoot debug 1 springboot框架搭
  • detr复现

    https github com IDEA Research detrex 先跑通 相关原理和代码后续解读
  • springboot不同版本整合elasticsearch

    使用springboot整合elasticsearch时候 需要注意版本的对应关系 不然问题会非常多 对应关系如下 springboot2 1整合 elasticsearch的两个方式 通过spring data es springboot
  • Typora软件下载与安装及使用技巧(保姆式教学)

    Typora的下载安装 当前 Typora 是一款支持实时预览的 Markdown 文本编辑器 深受广大程序员的喜爱 简洁明了 方便操作 下面来讲一下它的详细下载安装过程叭 下载安装过程 Typora的下载官网 https typoraio
  • 微信小程序云开发上传图片无法预览显示

    这是图片无法预览显示的情况 而且文件格式显示也不显示为图片格式 不要忘记要在起完名字后加上你希望的图片格式后缀名 加完之后就可以正常显示了
  • Linux链接脚本lds概述

    一 概论 ld 用来把一定量的目标文件跟档案文件链接在一起 并重新定位它们的数据 链接符号引用 一般编译一个程序时 最后一步就是运行ld进行链接 每一个链接过程都由链接脚本 linker script 一般以lds作为文件的后缀名 控制 链
  • 说说你对Object.defineProperty()的理解

    代码在最后 定义 Object defineProperty 方法会直接在一个对象上定义一个新属性 或者修改一个对象的现有属性 并返回此对象 Object defineProperty obj prop descriptor obj 要定义
  • Python糖尿病人预测是否患癌症

    Python糖尿病人预测是否患癌症 统计回归分析的任务 就在于根据x1 x2 x3 xp线性回归和Y的观察值 去估计函数f 寻求变量之间近似的函数关系 我们常用的是 假定f函数的数学形式已知 其中若干个参数未知的观察值去估计未知的参数值 这
  • 网马解密初级篇

    一 网页挂马的概念 网页挂马是指 在获取网站或者网站服务器的部分或者全部权限后 在网页文件中插入一段恶意代码 这些恶意代码主要是一些包括IE等漏洞利用代码 用户访问被挂马的页面时 如果系统没有更新恶意代码中利用的漏洞补丁 则会执行恶意代码程
  • nodejs egg框架统一错误信息返回封装

    use strict app middleware error handler js module exports gt return async function errorHandler ctx next try await next
  • ubuntu内网安装软件

    在生产环境中很少有连接外网的服务器 这里以ansible内网安装为例来介绍 1 安装ansible 有外网 1 ansible的安装包存在于ansible的PPA中 如果要下载PPA 个人软件包存档 就必须要使用apt add reposi