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.
Virtualbox
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.
Tools
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:
mkdir ~/.vimtmp
To configure git, I ran the following two commands:
git config --global user.name "my name"
git config --global user.email my.email@email.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
Node JS
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
Eclipse
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
Open JFX
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:
Flutter
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
Resources
- 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