This is my last post for my Ubuntu 20.10 install. Below is my notes for installing all of the programming-related apps and tools that I like to have available.
I installed virtualbox just from the respoitory:
sudo apt install virtualbox
I learned that you can install the extension pack on the version from the repository. That doesn’t really matter. But, it didn’t do what I wanted so I decided to just uninstall it. You can do that by going to File > Preferences. Then, under Extensions, you can remove it.
I setup the network in File > Host Network Manager. I created vboxnet0.
Finally, I double clicked on all of the .vbox files in my file system to add all the machines.
These are the tools I like:
- vim: an updated version of the vi text editor
- vim-gtk: a GUI version of the vi editor
- git-cola: a GUI interface to git version control (also installs git itself) because I don’t use git enough to remember the commands
- meld: text compare tool
- openjdk: Java development kit
- openjfx: JFX java development that I use in one of my projects (see note below)
sudo apt install \ vim \ vim-gtk3 \ git-cola \ meld \ openjdk-8-jdk \ openjdk-13-jdk \ openjdk-15-jdk \ openjfx
Note: I tried openjdk 15 intially, but I had issues with Flutter. (I never did really figure out that that was the problem or not.) I also had issues with the OpenJFX. It installed into /usr/share/openjfx and was missing the Ant jar file. I never did find the current Ant for openjfx.
For my vim config, I have it saving the temp files in a specific directory rather than where the file is that I’m editing. So, that directory needs to be created:
To configure git, I ran the following two commands:
git config --global user.name "my name" git config --global user.email email@example.com
Visual Studio Code
I installed Visual Studio Code from the Microsoft Website. I just downloaded the deb file.
sudo apt install ./Downloads/code_1.50.1-1602600906_amd64.deb
After installing, I opened Code and used Ctrl+P to install these extensions:
- ext install johnpapa.angular-essentials
- ext install humao.rest-client
- ext install raagh.angular-karma-test-explorer
- ext install hbenl.vscode-jasmine-test-adapter
- ext install dart-code.flutter
I installed Node with these commands. I also added the tools that I use with angular.
sudo apt-get install nodejs sudo apt-get install npm sudo npm install npm@latest -g sudo npm install -g gulp sudo npm install -g grunt sudo npm link @angular/cli
I use Eclipse for Java development. I just downloaded the installer from the website. I used “Extract Here” in nautilus and double clicked on the installer (eclipse-inst).
Going through the installer, I …
- picked Eclipse IDE for Java Developers
- changed the install path to: /home/skp/bin/eclipse/java-2020-09
I installed e(fx)clipse using the market place. I visited the website in my browser and then drug the install button to my workspace.
Before, I installed a bunch of stuff that I don’t normally use. This time, I just installed a few things from the marketplace:
For Java FX, I use the Gluon Scene Developer. I downloaded that from the website. I downloaded the deb version for Java FX 11. Then, I installed it with:
sudo apt install ./Downloads/scenebuilder-11.0.0.deb
I have one App that I have been playing with that uses Open JFX. So, I installed it to work with Eclipse. I keep finding it more and more difficult to install using the regular Ubuntu packages.
The OpenJFX package installs into /usr/share/openjfx/lib. I also found some jars installed in /usr/share/java. It came from the libopenjfx-java package.
$ dpkg -S /usr/share/java/javafx-base.jar libopenjfx-java: /usr/share/java/javafx-base.jar
So, instead of using the packages, I downloaded the “JavaFX Linux SDK” from Gluon’s website. Then, I extracted it into my Eclipse folder.
unzip ~/Downloads/openjfx-11.0.2_linux-x64_bin-sdk.zip mv javafx-sdk-11.0.2/ ~/bin/eclipse/
In Eclipse, I opened preferences (Window > Preferences). I set the Java FX Path.
Also, I went to the Build Path (Java > Build Path > User Libraries). I added a new one called JavaFX.
Then, I added all of the Jars in the installation folder:
This time the flutter instructions suggest using snap. So, I just went that route to install it.\
sudo snap install flutter --classic
Note: this installs flutter in the directory /home/skp/snap/flutter/common/flutter. You’ll need that later for Android Studio.
When I ran flutter doctor, it downloaded the flutter linux stable tar ball. That took a little while, but it seemed to install fine by itself.
I downloaded Android Studio from the website. While it was downloading, I installed the following prerequisites:
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1 libbz2-1.0:i386 udo apt-get install clang cmake ninja-build pkg-config libgtk-3-dev
I extracted the code to my bin directory:
mkdir ~/bin/studio tar -xzvf ~/Downloads/android-studio-ide-201.6858069-linux.tar.gz -C ~/bin/studio
Flutter doctor wants to be able to see the files, so I added the path to the end of my ~/.bashrc with these lines:
# for Android Studio install export PATH="$PATH:$HOME/bin/studio/android-studio/bin" export STUDIO_JDK=/usr/lib/jvm/java-8-openjdk-amd64/
Then, I launched the studio.sh script in the bin directory. To make it easier to launch, I used the Menu Editor (MenuLibre) to add a launcher. Both the icon and the shell script are in the bin directory of what I extracted.
I followed these instructions to enable VM acceleration. Note the instructions say to use libvirt-bin, but as best I can tell libvirt-daemon is the correct one in this case. I also don’t think that I need ubuntu-vm-builder and ia32-libs-multiarch.
sudo apt-get install cpu-checker egrep -c '(vmx|svm)' /proc/cpuinfo # result: 24 kvm-ok # result: #INFO: /dev/kvm exists #KVM acceleration can be used sudo apt-get install qemu-kvm libvirt-daemon bridge-utils
To clear up the “android license status unknown”, I ran:
flutter doctor --android-licenses
I got this crazy error when I did that:
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema at com.android.repository.api.SchemaModule$SchemaModuleVersion.<init>(SchemaModule.java:156) at com.android.repository.api.SchemaModule.<init>(SchemaModule.java:75) at com.android.sdklib.repository.AndroidSdkHandler.<clinit>(AndroidSdkHandler.java:81) at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:73) at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:48) Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:606) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:168) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) ... 5 more
I found a solution that suggested installing the command-line tools. In Android Studio, I opened File > Settings. Then, I went to Appearance & Behavoir > System Settings > Android SDK. I installed the “Android SDK Command-line Tools (latest)” on the SDK Tools tab.
After that, the flutter doctor license command worked fine.
Also in the settings, I went to the Languages & Frameworks > Flutter and set the flutter path to /home/skp/snap/flutter/common/flutter
Note: At one point, it complained about my dart SDK path not being configured. That is located insde the flutter folder: /home/skp/snap/flutter/common/flutter/bin/cache/dart-sdk
I still had a problem with it not building my flutter project correctly. I was getting this error:
FAILURE: Build failed with an exception. * What went wrong: Could not initialize class org.codehaus.groovy.runtime.InvokerHelper
I remembered that I had been working on the beta channel previously. So, I tried going to the beta channel with these commands:
flutter channel beta flutter upgrade
While these commands did some thorough building and resetting things, I’m not sure they helped in the end.
cd android ./gradlew app:assembleRelease cd .. flutter pub cache repair flutter pub get flutter clean flutter build apk
This article helped. I ran these two commands and got it to build:
flutter build apk --profile flutter build apk --release
MySQL / PHP
I have a project that uses both MySQL and PHP. I just want to develop in it as a hobby but not run it full time. So, I installed it like this:
sudo apt install mariadb-server-10.3 sudo apt install php7.4 sudo apt install php-mysql sudo apt install composer
(Note: I probably should have done php7.4-fpm instead.)
To keep it from running all of the time, I ran this:
sudo systemctl disable mysql
To get the actual database, I had to run this command on my server.
sudo mysqldump -p matthew > matthewbackup.txt
I loaded the backup script with these commands:
cd ~/Downloads sed -i '' 's/utf8mb4_0900_ai_ci/utf8mb4_unicode_ci/g' matthewbackup.txt sudo mysql create database matthew; use matthew; source matthewbackup.txt \q
So, after all this, I found that Apache got installed somehow. To found how, I installed aptitude and tried to use the why command to figure out.
$ sudo apt install aptitude $ aptitude why apache2 --show-summary Packages requiring apache2: php7.4
I fixed it with:
sudo apt remove apache2 sudo apt autoremove
- StackOverflow: Android Studio Could not initialize class org.codehaus.groovy.runtime.InvokerHelper
- Gradle Releases
- Android Gradle plugin release notes
- Stack Overflow: flutter release apk error :Execution failed for task ‘:app:lintVitalRelease’
- Getting Started with JavaFX
- Can I see why a package is installed?
- Ubuntu Server Installing PHP 7 WITHOUT Apache