Full conversion of relevant Wiki content over to Help Center docs. Moved proprietary drivers to hardware category. Getting Involved moved to
contributing section, alongside the wiki content for Community Guidelines.
This commit is contained in:
parent
a52f7f67f9
commit
f6adcc5502
|
@ -0,0 +1,45 @@
|
||||||
|
## Modifying Grub
|
||||||
|
|
||||||
|
In this document, we walk over several scenarios where you may need to access, modify, or repair GRUB.
|
||||||
|
|
||||||
|
## Scenarios
|
||||||
|
|
||||||
|
### Multi-Booting
|
||||||
|
|
||||||
|
Multi-booting is when you have multiple operating systems on a single computing device, such as a desktop or a laptop. Also referred to as "dual-booting" when only having two operating systems on the same computing device.
|
||||||
|
|
||||||
|
#### Unable to access other OSes
|
||||||
|
|
||||||
|
There are instances where Solus or another operating system may be rendered inaccessible, such as system updates that result in an update Linux kernel. If you are using Solus as your primary operating system and no longer can access another operating system via GRUB (''or it simply doesn't show up in the menu'') then run `sudo update-grub` via Solus.
|
||||||
|
|
||||||
|
#### Unable to access Solus
|
||||||
|
|
||||||
|
If you are unable to access Solus after an update to it and you have multiple operating systems installed on your computing device, please go to the other operating systems and run `sudo update-grub`.
|
||||||
|
|
||||||
|
If these other operating systems are **not** Linux-based, such as Windows, please defer to the Solus Update Issues section.
|
||||||
|
|
||||||
|
### Solus Update Issues
|
||||||
|
|
||||||
|
There are some circumstances in which updating Solus could fail to update its GRUB. These issues primarily affect individuals running the Unstable repos and rarely affect the majority of users, but in the event you are unable to access Solus and it "owns" GRUB, then you will need to use the "chroot" (change root) method via a Live ISO (preferably of Solus) to fix your host Solus install.
|
||||||
|
|
||||||
|
**Requirements:**
|
||||||
|
|
||||||
|
1. A Live ISO of a Linux distribution booted on your system
|
||||||
|
2. A terminal in that Live ISO opened
|
||||||
|
|
||||||
|
**Steps:**
|
||||||
|
|
||||||
|
1. First we need to be root as the user. Type: `sudo su`
|
||||||
|
2. Next we make a directory where we will mount our local Solus system: `mkdir /target`
|
||||||
|
3. Now, using `lsblk`, determine the `/dev/sdX#` partition of the Solus system. We recommend checking the size of the partition listed and if it matches the size of your Solus install, using that. It will likely be something along the lines of `/dev/sdb#` or `/dev/sda#`.
|
||||||
|
4. Once found, replace the "sdX#" in the following command with the partition and mount to the target directory we created: `mount /dev/sdX# /target`
|
||||||
|
5. Next we will mount several other directories:
|
||||||
|
|
||||||
|
```
|
||||||
|
mount --bind /proc /target/proc
|
||||||
|
mount --bind /dev /target/dev
|
||||||
|
mount --bind /sys /target/sys
|
||||||
|
```
|
||||||
|
|
||||||
|
6. Assuming all goes well, you should be able to do: `chroot /target`
|
||||||
|
7. Once in the chroot, run `sudo update-grub`.
|
|
@ -0,0 +1,19 @@
|
||||||
|
## Community Guidelines
|
||||||
|
|
||||||
|
The Solus Project enforces a set of community guidelines to maintain respect and professionalism, as well as a family-friendly environment.
|
||||||
|
|
||||||
|
### Forums/IRC/General Guidelines
|
||||||
|
|
||||||
|
The following guidelines apply to the community as a whole and extends to venues such as forums, IRC, and social media.
|
||||||
|
|
||||||
|
- No spamming or flooding.
|
||||||
|
- Observe topic guidance (off-topic channels/sub-forums where and when appropriate).
|
||||||
|
- The linking of illegal, pornographic, and/or offensive media is not permitted.
|
||||||
|
- No personal/direct attacks - keep it family friendly and respectful. Support needs to be open to all.
|
||||||
|
- No advertising - this includes the continual repetition of other FOSS projects too whilst on our support mediums (including G+ community) - it is harmful to the project and never conducive to support.
|
||||||
|
- The usage of bots unless explicitly permitted by the Solus Project is **strictly forbidden**.
|
||||||
|
|
||||||
|
### Team Guidelines
|
||||||
|
|
||||||
|
The team will strive to provide a friendly and open atmosphere, to enable community support. If community members are found to be violating the guidelines, Solus team members reserve the right
|
||||||
|
to **either ban** or **terminate access** to services. In all situations but the most extreme, prior warning will be given to the individual concerned, as an opportunity to correct their behaviour.
|
|
@ -0,0 +1,44 @@
|
||||||
|
## Getting Involved
|
||||||
|
|
||||||
|
Solus is a big undertaking, and as such there are many ways in which your involvement can help us. Naturally, that means there are also many ways in which you can help out.
|
||||||
|
|
||||||
|
### Community Guidelines
|
||||||
|
|
||||||
|
You may view community guidelines [here](/help-center/contributing/community-guidelines/).
|
||||||
|
|
||||||
|
### Community Forums
|
||||||
|
|
||||||
|
With so many new users joining, there are always more people needing help. A great way to help us out, would be to help out our users on the [Solus Project Forums](https://solus-project.com/forums/)
|
||||||
|
|
||||||
|
### IRC
|
||||||
|
|
||||||
|
[Internet Relay Chat](https://en.wikipedia.org/wiki/Internet_Relay_Chat) is a great way to discuss issues and development with the community, and project developers. It's also a great place for getting support, but remember due
|
||||||
|
to timezone differences there might not always be people present to answer your query immediately. You can access IRC using free clients like Hexchat and Quassel!
|
||||||
|
|
||||||
|
- [#Solus](irc://chat.freenode.net/#Solus) - Main project IRC channel for discussions and support
|
||||||
|
- [#Solus-Chat](irc://chat.freenode.net/#Solus-Chat) - Off topic channel for Solus
|
||||||
|
- [#Solus-Dev](irc://chat.freenode.net/#Solus-Dev) - Development talks, project developers invariably present.
|
||||||
|
|
||||||
|
### Packaging
|
||||||
|
|
||||||
|
There may be software you wish to have on your system that is currently not available in the repository. While you are more than welcome to submit a bug and wait for someone else to package the software you want, you can also improve
|
||||||
|
and contribute to the community by packaging software. If you're interested in learning to package software, feel free to visit our documentation [here](/help-center/packaging/guide/)
|
||||||
|
|
||||||
|
### Report Bugs
|
||||||
|
|
||||||
|
We're always looking to improve our systems, especially when they're not functioning as expected. By reporting bugs, you improve the system not only for you, but for all Solus Project users.
|
||||||
|
|
||||||
|
- [Developer Portal](https://dev.solus-project.com)
|
||||||
|
|
||||||
|
### Social networks
|
||||||
|
|
||||||
|
You can communicate with developers or others in the community by using one of the following websites:
|
||||||
|
|
||||||
|
- [Forums](https://solus-project.com/forums/)
|
||||||
|
- [Google+ Community](https://plus.google.com/communities/104830131595272878110)
|
||||||
|
- [Subreddit](http://www.reddit.com/r/SolusProject/)
|
||||||
|
- [Twitter](https://twitter.com/solusproject)
|
||||||
|
|
||||||
|
### Translations
|
||||||
|
|
||||||
|
Assistance is always welcome in translating Budgie Desktop to other languages, this is all done via our [Transifex](https://www.transifex.com/budgie-desktop/budgie-desktop/) page.
|
|
@ -0,0 +1,17 @@
|
||||||
|
## Heroes of Newerth
|
||||||
|
|
||||||
|
First, install the latest version of HoN by downloading it and running "HoNClient.sh".
|
||||||
|
|
||||||
|
Assuming that you install to ~/HoN (default), you only need to run two commands:
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo eopkg it gconf libgcrypt11 libglu mesalib
|
||||||
|
```
|
||||||
|
|
||||||
|
That installs all of the dependencies that HoN needs.
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
rm ~/HoN/libs-x86_64/{libcurl.so.4,libfreetype.so.6,libgcc_s.so.1,libgcrypt.so.11,libspeexdsp.so.1,libspeex.so.1,libstdc++.so.6,libudev.so.0}
|
||||||
|
```
|
||||||
|
|
||||||
|
This removes all the libraries that conflict with the ones in Solus.
|
|
@ -0,0 +1,41 @@
|
||||||
|
## Minecraft
|
||||||
|
|
||||||
|
[Minecraft](https://minecraft.net) is a sandbox independent video game originally created by Swedish programmer Markus "Notch" Persson and later developed and published by the Swedish company Mojang.
|
||||||
|
|
||||||
|
![Minecraft](images/minecraft.jpg)
|
||||||
|
|
||||||
|
### Installation
|
||||||
|
|
||||||
|
Install Java and Minecraft:
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo eopkg it openjdk-8
|
||||||
|
sudo mkdir -p /opt/minecraft
|
||||||
|
sudo wget https://s3.amazonaws.com/Minecraft.Download/launcher/Minecraft.jar -O /opt/minecraft/Minecraft.jar
|
||||||
|
```
|
||||||
|
|
||||||
|
Now we can create a desktop icon for it:
|
||||||
|
|
||||||
|
`sudo gedit /usr/share/applications/minecraft.desktop`
|
||||||
|
|
||||||
|
Paste in the following and save it:
|
||||||
|
```
|
||||||
|
[Desktop Entry]
|
||||||
|
Version=1.0
|
||||||
|
Type=Application
|
||||||
|
Name=Minecraft
|
||||||
|
Comment=Minecraft Launcher
|
||||||
|
Icon=minecraft
|
||||||
|
Exec=java -jar Minecraft.jar
|
||||||
|
Path=/opt/minecraft/
|
||||||
|
NoDisplay=false
|
||||||
|
Categories=Game;
|
||||||
|
StartupNotify=false
|
||||||
|
Terminal=false
|
||||||
|
```
|
||||||
|
|
||||||
|
Now run the following command to regenerate the Budgie menu.
|
||||||
|
|
||||||
|
`sudo update-desktop-database`
|
||||||
|
|
||||||
|
You know have a Minecraft entry in Budgie's menu.
|
Binary file not shown.
After Width: | Height: | Size: 78 KiB |
|
@ -0,0 +1,11 @@
|
||||||
|
## Steam
|
||||||
|
|
||||||
|
Steam is currently available via the Solus repository, as the `steam` package.
|
||||||
|
|
||||||
|
### NVIDIA
|
||||||
|
|
||||||
|
For systems running NVIDIA graphics hardware, you will need to install the corresponding 32bit video driver for your card, listed below:
|
||||||
|
|
||||||
|
- Current Gen: `nvidia-glx-driver-32bit`
|
||||||
|
- 340: `nvidia-340-glx-driver-32bit`
|
||||||
|
- 304: `nvidia-304-glx-driver-32bit`
|
|
@ -0,0 +1,27 @@
|
||||||
|
## iOS Support
|
||||||
|
|
||||||
|
Historically, iOS support on Linux has been quirky and typically done via partial implementations, such as [libimobiledevice](http://www.libimobiledevice.org/) and [libgpod](http://www.gtkpod.org/libgpod/). As software that Solus provides
|
||||||
|
leverages these implementations, it is likely that if you have an Apple device running an iOS version newer than 4.3.x, you will not be able to utilize it for the synchronizing of content such as music and video.
|
||||||
|
|
||||||
|
### Checking Compatibility
|
||||||
|
|
||||||
|
#### Rhythmbox
|
||||||
|
|
||||||
|
You can check if your device is capable of synchronization of content such as music and video by using the Rhythmbox music player. If your iOS device does not appear in the left sidepane, your device is likely not supported.
|
||||||
|
|
||||||
|
#### Advanced
|
||||||
|
|
||||||
|
You can further check by:
|
||||||
|
|
||||||
|
1. Installing `libideviceactivation` via the Software Center or running `sudo eopkg install libideviceactivation`
|
||||||
|
2. Rebooting.
|
||||||
|
3. Running the following command: `sudo ideviceinfo -q com.apple.mobile.iTunes -k DBVersion` '''while your iOS device is plugged in'''.
|
||||||
|
|
||||||
|
What this command does is queries the device to obtain the version of its database. If the version is '''greater than 4''', your device is not capable of synchronizing music and video. You may notice it appear in Files / Nautilus as
|
||||||
|
"Documents of DeviceName", however this typically only provides a limited set of data from applications.
|
||||||
|
|
||||||
|
### Mounting in Nautilus
|
||||||
|
|
||||||
|
You can attempt mounting in Nautilus by first running `systemctl start usbmuxd` then `imount` (without sudo). If it's successful, it will show up as "DeviceName" and you'll have access to content such as music, photos, etc.
|
||||||
|
|
||||||
|
'''Note:''' You may need to restart after installing libideviceactivation before imount works.
|
|
@ -0,0 +1,156 @@
|
||||||
|
## Laptop Compatibility
|
||||||
|
|
||||||
|
The following laptops have been tested and/or suggested to function correctly by our users. This list should not suggest that **only*- such devices listed below are compatible with Solus, as there may be devices not listed below that are in
|
||||||
|
fact compatible. If you have a device compatible with Solus not listed on this page, please get a hold of `JoshStrobl` [via IRC](/help-center/contributing/getting-involved/).
|
||||||
|
|
||||||
|
## Models
|
||||||
|
|
||||||
|
### Acer
|
||||||
|
|
||||||
|
- Acer Aspire 4830T
|
||||||
|
- Acer Aspire 5750G
|
||||||
|
- Acer Aspire 7551
|
||||||
|
- Acer Aspire ES 17 (ES1-731G-P1MC)
|
||||||
|
- Acer Aspire E5-473-370Z
|
||||||
|
- Acer Aspire E5-573G
|
||||||
|
- Acer Aspire V3-112P
|
||||||
|
- Acer Aspire V3-571G
|
||||||
|
- Acer Aspire V5-121
|
||||||
|
- Acer C710 Chromebook
|
||||||
|
- Acer C720-2848 Chromebook
|
||||||
|
|
||||||
|
### Alienware
|
||||||
|
|
||||||
|
- Alienware 14
|
||||||
|
|
||||||
|
### Apple
|
||||||
|
|
||||||
|
- Apple Macbook (late 2008)
|
||||||
|
- Apple MacBookPro8 3
|
||||||
|
|
||||||
|
### Asus
|
||||||
|
|
||||||
|
- Asus EEE-PC 1011PX
|
||||||
|
- Asus G750JZA
|
||||||
|
- Asus K53U
|
||||||
|
- Asus M50VM
|
||||||
|
- Asus N501JW
|
||||||
|
- Asus N61JA
|
||||||
|
- Asus UX305FA
|
||||||
|
- Asus X200MA
|
||||||
|
- Asus X201EV
|
||||||
|
- Asus X55
|
||||||
|
- Asus X550LD
|
||||||
|
- Asus X551CAP
|
||||||
|
|
||||||
|
### Dell
|
||||||
|
|
||||||
|
- Dell Inspiron 1110
|
||||||
|
- Dell Inspiron 15R N5010
|
||||||
|
- Dell Inspiron 15R N5110
|
||||||
|
- Dell Inspiron 5050
|
||||||
|
- Dell Inspiron 7548
|
||||||
|
- Dell Latitude D830
|
||||||
|
- Dell Latitude E4310
|
||||||
|
- Dell Latitude E5440
|
||||||
|
- Dell Latitude E6320
|
||||||
|
- Dell Latitude E6410
|
||||||
|
- Dell Latitude E6410
|
||||||
|
- Dell Latitude E6420
|
||||||
|
- Dell Latitude E6430
|
||||||
|
- Dell Latitude E6530
|
||||||
|
- Dell Precision M6500
|
||||||
|
- Dell Vostro 1700
|
||||||
|
|
||||||
|
### Google
|
||||||
|
|
||||||
|
- Google Chromebook CR48
|
||||||
|
|
||||||
|
### HP
|
||||||
|
|
||||||
|
- HP Compaq 6730B
|
||||||
|
- HP Compaq Presario CQ61
|
||||||
|
- HP Compaq NC6400
|
||||||
|
- HP EliteBook 8440P
|
||||||
|
- HP EliteBook 8740w
|
||||||
|
- HP EliteBook 8760w
|
||||||
|
- HP Envy TS M6
|
||||||
|
- HP Pavilion 15-E042SO
|
||||||
|
- HP Pavilion DV2700
|
||||||
|
- HP Pavilion DV6
|
||||||
|
- HP Pavilion DV6Z-6c00
|
||||||
|
- HP Pavilion DV6Z-6100
|
||||||
|
- HP Pavilion DV7
|
||||||
|
- HP Pavilion x360 Convertible
|
||||||
|
- HP Presario V6000
|
||||||
|
|
||||||
|
### Lenovo
|
||||||
|
|
||||||
|
- Lenovo 3000 V200
|
||||||
|
- Lenovo B50-50
|
||||||
|
- Lenovo G50-80
|
||||||
|
- Lenovo G510
|
||||||
|
- Lenovo IdeaPad S400U
|
||||||
|
- Lenovo IdeaPad U310 Touch
|
||||||
|
- Lenovo IdeaPad Z370
|
||||||
|
- Lenovo IdeaPad Z585
|
||||||
|
- Lenovo IdeaPad Z585
|
||||||
|
- Lenovo ThinkPad E450
|
||||||
|
- Lenovo ThinkPad E550
|
||||||
|
- Lenovo ThinkPad Edge E545
|
||||||
|
- Lenovo Thinkpad L412
|
||||||
|
- Lenovo ThinkPad L440
|
||||||
|
- Lenovo ThinkPad L512
|
||||||
|
- Lenovo ThinkPad R60e
|
||||||
|
- Lenovo ThinkPad S5-S540
|
||||||
|
- Lenovo ThinkPad SL510
|
||||||
|
- Lenovo Thinkpad T400 (2767V2W)
|
||||||
|
- Lenovo ThinkPad T410i
|
||||||
|
- Lenovo ThinkPad T420
|
||||||
|
- Lenovo ThinkPad T430
|
||||||
|
- Lenovo ThinkPad T440
|
||||||
|
- Lenovo ThinkPad T440s
|
||||||
|
- Lenovo ThinkPad W520 4270CTO
|
||||||
|
- Lenovo ThinkPad X1 Carbon 3rd
|
||||||
|
- Lenovo ThinkPad X200T
|
||||||
|
- Lenovo ThinkPad X201
|
||||||
|
- Lenovo ThinkPad X220
|
||||||
|
- Lenovo ThinkPad X61
|
||||||
|
- Lenovo Yoga 2 11
|
||||||
|
- Lenovo Z50-70
|
||||||
|
|
||||||
|
### MSI
|
||||||
|
|
||||||
|
- MSI GE70
|
||||||
|
|
||||||
|
### Samsung
|
||||||
|
|
||||||
|
- Samsung NP270E5E-X02PL
|
||||||
|
- Samsung NP300E4C-AD5BR
|
||||||
|
- Samsung NP365E5C-S04US
|
||||||
|
- Samsung NP900X3G
|
||||||
|
- Samsung NP900X4C-AU05
|
||||||
|
|
||||||
|
### Schenker
|
||||||
|
|
||||||
|
- Schenker XMG A506-VE
|
||||||
|
|
||||||
|
### Sony
|
||||||
|
|
||||||
|
- Sony VAIO S Series 13
|
||||||
|
- Sony VAIO VPCEC3M1E
|
||||||
|
|
||||||
|
### Toshiba
|
||||||
|
|
||||||
|
- Toshiba Portege R930
|
||||||
|
- Toshiba Qosmio X305
|
||||||
|
- Toshiba Qosmio X875
|
||||||
|
- Toshiba Satellite A660
|
||||||
|
- Toshiba Satellite C50D-A-125
|
||||||
|
- Toshiba Satellite C640
|
||||||
|
- Toshiba Satellite C665D
|
||||||
|
- Toshiba Satellite L300D
|
||||||
|
- Toshiba Satellite L455D
|
||||||
|
- Toshiba Satellite L850-B218
|
||||||
|
- Toshiba Satellite L855D
|
||||||
|
- Toshiba Tecra A11
|
|
@ -1,4 +1,4 @@
|
||||||
## Installing Proprietary Drivers
|
## Proprietary Drivers
|
||||||
|
|
||||||
Installing proprietary drivers may improve performance or certain features, however they are usually not necessary for normal daily usage.
|
Installing proprietary drivers may improve performance or certain features, however they are usually not necessary for normal daily usage.
|
||||||
|
|
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 39 KiB |
|
@ -0,0 +1,56 @@
|
||||||
|
## Wireless Chipsets Compatibility
|
||||||
|
|
||||||
|
The following wireless chipsets have been tested and/or suggested to function correctly by our users. This list should not suggest that **only*- such devices listed below are compatible with Solus, as there may be devices not listed below that are in
|
||||||
|
fact compatible. If you have a device compatible with Solus not listed on this page, please get a hold of `JoshStrobl` [via IRC](/help-center/contributing/getting-involved/).
|
||||||
|
|
||||||
|
### Atheros
|
||||||
|
|
||||||
|
- Atheros AR242x / AR542x
|
||||||
|
- Atheros AR8161
|
||||||
|
- Atheros AR9285
|
||||||
|
- Atheros AR9287
|
||||||
|
- Atheros AR928X
|
||||||
|
- Atheros AR9462
|
||||||
|
- Atheros AR9485
|
||||||
|
- Atheros AR9485WB-EG
|
||||||
|
- Atheros QCA9565 / AR9565
|
||||||
|
|
||||||
|
### Broadcom
|
||||||
|
|
||||||
|
- Broadcom BCM4312
|
||||||
|
- Broadcom BCM4313
|
||||||
|
- Broadcom BCM4322
|
||||||
|
- Broadcom BCM4324
|
||||||
|
- Broadcom BCM4331
|
||||||
|
- Broadcom BCM4365
|
||||||
|
- Broadcom BCM57785
|
||||||
|
|
||||||
|
### Intel
|
||||||
|
|
||||||
|
- Intel AC3160
|
||||||
|
- Intel AC7265
|
||||||
|
- Intel Centrino Advanced-N 6200
|
||||||
|
- Intel Centrino Advanced-N 6205
|
||||||
|
- Intel Centrino Advanced-N 6235
|
||||||
|
- Intel Centrino Ultimate-N 6300
|
||||||
|
- Intel Centrino Wireless-N 2230
|
||||||
|
- Intel PRO/Wireless 3945ABG
|
||||||
|
- Intel PRO/Wireless 4965 AG or AGN
|
||||||
|
- Intel Ultimate N WiFi Link 5300
|
||||||
|
- Intel WiFi Link 5100
|
||||||
|
|
||||||
|
### Realtek
|
||||||
|
|
||||||
|
- Realtek RTL8101E/RTL8102E
|
||||||
|
- Realtek RTL8111/8168B
|
||||||
|
- Realtek RTL8169
|
||||||
|
- Realtek RTL8179
|
||||||
|
- Realtek RTL8187SE
|
||||||
|
- Realtek RTL8188CE
|
||||||
|
- Realtek RTL8191SEvB
|
||||||
|
- Realtek RTL8192ce
|
||||||
|
- Realtek RTL8723BE
|
||||||
|
|
||||||
|
### Tenda
|
||||||
|
|
||||||
|
- Tenda W311U USB Adapter
|
|
@ -0,0 +1,74 @@
|
||||||
|
## Building a Package
|
||||||
|
|
||||||
|
### Setting up Packager file
|
||||||
|
|
||||||
|
In order to utilise the build system, you must first set up a configuration file that has your packager details.
|
||||||
|
|
||||||
|
This file lives in the `.solus` folder of your home directory. You will need to create the `.solus` folder as well as the inner `packager` file. Inside the packager file, you need two keys, `Name` and `Email`. This is used when generating the machine
|
||||||
|
file so that the packager details are stored within the resulting binary package.
|
||||||
|
|
||||||
|
``` conf
|
||||||
|
Name=Your Name Here
|
||||||
|
Email=your.email@address
|
||||||
|
```
|
||||||
|
|
||||||
|
### Using solbuild
|
||||||
|
|
||||||
|
The `solbuild` tool must first be initialized with a base image. All builds thereafter will use this as a base, and construct a temporary overlay root to save on time and disk space in builds.
|
||||||
|
|
||||||
|
#### Initializing solbuild
|
||||||
|
|
||||||
|
First, install the system.devel component by calling: `sudo eopkg it -c system.devel`
|
||||||
|
|
||||||
|
Next, install solbuild itself with `sudo eopkg it solbuild`. If you are building against unstable, also install `solbuild-config-unstable`.
|
||||||
|
|
||||||
|
Next, you need to initialize solbuild via `sudo solbuild init`
|
||||||
|
|
||||||
|
This will take some time as it downloads and prepares the image. It is a good idea to update the root on a semi-regular basis, otherwise the updates will be applied on every build.
|
||||||
|
|
||||||
|
#### Updating solbuild
|
||||||
|
|
||||||
|
It is a good idea to keep the base image updated. It will help reduce build times by not having to repeatedly download updates to packages in the base image, and will strictly need to pull down the packages your build needs.
|
||||||
|
|
||||||
|
To update solbuild, run: `sudo solbuild update`
|
||||||
|
|
||||||
|
### Setting up common
|
||||||
|
|
||||||
|
Next you need to set up `common`, a set of make scripts that enables you to more easily manage, build, check, and publish packages.
|
||||||
|
|
||||||
|
You need to clone the common repository with git `sudo eopkg it git` by doing `git clone https://git.solus-project.com/common` in the same directory you will have sub-folders for packages you are building.
|
||||||
|
|
||||||
|
Next you need to set up symlinks. Do this from the same directory you executed the `git` command:
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
ln -sv common/Makefile.common .
|
||||||
|
ln -sv common/Makefile.toplevel Makefile
|
||||||
|
ln -sv common/Makefile.iso .
|
||||||
|
```
|
||||||
|
|
||||||
|
Next, inside the **folder** of the **package** you are building, run: `echo "include ../Makefile.common" > Makefile`
|
||||||
|
|
||||||
|
This will enable you to call `make` commands from inside the package folder.
|
||||||
|
|
||||||
|
Your folder should look something similar to this:
|
||||||
|
|
||||||
|
```
|
||||||
|
| common/
|
||||||
|
| your-package/
|
||||||
|
| - Makefile
|
||||||
|
| Makefile.common
|
||||||
|
| Makefile.toplevel
|
||||||
|
| Makefile.iso
|
||||||
|
```
|
||||||
|
|
||||||
|
### Building packages (Solus only)
|
||||||
|
|
||||||
|
After setting up common, you can now build the package. Note that build dependencies and such will be installed locally (in the chroot environment).
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
make
|
||||||
|
```
|
||||||
|
|
||||||
|
You will be prompted to enter your password by sudo so dependencies may be downloaded and the necessary eopkg files may be generated.
|
||||||
|
|
||||||
|
You may find other `common` commands [https://git.solus-project.com/common/about/](here).
|
|
@ -0,0 +1,25 @@
|
||||||
|
## Packaging Guide
|
||||||
|
|
||||||
|
This guide is aimed at those wishing to either maintain existing packages, or contribute packaging, to the Solus repositories.
|
||||||
|
|
||||||
|
We assume you already have a working knowledge of Linux based systems, and are already comfortable with compiling software from source.
|
||||||
|
|
||||||
|
### Supported targets
|
||||||
|
|
||||||
|
You may either build natively on your Solus installation using the `ypkg` tool directly, or or on supported distributions in a chroot environment via the `evobuild` tool. Please note that in order to use `evobuild` from other distributions, your
|
||||||
|
kernel must support `overlayfs`, which must be enabled and loaded.
|
||||||
|
|
||||||
|
### Overview
|
||||||
|
|
||||||
|
Solus uses the `eopkg` package manager, which creates `.eopkg` binary packages. Internally an eopkg file contains a `metadata.xml` file, describing the package in full, along with file contents, plus an `install.tar.xz`
|
||||||
|
|
||||||
|
In order to directly build a `.eopkg`, the developer must complete a `package.yml` file, to describe the build steps involved and the metadata. However, as this is more of a machine format, we opted for a meta-build format to ensure packaging
|
||||||
|
was both simple and rules based.
|
||||||
|
|
||||||
|
To this end, we use `ypkg`. This uses a YAML format file, which simply contains relevant package information, and the build steps. The tool will decide upon the relevant subpackages upon build completion, and then pass the packaging step
|
||||||
|
to `eopkg` at the end.
|
||||||
|
|
||||||
|
Macros are made available to the developer to ensure the package uses the relevant distribution options, and that the resulting package is compliant with the specific distribution rules.
|
||||||
|
|
||||||
|
The key difference between `ypkg` and traditional package building systems, is that the developer has very little choice about the naming of packages and subpackages. Automatic rules are applied to ensure the correct level of splitting occurs, freeing
|
||||||
|
the developer from hours of arduous packaging reducing the entire process to what is essentially a highly organised document with embedded shell scripts.
|
|
@ -0,0 +1,224 @@
|
||||||
|
## Package.yml
|
||||||
|
|
||||||
|
### Format
|
||||||
|
|
||||||
|
All packages consist of a single build file, which provides all of the required metadata for the package manager, plus the build steps involved to produce a package. This follows the YAML specification, thus all `package.yml` files **must** be valid YAML.
|
||||||
|
|
||||||
|
As can be seen in the example below, the file is organised into a key->value hierarchy. Some values may be required to be in a list format, whereas most are simple strings. The build step sections are all considered optional, however if you do not
|
||||||
|
perform *any* steps, then no package is generated. Each of these keys contains content that will be placed within a script and executed within a controlled environment to perform the package build. To all intents and purposes, they are bash scripts
|
||||||
|
with a predefined environment.
|
||||||
|
|
||||||
|
An example file follows:
|
||||||
|
|
||||||
|
``` yaml
|
||||||
|
name : nano
|
||||||
|
version : 2.5.1
|
||||||
|
release : 39
|
||||||
|
source :
|
||||||
|
- http://www.nano-editor.org/dist/v2.5/nano-2.5.1.tar.gz : e06fca01bf183f4d531aa65a28dffc0e2d10185239909eb3de797023f3453bde
|
||||||
|
license :
|
||||||
|
- GPL-3.0
|
||||||
|
component : editor
|
||||||
|
summary : Small, friendly text editor inspired by Pico
|
||||||
|
description : |
|
||||||
|
GNU nano is an easy-to-use text editor originally designed as a replacement for
|
||||||
|
Pico, the ncurses-based editor from the non-free mailer package Pine.
|
||||||
|
setup : |
|
||||||
|
%configure --enable-utf8 --docdir=/usr/share/doc/nano
|
||||||
|
build : |
|
||||||
|
%make
|
||||||
|
install : |
|
||||||
|
%make_install
|
||||||
|
# TODO: Convert to stateless
|
||||||
|
install -D -m 00644 $pkgfiles/nanorc $installdir/etc/nanorc
|
||||||
|
```
|
||||||
|
|
||||||
|
### Keys
|
||||||
|
|
||||||
|
Not all fields in `package.yml` are mandatory, but a small selection are. They are listed below. Note that `string(s)` indicates that it is possible to use a `list` of strings, or one single `string`
|
||||||
|
|
||||||
|
`dict` refers to a `key : value` split in YAML, and `dict(s)` refers to a list of `dict`s
|
||||||
|
|
||||||
|
#### Mandatory Keys
|
||||||
|
|
||||||
|
Key Name | Type | Description
|
||||||
|
---- | ---- | ----
|
||||||
|
**name** | `string` | The name of the package. This is also used as the base of all sub-package names. Unless unavoidable, this should match the upstream name
|
||||||
|
**version** | `string` | The version of the currently packaged software. This is taken from the tarball in most cases.
|
||||||
|
**release** | `integer` | Specifies the current release number. Updates in the package number are based on this `release` number, *not* the `version` number. As such, to release an update to users, this number must be incremented by one.
|
||||||
|
**license** | `string(s)` | Valid upstream license(s). Try to ensure these use [SPDX identifiers](http://spdx.org/licenses/).
|
||||||
|
**source** | `dict(s)` | Upstream source location (i.e. tarball), with the valid `sha256sum` as a value
|
||||||
|
**component** | `string` | Component / group of packages this package belongs to. Check available components via `eopkg lc`
|
||||||
|
**summary** | `string` | Brief package summary, or display name
|
||||||
|
**description** | `string` | More extensive description of the software, usually taken from the vendor website
|
||||||
|
|
||||||
|
#### Optional, supported keys
|
||||||
|
|
||||||
|
Key Name | Type | Description
|
||||||
|
---- | ---- | ----
|
||||||
|
**clang** | `bool` | Set to `no` if this package cannot be built with Clang
|
||||||
|
**extract** | `bool` | Set to `no` to disable automatic source extraction.
|
||||||
|
**autodep** | `bool` | Set to `no` to disable automatic binary dependency resolution at build time
|
||||||
|
**emul32** | `bool` | Set to `yes` to enable an `-m32` build (32-bit libs)
|
||||||
|
**libsplit** | `bool` | Set to `no` to disable splitting of libraries into `devel` sub-packages
|
||||||
|
**rundeps** | `dict(s)` | Specify further runtime dependencies for the packages
|
||||||
|
**replaces** | `dict(s)` | Replace one package with another, used when renaming or deprecating packages for clean upgrade paths
|
||||||
|
**patterns** | `dict(s)` | Allows fine grained control over file placement within the package or sub-packages. Useful for packages that are development only (i.e. `/usr/bin` files)
|
||||||
|
|
||||||
|
#### Build step keys, optional
|
||||||
|
|
||||||
|
Note that each step in itself is optional, however all can be used. The value of each of these keys is merged into a build script that is executed for each stage of the build.
|
||||||
|
|
||||||
|
Step Name | Description
|
||||||
|
---- | ----
|
||||||
|
**setup** | Performed after the source extraction. This is the correct place to perform any `configure` routine, or to `patch` the sources.
|
||||||
|
**build** | Use this step to run the build portion, i.e. `make`
|
||||||
|
**install** | This is where you should install the files into the final packaging directory, i.e. `make install`
|
||||||
|
**check** | There is where tests / checking should occur, i.e. `make check`
|
||||||
|
|
||||||
|
### Macros
|
||||||
|
|
||||||
|
To further assist in packaging, a number of macros are available. These are simply shorthand ways to perform a normal build operation. They also ensure that the resulting package is consistent. These macros are only available in our build steps, as
|
||||||
|
they are substituted within the script before execution.
|
||||||
|
|
||||||
|
#### Usage
|
||||||
|
|
||||||
|
Macros are prefixed with `%`, and are substituted before your script is executed. Macros ending with `%` are used to provide directory names or build values, to the script.
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
# Run the configure macro with the given arguments
|
||||||
|
%configure --disable-static
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Actionable Macros
|
||||||
|
|
||||||
|
Macro | Description
|
||||||
|
---- | ----
|
||||||
|
**%autogen** | Runs autogen with our `%CONFOPTS%` to create a configure script then proceeds to run `%configure`.
|
||||||
|
**%cmake** | Configure cmake project with the distribution specific options, such as prefix and release type
|
||||||
|
**%configure** | Runs `./configure` with our `%CONFOPTS%` variable macro.
|
||||||
|
**%make** | Runs the `make` command with the job count specified in `eopkg.conf`
|
||||||
|
**%make_install** | Perform a `make install`, using the `DESTDIR` variant. Should work for the vast majority of packages.
|
||||||
|
**%patch** | Sane patch macro to run in batch mode and not contaminate source tree on failure
|
||||||
|
**%apply_patches** | Applies all patches listed in the `series` file in `./files` folder.
|
||||||
|
**%reconfigure** | Updates build scripts such as `./configure` and proceeds to run `%configure`.
|
||||||
|
|
||||||
|
#### Meson Actionable Macros
|
||||||
|
|
||||||
|
Macro | Description
|
||||||
|
---- | ----
|
||||||
|
**%meson_configure** | Runs meson with our CFLAGS and appropriate flags such as libdir.
|
||||||
|
**%meson_build** | Runs ninja and passes our %JOBS% variable.
|
||||||
|
**%meson_install** | Runs meson install and passed the appropriate DESTDIR and %JOBS% variable
|
||||||
|
|
||||||
|
#### Perl Actionable Macros
|
||||||
|
|
||||||
|
Macro | Description
|
||||||
|
---- | ----
|
||||||
|
**%perl_setup** | Runs Perl setup scripts Build.pl or Makefile.pl with the appropriate variable flags.
|
||||||
|
**%perl_build** | Runs Perl build scripts or attempts `%make`.
|
||||||
|
**%perl_install** | Runs Perl install scripts or attempts `%make_install`.
|
||||||
|
|
||||||
|
#### Python Actionable Macros
|
||||||
|
|
||||||
|
Macro | Description
|
||||||
|
---- | ----
|
||||||
|
**%python_setup** | Runs the build portion of a setup.py using python2.
|
||||||
|
**%python_install** | Runs the install portion of a setup.py, to the appropriate root, using python2.
|
||||||
|
**%python3_setup** | Runs the build portion of a setup.py using python3.
|
||||||
|
**%python3_install** | Runs the install portion of a setup.py, to the appropriate root, using python3.
|
||||||
|
|
||||||
|
#### Variable Macros
|
||||||
|
|
||||||
|
Macro | Description
|
||||||
|
---- | ----
|
||||||
|
**%CONFOPTS%** | Flags / options for configuration, such as `--prefix=/usr`. [Full List.](https://github.com/solus-project/ypkg/blob/master/ypkg2/rc.yml#L74)
|
||||||
|
**%CFLAGS%** | cflags as set in `eopkg.conf`
|
||||||
|
**%CXXFLAGS%** | cxxflags as set in `eopkg.conf`
|
||||||
|
**%LDFLAGS%** | ldflags as set in `eopkg.conf`
|
||||||
|
**%CC%** | C compiler
|
||||||
|
**%CXX%** | C++ compiler
|
||||||
|
**%JOBS%** | jobs, as set in `eopkg.conf`
|
||||||
|
**%installroot%** | Hard-coded install directory
|
||||||
|
**%libdir%** | The distribution’s default library directory, i.e. `/usr/lib64` (Alters for `emul32`)
|
||||||
|
**%workdir%** | Hard-coded work directory (source tree)
|
||||||
|
|
||||||
|
### Variables
|
||||||
|
|
||||||
|
A set of variables are exported in our build stages. These are used to provide context and structure to the scripts.
|
||||||
|
|
||||||
|
Variable | Description
|
||||||
|
---- | ----
|
||||||
|
**$CFLAGS** | cflags as set in eopkg.conf
|
||||||
|
**$CXXFLAGS** | cxxflags as set in `eopkg.conf`
|
||||||
|
**$LDFLAGS** | ldflags as set in `eopkg.conf`
|
||||||
|
**$CC** | C compiler
|
||||||
|
**$CXX** | C++ compiler
|
||||||
|
**$EMUL32BUILD** | Set only when compiling in `emul32` mode
|
||||||
|
**$workdir** | The work, or source, directory of the package build
|
||||||
|
**$installdir** | The install directory, i.e. where files are installed to for packaging
|
||||||
|
**$pkgfiles** | Refers to the `./files` directory relative to the `package.yml` file
|
||||||
|
**$sources** | Refers to the directory where your source files are stored e.g. `$sources/nano.tar.gz`
|
||||||
|
|
||||||
|
### Types
|
||||||
|
|
||||||
|
The `package.yml` file uses native YAML types, however for the sake of clarity an explanation of how they are used within the context of `ypkg` is provided below.
|
||||||
|
|
||||||
|
### string
|
||||||
|
|
||||||
|
This is simply text, which does not need to be quoted.
|
||||||
|
|
||||||
|
### integer
|
||||||
|
|
||||||
|
Whole, positive number, used in the `release` field.
|
||||||
|
|
||||||
|
### list
|
||||||
|
|
||||||
|
A YAML list (or array) can be expressed in multiple ways. A short array-notation would look like this:
|
||||||
|
|
||||||
|
`[one, two, three]`
|
||||||
|
|
||||||
|
They can also be expressed like this:
|
||||||
|
|
||||||
|
```
|
||||||
|
- First Value
|
||||||
|
- Second Value
|
||||||
|
- Third Value
|
||||||
|
```
|
||||||
|
|
||||||
|
### dict
|
||||||
|
|
||||||
|
Known as an associative array, this is key to value mapping. These are separated by a colon (`:`), the token on the left is taken to be a key, and the token on the right is the value.
|
||||||
|
|
||||||
|
`SomeKey: Some Value`
|
||||||
|
|
||||||
|
Note that each `ypkg key` in the YAML file is actually a dict.
|
||||||
|
|
||||||
|
### dict(s)
|
||||||
|
|
||||||
|
This is a combination of the `list` type, the `dict` type and some assumptions. We primarily make use of this to express advanced information within the package. These permit you to provide no key, and a value only.
|
||||||
|
In this instance, the key is assumed to be the package `name`:
|
||||||
|
|
||||||
|
`- some value`
|
||||||
|
|
||||||
|
An explicit key, usually a sub-package name:
|
||||||
|
|
||||||
|
`- somekey: somevalue`
|
||||||
|
|
||||||
|
A mix of both:
|
||||||
|
|
||||||
|
```
|
||||||
|
- somevalue
|
||||||
|
- somekey: another value
|
||||||
|
```
|
||||||
|
|
||||||
|
The values may also be expressed in list form, still using the same default key logic:
|
||||||
|
|
||||||
|
```
|
||||||
|
- [one,two, three]
|
||||||
|
- somekey: [one,two, three]
|
||||||
|
- key:
|
||||||
|
- value one
|
||||||
|
- value two
|
||||||
|
- value three
|
||||||
|
```
|
|
@ -0,0 +1,268 @@
|
||||||
|
## Packaging Practices
|
||||||
|
|
||||||
|
The primary goal of `ypkg` is ease of maintainence. In order to do so we ensure packages in the binary repository adhere to a strict set of conventions and practices.
|
||||||
|
|
||||||
|
The next few sections will detail these.
|
||||||
|
|
||||||
|
### Package naming
|
||||||
|
|
||||||
|
The `ypkg` tool does not allow for custom subpackages or subpackage naming, and will enforce its own policy. This can be eased somewhat through the use of `patterns`, however the available subpackage names are limited.
|
||||||
|
|
||||||
|
We request you use (where possible) the upstream source name for your package. Subpackage names (when generated) are constructed by using the `name` value first, then applying the subpackage name as such:
|
||||||
|
|
||||||
|
`pkgname-$subpackage`
|
||||||
|
|
||||||
|
Subpackages are fully automatic with `ypkg`, and are created based on file patterns. All subpackages automatically depend on the main package, to ensure correct operation. In the following explanations, `$lib` is used to refer to the host
|
||||||
|
library directory, i.e. `lib` or `lib64` (or `lib32` on `emul32` builds)
|
||||||
|
|
||||||
|
#### The devel subpackage
|
||||||
|
|
||||||
|
This is invariably created for packages that provide libraries and development headers. The following rules will result in files being placed in a `devel` subpackage:
|
||||||
|
|
||||||
|
```
|
||||||
|
/usr/include
|
||||||
|
/usr/$lib/lib*.so
|
||||||
|
/usr/$lib/lib*.a
|
||||||
|
/usr/share/man2/
|
||||||
|
/usr/share/man3/
|
||||||
|
/usr/share/pkgconfig
|
||||||
|
/usr/$lib/pkgconfig
|
||||||
|
/usr/share/cmake
|
||||||
|
/usr/share/vala
|
||||||
|
```
|
||||||
|
|
||||||
|
Note that for some packages, `/usr/$lib/lib*.so` files are not symlinks. In this instance, the main package will be broken with no library files present. This can quickly be determined by looking at the resulting .xml file generated after running the build.
|
||||||
|
If this happens, simply override with `patterns` or set `libsplit` to “no”.
|
||||||
|
|
||||||
|
**A note on static archives**: Unless it is absolutely unavoidable, you should disable static libraries within your build. This is usually fixed by adding `--disable-static` to your configure routine. If `*.a` files are shown in your packaging request, it will be
|
||||||
|
questioned, as they can pose a greater security risk if packages link against these static archives.
|
||||||
|
|
||||||
|
#### The docs subpackage
|
||||||
|
|
||||||
|
Currently there is only one pattern which is forced into a `docs` subpackage:
|
||||||
|
|
||||||
|
```
|
||||||
|
/usr/share/gtk-doc
|
||||||
|
```
|
||||||
|
|
||||||
|
If required, you can use `patterns` to move other files into the `docs` subpackage, making it smaller.
|
||||||
|
|
||||||
|
#### The 32bit subpackage
|
||||||
|
|
||||||
|
This subpackage is only generated during an `emul32` build. The folowing paths will automatically be placed into a `32bit` subpackage
|
||||||
|
|
||||||
|
```
|
||||||
|
/usr/lib32/lib*.so
|
||||||
|
/usr/lib32/lib*.so.*
|
||||||
|
/usr/lib32/lib*.a
|
||||||
|
```
|
||||||
|
|
||||||
|
Note the same static archive rules apply to `32bit` packages. These packages aren’t as heavily split as we try to discourage their use, though they must be provided in some instances.
|
||||||
|
|
||||||
|
#### The utils subpackage
|
||||||
|
|
||||||
|
This is not an automatic subpackage, you must use `patterns` to utilise it. It is provided for instances that it may not be suitable to have binaries present, i.e. for a library package.
|
||||||
|
|
||||||
|
### Maintenance
|
||||||
|
|
||||||
|
When submitting a change `package.yml`, it must be accompanied by its corresponding `pspec_*.xml` file, which was generated at build time. This machine file allows the repository maintainers to evaluate the package condition.
|
||||||
|
|
||||||
|
When providing a new version of a package, or a fix, always ensure you increment the `release` number by 1. This ensures that users of your package are correctly updated to the latest version.
|
||||||
|
|
||||||
|
Never submit a package without having first tested it, and ensuring it builds within `evobuild`, a clean chroot environment.
|
||||||
|
|
||||||
|
### Generating a Package.yml
|
||||||
|
|
||||||
|
Making a package.yml file is not necessarily a manual process. In fact, [once you have common setup](https://wiki.solus-project.com/Building_packages#Setting_up_common), you already have a script capable of generating a package.yml file based
|
||||||
|
on the source archive URL.
|
||||||
|
|
||||||
|
You can generate a package.yml by using `common/Scripts/yauto.py URL_TO_ARCHIVE`. We recommend creation an alias in your `.bashrc` or `.zshrc`, so you can access it wherever you are. For example:
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
alias fetchYml="$HOME/repository/common/Scripts/yauto.py"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Patching / extra files
|
||||||
|
|
||||||
|
Files that may be required during the build can be accessed via the `$pkgfiles` variable. Note that you must store your files in the `./files` directory relative to your `package.yml`
|
||||||
|
|
||||||
|
Both patches and extra files (such as systemd units) are stored in this directory. Note that if your patch is to address a **CVE**, you must use the following naming scheme:
|
||||||
|
|
||||||
|
```./files/security/cve-xxxx-xxxx.patch```
|
||||||
|
Where xxxx-xxxx is replaced with the full CVE ID. Complying with this simple rule ensures that we can know at any time the security status of packages when using tools such as `cve-check-tool`
|
||||||
|
|
||||||
|
### Applying a patch
|
||||||
|
|
||||||
|
It is common practice to apply the patch within the `setup` section of your build staging. We can achieve this using the `%patch` macro, and the `$pkgfiles` variable. In this example, the required file is located at `./files/0002-Sample-commit-2.patch`
|
||||||
|
|
||||||
|
```%patch -p1 < $pkgfiles/0002-Sample-commit-2.patch```
|
||||||
|
Note you use the macro as you would normally use the patch command, however use of the macro ensures it performs a clean batch-mode patch.
|
||||||
|
|
||||||
|
If you are using compressed patches, i.e. for the `bash` or `readline` packages, you can pipe the call through `zcat` or similar:
|
||||||
|
|
||||||
|
```zcat $pkgfiles/bash43-032.gz | %patch -p0```
|
||||||
|
|
||||||
|
#### Handling multiple patches
|
||||||
|
|
||||||
|
In the event you need to apply multiple patches, such as a multitude of CVE patches, it may be sensible to use our `%apply_patches` macro, which will apply all the patches listed in a `series` file in your package's `./files` folder. Example below:
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
security/cve-xxxx-xxxx.patch
|
||||||
|
fix-silliness.patch
|
||||||
|
```
|
||||||
|
|
||||||
|
Both of the files above will be applied using `-p1`. If you need to use stripping num, like `-p4`, you can do something like:
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
security/cve-xxxx-xxxx.patch -p4
|
||||||
|
fix-silliness.patch
|
||||||
|
```
|
||||||
|
|
||||||
|
### Installing extra files
|
||||||
|
|
||||||
|
We recommend using patches where possible first, as they ensure correct maintainence and will be updated across package versions. If you must install extra files into the directory, please use the `install` command, ensuring you set the correct
|
||||||
|
permissions. Again, files are accessible from the `./files/` directory, relative to `package.yml`.
|
||||||
|
|
||||||
|
This is an example of installing a custom profile file, seen in the `bash` package:
|
||||||
|
|
||||||
|
```install -m 0644 $pkgfiles/profile $installdir/etc/profile```
|
||||||
|
|
||||||
|
### Build dependencies
|
||||||
|
|
||||||
|
Most software packages that you build will in one way or another, depend on another software package to provide specific functionality. This is usually achieved by using a library.
|
||||||
|
|
||||||
|
Any package that is submitted to our repositories is always built in a clean chroot environment, therefore any dependencies required to build that package in a reproducible and sane fashion, must be listed.
|
||||||
|
|
||||||
|
This is achieved by populating the `builddeps` key with a list of build dependencies. We support two kinds of build dependencies: explicitly named, or `pkgconfig` dependencies.
|
||||||
|
|
||||||
|
We prefer the use of `pkgconfig` dependencies. Most modern software will use the `pkg-config` tool (package configuration) to determine which files are required to build the current software. This may include compiler flags, library to link against and
|
||||||
|
where the package headers are located.
|
||||||
|
|
||||||
|
An obvious advantage to supporting `pkgconfig` dependencies is that there is a 1:1 mapping between the name requested by the build and the name used within the `package.yml`. Instead of trying to hunt down the package providing that dependency,
|
||||||
|
you simply list the same name. Any package in the repository will export information about the `.pc` files (for `pkg-config`) it contains, enabling you to use those as a build dependency.
|
||||||
|
|
||||||
|
A secondary advantage is that this allows for easily switching or replacing a providing package. When no `pkgconfig` name is available (some packages do not provide these, or it doesn’t make sense for them to), you may use the explicit package name. Always
|
||||||
|
ensure you select the correct package, i.e. the `-devel` subpackage. This provides the necessary symlinks and headers to build packages.
|
||||||
|
|
||||||
|
#### Using pkgconfig dependencies
|
||||||
|
|
||||||
|
In the `builddeps` list, simply use the `pkgconfig(name)` syntax. For example, to add gtk+-3.0 to the build dependencies, we would do the following:
|
||||||
|
|
||||||
|
```
|
||||||
|
builddeps:
|
||||||
|
- pkgconfig(gtk+-3.0)
|
||||||
|
```
|
||||||
|
|
||||||
|
At build time the appropriate provider package is selected, in this instance `libgtk-3-devel`
|
||||||
|
|
||||||
|
You can determine if there are pkgconfigs available from a -devel package by doing `eopkg info (name)` and looking for the `Provides` key.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
$ eopkg info libgtk-3-devel
|
||||||
|
```
|
||||||
|
|
||||||
|
In output:
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
Provides: pkgconfig(gtk+-3.0) pkgconfig(gdk-3.0) pkgconfig(gdk-wayland-3.0) pkgconfig(gail-3.0) pkgconfig(gdk-x11-3.0) pkgconfig(gtk+-unix-print-3.0)
|
||||||
|
pkgconfig(gtk+-wayland-3.0) pkgconfig(gtk+-x11-3.0)
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Using explict named dependencies
|
||||||
|
|
||||||
|
As may be obvious, simply list the package name. Note we discourage this when a `pkgconfig` dependency is available.
|
||||||
|
|
||||||
|
```
|
||||||
|
builddeps:
|
||||||
|
- stk-devel
|
||||||
|
```
|
||||||
|
|
||||||
|
### Runtime dependencies
|
||||||
|
|
||||||
|
Runtime dependencies are extra packages that a package needs in order to function correctly. A common example of this is other libraries. Solus `eopkg` packages will automatically add any binary dependencies at runtime, so that you do not have to.
|
||||||
|
|
||||||
|
All `devel` subpackages automatically depend on their parent package. On top of this, if they provide a `.pc` pkg-config file, we export this information, and automatically determine the packages this particular package would need to be able to
|
||||||
|
build against correctly. As such, the majority of dependencies for builds are automatically resolved.
|
||||||
|
|
||||||
|
In certain instances, binary dependencies aren’t enough. An example of this might be an extra Python package, or a font, something that is not accounted for by binary checks.
|
||||||
|
|
||||||
|
To account for this, you may add extra explicit runtime dependencies to your package. These are taken from the optional `rundeps` ypkg key.
|
||||||
|
|
||||||
|
This key uses the `dict(s)` type, and the default key is the current package `name`. You may express a different subpackage to apply dependencies to by using that name as a key, i.e. `devel`, or `docs`.
|
||||||
|
|
||||||
|
This would add the “python-gobject” runtime dependency to the main package:
|
||||||
|
|
||||||
|
```
|
||||||
|
rundeps:
|
||||||
|
- python-gobject
|
||||||
|
```
|
||||||
|
|
||||||
|
This would add the same dependency, as well as adding it to the `devel` subpackage:
|
||||||
|
|
||||||
|
```
|
||||||
|
rundeps:
|
||||||
|
- python-gobject
|
||||||
|
- devel: python-gobject
|
||||||
|
```
|
||||||
|
|
||||||
|
Remember this uses the `dict(s)` type, which is very flexible. You can equally express this as follows (adding more deps as an example):
|
||||||
|
|
||||||
|
```
|
||||||
|
rundeps:
|
||||||
|
- python-gobject
|
||||||
|
- devel:
|
||||||
|
- somepackage
|
||||||
|
- someotherpackage
|
||||||
|
```
|
||||||
|
|
||||||
|
### Patterns
|
||||||
|
|
||||||
|
In most instances, `ypkg` will assign the correct location for files, whether it be in the main `name` package, or a subpackage. However there may be instances where the default does not match the intended behaviour.
|
||||||
|
|
||||||
|
In these instances it is possible to override the default assignment by way of patterns. These are simply a list of paths or globs to ensure a particular file, or set of files, end up in the desired location.
|
||||||
|
|
||||||
|
The `patterns` key expects a `dict(s)` argument. The default key for each pattern is assumed to be the `name` of the package, so omitting the name would place files into the main package. The value should be a path or pattern you wish to match,
|
||||||
|
ensuring files go to a specific location.
|
||||||
|
|
||||||
|
In this example from libjpeg-turbo, we move all documentation into the `docs` subpackage:
|
||||||
|
|
||||||
|
```
|
||||||
|
patterns:
|
||||||
|
- docs: [/usr/share/man]
|
||||||
|
```
|
||||||
|
This example, taken from the wayland package, ensures the binaries from `/usr/bin` and the `/usr/share/wayland` are located in the `devel` subpackage:
|
||||||
|
|
||||||
|
```
|
||||||
|
patterns:
|
||||||
|
- devel:
|
||||||
|
- /usr/bin
|
||||||
|
- /usr/share/wayland
|
||||||
|
```
|
||||||
|
|
||||||
|
### Replace / rename
|
||||||
|
|
||||||
|
In some situations, it may be required to replace one package with another, or to rename an existing package. In these instances you should coordinate with a repository maintainer to ensure the replaced package is marked **Obsolete** within the index.
|
||||||
|
This will ensure correct upgrade paths for users.
|
||||||
|
|
||||||
|
Note that to retire a package, you must also coordinate with a repository maintainer. An **Obsolete** package is removed by the package manager when the user upgrades. As such, correct upgrade paths need to be established.
|
||||||
|
|
||||||
|
The `replaces` ypkg key uses the `dict(s)` type, and the default key is assumed to be the current package `name`.
|
||||||
|
|
||||||
|
In this example, we rename the `libgeoclue*` packages to use the correct names, and ensure a working upgrade path.
|
||||||
|
|
||||||
|
```
|
||||||
|
replaces:
|
||||||
|
- devel: libgeoclue-devel
|
||||||
|
- libgeoclue
|
||||||
|
```
|
||||||
|
|
||||||
|
The `name` of this package is **geoclue**, and the new package names are now:
|
||||||
|
|
||||||
|
- geoclue
|
||||||
|
- geoclue-devel
|
||||||
|
|
||||||
|
Given the `replaces` values above, **geoclue** now replaces **libgeoclue**, and **geoclue-devel** replaces **libgeoclue-devel**. This is entirely transparent to the user, with a seamless update replacing the old packages with the new renamed packages.
|
||||||
|
|
||||||
|
The repository maintainer marked the old names as **Obsolete** in the index.
|
|
@ -0,0 +1,17 @@
|
||||||
|
## Requesting A Package
|
||||||
|
|
||||||
|
Packages are how users install Software in Solus, however if we are missing one you can let us know using our Bug Tracker. **Please look to see if a bug has been filed for the software or library you require**. If there isn't an existing request, you can
|
||||||
|
use the template below for requesting packages to be added to the Solus Package Repository or Third Party Repository.
|
||||||
|
|
||||||
|
Please provide as much of the following information as possible:
|
||||||
|
|
||||||
|
- Name
|
||||||
|
- Homepage
|
||||||
|
- Why should this be included in the repository? If we already offer similar software in our repository **or third party**, please provide information on what your proposed software does that our existing offerings don't (''differentiators'').
|
||||||
|
- Is it Open Source (yes/no)
|
||||||
|
- If yes: Set the Tags to have "Package Requests"
|
||||||
|
- If no: Set the Tags to have "Third Party Repository"
|
||||||
|
- Link to source tarball/zip file
|
||||||
|
- master.zip files **are not permitted**. We require versioned tarballs, for example: "1.2.3.tar.gz".
|
||||||
|
|
||||||
|
Please put this information into a Bug Report (create via "Create Task") on our Developer Portal via the Maniphest section on https://dev.solus-project.com/
|
|
@ -0,0 +1,26 @@
|
||||||
|
## Submitting the Package
|
||||||
|
|
||||||
|
Once you’ve achieved a successful build, the resulting `.eopkg` files will be moved to the current directory, along with the machine file, `pspec_*.xml` (currently `pspec_x86_64.xml`). We recommending checking the contents of your
|
||||||
|
generated eopkg file(s) to ensure everything is located in the appropriate locations. You can do this by using `lseopkg file_name.eopkg`.
|
||||||
|
|
||||||
|
### Patches
|
||||||
|
|
||||||
|
When sending patches to include your package in our repo, note that we do not accept binary files. We will need the `package.yml`, the `pspec_*.xml`, the `Makefile`, any ABI files generated, as well as the `files/` directory if applicable included within
|
||||||
|
the patch. These patches are required to be [git format patches](https://git-scm.com/docs/git-format-patch) and submitted to the Patch Submissions Tag, in Maniphest, on our [Developer Portal](https://dev.solus-project.com).
|
||||||
|
|
||||||
|
To generate a patch, first ensure your package directory is a git repo by running `git init`. Next, use `git add filename` to add files, where filename is, for example, the package.yml. Next, do `git commit` and write an appropriate commit message,
|
||||||
|
such as "Initial commit of packagename".
|
||||||
|
|
||||||
|
Once a git commit is made, use `git format-patch -n1` to create a .patch file.
|
||||||
|
|
||||||
|
### Maintainership
|
||||||
|
|
||||||
|
Submission directly to a repository is only possible for maintainers. As a maintainer you may freely push to your package(s) and initiate builds for them, which will be pushed to the unstable repository. You can watch builds [here](https://build.solus-project.com/).
|
||||||
|
|
||||||
|
Pushing changes is not possible unless you have maintainer access. The same is also true of `make publish`.
|
||||||
|
|
||||||
|
To request maintainer rights for a repository, it is expected that some level of contribution/maintenance has already happened by way of testing/patching, and there is reasonable trust demonstrated to "hand the keys" over to a repository.
|
||||||
|
|
||||||
|
Currently, the request mechanism [contact Ikey on IRC](/help-center/contributing/getting-involved/). It is far easier to grant access to active community members than those unknown to the project.
|
||||||
|
|
||||||
|
Finally, note that the management reserve the right to revoke access at any time, in order to preserve project safety and integrity.
|
|
@ -0,0 +1,20 @@
|
||||||
|
## Gnome Shell
|
||||||
|
|
||||||
|
Solus offers GNOME Shell as an alternative to the Budgie desktop environment. Below are installation instructions for installing GNOME Shell and necessary components:
|
||||||
|
|
||||||
|
## Install
|
||||||
|
|
||||||
|
Switch to TTY1 (Ctrl Alt F1) and login.
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo eopkg install gdm gnome-shell gnome-shell-extensions
|
||||||
|
```
|
||||||
|
|
||||||
|
You must also disable lightdm and enable gdm
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo systemctl disable lightdm
|
||||||
|
sudo systemctl stop lightdm
|
||||||
|
sudo systemctl enable gdm
|
||||||
|
sudo systemctl start gdm
|
||||||
|
```
|
|
@ -0,0 +1,33 @@
|
||||||
|
## Java
|
||||||
|
|
||||||
|
### Installation
|
||||||
|
|
||||||
|
If you are looking for OpenJDK or OpenJRE, install `openjdk-8` from the repository. The instructions below are for Oracle Java.
|
||||||
|
|
||||||
|
You can set up Java by following the instructions below:
|
||||||
|
|
||||||
|
### JRE
|
||||||
|
|
||||||
|
Grab the Java Runtime Environment (JRE) as `.tar.gz` from the [Oracle Download Page](http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html).
|
||||||
|
|
||||||
|
Extract JRE and move it to /opt:
|
||||||
|
|
||||||
|
```
|
||||||
|
cd ~/Downloads
|
||||||
|
tar xf jre-8u112-linux-x64.tar.gz
|
||||||
|
sudo mv jre1.8.0_112 /opt/
|
||||||
|
sudo ln -svf /opt/jre1.8.0_112/bin/java /usr/bin/java
|
||||||
|
```
|
||||||
|
|
||||||
|
### JDK
|
||||||
|
|
||||||
|
Grab the Java Development Kit (JDK) as `.tar.gz` from the [Oracle Download Page](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html).
|
||||||
|
|
||||||
|
Extract JDK and move it to /opt:
|
||||||
|
|
||||||
|
```
|
||||||
|
cd ~/Downloads
|
||||||
|
tar xf jdk-8u112-linux-x64.tar.gz
|
||||||
|
sudo mv jdk1.8.0_112 /opt/
|
||||||
|
sudo ln -svf /opt/jdk1.8.0_112/bin/java /usr/bin/java
|
||||||
|
```
|
|
@ -0,0 +1,20 @@
|
||||||
|
## Powerline Shell Prompt
|
||||||
|
|
||||||
|
[Powerline](https://github.com/powerline) is a statusline plugin for vim, and provides statuslines and prompts for several other applications, including zsh, bash, tmux, IPython, Awesome and Qtile.
|
||||||
|
|
||||||
|
### Installation
|
||||||
|
|
||||||
|
Powerline has two components, the plugin system itself ([powerline](https://git.solus-project.com/packages/powerline/)) and the
|
||||||
|
fonts ([powerline-fonts](https://git.solus-project.com/packages/powerline-fonts)). Both are available in the Software Center or via eopkg in a terminal:
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo eopkg it powerline powerline-fonts
|
||||||
|
```
|
||||||
|
|
||||||
|
### Shell Setup
|
||||||
|
|
||||||
|
Note: this is setup per-user.
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
echo "source /usr/lib/python2.7/site-packages/powerline/bindings/bash/powerline.sh" >> ~/.bashrc
|
||||||
|
```
|
|
@ -0,0 +1,329 @@
|
||||||
|
####Third Party
|
||||||
|
|
||||||
|
You can install or update Applications currently by using the instructions below from our 3rd Party Repository, these applications cannot be included in the primary repository due to licensing issues:
|
||||||
|
|
||||||
|
If these instructions fail to work please [file an issue](https://github.com/solus-project/3rd-Party). To upgrade once installed simply run the commands again. If there is a new version it will be installed.
|
||||||
|
|
||||||
|
### Browsers
|
||||||
|
|
||||||
|
#### Google Chrome
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/network/web/browser/google-chrome-stable/pspec.xml
|
||||||
|
sudo eopkg it google-chrome-*.eopkg;sudo rm google-chrome-*.eopkg
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Google Chrome (Beta)
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/network/web/browser/google-chrome-beta/pspec.xml
|
||||||
|
sudo eopkg it google-chrome-*.eopkg;sudo rm google-chrome-*.eopkg
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Google Chrome (Dev/Unstable)
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/network/web/browser/google-chrome-unstable/pspec.xml
|
||||||
|
sudo eopkg it google-chrome-*.eopkg;sudo rm google-chrome-*.eopkg
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Opera
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/network/web/browser/opera-stable/pspec.xml
|
||||||
|
sudo eopkg it opera*.eopkg;sudo rm opera*.eopkg
|
||||||
|
```
|
||||||
|
|
||||||
|
### Communication
|
||||||
|
|
||||||
|
#### Discord (Canary)
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/network/im/discord-canary/pspec.xml
|
||||||
|
sudo eopkg it discord*.eopkg;sudo rm discord*.eopkg
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Franz
|
||||||
|
``` bash
|
||||||
|
sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/network/im/franz/pspec.xml
|
||||||
|
sudo eopkg it franz*.eopkg;sudo rm franz*.eopkg
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Google Talk Browser Plugin
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/network/im/google-talkplugin/pspec.xml
|
||||||
|
sudo eopkg it google-talkplugin*.eopkg;sudo rm google-talkplugin*.eopkg
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Skype for Linux (Alpha)
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/network/im/skype/pspec.xml
|
||||||
|
sudo eopkg it skype*.eopkg;sudo rm *.eopkg
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Slack
|
||||||
|
``` bash
|
||||||
|
sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/network/im/slack-desktop/pspec.xml
|
||||||
|
sudo eopkg it slack-desktop*.eopkg;sudo rm slack-desktop*.eopkg
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Teamspeak 3
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/network/im/teamspeak/pspec.xml
|
||||||
|
sudo eopkg it teamspeak3*.eopkg;sudo rm teamspeak3*.eopkg
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Viber
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/network/im/viber/pspec.xml
|
||||||
|
sudo eopkg it viber*.eopkg;sudo rm *.eopkg
|
||||||
|
```
|
||||||
|
|
||||||
|
### Multimedia
|
||||||
|
|
||||||
|
#### Adobe Flash Player (NPAPI)
|
||||||
|
|
||||||
|
The NPAPI version of Adobe Flash Player is typically used with Firefox.
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/multimedia/video/flash-player-npapi/pspec.xml
|
||||||
|
sudo eopkg it flash-player-npapi*.eopkg;sudo rm flash-player-npapi*.eopkg
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Adobe Flash Player (PPAPI)
|
||||||
|
|
||||||
|
The PPAPI version of Adobe Flash Player is typically used with Vivaldi. Chrome provides its own Flash.
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/multimedia/video/flash-player-ppapi/pspec.xml
|
||||||
|
sudo eopkg it flash-player-ppapi*.eopkg;sudo rm flash-player-ppapi*.eopkg
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Bitwig Studio
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/multimedia/music/bitwig-studio/pspec.xml
|
||||||
|
sudo eopkg it bitwig-studio*.eopkg;sudo rm bitwig-studio*.eopkg
|
||||||
|
```
|
||||||
|
|
||||||
|
#### OcenAudio
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/multimedia/music/ocenaudio/pspec.xml
|
||||||
|
sudo eopkg it ocenaudio*.eopkg;sudo rm ocenaudio*.eopkg
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Pixeluvo
|
||||||
|
``` bash
|
||||||
|
sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/multimedia/graphics/pixeluvo/pspec.xml
|
||||||
|
sudo eopkg it pixeluvo*.eopkg;sudo rm pixeluvo*.eopkg
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Plex Media Server
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/multimedia/video/plexmediaserver/pspec.xml
|
||||||
|
sudo eopkg it plexmediaserver-*.eopkg;sudo rm plexmediaserver-*.eopkg
|
||||||
|
sudo systemd-tmpfiles --create
|
||||||
|
sudo systemctl start plexmediaserver.service
|
||||||
|
```
|
||||||
|
|
||||||
|
**Note:** Optionally have it start on boot:
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo systemctl enable plexmediaserver.service
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Sunvox
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/multimedia/music/sunvox/pspec.xml
|
||||||
|
sudo eopkg it sunvox*.eopkg;sudo rm sunvox*.eopkg
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Spotify
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/multimedia/music/spotify/pspec.xml
|
||||||
|
sudo eopkg it spotify*.eopkg;sudo rm spotify*.eopkg
|
||||||
|
```
|
||||||
|
|
||||||
|
### Network
|
||||||
|
|
||||||
|
#### AnyDesk
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/network/util/anydesk/pspec.xml
|
||||||
|
sudo eopkg it anydesk*.eopkg;sudo rm anydesk*.eopkg
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Insync
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/network/download/insync/pspec.xml
|
||||||
|
sudo eopkg it insync*.eopkg;sudo rm insync*.eopkg
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Spideroak
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/network/download/spideroak/pspec.xml
|
||||||
|
sudo eopkg it spideroak*.eopkg;sudo rm spideroak*.eopkg
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Synology Cloud Station Drive
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/network/download/synology-cloud-station-drive/pspec.xml
|
||||||
|
sudo eopkg it synology-cloud-station-drive*.eopkg;sudo rm synology-cloud-station-drive*.eopkg
|
||||||
|
```
|
||||||
|
|
||||||
|
#### TeamViewer
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/network/util/teamviewer/pspec.xml
|
||||||
|
sudo eopkg it teamviewer*.eopkg;sudo rm teamviewer*.eopkg
|
||||||
|
sudo systemctl start teamviewerd.service
|
||||||
|
```
|
||||||
|
|
||||||
|
### Office
|
||||||
|
|
||||||
|
#### Mendeley Desktop
|
||||||
|
``` bash
|
||||||
|
sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/office/mendeleydesktop/pspec.xml
|
||||||
|
sudo eopkg it mendeleydesktop*.eopkg;sudo rm mendeleydesktop*.eopkg
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Microsoft Core Fonts
|
||||||
|
``` bash
|
||||||
|
sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/desktop/font/mscorefonts/pspec.xml
|
||||||
|
sudo eopkg it mscorefonts*.eopkg;sudo rm mscorefonts*.eopkg
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Moneydance
|
||||||
|
``` bash
|
||||||
|
sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/office/moneydance/pspec.xml
|
||||||
|
sudo eopkg it moneydance*.eopkg;sudo rm moneydance*.eopkg
|
||||||
|
```
|
||||||
|
|
||||||
|
#### PomoDoneApp
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/office/pomodoneapp/pspec.xml
|
||||||
|
sudo eopkg it pomodoneapp*.eopkg;sudo rm pomodoneapp*.eopkg
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Scrivener
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/office/scrivener/pspec.xml
|
||||||
|
sudo eopkg it scrivener*.eopkg;sudo rm scrivener*.eopkg
|
||||||
|
```
|
||||||
|
|
||||||
|
#### WPS Office
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/office/wps-office/pspec.xml
|
||||||
|
sudo eopkg it wps-office*.eopkg;sudo rm wps-office*.eopkg
|
||||||
|
```
|
||||||
|
|
||||||
|
### Programming
|
||||||
|
|
||||||
|
#### Android Studio
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/programming/android-studio/pspec.xml
|
||||||
|
sudo eopkg it android-studio*.eopkg;sudo rm android-studio*.eopkg
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Android Tools
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/programming/tools/android-tools/pspec.xml
|
||||||
|
sudo eopkg it android-tools*.eopkg;sudo rm android-tools*.eopkg
|
||||||
|
```
|
||||||
|
|
||||||
|
#### CLion
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/programming/clion/pspec.xml
|
||||||
|
sudo eopkg it clion*.eopkg;sudo rm clion*.eopkg
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Datagrip
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/programming/datagrip/pspec.xml
|
||||||
|
sudo eopkg it datagrip*.eopkg;sudo rm datagrip*.eopkg
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Git Kraken
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/programming/gitkraken/pspec.xml
|
||||||
|
sudo eopkg it gitkraken*.eopkg;sudo rm gitkraken*.eopkg
|
||||||
|
```
|
||||||
|
|
||||||
|
#### IDEA
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/programming/idea/pspec.xml
|
||||||
|
sudo eopkg it idea*.eopkg;sudo rm idea*.eopkg
|
||||||
|
```
|
||||||
|
|
||||||
|
#### PHPStorm
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/programming/phpstorm/pspec.xml
|
||||||
|
sudo eopkg it phpstorm*.eopkg;sudo rm phpstorm*.eopkg
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Pycharm
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/programming/pycharm/pspec.xml
|
||||||
|
sudo eopkg it pycharm*.eopkg;sudo rm pycharm*.eopkg
|
||||||
|
```
|
||||||
|
|
||||||
|
#### RubyMine
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/programming/rubymine/pspec.xml
|
||||||
|
sudo eopkg it rubymine*.eopkg;sudo rm rubymine*.eopkg
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Sublime Text 3
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/programming/sublime-text-3/pspec.xml
|
||||||
|
sudo eopkg it sublime*.eopkg;sudo rm sublime*.eopkg
|
||||||
|
```
|
||||||
|
|
||||||
|
#### WebStorm
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/programming/webstorm/pspec.xml
|
||||||
|
sudo eopkg it webstorm*.eopkg;sudo rm webstorm*.eopkg
|
||||||
|
```
|
||||||
|
|
||||||
|
### Security
|
||||||
|
|
||||||
|
#### Enpass
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/security/enpass/pspec.xml
|
||||||
|
sudo eopkg it enpass*.eopkg;sudo rm enpass*.eopkg
|
||||||
|
```
|
||||||
|
|
||||||
|
### Other
|
||||||
|
|
||||||
|
#### Google Earth
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo eopkg bi --ignore-safety https://raw.githubusercontent.com/solus-project/3rd-party/master/network/web/google-earth/pspec.xml
|
||||||
|
sudo eopkg it google-earth*.eopkg;sudo rm google-earth*.eopkg
|
||||||
|
```
|
|
@ -0,0 +1,11 @@
|
||||||
|
## Vagrant
|
||||||
|
|
||||||
|
Vagrant is a tool for building complete development environments. You can use providers listed below with Vagrant, which itself is installable via the `vagrant` package.
|
||||||
|
|
||||||
|
### Docker
|
||||||
|
|
||||||
|
You can use Docker as a provider for Vagrant. You can install Docker via the `docker` package.
|
||||||
|
|
||||||
|
### VirtualBox
|
||||||
|
|
||||||
|
You can use VirtualBox as a provider by following the "Solus As Host" instructions [here](https://wiki.solus-project.com/VirtualBox).
|
|
@ -0,0 +1,39 @@
|
||||||
|
## VirtualBox
|
||||||
|
|
||||||
|
[VirtualBox](https://virtualbox.org) is an x86 virtualization software package developed by Sun Microsystems.
|
||||||
|
|
||||||
|
### Solus as Guest
|
||||||
|
|
||||||
|
Make sure you have the necessary packages installed:
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo eopkg upgrade
|
||||||
|
sudo eopkg install gcc make autoconf binutils kernel-headers xorg-server-devel
|
||||||
|
```
|
||||||
|
|
||||||
|
Reboot your system first so that it's all up to date.
|
||||||
|
|
||||||
|
Now, download the [Guest Additions](http://download.virtualbox.org/virtualbox/) as an `.iso` file and mount it from VirtualBox's menu. Then in the guest machine do the following (this will also reboot your system):
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo mkdir -p /mnt/cdrom
|
||||||
|
sudo mount -t iso9660 -o ro /dev/cdrom /mnt/cdrom
|
||||||
|
cd /mnt/cdrom
|
||||||
|
sudo sh VBoxLinuxAdditions.run
|
||||||
|
sudo reboot
|
||||||
|
```
|
||||||
|
|
||||||
|
**Note:** For each kernel update you will need to rebuild the Virtualbox Modules. So simply remount the ISO and run the instructions again.
|
||||||
|
|
||||||
|
# Solus as Host
|
||||||
|
|
||||||
|
Download the latest [VirtualBox Installer](https://www.virtualbox.org/wiki/Linux_Downloads) - [direct link](http://download.virtualbox.org/virtualbox/5.1.12/VirtualBox-5.1.12-112440-Linux_amd64.run) (5.1.12) right click link and Save As.
|
||||||
|
Now install the dependencies and VirtualBox like so:
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo eopkg it -c system.devel
|
||||||
|
sudo eopkg it kernel-headers
|
||||||
|
sudo sh ~/Downloads/VirtualBox-5.1.12-112440-Linux_amd64.run
|
||||||
|
```
|
||||||
|
|
||||||
|
Replace version number of file with the one you download.
|
|
@ -1,19 +0,0 @@
|
||||||
## Getting Involved
|
|
||||||
|
|
||||||
### Google+ and Forums
|
|
||||||
|
|
||||||
With so many new users joining, there are always more people needing help. A great way to help us out, would be to help out our users on the [Solus Project Forums](https://solus-project.com/forums/) as well as [Google+ community](https://plus.google.com/communities/104830131595272878110).
|
|
||||||
|
|
||||||
### IRC
|
|
||||||
|
|
||||||
Internet Relay Chat is a great way to discuss issues and development with the community, and project developers. It's also a great place for getting support.
|
|
||||||
|
|
||||||
Channel | Description
|
|
||||||
----- | -----
|
|
||||||
[#Solus](irc://chat.freenode.net/#Solus) | Main project IRC channel, primarily for support.
|
|
||||||
[#Solus-Chat](irc://chat.freenode.net/#Solus-Chat) | Off-topic channel for Solus.
|
|
||||||
[#Solus-Dev](irc://chat.freenode.net/#Solus-Dev) | Development discussions.
|
|
||||||
|
|
||||||
### Reporting issues
|
|
||||||
|
|
||||||
You can report issues via the [Solus bug tracker](https://bugs.solus-project.com/).
|
|
|
@ -1,4 +0,0 @@
|
||||||
## Other Resources
|
|
||||||
|
|
||||||
- [Official website](https://solus-project.com/)
|
|
||||||
- [Blog](https://solus-project.com/blog/)
|
|
Reference in New Issue