I'm creating a clone of Cura, and one major hurdle is creating a custom content file present here. If I could get an explanation as to how this file is generated, that would be great. My main aim is to work around the file to provide it some different data.
Currently, upon changing the data and running the package.sh script, I get an error in the Software Centre saying that it's detected a bad package.
It's just the content file of a debian (or ubuntu) package. A debian package consist on a DEBIAN folder containing a content file and a postinst file. Other folders contains the real files to install. The content package is just a description of the package as you can see. The lines are pretty self-explanatory :
Package: cura # package name
Version: 14.01 # version number
Section: misc # section of the package
Priority: optional
Architecture: amd64 # you can also put all here
Essential: no
Depends: python-wxgtk2.8, python-opengl, python-serial, python-numpy # other packages it depends on
Maintainer: Daid <daid303#gmail.com>
Provides: cura
Installed-Size: 10000 # doesn't have to be exact
Description: Cura is a full software solution for 3D printing,
aimed at RepRaps and the Ultimaker. It's free software payed for
and maintained by Ultimaker.
Can you be more specific on the tools you are using and the error ?
Related
I'm trying to make a debian package of Apache-Age and it can successfully build either with
"postgresql-server-dev-11"
or
"postgresql-12"
I've made my control file in the following way :
Source: age
Section: database
Priority: optional
Maintainer: unknown <sarthak#SARTHAK>
Build-Depends: debhelper-compat (= 13),
postgresql-12,
build-essential,
libreadline-dev,
zlib1g-dev,
flex,
bison
Standards-Version: 4.5.1
Homepage: <insert the upstream URL, if relevant>
#Vcs-Browser: https://salsa.debian.org/debian/age
#Vcs-Git: https://salsa.debian.org/debian/age.git
Rules-Requires-Root: no
Package: age
Architecture: all
Depends: postgresql-12
${misc:Depends},
${shlibs:Depends}
Description: Apache AGE is an extension for PostgreSQL that enables users to leverage a graph database
on top of the existing relational databases.
Here it's only for postgresql-12, but how can we specify postgresql-server-dev-11 also in the dependency field so that if any of the two version is present the build can proceed without errors.
Normally extension are server dependent, you need to build two different package for two different PG version (from two separate branches)
So I figured it out, it's quiet simple, if we want to specify multiple versions of a driver in 'OR' fashion, like if either of the versions is present in the system, the dependency check should pass,
by simple using bitwise 'OR' operator, like this :
Build-Depends:
debhelper-compat (= 13),
postgresql-11 | postgresql-12,
build-essential,
So here if any of the postgresql version 11 or 12 is installed, the deb file will continue with the installation.
I've attempted to install timescaledb on Ubuntu 18.04 (32bit) with Postgresql 12 using:
https://docs.timescale.com/latest/getting-started/installation/ubuntu/installation-apt-ubuntu
When I run sudo apt install timescaledb-2-postgresql-12 I get the error:
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package timescaledb-2-postgresql-12
I then tried to go through and build the code locally (from the repository https://github.com/timescale/timescaledb) which was successful (on the make) but I was not able to see the "next steps" for what to do after the build. When I attempt to add the extension in the postgres.conf file by adding "shared_preload_libraries = 'timescaledb' " then restarting. On the restart I get the error
2021-02-22 07:24:28.711 EST [18311] syorke#postgres ERROR: could not open extension control file "/usr/share/postgresql/12/extension/timescaledb.control": No such file or directory
In the timescaledb.control is:
# timescaledb extension
comment = 'Enables scalable inserts and complex queries for time-series data'
default_version = '2.0.1'
module_pathname = '$libdir/timescaledb-2.0.1'
#extension cannot be relocatable once installed because it uses multiple schemas and that is forbidden by PG.
#(though this extension is relocatable during installation).
relocatable = false
My question is am I going about this correctly where the package was not found?
Should I replace the /usr/share/postgresql/12/extension/timescaledb.control with the timescaledb.control.in in the directory where I did my build for timescaledb?
In that control file from the build is:
# timescaledb extension
comment = 'Enables scalable inserts and complex queries for time-series data'
default_version = '#PROJECT_VERSION_MOD#'
module_pathname = '$libdir/timescaledb-#PROJECT_VERSION_MOD#'
#extension cannot be relocatable once installed because it uses multiple schemas and that is forbidden by PG.
#(though this extension is relocatable during installation).
relocatable = false
What would '#PROJECT_VERSION_MOD#' be replaced with and where is the $libdir set?
Thanks for any help.
Hi I just successuffly install on Ubuntu 20.04 using the script locate here
https://packagecloud.io/timescale/timescaledb/install
instead of doing the step 3 on the normal installation process
https://docs.timescale.com/install/latest/self-hosted/installation-debian/#installing-self-hosted-timescaledb-on-debian-based-systems
Then follow step 4 & 5 as on the documentation
As you have install from source maybe you will need to uninstall first
I installed oracle basic instant client v21 x64 RPM package on my ubuntu 20.04 with instant tools same version. Now I cannot run sqlldr tool, sqlldr: error while loading shared libraries: libomsodm.so: cannot open shared object file: No such file or directory is thrown. I tried other tools like sqlplus and it's OK. My envvars is set properly as described in documentation
This is my PATH and LD_LIBRARY_PATH vars
This is libraries list in lib folder and it not contains libomsodm.so
Full error message
So my questions are why libomsodm.so not included in basic and tools packages if it is required?
Where from can I get it? (I installed all packages from here and there is no libomsodm)
I need lsqldr only because I have .ldr and .ctl files, which contains a backup of table data. DB stored on remote server. My last question is how to restore data from ".ldr" and ".ctl" files using linux?
Update: a new 21.1 "tools" RPM package with the SQL*Loader fix is available on https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html
libomsodm.so is included in the same 21c package as SQL*Loader. At a guess you have a mixed set of 19c and 21c Instant Client packages.
$ wget https://download.oracle.com/otn_software/linux/instantclient/211000/instantclient-tools-linux.x64-21.1.0.0.0.zip
--2020-12-16 08:52:58-- https://download.oracle.com/otn_software/linux/instantclient/211000/instantclient-tools-linux.x64-21.1.0.0.0.zip
Resolving download.oracle.com (download.oracle.com)... 104.80.236.93
Connecting to download.oracle.com (download.oracle.com)|104.80.236.93|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1167332 (1.1M) [application/zip]
Saving to: ‘instantclient-tools-linux.x64-21.1.0.0.0.zip’
instantclient-tools-linux.x64-21.1.0.0.0.zip 100%[==========================================================================================================>] 1.11M 1.12MB/s in 1.0s
2020-12-16 08:53:01 (1.12 MB/s) - ‘instantclient-tools-linux.x64-21.1.0.0.0.zip’ saved [1167332/1167332]
$ unzip instantclient-tools-linux.x64-21.1.0.0.0.zip
Archive: instantclient-tools-linux.x64-21.1.0.0.0.zip
inflating: instantclient_21_1/exp
inflating: instantclient_21_1/expdp
inflating: instantclient_21_1/imp
inflating: instantclient_21_1/impdp
inflating: instantclient_21_1/libnfsodm.so
inflating: instantclient_21_1/libomsodm.so
inflating: instantclient_21_1/libopcodm.so
inflating: instantclient_21_1/sqlldr
inflating: instantclient_21_1/TOOLS_LICENSE
inflating: instantclient_21_1/TOOLS_README
inflating: instantclient_21_1/wrc
cjones#mac:/tmp$
To complement the other two responses from Christopher Jones, in case the resolution is not completely clear:
The shared lib libomsodm.so is missing from the Tools Package (RPM)
oracle-instantclient-tools-21.1.0.0.0-1.x86_64.rpm, so this is indeed an Oracle bug/oversight.
Fortunately, the file is provided and present in the Tools Package (ZIP) instantclient-tools-linux.x64-21.1.0.0.0.zip.
So to resolve, after installing the RPM, you need to download and extract the ZIP archive, then install the missing lib as root with
# install -m 755 -o root -g root instantclient_21_1/libomsodm.so /usr/lib/oracle/21/client64/lib/libomsodm.so
# ldconfig
You should now be able to run sqlldr as any non-privileged user: it will display the command syntax instead of a shared library linkage fatal error.
PS: personally, I also manually create a softlink from /usr/bin/sqlldr pointing to /usr/lib/oracle/21/client64/bin/sqlldr, as this is the only tool I need in the Tools package. There's already a /usr/bin/sqlplus softlink created by the Sql*Plus package.
I have just encountered the same issue. The existing installation of instantclient was completely purged from the system beforehand, so this isn't due to a mixup between the version 19.x and 21.1 libraries. The library file is actually missing from the .rpm package:
$ wget "https://download.oracle.com/otn_software/linux/instantclient/211000/oracle-instantclient-tools-21.1.0.0.0-1.x86_64.rpm"
...
$ rpm -qlp oracle-instantclient-tools-21.1.0.0.0-1.x86_64.rpm
/usr/lib/oracle
/usr/lib/oracle/21
/usr/lib/oracle/21/client64
/usr/lib/oracle/21/client64/bin
/usr/lib/oracle/21/client64/bin/exp
/usr/lib/oracle/21/client64/bin/expdp
/usr/lib/oracle/21/client64/bin/imp
/usr/lib/oracle/21/client64/bin/impdp
/usr/lib/oracle/21/client64/bin/sqlldr
/usr/lib/oracle/21/client64/bin/wrc
/usr/lib/oracle/21/client64/lib
/usr/lib/oracle/21/client64/lib/libnfsodm.so
/usr/lib/oracle/21/client64/lib/libopcodm.so
/usr/share/oracle
/usr/share/oracle/21
/usr/share/oracle/21/client64
/usr/share/oracle/21/client64/doc
/usr/share/oracle/21/client64/doc/TOOLS_LICENSE
/usr/share/oracle/21/client64/doc/TOOLS_README
I normally install to Ubuntu by converting the .rpm to a .deb via alien --scripts package.deb. This has worked flawlessly for many years and versions of instantclient up to and including 19.10 (which I have downgraded to.) Therefore, I wonder whether this could be a bug/oversight in Oracle's packaging of the latest version.
I have a project which has three project files targeting various .net versions (mylib.net20.csproj, mylib.net40.csproj, and mylib.net40-client.csproj). I have a single nuspec file named mylib.nuspec for packaging them all together.
It might help to see the files section of the nuspec file, so here it is:
<files>
<file src="bin\net20\*.dll" target="lib\net20\" />
<file src="bin\net40-client\*.dll" target="lib\net40-client\" />
<file src="bin\net40\*.dll" target="lib\net40\" />
</files>
Right now I use a static version number in the nuspec file and I can successfully package everything by running nuget pack mylib.nuspec. However, I would like to start using $version$ so I don't have to remember to update the version number in two places.
If I simply change the version number to $version$, and build in the same way I get the predictable error:
Attempting to build package from 'mylib.nuspec'.
The replacement token 'version' has no value.
If I use $version$ and package with nuget pack mylib.net40.csproj, it is successful, but I get a package that completely ignores the nuspec file.
Q: What can I do to get the $version$ variable to work?
Technically, I could rename my nuspec file to mylib.net20.nuspec and then package with nuget pack mylib.net20.nuspec. I really don't want to rename my nuspec file in this way though.
creating a package can be done two ways
Using nuspec directly
Using your csproj file , which in fact uses your nuspec file at run time.
First case is pretty straight forward where all metadata defined in nuspec file will be considered for package creation.
nuget pack nuspecfilename.nuspec
On executing above command all hard coded values in your nuspec file will be used for package creation
Above Procedure uses nuspec file directly.
Now let come to your requirement , Using token $version$ in your nuspec files.
In order to work with tokens rather than hard coded values , we need to use csproj file while running nuget pack command.
nuget pack nameofyourprojectfile.csproj -p "configuration=Release;platform=x64"
I'll explain the command i have used ,the concept of using csproj file while generating a package is it will replace all tokens in nuspec file at the run time.
Your corresponding assembly info file to your csproj file will contain required metadata of version which will be replaced at run time.
-p is parameters to be used at run time , here i have assumed that my proj file builds in release and x64 platform so i have passed that at run time so nuget which for artifacts to bundle accordingly.
please refer Here for more details on how to create nuget packages from csproj.
But Ideally when you package from csproj file your nuspec file will be used at run time so ,technically nuspec file should have same name as that of your csproj file.
so requirement of dealing with multiple project files with different frame work may not be achieved with single nuspec file. you need to have individual nuspec accordingly to achieve this.
But if you still want to stick with same nuspec file with out renaming it or making changes to it.
i would suggest passing version at run time
nuget pack nameofnuspec.nuspec -v 1.3.4.5
-v - is version , or you can use -version as well followed by the version of your choice.
after running above command nuget package will be created with the version specified.
to check nuget package created , rename it .zip file and check ...)
Here my package is net-snmp.
Here is the task : Addition of Net-SNMP Source directory at path personal/apps/snmp/
Requirement is that it should download from website if there is change in version name and it should patch , configure and build soruce.
Hence, for that we need to configure Config.in and netsnmp.mk files in build/package/netsnmp in order to fulfill this requirement.
By adding following configuration in netsnmp.mk
NETSNMP_VERSION = 5.7.2.1
NETSNMP_SOURCE = net-snmp-$(NETSNMP_VERSION).tar.gz
NETSNMP_SITE = http://www.sourceforge.net/projects/net-snmp/files/net-snmp/$(NETSNMP_VERSION)
We can download the latest net-snmp tar ball which will be downloaded in dl/ folder in buildroot.
From here it will untar in build/output/build and will patch configure and build. After that it will build the executable at appropriate location inside target folder.
Here the issue is I want netsnmp source code to be at personal/apps/snmp folder which seems to be problematic and can edit the source in path personal/apps/snmp/ and configure build from here.
Any help and suggestion will be appreciated.
There is already a netsmp package in Buildroot. Why do you want to create another one?
Also, the Buildroot community is going to be much more reactive if you ask questions on the project's mailing list.