Ubuntu

N_Linux

APT 包管理工具

 
// 搜索软件包
apt-cache search PackageName
apt-cache search openjdk
 
//列出已安装的所有软件包
dpkg -l
// 搜索已安装的
apt list --installed
apt list --installed | grep openjdk
 
//删除软件包, 保留配置文件
apt-get remove PackageName
//删除软件包, 同时删除配置文件
sudo apt-get --purge remove openjdk-8-jdk
openjdk-8-jre-headless/
apt-get 安装软件包
//普通安装
apt-get install PackageName
//安装指定包的指定版本
apt-get install PackageName=VersionName
//重新安装
apt-get --reinstall install PackageName
//安装源码包所需要的编译环境
apt-get build-dep PackageName
//修复依赖关系
apt-get -f install
//下载软件包的源码
apt-get source PackageName
//删除软件包, 同时删除为满足依赖, 而自动安装且不再使用的软件包
apt-get purge PackageName
//删除软件包, 删除配置文件
apt-get autoremove PackageName
//删除不再使用的依赖包
apt-get --purge autoremove PackageName
//清除 已下载的软件包 和 旧软件包
apt-get clean && apt-get autoclean
//获取软件包的相关信息, 如说明、大小、版本等
apt-cache show PackageName
//查看该软件包需要哪些依赖包
apt-cache depends PackageName
//查看该软件包被哪些包依赖
apt-cache rdepends PackageName
//检查是否有损坏的依赖
apt-get check

Ubuntu Python 环境

对于Python 3,使用以下命令:

sudo apt install python3

使用以下命令创建一个虚拟环境:

python3 -m venv langchain0.3

激活虚拟环境:

source langchain0.3/bin/activate

Ubuntu J2E环境


安装mysql

  • 安装
  sudo apt-get install mysql-server
  
  sudo apt-get install mysql-client
  //sudo apt-get install libmysqlclient-dev
  • 登陆到mysql (默认端口3306)
    mysql -u root -p

  • 使用

    参考另一篇笔记 : N_mysql.md

Open JDK

Oracle JDK

安装

  • 官网下载 for linux

  • Linux x64 jdk-xxx-linux-x64.tar.gz

  • 解压 : tar -xvf jdk-8u131-linux-x64.tar.gz

  • 移动到 : sudo mv jdk1.8.0_161/ /opt/

  • 配置环境变量 :

依次执行

  CLASS_PATH="/opt/jdk1.8.0_161/lib"
  JAVA_HOME="/opt/jdk1.8.0_161"
  PATH=$PATH:$JAVA_HOME/bin
  • 执行java,javac命令
  sudo update-alternatives --install /usr/bin/java java /opt/jdk1.8.0_161/bin/java 300
  sudo update-alternatives --install /usr/bin/javac javac /opt/jdk1.8.0_161/bin/javac 300
  • 选择默认版本(多版本的情况)
    • sudo update-alternatives --config java
  • 测试
    • java | javac | java - version

卸载

  update-alternatives --display java//查看安装版本
 
  sudo update-alternatives --remove "java" "/opt/jdk1.8.0_161/bin/java"
  sudo update-alternatives --remove "java"  "/opt/jdk1.8.0_161/bin/javac" 
  sudo update-alternatives --remove "java" "/opt/jdk1.8.0_161/bin/javaws"
  
  //确认这些符号链接(symlinks)是否都删除了
  java -version
  javac -version
  which javaws 
 
  //更新
  update-alternatives --config java
  update-alternatives --config javac
  update-alternatives --config javaws
 

安装tomcat

  • 官方下载:

    • 例: apache-tomcat-7.0.78.tar.gz
  • 解压:

    • tar -xvf apache-tomcat-9.0.1.tar.gz
  • 移动:

    • sudo mv apache-tomcat-9.0.1 /opt/
  • ./bin/ 目录下有启动和关闭脚本,运行即可。

    • sudo ./startup.sh
    • sudo ./shutdown.sh

Ubuntu Hello Word

安装Shadowsocks 服务端

  1. 安装python3
    apt-get install python3-pip
  2. 安装shadowsocks
    pip3 install https://github.com/shadowsocks/shadowsocks/archive/master.zip
  3. 创建配置文件
    vi/etc/shadowsocks/config.json
      {
        "server":"::",
        "server_port":8899,
        "local_address": "127.0.0.1",
        "local_port":1080,
        "password":"abcd369258147",
        "timeout":300,
        "method":"aes-256-cfb",
        "fast_open": false
      }
  1. 后台运行: ssserver -c /etc/shadowsocks/config.json -d start
    参考: ssserver -h

安装Shadowsocks 客户端

  1. 安装ss

sudo apt-get update sudo apt-get install python-gevent python-pip pip install shadowsocks

  1. run sslocal -s 1.1.1.1 -p 9999 -k “your passwd” -b 127.0.0.1 -l 1080 read config file run sslocal -c /home/dumblidor/ss.json

  2. 全局模式

系统设置 >> 网络 >> 网络代理 >> 方法 >> 手动 然后将Socks主机的ip和端口填好 Socks = 127.0.0.1 端口=1080

  1. pac 模式 sudo pip install genpac

genpac —format=pac —pac-proxy=“SOCKS5 127.0.0.1:1080” -o autoproxy.pac

系统设置 >> 网络 >> 网络代理 >> 方法 >> 自动 在配置URL处填写file:// 后面跟你的pac文件路径,如图,然后点击应用到整个系统:

https://www.cnblogs.com/Dumblidor/p/5450248.html

安装ShadowsocksR 服务端

bash <(curl -sL https://raw.githubusercontent.com/hijkpw/scripts/master/ubuntu_install_ssr.sh)

ssr 配置信息: IP(address): 8.218.177.105 端口(port):5600 密码(password):asgfsdhyuituyi743tgsfdgsdgsfga 加密方式(method): aes-256-cfb 协议(protocol): auth_chain_b 混淆(obfuscation): http_simple

启动脚本: /usr/local/shadowsocks/server.py 配置文件: /etc/shadowsocksR.json 还安装了服务 systemctl start shadowsocksR systemctl stop shadowsocksR

参考: { start | stop | restart | status }

Ubuntu 配置 SSH和FTP


  • 更新软件源
    • sudo apt-get update

Ubuntu的软件源列表, 保存在一个 /etc/apt/sources.list 文件中,默认权限644,拥有者root

  • 建议备份一下

    • cp /etc/apt/sources.list /etc/apt/sources.list.back
  • 编辑文件

    • vi /etc/apt/sources.list
  • 换成阿里云的源

末尾 源url

1. openssh-SSH

  • 证书/ssh配置

    1. linux端, 安装 ssh 服务

      • sudo apt-get install openssh-server
    2. 生成公/密钥

      • 方式1, 在linux上执行: ssh-keygen -b 2048 -t rsa

        然后键入保存文件名和密钥密码(密钥可以不设密码,以实现无密登陆)
        会在当前目录生成, 公钥和密钥证书文件
        有.pub 后缀的是公钥,没有的是私钥

      • 方式2, 使用puttygen

        运行 puttygen.exe -> generate 在Key Passphrase 可以为密钥设置密码 ->保存 公/私钥
        authorized_keys 文件的权限对当前用户至少要有读/写权限

    3. 创建 .ssh 目录,如果已经存在就不用建了

      • mkdir /root/.ssh
    4. 把公钥复制到~/.ssh目录下, 命名为authorized_keys

      • cp rsa-key.pub /root/.ssh/authorized_keys

        注意,如果已存在authorized_keys文件,请使用 cat 命令追加,以免破坏原来的认证

    5. 最好将整个目录权限都改为600 or 700

      • chmod 600 /root/.ssh
    6. 编辑sshd_config 配置文件

      • vi /etc/ssh/sshd_config

        找到配置项 改为如下;删掉注释
        RSAAuthentication yes
        PubkeyAuthentication yes
        AuthorizedKeysFile %h.ssh/authorized_keys
        这个配置项,可以禁止密码登录,增加安全性
        PasswordAuthentication no

    7. 重启服务生效

      • service sshd restart
  • puttygen使用私钥
    putty选项,点窗口左侧的SSh –> Auth ,单击窗口右侧的Browse… 选择私钥, 再点Open

踩坑

  • SSH调试

  • ssh -v -p 27101 root@127.xxx.xxx.xxx

  • 某些目录权限太大 会导致SSH无法登陆

chmod 111 /var/empty/ /var/empty/sshd # 必须是 111权限; 拥有者是root? service sshd restart

2. openssh-sftp

  • SFTP与FTP

SFTP是Secure File Transfer Protocol(文件传送协议)的缩写。可以为传输文件提供一种安全的网络的加密方法。简单说就是文件传输是加密的。比传统的FTP明文传输安全。

  • 未安装,先安装openssh-server
    • apt-get install openssh-server

FTP的用户、权限配置

  • 新建ftp用户组

    • groupadd ftp
  • 新建FTP专用用户user_ftp,加入 ftp 组,不能使用Shell

    • useradd –g ftp –s /bin/false user_ftp

usermod -g ftp user_ftp chsh user_ftp -/usr/sbin/nologin

  • 修改其密码

    • passwd user_ftp abc123
  • 建立限制目录

    • mkdir -p /ftpdir/user_ftp
  • 建立上传目录

    • mkdir -p /ftpdir/user_ftp/up
  • 限制权限

    • chmod 755 /ftpdir/user_ftp
    • chmod 775 /ftpdir/user_ftp/up
  • 更改上传目录的拥有者

    • chown user_ftp /ftpdir/user_ftp/up/

配置sshd_config文件

  • 使用VI编辑/etc/ssh/sshd_config 文件

    • vi /etc/ssh/sshd_config
  • 注释“#”掉,这一项

    • Subsystem sftp /usr/libexec/openssh/sftp-server
  • 在文件末尾增加

#配置一个外部子系统,允许sftp 
Subsystem sftp internal-sftp

#只有ftp用户组的才能访问
Match Group ftp

#限制用户访问的根文件夹           
ChrootDirectory /ftpdir/user_ftp
Subsystem     sftp     internal-sftp      --新增
Match    Group    sftp                       --新增
ChrootDirectory    %h                        --新增,%h为用户主目录的意思
  • 重启服务 生效
    • service sshd restart

OK []( ̄▽ ̄)*



3. 更易用的 WindTerm

Ubuntu 的环境变量

  • /etc/profile: 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置.所以如果你有对/etc/profile有修改的话必须得重启你的修改才会生效,此修改对每个用户都生效。可以通过命令source /etc/profile立即生效

  • /etc/bashrc/etc/bash.bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.

  • ~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取.(每个用户都有一个.bashrc文件,在用户目录下)

/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是”父子”关系.

编辑环境变量

#set java env
export JAVA_HOME=/usr/lib/jdk/jdk1.8.0_171
export JRE_HOME=${JAVA_HOME}/jre    
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib    
export PATH=${JAVA_HOME}/bin:$PATH 

执行命令使修改立即生效
source /etc/profile 

配置软连接 软连接相当于windows系统中的快捷键,部分软件可能会从/usr/bin目录下查找Java,因此添加该软连接防止其他软件查找不到的情况。

sudo update-alternatives —install /usr/bin/java java /usr/lib/jdk/jdk1.8.0_171/bin/java 300
sudo update-alternatives —install /usr/bin/javac javac /usr/lib/jdk/jdk1.8.0_171/bin/javac 300

Ubuntu Nginx

目录

$sudo apt-get install nginx

Ubuntu 安装之后文件结构:

所有的配置文件都在/etc/nginx下,并且每个虚拟主机已经安排在了/etc/nginx/sites-available下

程序文件/usr/sbin/nginx 日志放在了/var/log/nginx中 并已经在/etc/init.d/下创建了启动脚本nginx

默认的虚拟主机的目录设置在了/var/www/nginx-default (有的版本 默认的虚拟主机的目录设置在了/var/www, 请参考/etc/nginx/sites-available/default 配置模块化里的配置)

Nginx 管理

$sudo /etc/init.d/nginx start $sudo /etc/init.d/nginx start sudo /etc/init.d/nginx restart

修改静态IP

ifconfig -a //找到网卡名 (eth0)

修改 vi /etc/sysconfig/network-scripts/ifcfg-eth0

Ubuntu 安装Go

获取最新的软件包源,并添加至当前的apt库 add-apt-repository ppa:longsleep/golang-backports

更新 apt库 apt-get update

安装go sudo apt-get install golang-go

鉴定是否安装成功 go version

Ubuntu 踩坑指南


关于sshd_config配置文件推荐:http://www.jinbuguo.com/openssh/sshd_config.html
Linux命令大全查询:http://man.linuxde.net/



N卡驱动

Ubuntu系统集成的显卡驱动程序是nouveau,它是第三方为NVIDIA开发的开源驱动,我们需要先将其屏蔽才能安装NVIDIA官方驱动。

查看属性

$sudo ls -lh /etc/modprobe.d/blacklist.conf

修改属性

$sudo chmod 666 /etc/modprobe.d/blacklist.conf

用gedit编辑器打开

$sudo gedit /etc/modprobe.d/blacklist.conf

在该文件后添加一下几行:

blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist rivatv
blacklist nvidiafb
 

3.开始安装 先按Ctrl + Alt + F1到控制台,关闭当前图形环境

sudo init 3

sudo rm /tmp/.X* $sudo service lightdm stop

再安装驱动程序 $sudo sh NVIDIA-Linux-x86_64-xxx.run

最后重新启动图形环境 $sudo service lightdm start

双系统 与win10时间不同步问题

win10跟Ubuntu 16.04时间不对的问题,在windows下时区不对:

sudo apt-get install ntpdate
sudo ntpdate time.windows.com

然后将时间更新到硬件上:

sudo hwclock --localtime --systohc

ubuntu 安装软件存放目录的 /usr/share/ /usr/lib/

文件锁的问题 ps -aux

系统内核 uname -a

从 硬盘安装 ubuntu desktop 16.4

  1. ubuntu16.0.4.ios 镜像文件,和“.disk”文件夹和casper文件夹内的“initrd.lz”和“vmlinuz.efi”文件复制到C盘根目录

  2. EasyBCD 在左侧工具列表中选择“添加新条目”,在右侧功能区选择右上角的“NeoGrub”选项卡,点击“安装”按钮。 再配置 弹出menu.lst 编辑

title  Ububtu install
root (hd0,0)
kernel (hd0,0)/vmlinuz.efi boot=casper iso-scan/filename=/ubuntu-16.04-desktop-amd64.iso ro quiet splash nomodeset locale=zh_CN.UTF-8
initrd (hd0,0)/initrd.lz
(hd0,0) 指向的是当前系统盘的位置
ubuntu-16.04-desktop-amd64.iso 指Ubuntu系统镜像的文件名

2.1. 还要将iso文件入到该盘?

  1. 重启选择 Ububtu install 进入试用界面 打开终端 执行 卸载系统文件/离盘 sudo umount -l /isodevice

  2. 用自带的安装即可

或者 https://jingyan.baidu.com/article/e4d08ffdace06e0fd2f60d39.html

关于分区建议 /,swap,/tmp,/home

/:20G左右 swap:与内存相同 /boot:300M /home:剩下的全部空间


手动安装 grub引导

  1. 去官网下载 grub4dos_4.4.zip // http://grub4dos.org/

2.复制 grub4dos_4.4.zip/下的grldr和grldr.mbr文件到根目录 需要支持中文就复制grub4dos_4.4.zip/chinese/grldr

  1. /boot/grub 中寻找一个名字为grub.conf的设置文件 修改其配置文件

安装gui

#Xinit
sudo apt-get install xinit
#GNOME (环境管理器)
sudo apt-get install xinit
#(最后)桌面环境 2G多...
sudo apt-get install kubuntu-desktop
#以上大概占用3GB空间 =。=
reboot 
 
#如果你只想装界面的核心环境,或者网速比较慢的话,可以 
  #sudo apt-get install gnome-core 或者 kde-core xface4 
# 如果你装的是CORE的,那么你可能还需要做以下的工作: 
# ().安装新立得软件包管理器 
# sudo apt-get install gsynaptic 
# ().安装中文支持(能够显示中文) 
# sudo apt-get install language-support-zh 
# ().从新立得软件包管理器中选择中文输入法支持和中文界面支持 
# ().使用新立得软件包管理器安装其他你想要的软件 
 
1.设置默认不进入GUI 【GUI占内存】
    修改文件 [ /etc/X11/default-display-manager ]
        内容为 /usr/sbin/gdm 默认进入图形界面
        修改为false 则默认进入命令行
    如果想从控制台进入图形界面,可以在控制台上输入命令 $ startx
    
2.desktop
    1.sudo systemctl disable lightdm.service
        将会直接卸载删除 lightdm,目前没找到直接恢复办法。
    开启图形界面,默认图新界面
        针对上述,只能重装 lightdm
    2. 
    sudo systemctl set-default multi-user.target
    只是修改默认交互目标,开机不会后台启动桌面。
    sudo apt-get install --reinstall lightdm
    对应上述,再切换回默认图形交互
 
 
 
#正确的关机
正确姿势的关机流程为:sync > shutdown > reboot > halt
sync 将数据由内存同步到硬盘中。
Shutdown –h now
 
# 关闭系统
halt 关闭系统,等同于shutdown –h now 和 poweroff
 
 
# 重启(慎用)
reboot
 
# 重启 
 
shutdown -r
# -c:当执行“shutdown -h 11:50”指令时,只要按+键就可以中断关机的指令;
# -f:重新启动时不执行fsck;
# -F:重新启动时执行fsck;
# -h:将系统关机;
# -k:只是送出信息给所有用户,但不会实际关机;
# -n:不调用init程序进行关机,而由shutdown自己进行;
# -r:shutdown之后重新启动;
# -t<秒数>:送出警告信息和删除信息之间要延迟多少秒。

Ubuntu 安全更新问题

在 Ubuntu 14.04 以后的系统中,apt-get 相关的升级更新命令有四个:

apt-get update
apt-get upgrade
apt-get full-upgrade
apt-get dist-upgrade

根据 apt-get 的官方手册:

  • update - 从服务器更新可用的软件包列表。
  • upgrade - 根据列表,更新已安装的软件包。upgrade 不会删除在列表中已经没有的软件包,也不会安装有依赖需求但尚未安装的软件包。
  • full-upgrade - 根据列表,更新已安装的软件包。full-upgrade 可能会为了解决软件包冲突而删除一些已安装的软件包。
  • dist-upgrade - 根据列表,更新已安装的软件包。- - - dist-upgrade 可能会为了解决软件包冲突而删除一些已安装的软件包,也可能会为了解决软件包依赖问题安装新的软件包。

关于: xx ackages can be updated. 和 xx updates are security updates.更新问题
依次执行:

  • sudo apt-get update
  • sudo apt-get upgrade
  • sudo apt-get dist-upgrade
  • sudo reboot

完成更新



Ubuntu 国内源


 //软件源 文件保存路径 /etc/apt/sources.list 
 //sudo  cp   /etc/apt/sources.list   /etc/apt/sources.list.bak
 //sudo vi /etc/apt/sources.list 
 //sudo apt-get update
 
############ 以下是 阿里云源 ubuntu 20
 
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
 
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
 
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
 
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
 
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse