1

Ubuntu工具集

 1 year ago
source link: https://yuxinli1.github.io/Ubuntu%E5%B7%A5%E5%85%B7%E9%9B%86/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

本文记录了一些软件的安装以及一些系统设置,主要是在Ubuntu系统下。

ThinkPad E480原Windows10改为Ubuntu后原D盘仅具有只读权限的解决方法

  1. 给当前用户授予该分区的所有权

    sudo chown -R <cur_user_group>:<cur_user> <挂载目录>

    假设当前用户为asd,用户所在组为asd1,原D盘挂载至/media/data下,则命令为

    sudo chown -R asd1:asd /media/data
  2. 卸载该分区

    umount /media/data
  3. reboot

    重启后当前用户便具有了该分区的所有权,可以对该分区进行读写

在Ubuntu 20.04中安装Pycharm

以下内容来自于Jetbrains官网

  1. 使用snap工具安装

    • sudo snap install pycharm-professional --classic
    • Run pycharm-professional in the Terminal

但是我的机器上使用snap会报一个error:unable contact snap store,从网上找了很多帖子,但是无法解决,因此采用下面的方法,先从官网上下载Linux版本的安装包。

  1. Install using tar archives

    • 解压pycharm-*.tar.gz文件到一个不同的目录,如果当前的下载目录不支持文件解压的话

      tar xzf pycharm-*.tar.gz -C <new_archive_folder>

      根据Linux的文件系统标准,建议的解压目录为/opt,使用以下命令将Pycharm解压到该目录

      sudo tar xzf pycharm-*.tar.gz -C /opt/<new_floder>
    • 进入bin子文件夹

      cd <new_folder>/pycharm-*/bin
      cd /opt/pycharm-*/bin
    • 运行bin中的pycharm.sh文件

      sh pycharm.sh

      第一次运行时需要做一些设置,根据提示来就可以。

在Ubuntu 20.04中安装Typora

wget -qO - https://typora.io/linux/public-key.asc | sudo apt-key add - # 添加公钥
sudo add-apt-repository 'deb https://typora.io/linux ./' # 添加typora仓库
sudo apt-get update
sudo apt-get install typora # 安装typora

在Ubuntu 20.04中安装*.ttf字体

切换目录到/usr/share/fonts/.local/share/fonts下,新建文件夹,比如my_font

cd /usr/share/fonts
sudo mkdir my_font

将字体文件*.ttf拷贝到新建的目录:

sudo cp [字体文件路径] /usr/share/fonts/my_font/

修改文件权限:

sudo chmod 644 /usr/share/fonts/my_font/*.ttf

开始安装:

sudo mkfontscale
sudo mkfontdir
sudo fc-cache -fv
  1. 创建字体的fonts.scalecale文件,用来控制字体的旋转和缩放
  2. 创建字体的fonts.dir文件,用来控制字体粗体斜体产生
  3. 建立缓存信息,即让系统和字体进行深入交流

如果fc-cache命令没有,可以根据提示用sudo apt-get install命令安装一个,通过这种方式安装不需要重启电脑

Reference: http://ivo-wang.github.io/2018/08/03/ubuntu-安装ttf字体/

在Ubuntu 20.04中添加环境变量

只写一下我目前需要的吧

/home/username/.profile~./profile文件末尾增加指令,比如我想要将pycharm的启动加入到这里并用一个简短的别名表示:

alias pc='sh /opt/pycharm-2020.2.3/pycharm-2020.2.3/bin/pycharm.sh'

然后在终端调用

source /home/username/.profile

使该文件生效,否则还要在下次该用户重新登陆之后才会生效

在~/.profile下进行修改只对当前用户有效

更新:发现关闭shell之后设置就无效了,还需要重新执行一下source /home/username/.profile才可以

修改:~/.profile文件只在用户登录时加载一次,因此打开子终端后就不再起作用,将别名添加到~/.bashrc中,用户在调用子shell时会加载其中的内容,这样便无需重新执行source

Ubuntu 20.04 运行自动挂载分区

  1. 使用sudo blkid 命令查看分区信息

该命令会列出所有分区的UUID和文件系统的类型,找到想要挂载的分区,记录下它的UUID和TYPE信息,例如:

dev/sdb2: LABEL="Data" UUID="884eef-aeed-cb986f1" TYPE="ext4" ...
  1. 修改配置文件

打开/etc/fstab文件,末尾添加如下一行:

UUID=884eef-aeed-cb986f1 /media.sdb2 ext4 defaults 0 2

数字0表示不使用dump程序对它进行备份

第二个数字2表示开机不优先检查此磁盘,1表示开机优先检查磁盘,用于根分区/,2用于普通分区,0禁止磁盘检查

  1. reboot

fstab文档的格式,每一行由6个参数组成,可以使用man fstab查看帮助文档

[Device] [Mount Point] [File System Type] [Options] [Dump] [Pass]
  • Options 可选项,默认为defaults,它被定义为一组用逗号分割的选项组合:rw,suid,dev,exec,auto,nouser,async

Reference: Ubuntu 开机自动挂载硬盘分区

Ubuntu 20.04 禁止启动时自启动蓝牙

  1. 使用CTL临时禁用

使用systemctl命令中的stop方法关闭蓝牙服务:

sudo systemctl stop bluetooth

如果没有起作用,可以使用-f参数强制关闭:

sudo systemctl stop bluetooth -f

也可以使用kill替代stop,蓝牙将会停止运行。当系统重新启动时,蓝牙将会再次开始运行.

  1. 使用CTL永久禁用

蓝牙和其他Ubuntu服务一样,是由系统初始化时systemd进程启动的。在方法一中仅仅只是临时关闭蓝牙,如果想要在系统启动时也保持这样的更改,那么需要使用systemctl disable命令:

sudo systemctl disable bluetooth.service

如果以上命令拒绝关闭蓝牙服务可以使用--force参数强制关闭:

sudo systemctl disable bluetooth.service --force

重启之后可以发现蓝牙没有开启.

Reference: How to disable Bluetooth in Ubuntu

如果想要再次将某项服务设置为系统启动时启动,可以使用systemctl enable,可以通过systemctl status查看服务运行状态

在Ubuntu 20.04中安装MongoDB

在官网中给出的安装已经十分详细了:Install MongoDB Community Edition on Ubuntu

这里翻译一下好了

平台支持:

  • Ubuntu 20.04 LTS(这里的指令只针对该版本)
  • Ubuntu 18.04 LTS
  • Ubuntu 16.04 LTS

不支持的平台:Windows Subsystem for Linux

为了在Ubuntu上安装MongoDB,需要使用官方的mongodb-org包所提供的指令,它由MongoDB Inc维护和支持。官方的mongodb-org包会一直包含最新版本的MongoDB。

注意:由Ubuntu提供的mongodb包不是由MongoDB Inc维护的,并且与官方提供的mongodb-org包不兼容。如果已经在Ubuntu中安装了mongodb,那么在使用下面的指令前必须将之卸载

Install MongoDB Community Edition

  1. 使用包管理系统加载公钥

    wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -

    将会返回OK

    如果收到一个gnupg没有安装的指令,可以这么做

    • 使用以下指令安装gnupg以及它所需要的库

      sudo apt-get install gnupg
    • 安装完毕后,再次执行上面的指令加载公钥

  2. 为MongoDB创建文件列表

    可以通过lsb_release -dc指令查看Ubuntu版本

    # Ubuntu 20.04
    echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
  3. 重新加载local package database

    sudo apt-get update
  4. 安装MongoDB packages

    可以安装最新版本的或者指定版本的,这里只写如何安装最新版本,如果需要安装执行版本,可以自行官网查看相关文档

    sudo apt-get install -y mongodb-org

    可选内容:尽管可以指定任何版本的MongoDB,但是apt-get在有新版本发行时会将其更新。为了避免不想要的更新,可以将MongoDB固定在当前安装版本

    echo "mongodb-org hold" | sudo dpkg --set-selections
    echo "mongodb-org-server hold" | sudo dpkg --set-selections
    echo "mongodb-org-shell hold" | sudo dpkg --set-selections
    echo "mongodb-org-mongos hold" | sudo dpkg --set-selections
    echo "mongodb-org-tools hold" | sudo dpkg --set-selections

Run MongoDB Community Edition

为了运行和管理mongod进程,需要使用到操作系统的built-in init system。最近版本的Linux使用的是systemd(使用systemctl指令),一些老版本的Linux可能使用的是System V init(使用service指令)

执行以下指令查看平台支持:

ps --no-headers -o comm 1

下面的指令均基于systemd

  1. Start MongoDB

    sudo systemctl start mongod

    如果收到一个如下的错误:

    Failed to start mongod.service: Unit mongod.service not found.

    那么执行以下命令:

    sudo systemctl daemon-reload

    然后再执行mongod启动指令

  2. Verify that MongoDB has started successfully

    sudo systemctl status mongod

    可以选择执行以下指令使得MongoDB在系统启动时自动运行:

    sudo systemctl enable mongod
  3. Stop MongoDB

    sudo systemctl stop mongod
  4. Restart MongoDB

    sudo systemctl restart mongod

    可以通过/var/log/mongodb/mongod.log文件查看进程的错误或重要信息

  5. Begin using MongoDB

    mongo
    • 如果安装了包管理工具via,在安装期间将会创建数据目录/var/lib/mongodb和日志目录/var/log/mongodb

      默认情况下,MongoDB使用mongodb用户运行。如果你改变了MongoDB进程的运行用户,必须修改数据和日志目录的权限以便该用户能够访问

    • 默认的配置文件放在/etc/mongod.conf中,如果修改了该配置文件,需要重新启动MongoDB

    • 绑定IP和端口号

      默认情况下bindIP为127.0.0.1,端口号为27017

Uninstall MongoDB Community Edition

为了完整的卸载掉MongoDB,需要remove掉MongoDB本身、它的配置文件、包含了数据和日志的目录

  1. Stop MongoDB

    sudo service mongod stop
  2. Remove Packages

    sudo apt-get purge mongodb-org*
  3. Remove MongoDB databases and log files

    sudo rm -r /var/log/mongodb
    sudo rm -r /var/lib/mongodb

在Ubuntu 20.04中安装PostgreSQL

# Create the file repository configuration:
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

# Import the repository signing key:
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

# Update the package lists:
sudo apt-get update

# Install the latest version of PostgreSQL.
# If you want a specific version, use 'postgresql-12' or similar instead of 'postgresql':
sudo apt-get -y install postgresql

安装时出了一个警告:

N: 鉴于仓库 'http://apt.postgresql.org/pub/repos/apt focal-pgdg InRelease' 不支持 'i386' 体系结构,跳过配置文件 'main/binary-i386/Packages' 的获取。

安装完毕后PostgreSQL会自动启动,可以通过以下命令查看PostgreSQL状态/启动/停止/重启PostgreSQL:

# 查看状态
sudo /etc/init.d/postgresql status
# 开启
sudo /etc/init.d/postgresql start
# 关闭
sudo /etc/init.d/postgresql stop
# 重启
sudo /etc/init.d.postgresql restart

安装完毕后,可以使用psql工具通过连接PostgreSQL数据库并打印它的版本验证安装:

sudo -u postgres psql -c "SELECT version();"

PostgreSQL需要使用用户验证,默认情况下在安装完毕后会创建postgres用户,也可以自己创建用户。使用以下命令连接到postgres用户:

sudo -i -u postgres

会进入postgres用户的一个终端:

postgres@ubuntu-dev:~$

然后使用以下命令访问PostgreSQL:

psql

将会进入到postgres prompt:

postgres=#

# 也可以直接使用以下命令进入该模式
sudo -u postgres psql

如果需要推出PostgreSQL pormpt,使用以下命令:

postgres=# \q

然后会回到:

postgres@ubuntu-dev:~$

然后可以使用exit命令回到原系统:

postgres@ubuntu-dev:~$ exit

在Ubuntu 20.04中安装MySQL

Install

Step1-Installing MySQL

# update server's package
sudo apt update

# install mysql-server package
sudo apt install mysql-server

Step2-Configuring MySQL

运行MySql内置的安全脚本:

sudo mysql_secure_installation

然后会有一系列的选项:

Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD COMPONENT can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: y

There are three levels of password validation policy:

LOW Length >= 8 MEDIUM Length >= 8, numeric, mixed case, and special characters STRONG Length >= 8, numeric, mixed case, special characters and dictionary file

# 选择密码的安全等级, 简单起见选择了0

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0 Please set the password for root here.

# 输入MySql Root用户的密码

New password:

Re-enter new password:

Estimated strength of the password: 50

# 是否使用刚才输入的密码,如果使用的化输入y

Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment.

# 之后的可以直接Enter选择默认配置

Remove anonymous users? (Press y|Y for Yes, any other key for No) :

... skipping.

Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : ... skipping.

By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment.

Remove test database and access to it? (Press y|Y for Yes, any other key for No) :

... skipping. Reloading the privilege tables will ensure that all changes made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) :

... skipping. All done!

Step3-Use MySql

MySql在默认情况下只能通过sudo或者在root用户模式下进入:

# 以MySql根用户root的身份连接数据库
sudo mysql
# 进入root用户
su

# 以MySql根用户身份登入
root@ubuntu $ mysql -u root -p
root@ubuntu $ Enter password:<root密码>

但是通常不能总是通过root用户连接 MySql。直接在普通用户下会发生如下情况:

mysql -u root -p
Enter password:
ERROR 1698 (28000): Access denied for user 'root'@'localhost' (using password: YES|NO)

因此,需要进行一些设置。至于为什么只能通过计算机 root 用户连接数据库,(可能是因为 MySql 的 root 用户权限为auth_sock,所以,)需要将 MySql 的 root 用户权限修改为 mysql_native_password

# 在sudo下登入MySql
sudo mysql
# 或者在root用户下:
su
root@ubuntu $ mysql -u root -p
root@ubuntu $ Enter password:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<your password>';

# 注意上述命令中<your password>会受到在step2中选择的密码强度限制,如果不符合要求会报如下错误:
# ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

# 然后刷新
mysql> flush privileges;

# 退出mysql
mysql> exit

# 重新启动服务
service mysql restart

# 然后就可以在普通用户下连接MySql了
mysql -u root -p
Enter password:

Aanother operation-Change MySQL Password Policy Level

mysql> show variables like 'validate_password%';
+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| validate_password.check_user_name | ON |
| validate_password.dictionary_file | |
| validate_password.length | 8 |
| validate_password.mixed_case_count | 1 |
| validate_password.number_count | 1 |
| validate_password.policy | MEDIUM |
| validate_password.special_char_count | 1 |
+--------------------------------------+--------+
7 rows in set (0.09 sec)

mysql> SET GLOBAL validate_password.policy = 0;
Query OK, 0 rows affected (0.00 sec)

# or

mysql> SET GLOBAL validate_password.policy=LOW;

然后再进行 Step3 中的操作。

Uninstall

Step1-终端查看MySQL的依赖项

dpkg --list | grep mysql

Step2-卸载

sudo apt-get remove mysql-common
sudo apt-get autoremove --purge mysql-server-8.0

Step3-清除残留数据

dpkg -l|grep ^rc|awk '{print$2}'|sudo xargs dpkg -P

Step4-重复执行

再次根据 Step1 查看剩余依赖项,如果还有继续根据 Step2 进行删除,直到不存在依赖项

Step5-删除可能存在的配置文件

sudo rm -rf /var/log/mysql

sudo rm -rf /etc/mysql

sudo rm -rf /usr/bin/mysql

sudo deluser -f mysql

sudo apt autoremove

sudo apt autoclean

可能还是不会删除干净,可以使用 find 命令查找 mysql

# / 表示在所有目录下查找
sudo find / -name mysql

根据查找结果一个一个删除,尽管还是可能存在某些文件没有删除。

自启动设置

sudo systemctl disable mysql # 禁止开机自启动
sudo systemctl enable mysql # 开启开机自启动

修改数据库编码格式

show variables like 'character%';

+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8mb3 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

存在latin1编码需要将其设置为utf8。以上是修改后的,可能character_set_servercharacter_set_database编码为latin1database编码跟随server编码,所以修改server编码即可,在配置文件中修改。

配置文件位置为/etc/mysql/mysql.conf.d/mysql.cnf,向其中添加内容,在服务器启动时选择字符集和排序规则:

[mysqld]							# 指定选项
character-set-server=utf8 # 服务器编码
collation-server=utf8_general_ci # 排序规则

若客户端character_set_client编码为latin1,添加:

[client]
default-character-set=utf8

修改端口号

show variables like 'port%'查看端口号(默认3306):

mysql(root@localhost:(none))>show variables like 'port%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port | 3306 |
+---------------+-------+

修改端口号:

[client]
port=3307

References:

[1]: 修复ubuntu 安装mysql后必须使用sudo问题

[2]: Fix – MySQL ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

[3]: mysql 卸载与安装

Ubuntu 20.04 中安装VSCode

官网

Ubuntu安装valgrind

sudo apt install valgrind

Ubuntu 安装 perf

sudo apt-get install linux-tools-$(uname -r) linux-tools-generic -y

Ubuntu 安装 Clang

sudo apt install clang

---EOF---


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK