start

Last year, the company had a few empty desktops, and it seemed to have a slightly higher configuration than the beggar AIR I used. Besides SSD, there was also a 1T large hard disk. In addition, iOS might not be made for a period of time, so macOS would not be needed. At that time, the options were Windows 10 and Linux. After thinking that the 60G SSD on the machine could not possibly load so many things, Windows needed to load many things on DISK D. In fact, it was very troublesome to use, and I felt that I was not good at using it, so I chose Linux

This article was written three months after I started using Linux as a development environment. The main development environment was pure Linux, with the occasional use of virtual machines. Linux is designed for people who like to mess around, but also for people who know what they want to do and what they want. So the purpose of this article is for people who are targeting Linux as a production development environment. If you just want to install Linux, or just want to try it out, I recommend using a familiar environment (Windows or macOS) with a virtual machine to start with a complete ArchLinux configuration

If you want to use Linux as your main development environment, you can start with this article, but it is not the end, Linux is endless

Advantages and disadvantages

  • benefits
    • Out-of-the-box development environment. Like macOS, Linxu provides an out-of-the-box environment for almost every major development platform and language
    • A lot of open source tools out of the box, and I fell in love with Kate.
    • Few distractions (no QQ, almost no games)
    • Super easy to use terminal simulator
    • There are a lot of great open source tools, and some of them are even carried over to the MAC
    • Height can be configured, as long as you have a mind, what kind of appearance want to make it ok
    • STH over and over again
    • STH over and over again
    • STH over and over again
  • The bad
    • STH over and over again
    • STH over and over again
    • STH over and over again
    • No QQ, only virtual machine or wine, smart QQ messages or more groups, two
    • Wechat, only web Wechat, or electronic-wechat or unofficial Wewechat packaged by electronic, but I have been using the Web version of Wechat, easy to be blocked. A few days ago, I was blocked, the user feedback, of course, failed, I used virtual machine for two weeks, Somehow unsealed
    • Highly configurable, double-edged sword, configuration of the consequences, kill 1000, at least from the loss of 300, with some dark theme… The result was some text, button couldn’t see it clearly, and the WPS table turned black.

In Linux, is both good and bad, good place is to let you know which gear box is broken, looking is bad place, found that the gear box not bad, just about every gear has a diu diu is not normal, so I always think that people are actually very erratic, if there is no demand, I really don’t need to mess with Linux. You’re right. I’m telling you to back off

Start with

Linux can be a tricky road, but as a development environment, we need to find a balance between the tricky and the stable

Background to the ordeal

Here are some of my experiences exploring the Linux world (and hitting a brick wall) and using Linxu that I hope you’ll find useful

  • A lot of Windows installation experience and Linux installation experience, experience different distributions, find their own use, before the computer performance is very poor running virtual machine is very laborious, for today’s computer, virtual opportunity is very convenient for you to learn
  • By configuring a complete ArchLinux environment, learn the entire Linux system configuration, startup, desktop environment related to all the basic knowledge
  • After 4 years of macOS experience, the transition from macOS to Linux was smooth, except for the variety of nice MAC apps the developers prepared for us
  • Know what you want
  • Be able to solve your own problems

While the above points are a basic guarantee of my success in moving to Linux this time around, here are a few of the things I did to make my work feel silky smooth

Distribution selection

As a production development environment, unlike an experimental research environment, the most important thing is to be stable and able to support the work continuously, at least not frequently crash or need to reinstall the system every few months. I went through a lot of major distributions in college and later in my career (Debina, Fedora, Ubuntu, openSuse, ArchLinux) and chose Fedora 27 (which was in beta at the time, However, I believe THAT I will be able to step on the pit and the official version will be released in a month. Students who do not believe that they can choose the official version when they choose. After all, it is used to support production and development environment, and the most important thing is stable as an old dog.

  • Grounds for exclusion
    • Debian: exclude, installed too few times, not high familiarity
    • Ubuntu: installed twice and had strange problems each time (probably related to the non-LTS version I installed)
    • OpenSusu: I used it most in college, but there were always some weird problems that I couldn’t solve
    • ArchLinux: It was too much work, I installed it several times after work, it usually took one to two days from installation to desktop environment, I feel that PACMAN is not as perfect as DNF to stick to the simple philosophy of Arch, but if you are just learning Linux, then this is the first choice
  • Reasons for choosing
    • The first time I tried Linux, I tried RedHat 9 and then Fedora Core (as Fedora was then called), and choosing Fedora felt like a familiar recipe
    • Most servers use CentOS, is still familiar with the formula of the feeling, the future deployment application will also have a familiar taste
    • Fedora is the cutting-edge Edge of Linux, and it’s up to her to experience the latest and greatest Linux
    • Two Ubuntu installation failures… Makes me wonder if this is the broadest distribution ever, not for me (I’m not really a fan of Ubuntu, I thought of it from the start when I wanted to switch, so I installed it too)

Desktop environment selection

Openness on Linux, so if we don’t like the desktop environment we’re currently using, we can switch to… It seems like a wonderful thing… But sadly, the open source community has once again shown its unreliability

I ended up with GNOME on Xorg for the following reasons:

  • KDE is still a showy platform, high-end and elegant, but full of bugs
  • GNOME on Wayland: You cannot use Shutter to capture pictures. Occasionally, the entire GNOME hangs, and Wayland is still a little far from stable use
  • GNOME is one of the things people complain about, but I just need a common working environment and don’t want to spend a day or two working around it, and GNOME fits the bill
  • GNOME’s file manager feels a lot like Finder, but a little easier

Why not just go full command line?

  • I am familiar with and love the command line, but I advocate using the right tools in the right places. Our main purpose is to work, not to show off. Not everyone can do everything on the command line
  • I prefer GitEye, which can push pull code and group libraries with a click of the mouse, to push pull every time I find the project path
  • VSCode – my main development tool, there is no command line version
  • In graphical interfaces, there are handy gadgets like Tilix, which can split Windows like iTerm, and modern command-line tools like Hyper that can be extended at will
  • Multi-window management? Yeah, I have a chat to do

I would personally recommend using KDE or GNOME, because I want stability, but you can also try other desktop environments, because Linux’s greatest advantage is openness

The installation

The installation guide

  • Need the material
    • network
    • A Fedora Live image can be downloaded from the Fedora official website
    • A 4G flash drive (live mirror is about 1.7G ~ 2G, a bit bigger will not hurt)
    • Etcher is used to write a live image to a usb drive

That’s all you need to install Fedora

  • Installation steps
    • Use Etcher to write a Fedora image to a usb drive
    • Restart the computer and set it to boot from a usb drive in BIOS
    • The Fedora Live screen is displayed. On the Live screen, find the installation program and open it
    • According to the prompts to choose installation location, language, city and other things, then click start installation, so started the installation journey

Because I did not take a screenshot during the installation, here I opened the image on the virtual machine to show you the installation interface. After about half an hour, the installation will be completed. After the installation is completed, restart will enter the new system, and we will enter the world of pure Linxu

System deployment

Once installed, this is just a working system that comes with most of the applications that come with GNOME, so it’s still a long way from being ready to use. I’ll show you my initial deployment of the system

Link things that consume space to disk

My purpose is to want to have a quick start system, and can install a large number of applications, so the first step, I will put a lot of disk space consumption path link to 1 t of mechanical hard disk (oh, a long, under the unified call HDD), if this step fails, then there won’t be the remaining steps, after the link to my feeling is, The overall system speed does not slow down much, but there is some lag when opening large applications (such as Jetbrain’s large Java application), but the experience is smooth when opening the application, but also because the native memory is not very large (8GB), the application still freezes when opening too many. Especially when virtual machines and some large Java applications are running, it’s easy to get stuck

The following is a screenshot of the disk used on my computer. Data 1-3 is HDD. There is no home partition shown here, my home partition is about 20GB and root partition is about 40GB. The installer will take care of this when selecting automatic partition.)

  • Data1, as an extension of home, is mainly used to store documents, projects under development, etc
  • Data2 is used as vm storage space and is partitioned separately for easy management
  • Data3 is the main player in this section, where most of the system applications are linked

However, I did not link all paths at once. Instead, when I found that SSD space was insufficient, I found some paths that consumed large space and linked them to HDDS. Here are some paths I linked to for your reference:

  • ~/.icons~/.themes: theme and icon path, link this main is installed theme convenience
  • ~/.local: Current user application data, link to this to help you solve most of the space problems
  • ~/.var: The current user’s VAR path to which some applications (mostly flatpak packaged) will write data
  • /opt: Some applications will be installed in this path
  • /var/lib/flatpakFlatpak application will be installed here
  • /var/logLog:

After linking these paths, I believe that the disk space will be free, so that the small SSD computer can play happily

In addition, in addition to the paths above, there are some special paths that also take up a lot of space, which are listed here

  • ~/.stackWhen learning Haskell, stack is the haskell package manager, and packages installed through the stack are located here
  • ~/.nixnoteNixnote is an implementation of Evernote for Linux, and its data will be stored here
  • /usr/share/dotnet.net related things, always take up space
  • /usr/lib64/ghc-x.x.xThe haskell compiler takes up too much space

In addition to this, if you find a path or an application that takes up space, you can also link them to HDDS, saving valuable space on SSDS

Install packages with high probability of being used

  • Enable RPMFusion source

See -> RPMFusion Configuration to enable RPMFusion free and nonfree software source configuration based on the system version

  • Enable FDZH source

Reference -> FDZH Configuration According to the system to enable FDZH source, FDZH wiki also contains some common software installation and configuration, you can refer to

  • Refresh the DNF source

After the first installation or adding the RPMFusion and FDZH sources, we need to refresh the DNF source so that we can install the newly added packages

sudo dnf update --refresh

Copy the code
  • Install the Development Tools software group

Development Tools contains a variety of Tools used for Development, so we need to install it first

sudo dnf group install "KDE Plasma Workspaces"

Copy the code
  • Installed KDE

This step is optional, if you like KDE, you can type the following command to install it

sudo dnf group install "KDE Plasma Workspaces"

Copy the code
  • What else do WE need

One of the most convenient things about using Linux as the backbone environment is that we can install whatever we need, and we can use the following command to see what other software groups we can install and use

dnf group list

Copy the code

Configuration Tool System

  • Font Tweaks Tool: Adjust Font rendering, if looking at the Font is uncomfortable, rely on him

  • Fedy: A Fedora tuning tool that comes with tuning scripts and installation channels for apps not available in the App store

Survival guide

After the installation and configuration is complete, here are the daily Survival guidelines for Linux

Development Survival Guidelines

This article mainly uses Linux development, so it gives priority to the tools used in development. In fact, most of the tools are open source or cross-platform, and we can also use them in other systems

  • There was a time when I thought I would never give up on Vim, but it was so sweet
  • CherryTree: excellent code notes, large collection of code posts, also cross-platform (there is no standalone package for Mac, recently tried one, but it didn’t go so well)
  • Tilix: a terminal emulator comparable to iTerm
  • GitEye: A Git tool developed on the lips platform
  • Zeal: Dash on Linux, documentation library compatible with Dash, and Dash documentation can also be downloaded directly
  • Jetbrains: We have to say that Jetbrains provides us with the best IDE in the world. If there’s a downside, it’s in one word — expensive!
  • StarUML: A great tool for drawing UML, cross-platform
  • Neovim: as a vim party, this must be promoted, although the main force is VSCode now, but I also want VSCode with vim plug-in to really smell good
  • MySQL Workbench: MySQL provides the official database tools, only MySQL has no better than it
  • DataGrip: Multi-database link tool, expensive!
  • GitKraken: A better looking Git client than GitEye, but only free for open source projects
  • Kate: KDE default text editor, easy to use, fast, stable, but a lot less plug-ins, not as a major development
  • Small program development tools: github.com/cytle/wecha… Development of small program essential

With a bunch of development tools above I believe it is easy to face the daily development work, Linux in addition to DataGrip, Navicat and other commercial software really did not find very useful multi-database link tools, this is a pity, we can contact me if there is a recommendation

Vm Suggestions

If the virtual system is Linux and does not use GUI, you are advised to use the built-in QEMU or KVM of the system. In addition, you are not advised to use Boxes with GNOME. Boxes are applications developed to simplify VIRTUAL machine operation, but they are not very mature. It is recommended to install Virtual Machine Manager as a Virtual Machine management tool. Although Virtual Machine Manager is slightly more difficult to use than Boxes, it is much more configurable. Qemu and KVM support shared file systems better, and file read and write speeds are said to be close to native

In addition, QEMU is a system service, and Virtual Machine Manager is only a management interface. After starting the Virtual Machine, we can directly SSH the Virtual Machine to operate, without continuing to open the management interface. In addition, when the system UI crashes, the Virtual Machine service will not crash. It doesn’t affect the programs we run in the virtual machine

If the Virtual system is Windows system or Linux using GUI, then it is recommended to use Virtual Box or VMWare commercial software. Qemu is not very easy to use on graphical operating system, often has problems such as mouse displacement and slow speed

Daily Survival Guidelines

Daily survival mainly includes chat and Office series, as well as everyday applications such as note-taking

  • ElectronWechat: essential for wechat chat
  • WPS: The only tool on Linux called Office
  • LibreOffice: the second Office tool on Linux, which is also the best tool for multi-encoding CSV file support, even MS home Excel also does not have this multi-encoding CSV support good, if you need to do reports from the database derivative data, I suggest you must install a
  • Nextcloud: If you have a private server, then it is recommended to deploy an ownCloud or Nextcloud as a file sharing service, which syncs files smoothly and provides partial application use
  • QOwnNote: a good cross-platform note-taking software with Nextcloud to achieve perfect note-taking synchronization
  • Typora: With cross-platform Markdown writing tools, you can output markdown as PDF and HTML pages. This article is written with Typora and Kate
  • Firefox: Forget Chrome, Firefox is the best, hahahahaha
  • CopyQ: good clipboard management tool

Adds a program starter for an application that does not have one

A program Launcher can be understood as a shortcut in Windows. Many applications in Linux execute binary files. However, some applications do not provide a Launcher, so we have to run it from the command line every time we open it. Of course, there are applications that are even more egregious such as those that are written in Python, and you have to use Python to find the script for that application to execute. Now that we’re in the GUI, we can’t go backwards. Here’s how to create a starter

Here I use Typora as an example. Typora does not provide RPM packaging, nor is it included in the DNF software source, so Typora is just a plain compressed package when downloaded. When unzipped, it is just a bunch of files. It can also run by double-clicking, so the goal of our starter is to open the executable

In Linux, every starter corresponding to a desktop file, all the desktop file/usr/local/share/applications directory, user own starter, . Can also be in ~ / local/share/applications directory, then let’s take a look at the content of the starter, starter is a text file, tell the system how to start the application

Name=Typora Comment=Markdown Writer Exec=/home/noark9/data1/Applications/Typora/current/Typora Icon=/home/noark9/data1/Applications/Typora/current/resources/app/asserts/icon/[email protected] StartupWMClass=Typora  Terminal=false
Type=Application
Encoding=UTF-8
Categories=Productive;
Name[en_US]=Typora.desktop
Copy the code

Here describes how the Typora the application startup, then put this file in/usr/local/share/applications or ~ /. Local/share/applications directory path, so in your application can see him, In the/usr/local/share/applications path still has a lot of starter, you can when writing your own reference

A guide to a happy mood

Be happy, and that includes some entertainment

  • VLC: It’s the movie of choice
  • Steam: There are a lot of games that support Linux
  • OpenRA: Open source implementation of red Alert, support online battle, actually quite fun to play
  • Ioquake3: Open source implementation of Quake3, play up to fry love
  • DosBox: DOS simulator, dedicated to DOS games, can also install a Win 3.1 in it, convenient file management
  • Dolphin: Wii simulator, Wii Games go

end

After using Linux for a year, I found that I could survive well on the Linux desktop and complete my work well. I do not recommend people to blindly use Linux. After all, it is not a system that can be used when they want to use It, and there are still many strange problems in the process of use. There are also times when the desktop environment and network are completely destroyed and finally restored by themselves, but Linux is really a good system to exercise people, and the use of Linxu can greatly enhance their ability to find information, solve problems, and the ability to think independently

This article should have been finished at the beginning of this year, so the earliest title here is that I worked in Linux for three months, and I didn’t finish writing this article until the end of the year when I started to use the Mac. However, this article was still completely written under Linxu, without any help from the Mac. During the process, I uninstalled GNOME, KDE and other desktop environments due to my mistake, deleted the nic driver, reconfigured the NIC driver and re-installed the desktop environment, resulting in part of the applications I used have not been installed in the system, which also made me lose some data

You can also check out Fedora Magazine regularly. I like Fedora Magazine for interesting open source tools and Linux experience sharing

Finally, please subscribe to my wechat official account Little Code

  • The public number mainly hair some development related technical articles
  • Talk about your understanding and experience of technology
  • Maybe they’ll talk about life lessons
  • I am not very productive, but strive to maintain quality and original writing after working with Linux for a year