[Linux]杂项

碎碎念

2023.7.11

目录问题

原来根目录是/ ,我一直以为根目录是家目录 (/home/user_name)

密码问题

电脑待机,但密码忘记了,想知道怎么修改密码。

待机导致 xshell 失联。怎么查看虚拟机ip呢?
ifconfig

bug好多

安装curl出现了好多问题。网上搜到很多解决命令,我就无脑粘贴运行,结果频频报错,一头雾水。

看到了一个回答说的很好:

在使用 dpkg -i 安装.deb软件包的过程中,会出现安装失败的可能。之后无论用 sudo apt install -f or sud apt autoremove 等常见的修复命令都是无效的。网络上很多解决方案都直接给出需要运行的命令,不分析原因也不说明理由。我从来不尝试这样的解决方案,除非我自己知道或是只能死马当活马医。

那种傻瓜式解决好像学不到什么东西,也很无趣。

两个命令

source 命令:更新配置文件

>>重定向符 :

 echo "source ~/.oh-my-zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" >> ~/.zshrc 
 #把 echo 后的这一串东西写到用户主目录的 zshrc 文件里。

那为什么要写到 zshrc 文件里面呢?显然因为它是配置文件。


拓展:

zsh会读取的配置文件

一般的shell都有两种配置文件,一者是全局的,放在/etc里,文件名前面没有’.'(非隐藏),另一种是放在用户家目录,只对当前用户生效,是隐藏的。以下对这两种不作区分

1,zshenv:一般放环境变量

2,zprofile:用于用户login时读入(执行)的配置

3,zshrc:用户开启交互是命令行时读入的配置

用户环境变量

搭网站需要docsify,docsify 又需要 npm -js ,安装完发现 docsify 命令无法识别,查了查发现是环境变量的问题。

npm install -g forever
安装了之后在其他目录无法执行,找不到命令,在windows下可以直接使用,在linux下需要配置下环境变量

npm prefix -g 该命令可以看到node全局环境的目录在哪里

环境变量配置(LINUX)

Linux环境变量配置有三种:

当前用户当前shell有效。(临时环境变量,关闭即失效)
当前用户有效
所有用户均有效

(1) 临时环境变量

在 shell 中运行下列命令,$PATH:后跟想要加入环境变量的目录

export PATH=$PATH:/usr/nodejssoft/node-v10.9.0-linux-x64/bin

(2) 对当前用户有效

修改用户目录下的.bashrc文件
vi ~/.bashrc
在文件最后添加该语句

PATH=$PATH:/usr/nodejssoft/node-v10.9.0-linux-x64/bin

重新登录即生效

(3) 所有账户均有效

修改/etc/profile文件

在末尾添加以下内容

#sudo vi /etc/profile
export PATH="$PATH:/usr/nodejssoft/node-v10.9.0-linux-x64/bin"

退出当前shell再重新登录即可生效或执行source /etc/profile该命令

版权声明:本文为qq_33788609原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。


echo -e "export PATH=$(npm prefix -g)/bin:$PATH" >> ~/.bashrc && source ~/.bashrc

权限问题

成功配好环境变量,运行 docsify 后,又遇到了权限问题。

Error: EACCES: permission denied, mkdir' XXX/XXX '

网上查了查,发现是npm没有权限。于是赋予了它权限,用到了chmod:

sudo chown -R $USER /usr/local/lib/node_modules

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dmbw29TI-1690860271225)(C:\Users\fancyzzz\AppData\Roaming\Typora\typora-user-images\1689662657565.png)]

成功了。

所以权限问题有两种解决思路:

  1. sudo
  2. chown

./node_modules/hexo/node_modules/hexo-cli/bin/

所有命令失效

PATH=/bin:/usr/bin:/usr/local/bin:${PATH}
export PATH

./configure – prefix

关于configure:

Linux下源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(make install),具体的安装方法一般作者都会给出文档,这里主要讨论配置(configure)。Configure是一个可执行脚本,它有很多选项,

关于prefix:

linux configure --prefix 的作用是:编译的时候用来指定程序存放路径 。

如下面示例:

cd keepalived-1.2.18/ && ./configure --prefix=/usr/local/keepalived
  1. 如果不指定 --prefix

则 安装程序的

可执行文件默认放在 /usr/local/bin
库文件默认放在 /usr/local/lib
配置文件默认放在 /usr/local/etc
其它的资源文件放在 /usr /local/share
非常地乱!

  1. 如果指定 --prefix

比如: --prefix=/usr/local/keepalived ,则此软件的所有文件都放到 /usr/local/keepalived 目录下,很整齐。

  1. 其他优点:
  • 卸载软件时,只须简单的删除该安装目录,就可以把软件卸载得干干净净;
  • 移植软件时,只需拷贝整个目录到另外一个机器即可;

pip3的镜像源

用pip3安装东西,提示一堆WARNING还有一个ERROR:

Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='pypi.org', port=443):

于是尝试更新pip3本身,依然报错:

Could not fetch URL https://pypi.python.org/simple/requests/: There was a problem confirming the ssl certificate: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify faile

搜了搜,好像是默认源识别/下载不了。需要改镜像源。

下面是解决方法:

问题原因

国内使用默认的pip的源就会这样修改一下就行,由于我是临时使用这台电脑,所以换了一种配置的方法。

1.解决方法【临时】

pip install requests -i http://pypi.douban.com/simple --trusted-host pypi.douban.com【 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com,这一段全部复制就行了,install后面根你需要下载的内容】\

2.解决方法【永久】

Windows:

python -m pip install --upgrade pip  -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

Linux:

  • cd ~ # 进入家目录

  • mkdir .pip # 新建.pip隐藏文件夹

  • cd .pip # 进入.pip隐藏文件夹

  • touch pip.conf # 新建pip.conf文件

  • vim pip.conf # 用vim编辑pip.conf文件,内容与Windows下pip.ini文件的内容一样

    pip.ini 内容:

    [global] 
    index-url=http://pypi.douban.com/simple/
    [install]
    trusted-host=pypi.douban.com
    
    
  • :wq # 保存退出

vim-plug

vim-plug 是一个Vim插件管理器,利用异步并行可以快速地安装、更新和卸载插件。它的安装和配置都非常简单,而且在操作过程中会给出很多易读的反馈信息,是一个相当友好精简的插件。

安装配置
下载 plug.vim 文件,根据操作系统不同,放置在以下autoload目录中:
Linux: ~/.vim/autoload
Windows: ~vimfilesautoloadplug.vim

  1. 目录结构如下,之后安装的插件将存放在plugged目录中:

  2. 在vimrc配置文件中增加plug-vim部分,示例如下:

call plug#begin(‘~/.vim/plugged’)
" Shorthand notation for plugin
Plug ‘foo/bar’
call plug#end()
配置实例
" plug-vim
“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”
" Specify a directory for plugins
call plug#begin(‘~/.vim/plugged’)

" Make sure you use single quotes
" Shorthand notation; fetches junegunn/vim-easy-align
Plug ‘vim-airline/vim-airline’
Plug ‘lilydjwg/colorizer’
Plug ‘kshenoy/vim-signature’
"Plug ‘mattn/gist-vim’
" Any valid git URL is allowed
"Plug ‘junegunn/vim-github-dashboard’
" Multiple Plug commands can be written in a single line using | separators
"Plug ‘SirVer/ultisnips’ | Plug ‘honza/vim-snippets’
" On-demand loading
"Plug ‘scrooloose/nerdtree’, { ‘on’: ‘NERDTreeToggle’ }

安装插件
vim-plug支持源码托管在GitHub的插件,你可以在github.com/vim-scripts/上找到vim官网里所有插件的镜像。

如果希望安装新插件,首先找到其在http://github.com的网址,然后将其追加至vimrc配置文件中的call plug#begin()和call plug#end()之间,最后执行以下命令安装所有引用的插件:

:PlugInstall

你也可以使用以下命令,指定安装特定的插件:

:PlugInstall gist-vim
卸载插件
如果希望卸载插件,请先在vimrc配置文件中注释或者删除对应插件的配置信息,然后再执行以下命令:

:PlugClean

更新插件
使用以下命令,可以更新vim-plug插件自身:

:PlugUpgrade
使用以下命令,可以批量更新所有已安装的插件:

:PlugUpdate

插件状态
使用以下命令,可以查看当前已安装插件的状态信息:

:PlugStatus

设置github代理

报错: Failed to connect to github.com port 443: Connection timed out
输入以下两行代码解决:

//首先,设置默认代理,也可以理解为清除代理
git config --global --unset http.proxy
git config --global --unset https.proxy

//设置代理
git config --global http.proxy “你需要的代理”
git config --global https.proxy “你需要的代理”

报错:GnuTLS recv error (-110): The TLS connection was non-properly terminated.
在使用 git clone 时,出现了以下报错: GnuTLS recv error (-110): The TLS connection was non-properly terminated.

依次输入以下代码:

# apt-get install gnutls-bin
git config --global http.sslVerify false
git config --global http.postBuffer 1048576000

修复DPKG问题

apt 安装时出现一大堆dpkg: WARNING

用删除info啥的不管用。运行一个脚本意外解决了。

#!/bin/bash
set -e

# Clean out /var/cache/apt/archives
sudo apt-get clean
# Fill it with all the .debs we need
sudo apt-get --reinstall -dy install $(dpkg --get-selections | grep '[[:space:]]install' | cut -f1)

DIR=$(mktemp -d -t info-XXXXXX)
for deb in /var/cache/apt/archives/*.deb
do
    # Move to working directory
    cd "$DIR"
    # Create DEBIAN directory
    mkdir -p DEBIAN
    # Extract control files
    dpkg-deb -e "$deb"
    # Extract file list, fixing up the leading ./ and turning / into /.
    dpkg-deb -c "$deb" | awk '{print $NF}' | cut -c2- | sed -e 's/^\/$/\/./' > DEBIAN/list
    # Figure out binary package name
    DEB=$(basename "$deb" | cut -d_ -f1)
    # Copy each control file into place
    cd DEBIAN
    for file in *
    do
        cp -a "$file" /var/lib/dpkg/info/"$DEB"."$file"
    done
    # Clean up
    cd ..
    rm -rf DEBIAN
done
rmdir "$DIR"

另外一个解法没有尝试

dpkg: warning: files list file for package '*****' missing; assuming package has no files currently installed

#1、列出所有 warning的包


apt reinstall sl
 # 结果发送至一个文件中

apt reinstall sl > warning.sh
#2、写一个脚本,挑选出错误的软件包进行重新安装
#!/bin/bash
#/*参考代码*/
for package in $(cat warning.txt | grep "dpkg: warning: files list file for package " | grep -Po "'[^']*'" | sed "s/'//g")do
  apt-get reinstall "$package";
done
  #此步骤需要20分钟左右。

文本编辑器

ubuntu 自带 nano 和 vim 。驯化了一天半时间的vim,刚刚小有熟悉,发现居然还有个更“人性化”的 nano。罢也,还好我是个爱捣鼓的人。

你可能感兴趣的:(linux,运维)