linux下安装和卸载软件

2018-01-16 Vaniot 更多博文 » 博客 » GitHub »

linux

原文链接 https://vaniot-s.github.io/2018/01/16/linux%E4%B8%8B%E5%AE%89%E8%A3%85%E5%92%8C%E5%8D%B8%E8%BD%BD%E8%BD%AF%E4%BB%B6/
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。


linux(继承自Unix)的文件系统架构,系统会默认选择安装目录,通常情况下:

  • 程序的文档->/usr/share/doc; /usr/local/share/doc
  • 程序->/usr/share; /usr/local/share
  • 程序的启动项->/usr/share/apps; /usr/local/share
  • 程序的语言包->/usr/share/locale; /usr/local/share/locale
  • 可执行文件->/usr/bin; /usr/local/bin
  • 配置文件-> /etc
  • lib文件->/usr/lib 例如:系统安装软件一般在/usr/share,可执行的文件在/usr/bin,配置文件可能安装到了/etc下等。 <!--more-->

    一、软件包管理器

    dpkg(跟red hat的rpm非常相似)和apt-get进行安装软件,dpkg与apt-get的区别:

  • dpkg绕过apt包管理数据库对软件包进行操作,用dpkg安装过的软件包用apt可以再安装一遍,系统不知道之前是否安装过,会覆盖之前dpkg的安装。

  • dpkg是用来安装.deb文件,不会解决模块的依赖关系,不会关心ubuntu的软件仓库内的软件,可以用于安装本地的deb文件。

  • apt会解决和安装模块的依赖问题,并会咨询软件仓库, 不会安装本地的deb文件, apt是建立在dpkg之上的软件管理工具。

    1.dpkg

    dpkg -i remarkable_1.87_all.deb //安装软件
    dpkg -R /usr/local/src  //安装一个目录下面所有的软件包
    dpkg –-unpack remarkable_1.87_all.deb //释放软件包,但是不进行配置,如果和-R一起使用,参数可以是一个目录
    dpkg –configure remarkable_1.87_all.deb //重新配置和释放软件包. 如果和-a一起使用,将配置所有没有配置的软件包
    dpkg -r remarkable_1.87_all ///删除软件包(保留其配置信息)
    dpkg –update-avail <Packages-file> //替代软件包的信息
    dpkg –merge-avail <Packages-file> //合并软件包信息 
    dpkg -A package_file //从软件包里面读取软件的信息
    dpkg -P //删除一个包(包括配置信息)
    dpkg –forget-old-unavail //丢失所有的Uninstall的软件包信息
    dpkg –clear-avail //删除软件包的Avaliable信息
    dpkg -C  //查找只有部分安装的软件包信息
    dpkg –compare-versions ver1 op ver2  //比较同一个包的不同版本之间的差别
    dpkg –help  //显示帮助信息
    dpkg –licence (or) dpkg –license //显示dpkg的Licence
    dpkg --version  //显示dpkg的版本号
    dpkg -b directory [filename]  //建立一个deb文件
    dpkg -c filename //显示一个Deb文件的目录
    dpkg -I filename [control-file] //显示一个Deb的说明
    dpkg -l vim  //搜索Deb包
    dpkg -l //显示所有已经安装的Deb包,同时显示版本号以及简短说明
    dpkg -s ssh  //报告指定包的状态信息
    dpkg -L apache2 //显示一个包安装到系统里面的文件目录信息(使用apt-get install命令安装)
    dpkg -S remarkable //搜索指定包里面的文件(模糊查询)
    dpkg -p remarkable //显示包的具体信息
    dpkg-reconfigure --frontend=dialog debconf //重新配制 debconf,使用一个 dialog 前端 重新配制一个已经安装的包裹,如果它使用的是 debconf
    dpkg --get-selections *wine*  //获取当前状态 
    

    2.apt-get

    apt-get install packagename  //安装一个新软件包(参见下文的aptitude)
    apt-get remove packagename  //卸载一个已安装的软件包(保留配置文档)
    apt-get remove --purge packagename  //卸载一个已安装的软件包(删除配置文档)
    apt-get autoremove packagename  //删除包及其依赖的软件包
    apt-get autoremove --purge packagname  //删除包及其依赖的软件包+配置文件,比上面的要删除的彻底一点
    dpkg --force-all --purge packagename  //有些软件很难卸载,而且还阻止别的软件的应用,用这个强制卸载,但是有点冒险。
    apt-get autoclean //apt会把已装或已卸的软件都备份在硬盘上,所以假如需要空间的话,这个命令来删除您已卸载掉的软件的备份。
    apt-get clean  //这个命令会把安装的软件的备份也删除,不会影响软件的使用。
    apt-get upgrade  //更新软件包,apt-get upgrade不仅可以从相同版本号的发布版中更新软件包,也可以从新版本号的发布版中更新软件包,尽管实现后一种更新的推荐命令为apt-get dist-upgrade。在运行apt-get upgrade命令时加上-u选项很有用(即:apt-get -u upgrade)。这个选项让APT显示完整的可更新软件包列表。不加这个选项,你就只能盲目地更新。APT会下载每个软件包的最新更新版本,然后以合理的次序安装它们。在运行该命令前应先运行 apt-get update更新数据库,更新任何已安装的软件包。
    apt-get dist-upgrade  //将系统升级到新版本。
    apt-cache search string  //在软件包列表中搜索字符串。
    aptitude  //周详查看已安装或可用的软件包。和apt-get类似,aptitude能够通过命令行方式调用,但仅限于某些命令——最常见的有安装和卸载命令。
    由于aptitude比apt-get了解更多信息,能够说他更适合用来进行安装和卸载。
    apt-cache showpkg pkgs  //显示软件包信息。
    apt-cache dumpavail pkgs //打印可用软件包列表。
    apt-cache show pkgs  //显示软件包记录,类似于dpkg –print-avail。
    apt-cache pkgnames  //打印软件包列表中任何软件包的名称。
    apt-file search filename  //查找包含特定文档的软件包(不一定是已安装的),这些文档的文档名中含有指定的字符串。apt-file是个单独的软件包。必须先使用apt-get install来安装他,然后运行apt-file update。如apt-file search filename输出的内容太多,您能够尝试使用apt-file search filename | grep -w filename(只显示指定字符串作为完整的单词出现在其中的那些文档名)或类似方法.
    apt-cache search sorftname //查找包含特定文档的软件包
    apt-cache madusion sorftname //查找包含特定文档的软件包
    apt-cache policy sorftname //查找包含特定文档的软件包
    

    example

    ubuntu使用apt-get搭配java环境

    apt-get install default-jdk
    apt-get install default-jre
    

使用ubuntu自带apt-get安装加Node.js

在终端中执行:

# 当add-apt-repository 命令不能找到时先执行,apt-get install software-properties-common
sudo add-apt-repository ppa:chris-lea/node.js //ubuntu自带的node版本太老,PPA安装最新版的Node.js,
sudo apt-get update
sudo apt-get install nodejs
sudo apt-get install npm

更新node和npm

升级npm为最新版本

sudo npm install npm@latest -g

安装用于安装nodejs的模块n

sudo npm install -g n

然后通过n模块安装指定版本的nodejs,n模块更多介绍请参考官方文档

//安装官方最新版本
sudo n latest
//安装官方稳定版本
sudo n stable
//安装官方最新LTS版本
sudo n lts

二、源码包编译安装

编程语言的分类: 1.编译型语言: 在程序执行前,会编译成机器语言,再次执行不会编译 2.解释型语言: 在程序执行时翻译为机器语言

ps:脚本语言:是一种解释性语言,不需要编译,由相应的脚本引擎解释执行

  • 已经编译的二进制包 ——统称 binary,后缀可以是 .bin 或者.sh或者没有
  • 不需要编译即可运行的比如Python 源代码——即 source code,使用python *.py 调用

    1、编译、安装、运行程序

    1.编写c语言程序

    vi HelloWorld.c
    

    2.编写程序 c语言输出hello world 3.使用gcc编译为二进制文件

    gcc HelloWorld.c -o HelloWorld
    

    4.运行程序(已经编译的二进制包 ——统称 binary,后缀可以是 .bin 或者.sh或者没有 ) (1)使用路径 输入路径运行程序 (2)利用环境变量

    查看环境变量(环境变量由冒号分割开,使用命令在路径中去寻找该命令,使用which时若无该命令无输出) ubuntu环境变量

    • 将二进制文件复制到任意PATH变量包含的目录中 ubuntu环境变量
    • 将文件所在的目录添加到PATH变量中(先要确保已存在的路径中无该二进制文件) ubuntu环境变量 > 上述添加目录到PATH变量的方法在主机重启后会失去作用,并未将定义的环境变量保存到任何配置文件中 echo "export PATH=$PATH:/home/vaniot" >>/etc/rc.local

源码编译安装软件原理:

    源代码->源码编译生成可执行的文件->复制该文件到任一PATH变量包含的目录 

安装webdtorm

安装过程: 解压

    tar zxvf WebStorm-172.3544.10.tar.gz

移动

    sudo mv WebStorm-172.3544.10/ /opt/WebStorm-172.3544.10/

创建链接

    sudo ln -s /opt/WebStorm-172.3544.10/ /opt/WebStorm

启动

    /opt/WebStorm/bin/webstorm.sh

添加Dash图标

    启动webstorm->tools->Creat Desktop Entry

为ubuntu下的wechat创建Dash创建图标下载地址

1.在 /usr/share/applications 目录下增加 wechat.desktop

    sudo vim /usr/share/applications/wechat.desktop  

2.添加内容

     [Desktop Entry]  
     Name=wechat  
    Type=Application  
    Terminal=false  
    Comment=chat
    Exec=/opt/wechat/electronic-wechat
    Icon=/opt/wechat/resources/wechat.png

2.典型源码编译安装软件

(1).运行configure命令,结合必要的参数生成Makefile; (2).运行make命令生成各类模板和主程序 (3).运行make install命令将必要的文章复制到安装目录中

从源码编译安装

1.建造基本编译环境:

    sudo apt-get install build-essential tcl  

tcl包执行make test,用于在执行make后,检验make的过程是否有错

  • 为编译的软件安装合适的依赖,若是apt关系的源里有这个软件,或找到依赖相同的软件,使用apt-get build-dep 补齐依赖关系 如nginx可以使用

    sudo apt-get build-dep nginx
    

三、查找软件安装的位置

1.find命令

    sudo find / -name node

2.dpkg -L命令(件使用apt-get install命令安装)

    dpkg -L node

3.whereis命令

     whereis node

4.locate命令

     locate node

5.which命令

    which node

6.type命令

    type node

7.软件相关名称 dpkg --get-selections | grep ‘软件相关名称’

四、卸载方法

  • 编译安装后卸载可以试用

     sudo make uninstall  //若程序维护者嵌入了相关命令
    

    使用checkinstall处理编译的包安装则使用的deb/apt处理步骤

  • 删除软件

     sudo apt-get remove –purge 软件名
    sudo apt-get autoremove  --purge 软件名称  // 删除系统不再使用的孤立软件
    sudo apt-get autoclean 软件名称                      // 清理旧版本的软件缓存
    dpkg -l |grep ^rc|awk ‘{print $2}’ |sudo xargs dpkg -P     ///清除残余的配置文件