This is my first time even trying to use ZNC. I am trying to build from source (v1.8.x).
I'm running a minimal Ubuntu 18.04 and need to install many dependencies manually. Here is a list of apt packages that someone might need to install using sudo apt-get install __name__ :
gcc
g++
cmake
perl (already documented)
libssl-dev (already documented but this is the module for Ubuntu)
Boost
gettext (msgfmt required for I18N)
When installing with apt-get install znc (v1.6.6), we also see libtcl8.5. I know that's not a build dependency, but since it's installed with the package and seems to be required, I think a note should be in the README.
CMake also needs environment variables, so if you're not running in a developer environment, this may help:
On running that from ./build, CMake suggested running this :
git submodule update --init --recursive
Yes, --recursive is suggested at the bottom of the README but perhaps it should be at the top? :)
So, cd .. back into znc, run the above (with sudo), then go back into ./build and run the above cmake.
CMake checks for module "libsasl2", and doesn't find it. The new package name is "libsasl2-2" ( = v2.1.27). The README refers to cyrus-sasl2, libsasl2-2 is the Cyrus SASL API implementation, so I think that's what it needs, but looking for "cyrus-sasl2" it's not going to find it.
CMake also reports that Boost is missing, but does generate the config file anyway. Not knowing which Boost modules are required, I installed the package "libboost-all-dev". That's serious overkill and I hope install notes can be more specific. Loading this package, we get the Charset and ZLib modules active in the ZNC config.
When CMake is complete, even though Python and Perl are installed, the config does not show them enabled. Is there a step missing for that? I'm guessing that the default is to disable ModPerl and ModPython but that with the languages installed we should be able to configure/enable them.
Finally, on the final "make install" the result is
-- Install configuration: ""
-- Installing: /usr/local/share/znc/webskins
CMake Error at cmake_install.cmake:41 (file):
file INSTALL cannot make directory "/usr/local/share/znc/webskins": No such file or directory
I don't know if that's due to recent code changes or some missing dependency.
Perhaps all of these items should be in separate tickets, but I don't know what's valid or not. If required, just point out what's valid and I'll create new tickets for specific issues.
I hope that helps.
Thanks!
This is my first time even trying to use ZNC. I am trying to build from source (v1.8.x).
I'm running a minimal Ubuntu 18.04 and need to install many dependencies manually. Here is a list of apt packages that someone might need to install using `sudo apt-get install __name__` :
- gcc
- g++
- cmake
- perl (already documented)
- libssl-dev (already documented but this is the module for Ubuntu)
- Boost
- gettext (msgfmt required for I18N)
When installing with `apt-get install znc` (v1.6.6), we also see libtcl8.5. I know that's not a build dependency, but since it's installed with the package and seems to be required, I think a note should be in the README.
CMake also needs environment variables, so if you're not running in a developer environment, this may help:
`cmake -D CMAKE_C_COMPILER=/usr/bin/gcc -D CMAKE_CXX_COMPILER=/usr/bin/g++ ..`
On running that from ./build, CMake suggested running this :
`git submodule update --init --recursive`
Yes, --recursive is suggested at the bottom of the README but perhaps it should be at the top? :)
So, `cd ..` back into znc, run the above (with sudo), then go back into ./build and run the above cmake.
CMake checks for module "libsasl2", and doesn't find it. The new package name is "libsasl2-2" ( = v2.1.27). The README refers to cyrus-sasl2, libsasl2-2 _is_ the Cyrus SASL API implementation, so I think that's what it needs, but looking for "cyrus-sasl2" it's not going to find it.
CMake also reports that Boost is missing, but does generate the config file anyway. Not knowing which Boost modules are required, I installed the package "libboost-all-dev". That's serious overkill and I hope install notes can be more specific. Loading this package, we get the Charset and ZLib modules active in the ZNC config.
When CMake is complete, even though Python and Perl are installed, the config does not show them enabled. Is there a step missing for that? I'm guessing that the default is to disable ModPerl and ModPython but that with the languages installed we should be able to configure/enable them.
Finally, on the final "make install" the result is
```
-- Install configuration: ""
-- Installing: /usr/local/share/znc/webskins
CMake Error at cmake_install.cmake:41 (file):
file INSTALL cannot make directory "/usr/local/share/znc/webskins": No such file or directory
```
I don't know if that's due to recent code changes or some missing dependency.
Perhaps all of these items should be in separate tickets, but I don't know what's valid or not. If required, just point out what's valid and I'll create new tickets for specific issues.
I hope that helps.
Thanks!
<!-- github-sync-id:366419533 -->
The 'make install' issue is likely because you attempted to write to a root-owned directory as a normal user. You'd need to do 'sudo make install' for this to work.
The 'make install' issue is likely because you attempted to write to a root-owned directory as a normal user. You'd need to do 'sudo make install' for this to work.
<!-- github-comment-id:426701302 -->
Additionally, 'apt-get build-dep znc' would install everything needed for you to compile it on your own. The libtcl package is because https://wiki.znc.in/Modtcl exists, so when installing a package, the *modtcl module would also be installed, making this a requirement (I think.. but I'm not sure). If you don't specifically tell ./configure to --enable-tcl, *modtcl won't be compiled, making this a non-requirement.
Additionally, 'apt-get build-dep znc' would install everything needed for you to compile it on your own. The libtcl package is because https://wiki.znc.in/Modtcl exists, so when installing a package, the *modtcl module would also be installed, making this a requirement (I think.. but I'm not sure). If you don't specifically tell ./configure to --enable-tcl, *modtcl won't be compiled, making this a non-requirement.
<!-- github-comment-id:426703467 -->
Most of those dependencies are optional. If they are available, ZNC will have some additional features, but if they are not, ZNC can perfectly work without them.
You were able to build it without Boost, because Boost is not in fact required.
Most of those dependencies are optional. If they are available, ZNC will have some additional features, but if they are not, ZNC can perfectly work without them.
You were able to build it without Boost, because Boost is not in fact required.
Also this is all already in https://github.com/znc/znc#optional-requirements
<!-- github-comment-id:426707704 -->
Are you saying that CMake isn't able to figure out that your compiler is at /usr/bin/g++ without you explicitly telling it?
> -D CMAKE_C_COMPILER=/usr/bin/gcc -D CMAKE_CXX_COMPILER=/usr/bin/g++
Are you saying that CMake isn't able to figure out that your compiler is at `/usr/bin/g++` without you explicitly telling it?
<!-- github-comment-id:426708556 -->
CMake checks for module "libsasl2", and doesn't find it. The new package name is "libsasl2-2" ( = v2.1.27). The README refers to cyrus-sasl2, libsasl2-2 is the Cyrus SASL API implementation, so I think that's what it needs, but looking for "cyrus-sasl2" it's not going to find it.
Different distributions chose to name it differently. In Debian-based distros, it's libsasl2-2, yeah... But in those, apt-get build-dep znc is generally useful, as @magnum7385 said.
If we remove "cyrus" part from readme, it will be confusing - "which implementation of SASL I need"?
> CMake checks for module "libsasl2", and doesn't find it. The new package name is "libsasl2-2" ( = v2.1.27). The README refers to cyrus-sasl2, libsasl2-2 is the Cyrus SASL API implementation, so I think that's what it needs, but looking for "cyrus-sasl2" it's not going to find it.
Different distributions chose to name it differently. In Debian-based distros, it's libsasl2-2, yeah... But in those, `apt-get build-dep znc` is generally useful, as @magnum7385 said.
If we remove "cyrus" part from readme, it will be confusing - "which implementation of SASL I need"?
<!-- github-comment-id:426709644 -->
Are you saying that CMake isn't able to figure out that your compiler is at /usr/bin/g++ without you explicitly telling it?
Correct, the env vars aren't defined.
>
>
> > -D CMAKE_C_COMPILER=/usr/bin/gcc -D CMAKE_CXX_COMPILER=/usr/bin/g++
>
> Are you saying that CMake isn't able to figure out that your compiler is at `/usr/bin/g++` without you explicitly telling it?
Correct, the env vars aren't defined.
<!-- github-comment-id:426715330 -->
The 'make install' issue is likely because you attempted to write to a root-owned directory as a normal user. You'd need to do 'sudo make install' for this to work.
That would be correct. I'm an experienced developer but I do not work with Linux C/C++. So this requirement to use sudo for this one operation eluded me. Is that something that this project would expect someone building from source to know? Or should the README be explicit on that line?
>
>
> The 'make install' issue is likely because you attempted to write to a root-owned directory as a normal user. You'd need to do 'sudo make install' for this to work.
That would be correct. I'm an experienced developer but I do not work with Linux C/C++. So this requirement to use sudo for this one operation eluded me. Is that something that this project would expect someone building from source to know? Or should the README be explicit on that line?
<!-- github-comment-id:426716636 -->
...But in those, apt-get build-dep znc is generally useful,
I cloned from here so didn't have those dependencies. If we use build-dep, will it get the deps from the v1.6 package, or will it get the deps for the now-current 1.8? I'd think the former.
My goal with this ticket is simply to point out confusion and a failure due to missing info in the README. I understand that the doc can't include details for all distros or be too explicit for noobs who shouldn't be sharpening their CMake-Fu with this code. I'm just hoping these notes point out some assumptions that perhaps were missed, and which cold help others if added somewhere, maybe in the FAQ rather than the README.
Note that this is being installed on a fairly vanilla Ubuntu 18.04. If you do your own install in a completely fresh install of a current platform, not using your well-established dev systems that already have deps installed, it might help to see some new things that have changed since the original README, or which may simply now be worth some mention.
Thanks again!
> ...But in those, `apt-get build-dep znc` is generally useful,
I cloned from here so didn't have those dependencies. If we use build-dep, will it get the deps from the v1.6 package, or will it get the deps for the now-current 1.8? I'd think the former.
My goal with this ticket is simply to point out confusion and a failure due to missing info in the README. I understand that the doc can't include details for all distros or be too explicit for noobs who shouldn't be sharpening their CMake-Fu with this code. I'm just hoping these notes point out some assumptions that perhaps were missed, and which cold help others if added somewhere, maybe in the FAQ rather than the README.
Note that this is being installed on a fairly vanilla Ubuntu 18.04. If you do your own install in a completely fresh install of a current platform, not using your well-established dev systems that already have deps installed, it might help to see some new things that have changed since the original README, or which may simply now be worth some mention.
Thanks again!
<!-- github-comment-id:426719998 -->
I cloned from here so didn't have those dependencies. If we use build-dep, will it get the deps from the v1.6 package, or will it get the deps for the now-current 1.8? I'd think the former.
That would be correct. Fortunately, the build dependencies from the latest available package per-distribution generally translates directly to the git master.
> I cloned from here so didn't have those dependencies. If we use build-dep, will it get the deps from the v1.6 package, or will it get the deps for the now-current 1.8? I'd think the former.
That would be correct. Fortunately, the build dependencies from the latest available package per-distribution generally translates directly to the git master.
<!-- github-comment-id:426815736 -->
They are not necessary. CMake will discover /usr/bin/g++ without any env vars. It will not discover it if it's not installed, however, but in that case explicit -D CMAKE_C_COMPILER won't help either.
So this requirement to use sudo for this one operation eluded me. Is that something that this project would expect someone building from source to know?
It expects some knowledge of Linux/Unix OS, e.g. permission model of software installation: directories outside of /tmp and /home/user are generally not writeable by everyone. Take a look at https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard
On Windows non-administrators users also can't install custom software without becoming administrator first (though it usually ask you instead if you have such ability).
Well, pull requests to make README better are welcome.
> Correct, the env vars aren't defined.
They are not necessary. CMake will discover `/usr/bin/g++` without any env vars. It will not discover it if it's not installed, however, but in that case explicit `-D CMAKE_C_COMPILER` won't help either.
> So this requirement to use sudo for this one operation eluded me. Is that something that this project would expect someone building from source to know?
It expects some knowledge of Linux/Unix OS, e.g. permission model of software installation: directories outside of `/tmp` and `/home/user` are generally not writeable by everyone. Take a look at https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard
On Windows non-administrators users also can't install custom software without becoming administrator first (though it usually ask you instead if you have such ability).
Well, pull requests to make README better are welcome.
<!-- github-comment-id:426840708 -->
Thanks for the comments. So going back to the OP, is there anything actionable that we can take from this? Sure, I'll do a PR but I don't want to write README text and do the PR if it'll get rejected as "people should know this". I can also write up some FAQ content and just refer to it so that the README doesn't get cluttered.
To be clear, I've been a developer for 40 years and know my way around the OS and code. I'm just more of a Windows guy, haven't worked closely with Linux projects that include C and C++, and I've never used CMake. I'm thinking the README is missing things that even a guy with my experience couldn't know or guess, so I'd like to help others by eliminating a couple assumptions. As to the sudo thing ... busted. ;)
Thanks.
Thanks for the comments. So going back to the OP, is there anything actionable that we can take from this? Sure, I'll do a PR but I don't want to write README text and do the PR if it'll get rejected as "people should know this". I can also write up some FAQ content and just refer to it so that the README doesn't get cluttered.
To be clear, I've been a developer for 40 years and know my way around the OS and code. I'm just more of a Windows guy, haven't worked closely with Linux projects that include C and C++, and I've never used CMake. I'm thinking the README is missing things that even a guy with my experience couldn't know or guess, so I'd like to help others by eliminating a couple assumptions. As to the sudo thing ... busted. ;)
Thanks.
<!-- github-comment-id:427059595 -->
Yes, https://wiki.znc.in/FAQ would benefit from some updating too...
I don't know how detailed README should be. For novices it'd be probably easier to install it via some other way, not by compiling from source, e.g. docker, or from apt-get. But there is still some value in letting people know how to start hacking on ZNC.
P.S. I typed this several days ago, but forgot to click Comment, sorry ><
Yes, https://wiki.znc.in/FAQ would benefit from some updating too...
I don't know how detailed README should be. For novices it'd be probably easier to install it via some other way, not by compiling from source, e.g. docker, or from apt-get. But there is still some value in letting people know how to start hacking on ZNC.
P.S. I typed this several days ago, but forgot to click Comment, sorry ><
<!-- github-comment-id:428655100 -->
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
This is my first time even trying to use ZNC. I am trying to build from source (v1.8.x).
I'm running a minimal Ubuntu 18.04 and need to install many dependencies manually. Here is a list of apt packages that someone might need to install using
sudo apt-get install __name__:When installing with
apt-get install znc(v1.6.6), we also see libtcl8.5. I know that's not a build dependency, but since it's installed with the package and seems to be required, I think a note should be in the README.CMake also needs environment variables, so if you're not running in a developer environment, this may help:
cmake -D CMAKE_C_COMPILER=/usr/bin/gcc -D CMAKE_CXX_COMPILER=/usr/bin/g++ ..On running that from ./build, CMake suggested running this :
git submodule update --init --recursiveYes, --recursive is suggested at the bottom of the README but perhaps it should be at the top? :)
So,
cd ..back into znc, run the above (with sudo), then go back into ./build and run the above cmake.CMake checks for module "libsasl2", and doesn't find it. The new package name is "libsasl2-2" ( = v2.1.27). The README refers to cyrus-sasl2, libsasl2-2 is the Cyrus SASL API implementation, so I think that's what it needs, but looking for "cyrus-sasl2" it's not going to find it.
CMake also reports that Boost is missing, but does generate the config file anyway. Not knowing which Boost modules are required, I installed the package "libboost-all-dev". That's serious overkill and I hope install notes can be more specific. Loading this package, we get the Charset and ZLib modules active in the ZNC config.
When CMake is complete, even though Python and Perl are installed, the config does not show them enabled. Is there a step missing for that? I'm guessing that the default is to disable ModPerl and ModPython but that with the languages installed we should be able to configure/enable them.
Finally, on the final "make install" the result is
I don't know if that's due to recent code changes or some missing dependency.
Perhaps all of these items should be in separate tickets, but I don't know what's valid or not. If required, just point out what's valid and I'll create new tickets for specific issues.
I hope that helps.
Thanks!
The 'make install' issue is likely because you attempted to write to a root-owned directory as a normal user. You'd need to do 'sudo make install' for this to work.
Additionally, 'apt-get build-dep znc' would install everything needed for you to compile it on your own. The libtcl package is because https://wiki.znc.in/Modtcl exists, so when installing a package, the *modtcl module would also be installed, making this a requirement (I think.. but I'm not sure). If you don't specifically tell ./configure to --enable-tcl, *modtcl won't be compiled, making this a non-requirement.
Most of those dependencies are optional. If they are available, ZNC will have some additional features, but if they are not, ZNC can perfectly work without them.
You were able to build it without Boost, because Boost is not in fact required.
Also this is all already in https://github.com/znc/znc#optional-requirements
Are you saying that CMake isn't able to figure out that your compiler is at
/usr/bin/g++without you explicitly telling it?Different distributions chose to name it differently. In Debian-based distros, it's libsasl2-2, yeah... But in those,
apt-get build-dep zncis generally useful, as @magnum7385 said.If we remove "cyrus" part from readme, it will be confusing - "which implementation of SASL I need"?
Correct, the env vars aren't defined.
That would be correct. I'm an experienced developer but I do not work with Linux C/C++. So this requirement to use sudo for this one operation eluded me. Is that something that this project would expect someone building from source to know? Or should the README be explicit on that line?
I cloned from here so didn't have those dependencies. If we use build-dep, will it get the deps from the v1.6 package, or will it get the deps for the now-current 1.8? I'd think the former.
My goal with this ticket is simply to point out confusion and a failure due to missing info in the README. I understand that the doc can't include details for all distros or be too explicit for noobs who shouldn't be sharpening their CMake-Fu with this code. I'm just hoping these notes point out some assumptions that perhaps were missed, and which cold help others if added somewhere, maybe in the FAQ rather than the README.
Note that this is being installed on a fairly vanilla Ubuntu 18.04. If you do your own install in a completely fresh install of a current platform, not using your well-established dev systems that already have deps installed, it might help to see some new things that have changed since the original README, or which may simply now be worth some mention.
Thanks again!
That would be correct. Fortunately, the build dependencies from the latest available package per-distribution generally translates directly to the git master.
They are not necessary. CMake will discover
/usr/bin/g++without any env vars. It will not discover it if it's not installed, however, but in that case explicit-D CMAKE_C_COMPILERwon't help either.It expects some knowledge of Linux/Unix OS, e.g. permission model of software installation: directories outside of
/tmpand/home/userare generally not writeable by everyone. Take a look at https://en.wikipedia.org/wiki/Filesystem_Hierarchy_StandardOn Windows non-administrators users also can't install custom software without becoming administrator first (though it usually ask you instead if you have such ability).
Well, pull requests to make README better are welcome.
You can also install it inside your homedir; that wouldn't require sudo.
Thanks for the comments. So going back to the OP, is there anything actionable that we can take from this? Sure, I'll do a PR but I don't want to write README text and do the PR if it'll get rejected as "people should know this". I can also write up some FAQ content and just refer to it so that the README doesn't get cluttered.
To be clear, I've been a developer for 40 years and know my way around the OS and code. I'm just more of a Windows guy, haven't worked closely with Linux projects that include C and C++, and I've never used CMake. I'm thinking the README is missing things that even a guy with my experience couldn't know or guess, so I'd like to help others by eliminating a couple assumptions. As to the sudo thing ... busted. ;)
Thanks.
BTW, I do have 1.8 running now and connected to servers and channels. Thanks!
Yes, https://wiki.znc.in/FAQ would benefit from some updating too...
I don't know how detailed README should be. For novices it'd be probably easier to install it via some other way, not by compiling from source, e.g. docker, or from apt-get. But there is still some value in letting people know how to start hacking on ZNC.
P.S. I typed this several days ago, but forgot to click Comment, sorry ><