1,为什么要离线装包

防止有些包官方升级以后导致的不兼容,比如php5和php7,目前已经无法apt-get install php5了,

2,装包以前你得下载

deb包在哪里?

1,方法1,如果你有一个已经安装好了的一样的环境你可以在老系统上找

sudo apt-get 的包在路径 /var/cache/apt/archives下,一般会有对应的deb包

2,方法2,下载(这一步同样需要一台老的差不多的系统,并且安装过你想要的包)

apt-cache show 包名称
#这会显示有关包的详情,其中有一行Filename,拷贝内容,前面加上“http://archive.ubuntu.com/ubuntu/” 用网络访问,然后下载

最近突然发现有些arm机器并不能在ubuntu网站上找到合适的安装包,所以需要找到它自己适用的源才能下载所需的deb包,那么自己的源怎么找呢?cat /etc/apt/sources.list打印出源来,然后加上某个包后面的Filename的结果,就可以下载想要的deb包了

3,使用如下命令从网上下载,下载好的包会存放在/var/cache/apt/archives

sudo apt-get clean
#为的是确保/var/cache/apt/archives文件夹下没有其他安装包干扰,当然此文件夹下自带两个文件:lock和partial,大家请不要搭理它们 sudo apt-get install --download-only 包名称
#此命令会自动下载想要的包到/var/cache/apt/archives中,命令参数的意思是只下载,不安装。一个命令有可能会下载好几个包,比如apache2,一共下了大约4个相关的包

特别说一下,还有个命令叫

apt-get download 包名称

是下载某个包到当前文件夹,这个包本人用过一次,但是比较让人怀疑的是,下不管多大的包基本上是3秒搞定,而且下载下来一个包一个文件,让我觉得不太靠谱,不建议使用

3,dpkg装包

这个适合安装一些比较小的包,或者说单个包,基本没有依赖的那种,比如你可以使用它安装google-chrome

sudo dpkg -i xxx.deb

要注意,安装前要确认你的deb文件是否适用于你的系统,如果是ubuntu16.04装到ubuntu18.04上,估计是不行,有些包有依赖,必须按顺序来,另外dpkg装的包不会在/var/cache/apt/archives中备份

如果你用dpkg安装mysql和php,就是如下这样的,你就会发现,包必须按顺序装,然后全都装完了以后整合不起来。

以下是错误示范:

1,php7.2(sudo dpkg -i )安装顺序

#包名称简写
php-common...
php7.-common...
php7.-json...
php7.-opcache...
php7.-readline...
php7.-cli...
libapache2...
php7.2_7....
php_1%3a7....
php7.-curl...
php7.-mysql...
php-mysql...
php-curl...

2,mysql安装顺序

#包名称简写
mysql-common....
mysql-client_5....
mysql-client-5.7...
mysql-client-core...
mysql-server-core....
sudo apt-get install libevent-core-2.1-(这么装是因为我没有这个deb包,不知是丢失了还是其他原因没有)
mysql-server_5....
mysql-server-5.7...

装完以后直接用sudo不要密码可以登录,如果想要改成密码验证登录,那需要在mysql的终端中输入如下四句:

update mysql.user set authentication_string=password('你的密码') where user='root' and Host ='localhost';
update user set plugin="mysql_native_password";
flush privileges;
quit;

3,遇到问题,pdo驱动不工作,

解决办法:

sudo vim /etc/php/7.2/apache2/php.ini
添加两行到最后,没有分号:
extension = pdo.so
extension = pdo_mysql.so
重启apache
sudo /etc/init.d/apache2 restart
重新运行,竟然可以了

感谢原作者,注意,此方法本人不熟,仅在deb离线装包适用,目前不知道是否未来有什么隐含的坑

4,配置本地的源,使用本地源装包

本人参考教程:感谢原作者

1,必须要使用的包

sudo apt-get install apt-utils
#这个包是个啥本人不知,但是后期使用的命令:apt-ftparchive需要这个包才能工作
gpg
#这个包系统我的系统自带的,据说用于软件签名检查,不大了解

2,下载要安装的包,以apache2,mysql和php为例

注意,要是你想给电脑A装以上包,电脑A无法联网,那么你肯定希望使用电脑b下载,然后拷贝到A上进行使用,能使用的前提是两台电脑系统基本一样,不要一个是ubuntu16另一个是ubuntu18,越一样越好!不一样有可能导致安装失败。由于本人只是想学会本地源安装,所以从头到尾都是在一台电脑上运行的,如果有多台电脑,就多一个自己拷贝的命令。

sudo apt-get clean

sudo apt-get install --download-only apache2

sudo apt-get install --download-only mysql-server

sudo apt-get install --download-only php

sudo apt-get install --download-only php-mysql

sudo apt-get install --download-only php-curl

sudo apt-get install --download-only libapache2-mod-php

#下载完成以后你可以到/var/cache/apt/archives中找刚刚下载的包

3,新建源文件并且拷贝包进去

sudo mkdir /opt/debs
sudo cp /var/cache/apt/archives/*.deb /opt/debs
sudo chmod -R 777 /opt/debs
#防止没权限引起问题

4,在源文件夹中新建Packages和Packages.gz

cd ..
#当前文件夹应该是/opt,debs在当前文件夹下
apt-ftparchive packages debs > debs/Packages
#生成Packages文件到debs中,估计是一个源文件的支持文件,注意,Packages文件名不要自己乱改。
cd debs
gzip -c Packages > Packages.gz
#使用gzip把Package文件压缩一下,文件名也不能乱改

5,在源文件夹中新建Release文件,和相关的release文件。据说是这个原因:

ubuntu apt-get 对软件包索引,首先要求InRelease文件,其次才去找Release、Release.gpg文件; 这情况下, 其实只需要创建InRelease文件(包含Release文件和明文签名)即可:

apt-ftparchive release ./ > Release

gpg --clearsign -o InRelease Release

gpg -abs -o Release.gpg Release
#我也不知道这是啥意思

6,gpg我理解是用来给发布的软件加签名和检查的,具体不知,只说知道的。有的需要sudo,自己试试看吧

gpg --gen-key
#生成公钥和私钥
#会话会提示你输入用户名,邮件和密码,密码需要英文加数字, gpg --list-key
#查看一下你建的公钥和私钥
#这里面支持多个用户名和密码,还有过期不过期的说法。后期慢慢研究吧 gpg -a --export-secret-keys 你刚刚输的用户名 > ~/temp/private_key.sec
#生成的是私钥,自己找地方存起来就可以了 gpg -a --export 你刚刚输的用户名> ~/temp/public_key.pub
#生成的公钥,还是自己找地方存起来

7,接下来需要对debs文件夹进行导入公钥操作

sudo apt-key add ~/temp/public_key.pub

8,修改源

#系统源文件/etc/apt/source.list,我们需要修改它
cd /etc/apt
sudo cp source.list ./source.list.old
#比如拷贝一份,不然没了
sudo vim sources.list
#里面的内容全删,然后添加一行:deb file:/opt debs/

注意,是这样的

deb file:/opt debs/
#斜杠opt空格debs斜杠

9,更细源以及安装包

sudo apt-get update
sudo apt-get install apache2
sudo apt-get install mysql-server
sudo apt-get install php
sudo apt-get install php-mysql
sudo apt-get install php-curl
sudo apt-get install libapache2-mod-php

10,安装完成以后记得把原来的源文件换回来,不然以后安装包可就成功不了了

cd /etc/apt
sudo mv sources.list ./sources.list_localhost
sudo mv sources.list_old sources.list
sudo apt-get update

ubuntu 离线装包的更多相关文章

  1. ubuntu离线安装mysql

    一:ubuntu离线安装mysql 转载来源:https://blog.csdn.net/liuhuoxingkong/article/details/80696574 参考文章:https://ww ...

  2. 运维笔记--Ubuntu离线安装jdk1.8(JDK8)Java环境

    Ubuntu离线环境安装jdk1.8 系统版本:Ubuntu16.04 其他Ubuntu版本安装类似 Jdk版本:8 1. 下载相应离线软件包 Jdk oracle官方下载地址:https://www ...

  3. Ubuntu离线安装包制作(转载)

    From:http://blog.csdn.net/nupt123456789/article/details/11649603 1.应用场景 a.需要在多台电脑上安装同一软件,且软件很大,下载需要时 ...

  4. Ubuntu离线安装软件包

    一.应用场景 a.当我们需要在多台电脑安装同一个软件,并且这个软件很大,下载需要很长时间时 b.需要安装软件的ubuntu不能上网 二.离线安装包的制作 2.1.通过如下指令下载XXXX软件所需要的d ...

  5. python如何离线装包 离线如何部署python环境

    1,安装python windows: 我用的是python3.6.6.exe安装包,需要提前下载好 ubuntu: 自带的python,如果是ubuntu18.04的话,自带的应该是3.6.8 2, ...

  6. Ubuntu 离线安装 docker

    1.下载离线包,网址:https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/amd64/ 离线安装docker需要下载3个 ...

  7. ubuntu安装包查找及安装

    官方包源: http://packages.ubuntu.com/ ubuntu下当前安装的包保存在在:/var/cache/apt/archives ubuntu下当前安装的运用: /usr/sha ...

  8. Ubuntu离线更新flashplugin

    当网络太烂时,Ubuntu更新可能会卡在下载flashplugin上面,继而出错.在U论坛上找到一篇帖子,寻到成功安装flashplugin-installer的方法: 1.首先使用sudo apt- ...

  9. Ubuntu离线安装VSCode(附带前期准备工作)

    跨平台系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#linux 在说正式步骤前先把准备工作做到位: 1.IP设置,这个因为是GUI的,手动设置 ...

随机推荐

  1. 深度优先搜索DFS---求出矩阵中“块”的个数。

    题目: 给出一个 m x n 的矩阵,矩阵中的元素为0或1.如果矩阵中有若干个 1是相邻的,那么称这些1构成了一个“块”.求给定的矩阵中“块”的个数. 0 0 0 0 0 0 0 0 0 0 0 0 ...

  2. PIE-SDK For C++矢量数据的投影转换

    1.功能简介 目前在地理信息领域中数据包括矢量和栅格两种数据组织形式,每一种数据都可以对投影进行转换,目前PIE SDK支持矢量和栅格数据的投影转换功能,下面对矢量数据的投影转换功能进行介绍. 2.功 ...

  3. Spring boot mvn

    https://www.cnblogs.com/xiebq/p/9181517.html https://www.cnblogs.com/sun-yang-/p/7700415.html https: ...

  4. 使用centos6.5整理出来的常用命令

    1.Vi 基本操作1) 进入vi 在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面: $ vi myfile 进入vi之后,是处于「命令行模式(command mode)」,您要切换到「插 ...

  5. Linux文件夹被杀死求解?

    Linux中提示cheese.e-calendar-factory 两个文件夹被杀死 程序错误1.cheese process /usr/bin/cheese was killed by signal ...

  6. @Autowired、@Resource、@Qualifier区别

    @Autowired 1.属于spring的注解,如果不想和Spring耦合的太紧,就不推荐使用. 2.默认情况下,要求依赖对象必须存在,不能为null.如果允许为空,那么设置属性值required为 ...

  7. Mac下安装MySQL8的问题

    黑苹果用了一段时间之后,发现很多方面用起来比Windows还舒服些,没什么具体指标,就是纯粹一种感觉. 所以,慢慢将很多程序都迁移过来,在迁移过程中发现的一些有意思的事儿,我都把他们记录下来.如果,不 ...

  8. 利用GRC进行安全研究和审计 – 将无线电信号转换为数据包(转)

    0x00 介绍 InGuardians作为一家从事信息安全研究和咨询的公司,自创立以来不但关注着web应用的渗透测试,网络取证,嵌入式设备等领域也致力于无线网络的评估方法上面的研究.在期间无线网络评估 ...

  9. 占位 DL

    占位 DL include: DL404

  10. 最长公共子串2(LCS2) lg SP1812

    题意:n个字符串(n<=10)求最长公共子串的长度 前置技能点:https://www.cnblogs.com/wenci/p/10432932.html (两个字符串求最长公共子串的长度) 既 ...