ubuntu无sudo权限以及非root的用户,用apt安装软件

1、apt-get简介

在Ubuntu系统中,经常要用到apt-get install XXX指令来安装软件,由于常常需要root权限来操作,所以搭配sudo食用口感更佳,apt-get指令对于安装、卸载、升级软件提供一条龙服务,对比于源码安装,实在是业界良心。

1.1 源码安装

源码安装的流程一般是三部曲:

./configure
make
make install  
  • ./configure是为了检测目标安装平台的特征,并且检查依赖的软件包是否可用或者是否缺少依赖软件包,configure事实上是个脚本,最终的目的是生成Makefile。
  • 如果第一条指令没有报错,会生成一个Makefile,make指令就是编译这个源码包
  • 正常编译完之后如果没有报错,就生成了可执行文件,make install指令就是将可执行文件放到指定目录并配置环境变量,允许我们在任何目录下使用这个软件。
1.1.1 源码安装的优点
  • 对于普通用户而言,实在是想不到什么优点…
  • 对于软件开发者而言,可以拿到源码阅读学习并修改,geek一个软件简直比找女朋友还好玩!同时也可以在一定程度上防止黑客的攻击(你知道这个版本的漏洞,但是老夫已经把它修复了!!!)
1.1.2 源码安装的缺点

其实三部曲的安装还是不那么麻烦的,前提是不报错!一旦报错,对于linux初学者而言,那也真是丈二摸不着头脑,然后各种百度各种google,按照各种江湖术士的方法来整,结果把系统整崩的情况数不胜数,即使当时能用,但是也有可能在以后的使用中出现莫名其妙问题的隐患,让我们来看看这些问题都是啥样的:

  • ./configure报错: 如果检查到缺少依赖或者依赖文件的版本不匹配呢?一般出现这种情况,就自己解决吧,一般的做法是,升级软件包或者安装缺少的依赖软件包,运气好的话,解决报错的依赖问题就行了,运气不好的话,A软件包依赖B,B又依赖A…这是比较常见的linux劝退方式,从入门到放弃!
  • make报错,由于源码包的形式多是个人用户更新维护的,所以可能出现一些平台没测试到位或者在特定平台上程序出现bug的情况,这种情况就没办法了,如果你有能力debug那当然另说
  • make install 报错,这个指令报错的形式一般仅仅是没有权限,加上sudo就行。但是同时因为源码包多由个人维护,也经常可能出现造成系统垃圾的情况,又或者你需要卸载的时候 make uninstall指令仅仅卸载可执行文件,其他配置文件和依赖文件不作处理。

2、apt-get指令管理安装包

2.1 常用操作

在上面说了那么多源码安装的缺点,聪明的盆友就要猜我我将要引出今天的主角:apt-get包管理应用软件,由apt-get管理的软件包可以轻松做到一键安装卸载。废话不多说,我们先看看它的常用用法:

sudo apt-get install XXX
sudo apt-get install -y XXX
sudo apt-get install -q XXX
sudo apt-get remove XXX
sudo apt-get purge XXX
sudo apt-get autoremove
sudo apt-get update
sudo apt-get upgrade
  • apt-get install XXX
    一键安装软件包,与源码安装不同的是,这个指令会自动检测并安装依赖,而且用apt-get安装的包都是成熟的软件包,基本不存在安装包有严重bug或者文件缺失的情况。
  • sudo apt-get install -y XXX
    这里主要讲的就是-y选项,添加这个选项就相当于不需要重复地确认安装
  • sudo apt-get install -q XXX
    即-quiet,静默安装,当然也不是完全静默,会将低等级的log信息屏蔽。
  • sudo apt-get remove XXX
    既然有安装就会有卸载,remove指令就是卸载,值得注意的是,remove仅仅卸载软件,但是并不卸载配置文件
  • sudo apt-get purge XXX
    卸载指令,同时卸载相应的配置文件
  • sudo apt-get autoremove
    关于这条指令,官方解释是这样的:autoremove is used to remove packages that were automatically installed to satisfy dependencies for other packages and are now no longer needed
    在卸载软件的时候同时卸载那些当初作为依赖但是现在并不需要的包。
    看起来非常完美的指令,但是博主建议慎用!!这条指令很可能将你要用的依赖包同时卸载,有时候你的安装包并没有通过apt-get指令来管理,apt-get管理工具不会加入这些包的信息,所以在检索包的依赖关系时可能出问题.
    又或者是另一种情况:举个例子:在安装某个包时,这个包依赖git,但是git并非你主动下载的,而是作为依赖下载的,包安装完之后系统可能就会提示git作为依赖不再需要使用,它并不知道你是不是正在使用这个软件包。
  • apt-get update
    将所有包的来源更新,也就是提取最新的包信息,这一条我们经常使用到。
  • apt-get upgrade
    这条指令一般执行在apt-get update之后,它的作用是将系统中旧版本的包升级成最新的,慎用!

因为在linux下,由于大部分为非商业软件,所以稳定性并没有得到很好的验证,升级到最新版本需要十分慎重!

2.2 apt-get执行原理

2、ubuntu无sudo权限以及非root的用户,用apt安装软件

一般来说使用apt安装软件,必须要有root权限,因为apt安装时需要写/usr/bin、/usr/share等目录,而这些目录只有root用户(或有sudo权限)才有写入权限的,所以没有sudo权限的普通用户,要用apt安装软件的话,就只能以源码安装方式来安装了,具体操作如下:

apt source package	# package是要安装的软件名,包名和sudo apt instal package 中的一样
cd package 			# 进入下载的package目录,这个目录不一定就是package,名字中可能有版本号

# 使用--prefix是最关键的,它是用于指定安装目录的,如果没有它就可能要安装到/usr下了,此时需要sudo
# 必须是绝对路径,不能用~代表home,即必须以/开头,路径可以用双引号括起来
./configure --prefix=/path/to/install  # 该目录可以是不存在的,会自动创建
									  						  
make -j && make install # -j选项是make并行加速,&&是指只有前一条命令成功后才运行后一条

注意: 执行第一条命令可能出现如下错误:

E: You must put some 'source' URIs in your sources.list

这是因为你的/etc/apt/source.list中将所有deb-src的条目给注释掉了,所以apt命令找不到源码安装的地址,如果出现此错误并且你有sudo权限,则将所有deb-src前面的#去掉即可,但是很有可能你没有sudo权限,这个时候就需要自己手动去下载软件的源码,然后解压,然后从上面的第二条命令开始执行就可以了。

最后: 软件安装完成后,shell解释器可能找不到该软件,此时需要将该软件安装目录添加到PATH中,并且需要注意的是,必须是添加该软件(命令)的直接父目录,比如说我刚才的/path/to/install是写的$HOME/local,则安装好后一般会在local目录下生成bin目录,此时刚才安装好的软件就是在~/local/bin目录里,所以需要将 ~/local/bin添加到PATH中,而不是 ~/local。

# 添加bin目录到PATH中
vim ~/.bashrc # 打开shell的配置文件.bashrc

# 按shift+G,再按o,然后输入下面的命令
export PATH=$PATH:~/local/bin # 输入后,按ESC,然后按shift ZZ 即可保存并退出

# 使刚才的修改生效即可使用了
source ~/.bahsrc

如果没有vim编辑器,或者不太会使用vim,可以将上面的命令中的vim替换成gedit,就可以使用gedit来修改bashrc文件了。

  • 20
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Ubuntu 22.04 中,如果你不想使用 root 用户安装 Docker,可以按照以下步骤进行: 1. 在另一台联网的机器上,下载 Docker 的 deb 包和依赖包。可以从 Docker 的官方网站下载对应版本的 deb 包和依赖包,也可以使用 wget 命令下载。 例如,如果要安装 Docker 20.10.8 版本,可以使用以下命令下载对应的 deb 包和依赖包: ``` mkdir docker cd docker wget https://download.docker.com/linux/ubuntu/dists/hirsute/pool/stable/amd64/containerd.io_1.4.9-1_amd64.deb wget https://download.docker.com/linux/ubuntu/dists/hirsute/pool/stable/amd64/docker-ce-cli_20.10.8~3-0~ubuntu-hirsute_amd64.deb wget https://download.docker.com/linux/ubuntu/dists/hirsute/pool/stable/amd64/docker-ce-rootless-extras_20.10.8~3-0~ubuntu-hirsute_amd64.deb wget https://download.docker.com/linux/ubuntu/dists/hirsute/pool/stable/amd64/docker-ce_20.10.8~3-0~ubuntu-hirsute_amd64.deb ``` 2. 将下载的 deb 包和依赖包复制到目标机器上。 可以使用 scp 命令将文件复制到目标机器上,例如: ``` scp *.deb user@remote:/path/to/folder ``` 其中,user 是目标机器上的用户名,remote 是目标机器的 IP 地址或域名,/path/to/folder 是目标机器上的文件夹路径。 3. 在目标机器上安装依赖包。 使用以下命令安装依赖包: ``` sudo dpkg -i containerd.io_1.4.9-1_amd64.deb docker-ce-cli_20.10.8~3-0~ubuntu-hirsute_amd64.deb docker-ce-rootless-extras_20.10.8~3-0~ubuntu-hirsute_amd64.deb docker-ce_20.10.8~3-0~ubuntu-hirsute_amd64.deb ``` 如果出现依赖关系错误,可以使用以下命令修复: ``` sudo apt-get install -f ``` 4. 将 root 用户添加到 docker 用户组中。 使用以下命令将当前用户添加到 docker 用户组中: ``` sudo usermod -aG docker $USER ``` 其中,$USER 是当前用户名。 5. 重新登录或重启系统。 为了让用户组变化生效,需要重新登录或重启系统。 6. 验证 Docker 是否安装成功。 使用以下命令验证 Docker 是否安装成功: ``` docker run hello-world ``` 如果输出以下信息,说明 Docker 安装成功: ``` Hello from Docker! This message shows that your installation appears to be working correctly. ... ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值