linux deepin无法安装软件源,Linux实战篇(一):Deepin20.4 离线软件源

需求背景是 有一台 内网的电脑上装了一个 Deepin20.4 (基于Ubuntu 20.4),它自带了一些软件但我还想装更多的软件。 内网的这个Deepin能下载东西,但不不能上传东西,也就不能向平常一样在终端  使用 apt install 命令安装软件,手动去 ubuntu官网下载难以解决递归式的依赖。所以我转为在连网的电脑上 制作一个离线软件源,这个软件源只包含内网电脑上需要的软件包。离线软件源做好后再传到内网Deepin 去安装。

一 . 获取初始Deepin系统上已经存在的软件

目的是避免下载内网 Deepin 已经有了的软件包。 终端输入命令  dpkg -l 你会看到啥? 一大堆 信息,我们需要哦的只是 其中的软件名,利用文本流处理命令中的 awk 命令 取第二个字段: dpkg -l | awk ‘/[hi]i/{print $2}‘  ,其中的 | 代表管道,使得 dpkg  -l  的标准输出 作为 awk 的标准输入。  awk 中的  / [hi]i / 被斜杠包着,是正则表达式,[ hi ] 代表此处有一个字符并且是  h 或者 i 中的一个,后面的 print $2 表示打印匹配行的  第二个字段 。 awk  行中字段的分法是  空格, 可以用 awk -F fs 把分隔符 设成其他符号。经过awk 语句 过滤 得到如下形式:

nvidia-egl-icd:amd64

nvidia-egl-icd:i386

nvidia-installer-cleanup

nvidia-kernel-common

nvidia-kernel-dkms

后面的 :amd64 ,:i386 指示的是平台架构,使用  apt-get download  debname  (debname 代表软件包名)时候,这些东西是不需要的,再用sed 命令过滤掉,最后 用重定向 符 > 将结果保存到文件: dpkg -l | awk ‘/[hi]i/{print $2}‘|sed -e ‘s/:.*//g‘ > originalhave ,sed  命令中的 s 代表 substitute (替换),s 后面紧跟的符号作为后面的参数分隔符,这里是斜杠 / ,换成! 或者其他也是可以的,  / :.*/  中的 冒号代表这个字符串就是 冒号开头,后面的 . 下点号 代表任意字符( 有不能代表的字符吗?),下点号后面的 星号 × 是修饰这个 下点号的, 表示这个任意字符长度任意,最后的 g 代表 global 就是说对awk 标准输出传过来给 sed 的全部字符流都都执行这样的  命令。结果重定向到了 originalhave 文本文件。

二. 获取软件递归依赖

1 #! /bin/sh

2

3 #该脚本放到 软件包所在文件夹执行4

5 SAMEDIR_DEB=samedirdebs6 OUTPUTLIST=needlist7 TMPOUT=tmpneedlist8

9 echo "`date` start"

10 ls | grep ".deb$" | sort | uniq >$SAMEDIR_DEB #当前文件夹含有的 。deb 软件包11 cat$SAMEDIR_DEB12 echo "up is curhave"

13 echo ""

14 echo `date`15 echo ""

16 if [ -n "$1" ]; then#输入非空,收集 第一个参数(软件) 的递归依赖 ,该功能未完善17 echo$#18 #for i in range $# ;do

19 # echo${$i}20 apt-cache depends $1 -i --recurse |grep -v "破坏:"| tr -d "|,," | sed -e ‘s/^Depends://g‘ | sed -e ‘s/^PreDepends://g‘|sed -e ‘s/^依赖://g‘|sed -e ‘s/^推荐://g‘|sed -e ‘s/^建议://g‘|sed -e ‘s/^预依赖://g‘ |sed -e ‘s/:.*//g‘|sort | uniq >>$OUTPUTLIST21 #done

22

23

24 else# 收集此脚本所在目录 的软件 的 递归依赖25

26 echo "update current directly"

27 for i in `cat $SAMEDIR_DEB | sed -e ‘s/_.*//g‘`; do #此脚本所在目录中 git_1%3a2.20.1.1-2deb10u3dde_amd64 这种 只 截取 git 去搜索递归依赖28 echo "##------------->>"

29 echo$i30 apt-cache depends $i -i --recurse |grep -v "破坏:"| tr -d "|,," | sed -e ‘s/^Depends://g‘ | sed -e ‘s/^PreDepends://g‘|sed -e ‘s/^依赖://g‘|sed -e ‘s/^推荐://g‘|sed -e ‘s/^建议://g‘|sed -e ‘s/预依赖://g‘ |sed -e ‘s/:.*//g‘|sort | uniq >>$OUTPUTLIST31 echo "<

32 echo " "

33 done

34

35

36 fi

37

38 cat $SAMEDIR_DEB $OUTPUTLIST | sort | uniq > $TMPOUT # 需要创建临时文件,不能 cat a b | sort | uniq >b。反之 b 可能会被置空。39 #同时也是将当前文件加 已经有了的软件加到 临时需求列表,再 在下面的命令中40 #用uniq -u 在需求列表中减去当前文件夹已经有了的软件。41 cat $TMPOUT $SAMEDIR_DEB | sort |uniq -u >$OUTPUTLIST # 取两文件中不同的部分输出42

43

44

45 #在 内网Deepin 刚刚装好系统时 获取已有文件:46 # dpkg -l | awk ‘/[hi]i/{print $2}‘|sed -e ‘s/:.*//g‘ >originalhave # 这个命令在内网Deepin执行47 # originalhave 文件放到 脚本相同文件夹48 #再学习上面的语句 得到49

50

51 cat $OUTPUTLIST originalhave | sort | uniq >$TMPOUT52

53 cat $TMPOUT originalhave | sort |uniq -u >$OUTPUTLIST # 取两文件中不同的部分输出为 最终需求列表。54

55 #下载:56 for i in `cat OUTPUTLIST ` ; do# 注意这里不是单引号 ,而是 电脑键盘左上角 波浪线号 一个位 的 ` `, 叫反引号57 echo " "

58 echo " "

59 echo "start download $i:"

60 apt-get download $i #有时候 下载卡住 ,可以考虑优化脚本跳过。61

62 done #下载完这么多的依赖包后,这个文件夹 里太多deb 包了。再次执行这个脚本会遍历大量的软件的依赖,估计会很慢,考虑修改中。

写完这个脚本记得 [ chmod u+x 脚本名  ] 或者暂时 [ chmod 777 脚本名 ]给脚本赋予执行权限。

三. 制作离线软件包 Release /InRelease / Release.gpg:

四. 参考资料:

原文:https://www.cnblogs.com/Huae/p/14071645.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Davfs2是一个Linux文件系统,它允许您通过WebDAV协议将远程Web服务器的文件系统挂载到您的本地文件系统中。它可以帮助您在本地文件系统上访问远程WebDAV服务器上的文件,就像它们是本地文件一样。以下是一些Linux davfs2优化技巧: 1. 调整缓存大小:默认情况下,davfs2使用128KB的缓存大小。如果您希望提高性能,可以增加这个值。您可以通过编辑/etc/davfs2/davfs2.conf文件来更改缓存大小。 2. 禁用不必要的协议:davfs2支持多种协议,但您可能只需要其中的一些。如果您只使用WebDAV协议,则可以通过编辑/etc/davfs2/davfs2.conf文件来禁用其他协议。将不需要的协议设置为“no”即可。 3. 使用缓存代理:davfs2支持缓存代理功能,可以将远程文件缓存到本地磁盘上。这可以提高性能,并减少网络流量。您可以通过编辑/etc/davfs2/davfs2.conf文件来启用缓存代理。 4. 调整超时时间:davfs2默认的超时时间是30秒。如果您的网络连接不稳定,您可能需要增加这个值。您可以通过编辑/etc/davfs2/davfs2.conf文件来更改超时时间。 5. 使用HTTP Keep-Alive:davfs2支持HTTP Keep-Alive功能,这可以减少网络流量。您可以通过编辑/etc/davfs2/davfs2.conf文件来启用HTTP Keep-Alive。 这些是一些可能有用的Linux davfs2优化技巧,它们可以提高性能并减少网络流量。请注意,这些优化可能会因环境而异,因此您应该根据您的具体情况进行调整。 ### 回答2: 要对Linux下的davfs2进行优化,可以考虑以下几个方面: 1. 调整配置:查看davfs2的配置文件/etc/davfs2/davfs2.conf,根据实际需求调整一些配置项,例如缓存大小(cache_size)、并发连接数(connections)、超时时间(timeout)等。可以根据网络环境和服务器要求进行适当的调整,以提升性能和稳定性。 2. 选择合适的文件系统:davfs2支持多种文件系统,例如WebDAV、OwnCloud等。根据实际情况选择最适合的文件系统,以确保最佳的性能和稳定性。 3. 合理使用缓存:davfs2默认会在本地进行缓存,以提高读写性能。可以适时清理缓存,防止占用过多的磁盘空间。同时,可以在配置文件中调整缓存大小(cache_size),根据需求决定是否需要增加缓存大小,以提升访问速度。 4. 定期维护和监控:定期检查davfs2的日志文件,查看是否有错误或警告信息,及时采取措施解决问题。可以使用一些监控工具,例如Nagios或Zabbix,对davfs2进行监控,以检测和预防性能问题。 5. 安装更新版本:及时更新davfs2到最新版本,以获取最新的功能和修复已知的问题。新版本可能会对性能进行优化,提供更好的稳定性和安全性。 总之,对Linux下的davfs2进行优化,需要根据实际需求和环境进行调整,并定期维护和监控,保证其性能和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值