Lightweight version control software on Linux - linux

I'm working with a shell account in a shared system and I would like to use some version control software for my bash scripts and config files.
It must works on Linux with no dependencies, just unpack it in my home dir. I don't need remote checkout, branching or other fancy tricks. I want to be able to commit my changes and restore them if needed.

Try Git.

fossil.
Single binary.
No dependencies.
Version control.
Built in ticket tracker and wiki.
CLI and web interface.

Mercurial. You can just install it in a local directory and make sure that's in your PATH. It gives you a lot of power.
Update for comment:
Most hosting account have way more storage than you'll ever need (e.g. WebFaction gives you 10GB on a $10/mo account), so install Python locally. When you do the build/install simply add --prefix=/home/you/local. It will create local/bin/, local/lib/, etc. Now you have Python and then you can install Mercurial using your very own python.
If your account has little storage, or is missing critical build tools (like gcc, etc.), then you are using the wrong hosting.

I just found Darcs looking at previous questions. It fits perfectly to my needs.
Thanks Adam for your suggestion but Git depends on several packages which versions are not all available to me.

I use Subversion. Works fine for local access.
I also remotely check out my scripts to most of my shell accounts, I must say. It's a really convenient way to make sure the setup of the different accounts stays aligned.

Related

How to make my custom live Debian-based? Experiencing some problems

The need
Recently I've started flirting with the idea of making my own customized Debian live distro. My aim is to have an USB stick with Debian, specific packages, custom scripts and files installed inside. In this way, I can take my OS with everything I need to work with without taking my laptop with me. Furthermore, It will be specially useful in case I just wanted to replicate the OS without the hassle of installing every single packages and further customizations over again.
The research
So I decided to go for it and educate myself on the subject. I've found the Linux from scratch project (LFS), but to be honest, it will take me lots of time I currently cannot afford to invest (But seriously thinking for the future).
I decided to use the live-build project scripts based on the instructions and examples of their manual. http://live.debian.net/manual/3.x/html/live-manual.en.html
The problem
So far, I've built a hybrid.iso image with a custom selection of packages by specifying them in the /config/packages-list/mylist.list.chroot.
Then I tried to copy my custom scripts, files and software inside specific folders under the chroot directory just created,
i.e.
mkdir chroot/etc/skel/<custom dir here>
or
cp <some file or script> chroot/usr/local/bin/
and then run
lb build binary
The problem is that the iso doesn't get built after the first time I run lb build and the customizations done on the chroot directory are deleted every time I try to build it again.
I've tried...
lb clean --binary
lb clean --stage
lb build binary
or
lb build binary iso
So what am I missing? How can I add custom files, folders, scripts to my custom live Debian without downloading every single package over again?
why isn't the iso image built again after the first time I run lb build?
Thanks in advance...
P.D: I decided to be very detailed on the writing so anyone could understand, specially those that want to try the same...
I am conscious about LFS too. But, this
My aim is to have an USB stick with Debian, specific packages, custom
scripts and files installed inside.
and this
it will take me lots of time I currently cannot afford to invest
made me pointing to my answer
I have two suggestions. The easy one, use tools like remastersys or live-magic.
Follow this link.
The difficult one, follow the official documentation to how to creat a custom debian cd.
Debian official doc
This answer comes a year late for the original poster, but for future searchers: don't add files directly to the chroot. Instead, make a folder structure in config/includes.chroot. Then your customizations will be retained when you rebuild the image.
See the section "Live/chroot local includes" in the debian-live manual: http://live.debian.net/manual/4.x/html/live-manual.en.html#506

CentOS 5.8 ISO with custom packages

How can I create a CentOS 5.8 .iso image with custom packages? I have to create an iso with only the packages needed for our production system. I already have all the rpms with their dependencies resolved in a folder. I have successfully created a repository from that folder with createrepo.
As I understand it, I should put the rpm files in the CentOS folder, and repodata folder should contain the metadata needed for a package manager. I don't know if I should modify the existing comps.xml file or create a new one, or which structure to use, since this is only a subset of packages contained on a default CentOS installation disk.
I know it is probably futile to delete packages from the default iso, but that is my work order and there's not much to be done there. (There are also some packages not available in the default iso)
Much appreciated
I feel as though your question is a bit vague for a topic with this sort of breadth but I'll do my best to offer an answer. I think you should use Kickstart for this task as it's going to result in a much happier customer whether they're internal or external, and easier management for you going forward when things get updated. Start by reviewing the CentOS documentation, if you are already this far and just asking about removing packages, check out this section of the docs, it talks about specifying your packages and removing the ones you don't want.
If you only have the one style of production machine, then this should take care of it. if you have multiple different configurations I'd suggest taking a look at a configuration management tool such as Ansible, Puppet, or Salt. This would allow you to provide a base image via Kickstart, then build off of that image depending on the needs of whoever is consuming the system.

How do I install wkhtml2pdf?

I've been looking for a solution to this for about a year, still haven't found one.
I'm trying to get a website snapshot script that I can host on my server and use freely that works well on 99% of webpages.
So far I've been using html2canvas but it doesn't really display images.
I looked into wkhtml2pdf before but I tried installing every single binary and executing from PHP. None of them worked!
All I know about my server is that it is Linux (so I only tested Linux static binaries). Even the basic --help command didn't work.
Please help me out. Thanks!
If you are using a hosting service, it is possible that it is impossible to execute binary programs stored in users' directories. (noexec flag on specific partition). You should first contact system administrator and ask if it is possible to put your own binary executables there. Perhaps, you can ask system administrator to install wkhtmltopdf for you in a global directory /usr/local/bin.
You'll need more then a simple shared hosting, and more then "it is Linux". PHP could be in safemod and lots and lots of other limitations. I would choose a minimal VPS (like digitalocean or similar), root access, install wkhtml2pdf with dnf, yum or what's on you Linux distro, because it brings lots of dependencies to your machine. A minimal LAMP server should not have what's needed on it. You need to be able to allow Apache (or other user) to exec the binary.

is there a subversion web client that I can use

I want to install a svn web client on Linux (preferred) or Windows. I need only read-only capabilities (no commit required) and I want to be able to compare revisions using diff. my svn server is on another machine so the web server needs to access it over http.
It should also be free...
Do you know any such web client?
There's websvn (websvnphp.github.io) and viewcvs (viewvc.org)
I believe VisualSVN provides what your looking for: http://www.visualsvn.com/
Trac does a pretty good job, also Redmine - you can turn all the other features off on both of them.
I use Trac, but Subversion browsing (with diff) is only part of this project.
Trac is an enhanced wiki and issue tracking system for software development projects. ...
It provides an interface to Subversion (or other version control systems), an integrated Wiki and convenient reporting facilities.
If you are able to spend a little bit of money - try Atlassian Fisheye which is very powerful.
Free for OpenSource-Projects, 10$ for 10 user - more expensive when used for > 10 user
www.atlassian.com
Check out viewvc (it was formerly known as viewcvs).
"ViewVC is a browser interface for CVS and Subversion version control repositories. It generates templatized HTML to present navigable directory, revision, and change log listings. It can display specific versions of files as well as diffs between those versions. Basically, ViewVC provides the bulk of the report-like functionality you expect out of your version control tool, but much more prettily than the average textual command-line program output."
You can use Tortoise on Windows.
I do my interacting with SVN in IntelliJ these days. It's got a terrific interface, especially helpful for merges.
Every client of Subversion is a web client, unless you happen to be logged onto the server where your repository lives.
There is a new Web-UI for Subversion repositories named as cSvn. Please look at README.md file https://csvn.radix.pro/csvn/trunk/README.md/.
You can download latest 0.1.2 source package from https://ftp.radix.pro/pub/csvn/.
This Web-UI can be installed in wery simple way on your server (like all packages used Autoconf, Automake utility):
./configure
make
make install
This is very good UI to promotion your opensource work because it support Google Analytics and Donation dialogue and also looks very good on mobile devices (you can see working site https://csvn.radix.pro to make you decision).

Double-click installer in Ubuntu?

I'm trying to update our installer so a user can simply double-click on a file and have all the dependencies and our software installed easily. This is a suite of applications that will are deployed on a clean UbuntuĀ 8.04 (Hardy Heron) installation. I have investigated making a .deb file, but listing the dependencies doesn't work, because there isn't any Internet access available. And, any script that would set up a local APT repository would still need to be run from the command line. Is there a way to put a .deb file inside of a .deb file?
I know many companies ship shell scripts that you have to chmod +x, and then execute. This is not acceptable. It is ridiculous that this isn't possible; especially considering the distribution and architecture is fixed.
If you are totally confident that it will be installed on the same system every time, you can find the list of package dependencies yourself, fetch them from the Ubuntu repositories, and package them up with your software. You just have to be clear that your software is for a specific version, probably deal with things like keeping up with maintenance releases.
You can also easily install with a script. As for your complaint about making scripts executable, well, I don't know how you're shipping your product, but since you say it's going somewhere without Internet access, I assume it's going to be copied from some kind of media. If you make the script executable when you put it on that media, you're done.
If you'd like to do this using packages, you can create a CD-ROM which contains a package repository. You can find all kinds of information on this with Google Search. For starters, try this - it's a GUI for doing it. http://aptoncd.sourceforge.net/
A makeself self-extracting executable that starts the install script using sudo will work.
The user can either run it from a terminal (after chmod-ing it) or can double-click it and tell it to "Run" from the prompt.
It's possible to put deb-files into deb-files. The only thing you need to do is to configure the appropriate scripts.
A .deb-file consists of:
1x control.tar.gz: contains a file "control" (describes the package) and optional files like "postinst" (script executed right after extraction). There are other files you might include, and Google Search should deliver information about the available scripts.
1x data.tar.gz: contains some structure of root-filesystem which contains files/folders that need to be (re-)placed. Additionally, you may configure the behaviour in the mentioned scripts.
1x debian-binary: as far as I remember, this is simply a version number in a file. I don't know exactly what it means; just remember that in most of the cases this is 2.0.
So you now may put your .deb files in the data-package. Those are extracted by your script... and installed using:
# dpkg -i yourpackage1.deb yourpackage2.deb

Resources