The Myth of "Once you go Slack, you never go back"
SlackwareThis Forum is for the discussion of Slackware Linux.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
Yep, testing and checking are all very good but humans are only fallible and sadly the occasional mistake or oversight will be made. If the SBo team can overlook something, I am certain that I could as well.
Every myth has some grounding in reality. For me the reason im likely to use slackware over other distros in the future is that when something goes wrong, which even using current seems to happen less often than with other distros, i can fix it.
No other distro i have ever used has the transparency and solidity that slackware does and i have been using linux since '96.
Just as an example my current install of slackware -current was originally a 13.37 install and is now up to 14.1 with hardly a hiccup. I wouldnt have beleived it if someone had merely told me about it. Its a shame that its reputation for being difficult keeps more people from enjoying it and kept me away from it until fairly recently. I took the accolades it received as mere elitist fanboyism and now i guess im one of the elitist fanboys
I think it's time to let you all in on a terrible secret.
PATRICK VOLKERDING BUILDS THE WHOLE SLACKWARE SYSTEM AS ROOT.
Yikes!
And there is nothing wrong with. He is a developer and if a bug in his Slackbuilds borks the system he knows who is responsible for that bug and can fix it.
You can't expect the same from SBo users.
And there is nothing wrong with. He is a developer and if a bug in his Slackbuilds borks the system he knows who is responsible for that bug and can fix it.
You can't expect the same from SBo users.
Over the years, I've been using hundreds of packages from SBo. The vast majority built and installed perfectly. The odd problem that came up was a missing .desktop file or a bad download URL due to upstream changes. It's been a long time since I haven't shot myself in the foot building a package, and the last time that happened was when I wrote a build script from scratch.
I somehow consider the buggy build script above as the exception that confirms the rule. Which is that the average SlackBuild script on SBo has been duly tested and works fine. This single major malfunction is really a case of bad luck.
Maybe other distributions do it better. Well, Ubuntu's 'nautilus-dropbox' package may have been built using fakeroot. But if you try to install it, you're left with a package manager that's broken beyond repair. (That happened to me a few weeks ago. I pulled my hair out for the best part of a sunny afternoon. And heck, I even published a book about Ubuntu system administration, so I should be sufficiently familiar with the darn thing.)
Only recently I had to build a package for Debian (stable). Have you ever built a package for Debian? Just take a peek at the bureaucracy-from-hell you need to go through first:
Well, Ubuntu's 'nautilus-dropbox' package may have been built using fakeroot. But if you try to install it, you're left with a package manager that's broken beyond repair.
and is there any relation between fakeroot and that you made you installation kaputt?
Over the years, I've been using hundreds of packages from SBo. The vast majority built and installed perfectly. The odd problem that came up was a missing .desktop file or a bad download URL due to upstream changes. It's been a long time since I haven't shot myself in the foot building a package, and the last time that happened was when I wrote a build script from scratch.
I somehow consider the buggy build script above as the exception that confirms the rule. Which is that the average SlackBuild script on SBo has been duly tested and works fine. This single major malfunction is really a case of bad luck.
I don't deny that the people at SBo do great work with providing and testing build scripts for Slackware, I much appreciate the work done by them. However, that doesn't change the fact that no one is infallible and that those people, like every one else, including package maintainers from other distributions (see the respawning thing of MySQL on RHEL/CentOS in the systemd thread), can and and at some point will make mistakes. We all know that each and every piece of software, including build scripts, can have bugs that go unnoticed by developers and QA. That isn't a problem in itself when people are aware of it and can reduce the risk by building those packages where that is possible using unprivileged users and being cautious with those packages where this is not possible (for example with building on VMs, in chroots or containers).
Where I see the problem is when building as root is promoted without telling people the implications (The HOWTO only explains that you have to run su - instead of su for many packages, but not why you should become root in the first place nor telling them about the implications of possible bugs) and when you ask about that you get answers like "If you don't trust us move along".
Just to make that clear: I trust the SBo maintainers to do their best to provide working and well tested build scripts, but not to a point where I dismiss the possibility that they may overlook a bug.
Regarding Debian packages, you can dismiss the bureaucracy part if you don't plan your package to become part of the official repos (which is the case for most private rebuilds with different compile time flags). If you plan to submit your packages, bureaucracy simply is needed in a distro with 1000+ contributors and 35000+ packages.
And of course Debian packages have a more complex format than Slackware, but that doesn't change anything about the statements I have made about building as root when unnecessary.
Only recently I had to build a package for Debian (stable). Have you ever built a package for Debian? Just take a peek at the bureaucracy-from-hell you need to go through first:
So don't make Debian packages at all. If you need to add some additional source compiled software, use Slackware-style packages on Debian!
I'm not actually joking. You can make a Slackware-style package using one of my custom makepkg alternatives and then install it with spkg (a Slackware compatible package manger, used in Salix).
I would also suggest you make sure that the packages created in this way are set to install in /usr/local, thus there will be no overlapping files with the official package manger. dpkg can manage the top level /usr and spkg can manage /usr/local.
For bonus points, have spkg manage its own install.
EDIT:Yeah that works!
Code:
ruario@ruario-ubuntu:~/Documents$ sudo LD_LIBRARY_PATH=bootstrap/usr/local/lib bootstrap/usr/local/bin/spkg -i judy-1.0.5-x86_64-1.txz mkpkg-0.1-noarch-1.txz spkg-1.0s1-x86_64-1.txz
Installing package judy-1.0.5-x86_64-1...
| judy (a general purpose dynamic array library)
|
| Judy is a C library that provides a state-of-the-art core technology
| that implements a sparse dynamic array.
|
| http://judy.sourceforge.net
|
|
|
|
|
|
|
Installing package mkpkg-0.1-noarch-1...
| mkpkg (A short alternative to makepkg)
|
| A tool for making Slackware-style installation packages.
|
| https://gist.github.com/ruario/9672717
|
|
|
|
|
|
|
|
Installing package spkg-1.0s1-x86_64-1...
| spkg (package manager)
|
| spkg is a package manager for Slackware that is implemented in C and
| optimized for speed.
|
| http://spkg.megous.com
|
|
|
|
|
|
|
ruario@ruario-ubuntu:~/Documents$ ls -l /var/log/packages
total 16
-rw-r--r-- 1 root root 4242 jan. 28 15:01 judy-1.0.5-x86_64-1
-rw-r--r-- 1 root root 430 jan. 28 15:01 mkpkg-0.1-noarch-1
-rw-r--r-- 1 root root 1280 jan. 28 15:01 spkg-1.0s1-x86_64-1
ruario@ruario-ubuntu:~/Documents$ cat /var/log/packages/spkg-1.0s1-x86_64-1
PACKAGE NAME: spkg-1.0s1-x86_64-1
COMPRESSED PACKAGE SIZE: 130K
UNCOMPRESSED PACKAGE SIZE: 637K
PACKAGE LOCATION: spkg-1.0s1-x86_64-1.txz
PACKAGE DESCRIPTION:
spkg: spkg (package manager)
spkg:
spkg: spkg is a package manager for Slackware that is implemented in C and
spkg: optimized for speed.
spkg:
spkg: http://spkg.megous.com
FILE LIST:
./
install/
install/slack-desc
usr/
usr/local/
usr/local/bin/
usr/local/bin/spkg
usr/local/doc/
usr/local/doc/spkg-1.0/
usr/local/doc/spkg-1.0/BENCHMARKS
usr/local/doc/spkg-1.0/COPYING
usr/local/doc/spkg-1.0/INSTALL
usr/local/doc/spkg-1.0/NEWS
usr/local/doc/spkg-1.0/README
usr/local/doc/spkg-1.0/README.cs
usr/local/doc/spkg-1.0/TODO
usr/local/include/
usr/local/include/libspkg/
usr/local/include/libspkg/commands.h
usr/local/include/libspkg/error.h
usr/local/include/libspkg/message.h
usr/local/include/libspkg/misc.h
usr/local/include/libspkg/path.h
usr/local/include/libspkg/pkgdb.h
usr/local/include/libspkg/sigtrap.h
usr/local/include/libspkg/sys.h
usr/local/include/libspkg/taction.h
usr/local/include/libspkg/untgz.h
usr/local/lib/
usr/local/lib/libspkg.a
usr/local/lib/pkgconfig/
usr/local/lib/pkgconfig/libspkg.pc
usr/local/share/
usr/local/share/man/
usr/local/share/man/man8/
usr/local/share/man/man8/spkg.8.gz
I'm 'sorta' Slacking on Ubuntu. Its a crazy world!
Likewise, you would use su - username to "become" that user; i.e., with that user's environment settings. You'll note that if you simply use su you'll still have "your" prompt but using su - you'll have root's or a user's prompt.
Just as an aside, sharp eyed individuals will note that the first directory in the PATH variables is
Code:
PATH=.:/root/bin:/usr/local/sbin:<and so on>
That means current working directory (the dot-colon), followed by a bin directory in /root, followed by /usr/local/sbin. Yes, I know "that's not a good idea:' I want it that way and I'm always aware that the PATH is CWD first. I don't recommend it to others and don't need a lecture about it either.
I'm 'sorta' Slacking on Ubuntu. Its a crazy world!
this sounds funny, have to give this also a try on some other dist.
only thing that needs to be cared is if there are files that exist ... in share, etc or so..
Well, as of now, the next version of slackrepo is happily building the whole of Willy's Mate Slackbuilds under a brand new vanilla test username. Proof attached. So when I release it in a few more weeks, there will be a lot of people in this thread who have one less reason to complain about SBo and Slackware. Sorry about that.
Huge thanks to Ruarí for fmakepkg.sh, and in particular for your choice of licence. You provided the right script at the right time But of course many packages have files and directories that should not be owned 'root:root', and ISTM fakeroot/fmakepkg.sh might even introduce security holes that way.
This is the first time in my life that I ever read 'man sudoers', and now I want to vomit.
Code:
multiverse$ /usr/sbin/slackrepo --dry-run -v build
Configuration:
build
--repo=user
--verbose
--dry-run
SBREPO="/home/srt/slackrepo/user/slackbuilds"
SRCREPO="/home/srt/slackrepo/user/source"
PKGREPO="/home/srt/slackrepo/user/packages/14.1/x86_64"
PKGBACKUP="/home/srt/slackrepo/user/backups/14.1/x86_64"
HINTDIR="/home/srt/slackrepo/user/hintfiles"
QUEUEDIR="/home/srt/slackrepo/user/queuefiles"
LOGDIR="/home/srt/slackrepo/user/log"
TMP="/tmp/user"
DATABASE="/home/srt/slackrepo/user/database_user.sqlite3"
ARCH="x86_64"
TAG="_user"
PKGTYPE="tgz"
NUMJOBS="-j3"
USE_GENREPOS="0"
Cleaning /tmp/user/* ... done.
Checking git ... done.
Git repo: /home/srt/slackrepo/user/slackbuilds
branch: 14.1-mate-1.8
date: Wed Jan 14 15:05:03 GMT 2015
revision: 72804a7d757a68123b5ce4ad1a5fd479fc4179fc
title: system-tools-backends: Fix user module.
===============================================================================
! base/caja 14:21:13 !
===============================================================================
Calculating dependencies ...
Hints for base/caja:
ADDREQUIRES="libunique pangox-compat mate-common mate-desktop mate-icon-theme"
Hints for base/mate-common:
ADDREQUIRES=""
Hints for base/mate-desktop:
ADDREQUIRES="libunique mate-common yelp-tools"
Hints for deps/libunique:
ADDREQUIRES=""
Hints for deps/yelp-tools:
ADDREQUIRES="yelp-xsl"
Hints for deps/yelp-xsl:
ADDREQUIRES=""
Hints for base/mate-icon-theme:
ADDREQUIRES="mate-common"
Hints for deps/pangox-compat:
ADDREQUIRES=""
Dependency tree for base/caja:
base/caja [add]
deps/pangox-compat [add]
deps/libunique [add]
base/mate-icon-theme [add]
base/mate-common [add]
base/mate-desktop [add]
deps/yelp-tools [add]
deps/yelp-xsl [add]
deps/libunique [add]
base/mate-common [add]
base/mate-common [add]
Starting base/mate-common (add version 1.8.0) [dry run] -----------------------
Running mate-common.SlackBuild ... ETA 14:21
env MAKEFLAGS='-j3' fakeroot sh ./mate-common.SlackBuild
:-) base/mate-common: Added version 1.8.0 [dry run] (-:
Starting deps/libunique (add version 1.1.6) [dry run] -------------------------
Running libunique.SlackBuild ... ETA 14:22
env MAKEFLAGS='-j3' fakeroot sh ./libunique.SlackBuild
:-) deps/libunique: Added version 1.1.6 [dry run] (-:
Starting deps/yelp-xsl (add version 3.10.1) [dry run] -------------------------
Running yelp-xsl.SlackBuild ... ETA 14:22
env MAKEFLAGS='-j3' fakeroot sh ./yelp-xsl.SlackBuild
:-) deps/yelp-xsl: Added version 3.10.1 [dry run] (-:
Starting deps/yelp-tools (add version 3.10.0) [dry run] -----------------------
Installing dependencies ...
yelp-xsl-3.10.1-x86_64-1_user: stylesheet for Yelp [2.7M]
Running yelp-tools.SlackBuild ...
env MAKEFLAGS='-j3' fakeroot sh ./yelp-tools.SlackBuild
Uninstalling dependencies ...
Uninstalling yelp-xsl-3.10.1-x86_64-1_user ...
:-) deps/yelp-tools: Added version 3.10.0 [dry run] (-:
Starting base/mate-desktop (add version 1.8.1) [dry run] ----------------------
Installing dependencies ...
mate-common-1.8.0-x86_64-1_user: common files for the MATE desktop [120K]
libunique-1.1.6-x86_64-1_user: a library for writing single instance app [360K]
yelp-xsl-3.10.1-x86_64-1_user: stylesheet for Yelp [2.7M]
yelp-tools-3.10.0-x86_64-1_user: documentation checker [1000K]
Running mate-desktop.SlackBuild ...
env MAKEFLAGS='-j3' fakeroot sh ./mate-desktop.SlackBuild
Uninstalling dependencies ...
Uninstalling mate-common-1.8.0-x86_64-1_user ...
Uninstalling libunique-1.1.6-x86_64-1_user ...
Uninstalling yelp-xsl-3.10.1-x86_64-1_user ...
Uninstalling yelp-tools-3.10.0-x86_64-1_user ...
:-) base/mate-desktop: Added version 1.8.1 [dry run] (-:
Starting base/mate-icon-theme (add version 1.8.0) [dry run] -------------------
Installing dependencies ...
mate-common-1.8.0-x86_64-1_user: common files for the MATE desktop [120K]
Running mate-icon-theme.SlackBuild ...
env MAKEFLAGS='-j3' fakeroot sh ./mate-icon-theme.SlackBuild
Uninstalling dependencies ...
Uninstalling mate-common-1.8.0-x86_64-1_user ...
:-) base/mate-icon-theme: Added version 1.8.0 [dry run] (-:
Starting deps/pangox-compat (add version 0.0.2) [dry run] ---------------------
Downloading source files ...
Running pangox-compat.SlackBuild ...
env MAKEFLAGS='-j3' fakeroot sh ./pangox-compat.SlackBuild
:-) deps/pangox-compat: Added version 0.0.2 [dry run] (-:
Starting base/caja (add version 1.8.2) [dry run] ------------------------------
Installing dependencies ...
mate-common-1.8.0-x86_64-1_user: common files for the MATE desktop [120K]
libunique-1.1.6-x86_64-1_user: a library for writing single instance app [360K]
yelp-xsl-3.10.1-x86_64-1_user: stylesheet for Yelp [2.7M]
yelp-tools-3.10.0-x86_64-1_user: documentation checker [1000K]
mate-desktop-1.8.1-x86_64-1_user: libmate-desktop library for the MATE d [2.2M]
mate-icon-theme-1.8.0-noarch-1_user: default icons for the MATE desktop [17M]
pangox-compat-0.0.2-x86_64-1_user: X font support for Pango [210K]
Running caja.SlackBuild ...
env MAKEFLAGS='-j3' fakeroot sh ./caja.SlackBuild
Uninstalling dependencies ...
Uninstalling mate-common-1.8.0-x86_64-1_user ...
Uninstalling libunique-1.1.6-x86_64-1_user ...
Uninstalling yelp-xsl-3.10.1-x86_64-1_user ...
Uninstalling yelp-tools-3.10.0-x86_64-1_user ...
Uninstalling mate-desktop-1.8.1-x86_64-1_user ...
Uninstalling mate-icon-theme-1.8.0-noarch-1_user ...
Uninstalling pangox-compat-0.0.2-x86_64-1_user ...
:-) base/caja: Added version 1.8.2 [dry run] (-:
===============================================================================
! base/libmatekbd 14:31:40 !
===============================================================================
Calculating dependencies ...
Hints for base/libmatekbd:
ADDREQUIRES="mate-common"
Dependency tree for base/libmatekbd:
base/libmatekbd [add]
base/mate-common [ok]
Starting base/libmatekbd (add version 1.8.0) [dry run] ------------------------
Installing dependencies ...
mate-common-1.8.0-x86_64-1_user: common files for the MATE desktop [120K]
Running libmatekbd.SlackBuild ...
env MAKEFLAGS='-j3' fakeroot sh ./libmatekbd.SlackBuild
Uninstalling dependencies ...
Uninstalling mate-common-1.8.0-x86_64-1_user ...
:-) base/libmatekbd: Added version 1.8.0 [dry run] (-:
===============================================================================
! base/libmateweather 14:32:07 !
===============================================================================
Calculating dependencies ...
Hints for base/libmateweather:
ADDREQUIRES="mate-common"
Dependency tree for base/libmateweather:
base/libmateweather [add]
base/mate-common [ok]
Starting base/libmateweather (add version 1.8.0) [dry run] --------------------
Installing dependencies ...
mate-common-1.8.0-x86_64-1_user: common files for the MATE desktop [120K]
Running libmateweather.SlackBuild ...
env MAKEFLAGS='-j3' fakeroot sh ./libmateweather.SlackBuild
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.