zoukankan      html  css  js  c++  java
  • ubuntu 离线装包

    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秒搞定,而且下载下来一个包一个文件,让我觉得不太靠谱,不建议使用

    最近发现一个神奇的事情,那就是,apt-get竟然可以安装本地的deb文件,而且还装成功了,我也是开始怀疑人生了啊,

    sudo apt-get install xxx.deb
    #一脸懵,依赖怎么解决?dpkg -i算啥?内心充满大大的疑惑

    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.2-common... php7.2-json... php7.2-opcache... php7.2-readline... php7.2-cli... libapache2... php7.2_7.2... php_1%3a7.2... php7.2-curl... php7.2-mysql... php-mysql... php-curl...

    2,mysql安装顺序

    #包名称简写
    mysql-common....
    mysql-client_5.7...
    mysql-client-5.7...
    mysql-client-core...
    mysql-server-core....
    sudo apt-get install libevent-core-2.1-6(这么装是因为我没有这个deb包,不知是丢失了还是其他原因没有)
    mysql-server_5.7...
    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
  • 相关阅读:
    谷歌分析配置行为事件
    CentOS7.6下模拟iSCSI,Windows来连
    2.CentOS6.5下的DNS主从区域传送配置
    1.CentOS6.5下的基础DNS配置
    CentOS下搭建DHCP服务
    思科设备配置DHCP服务
    思科网络设备配置AAA认证
    vsftpd文件虚拟用户搭建
    Windows网络服务渗透攻击分类
    使用脚本来监控新建进程及其父进程以及他们的命令行
  • 原文地址:https://www.cnblogs.com/0-lingdu/p/11458689.html
Copyright © 2011-2022 走看看