Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 years ago.
Improve this question
Can anyone suggest some good materials for learning more about the Linux filesystem and command line? I have found myself frequently confused as to what programs go where on the Linux filesystem. I would like to learn how the various directories (var, etc, usr ...) are used and how to use the commandline more effectively.
I come from the Windows development world (.NET developer) so I am very familiar with Windows system administration. However, when doing more and more work with PHP I found myself lost in the internals of Linux (specifically Ubuntu). For example I was having problems installing PEAR properly on my Ubuntu system and not understanding why it was installed where it was.
All of my interactions with Linux machines is done via SSH so I would like to focus on the command line and the filesystem. Thanks for any suggestions.
Though as with any operating system, you don't really learn to get truly comfortable with it unless you actually start using it on a daily basis. You can learn the basics from books and online tutorials, but if you want it to feel "natural" you'll have to jump right in and start actually using it regulary.
A nice way to "wet your feet", if you don't want to convert from windows, is by installing Cygwin (www.cygwin.com) on your windows machine and start to use it regulary (some discipline is required here, and it's not the best way to learn - but it's useful now and then). This also has the added benefit of automatically getting all nice *NIX utilities that can be a lifesaver when you're a programmer (awk, sed, bash, grep, tail, emacs, the list goes on...).
Unix in a Nutshell - Amazon
http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=unix+tutorials
In terms of learning some of the basic commands, you may find this post on superuser helpful. As for the directory structure, you may find this Wikipedia entry on the Filesystem Hierarchy Standard useful.
/!\ Ubuntu rant /!\
I've seen a lot of programmers using Ubuntu when they needed a Linux distro, and nearly all of them used it the "Windows way" instead of the Unix way.
They used the GUI as much as possible, didn't read the docs, didn't care about how things work.
If you feel motivated and have the time, I suggest that you use a more basic distribution.
Personnally I use Arch Linux and I love it, although its packages aren't exactly stable.
Another good choix would be Debian or Slackware.
It's not that difficult.
A few years ago, I didn't even exactly know what Linux was, but after some time I've been able to use it on a daily basis without any problem.
You just start with a basic command-line system, learn how to install and configure programs, and then install a graphic environment, a browser, an editor, ...
Since you installed and configured everything yourself, you usually understand what errors mean, while Ubuntu users generally have no idea how what might have broken.
Related
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about a specific programming problem, a software algorithm, or software tools primarily used by programmers. If you believe the question would be on-topic on another Stack Exchange site, you can leave a comment to explain where the question may be able to be answered.
Closed 7 years ago.
Improve this question
I have problem with making .img file which I can make it bootable in USB.
I have Folder consist of many RPM files include linux distrobution and some bash script file and etc. the bash script install Linux server and two other software besides set MySQL and PHP. I want to make .img file from this folder so when I just make the .img file bootable to boot from USB, it is supposed to automatically install everything in the computer.
My problem is that I don't know how to make such .img file. is there any specific bash command that should I use? Could you help me to do this? Some clues and documentations to read and understand the process or any software to use, is really perfect. I really appreciate your help.
Thank you.
The answer is:
Don't do it.
At least not in the way you're proposing.
You are specifying a solution to a problem without really defining your requirements. How many standard packages? How many/how big are your additions? What are the gating items (e.g. need web server, need sshd)? Do you need just a few standard packages or several hundred?
Linux distros, such as Redhat, CentOS, Fedora, Canonical/Ubuntu, Debian, expend considerable man-hours to get this right.
So, you need to know what distro you're using. By mentioning rpms, you're probably using Redhat, CentOS, or Fedora. They have procedures to create "live" CDs (and/or USB sticks) and "full install" DVDs. But, this can be a big job, particularly if you're trying to graft on extra files that they don't know about.
I highly recommend you use a standard installer for your distro [that has been heavily QA'ed]. Then, after installation and reboot, extract your additional packages from separate media or download from a server you control. The install media for your stuff could consist solely of a bash script that creates /etc/yum.repos.d/mystuff.repo and kicks off a yum install mystuff
Also, if you were to do a plug-in-and-boot installer, do you want it just erase/repartition the main hard drive without asking (e.g. full automatic)? Or, do you want it to show the existing partitions, etc. like standard installers do?
Getting back to requirements, why do you need to have a one shot installer?
How many systems are you going to install this on? 5, 10, 100, 1000? Are they all in a server farm? You might be better off with PXE boot and boot/install from a central server.
For example, Google has hundreds of thousands of servers [or more]. They have a need for this. But, they also have entire teams of developers devoted to the in-house methodologies that they use.
How often are you going to have to do this for a given server? After the initial install, what is your plan/method for updates (e.g. yum, etc.)?
By using the standard install, you're not responsible for QA of the entire system [standard system + your custom stuff], only your custom stuff.
For example, Fedora discourages any "full install". They now prefer the "live boot" and install from Internet approach.
One of the reasons is that the full install disk gets created [with lots of QA]. But, it's static. If a package has an update, the full install will install the old, unpatched version.
I've had cases where I used it, then did yum update after reboot. The full install disk installed some things that became obsolete/incompatible within a week or two after release. They clashed with the update and things became broken. I had to intervene manually. This is much less likely to happen with a live boot install that will download the latest [and presumably most bug fixed] packages.
On the fedoraproject.org site, you can find documentation on creating live CDs and/or USBs. They can even show you how to add some custom files. Other distro sites will have similar documentation.
BTW, I have doing OS install kits since 1981, so all of the above comes from experience. I've created them from scratch and hacked up ones from distros.
Can it be done? Sure. Do you really want to do it or should you want to do it? Well, maybe. Just be aware of what you're taking on in terms of maintenance.
Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 10 years ago.
Improve this question
I've been using linux at university for quite a while, and it seems much more customisable and better for coding.
So I want to switch to linux from windows 7 at home.
What branch of linux should I use? I'm an emacs user if that gives any insight.
Which desktop enviroment should I use? At uni we use KDE, but it's too graphical, often I just click on stuff instead of using the terminal. I want one where it encourages me to use terminal more.
and the biggest question, how do I install it all? Should I put everything on external hard drive and wipe my computer completley?
I primarily program in Java and python.
I would recommend that you first try using Linux off Live CD/DVD. Linux Mint, Ubuntu, etc.
Just download and burn .iso onto blank media and boot your computer off of it. Just play around, check various desktop environments, see if all your hardware work with the specific Linux distribution. This step is very useful to decide which distribution you actually want to install onto your computer, especially the latter since, while it has been improving, the biggest obstacle you may face in configuring your computer to run on Linux is often hardware incompatibility. Just make sure everything that you need to work actually works.
If you have no issues wiping out Windows, Linux installation is pretty straightforward these days. It even takes less time in general than re-installing Windows. I would browse the web for an installation note for your specific computer model to see if anyone has already successfully done so, so that you can just follow. That saves a lot of time.
I use Debian (Wheezy now) and KDE. It's very easy to install and switch desktop environments after installing Linux though, so that shouldn't be any concern.
I suggest creating a virtual machine using VMWare or Virtual Box. As far as the distribution goes, Linux Mint and Ubuntu are pretty user-friendly for first time installations. And for the desktop environment, I suggest XFCE.
A few Google searches will do you good. I think a virtual environment will be much more easier to manage than partitioning a hard-drive.
Well, the installation step, if you use Windows 7, you may want to make a full backup of your hdd - so if things go wrong you will be safe and able to recover.
I was in somewhat similar situation recently - figuring out which linux distro to use. Previously I had luck with ScientificLinux, but this time it didn't like my laptop hardware for some reason - after wake-up wireless network card was getting stuck and wasnt picking any signal. I didn't want to recompile kernel etc., so I installed Ubuntu, but the Gnome 3 was a show stopper - I had to roll back to Gnome 2, but later I tried and liked a lot XFCE desktop - which I use right now on my workstation and laptop.
Java, Python and emacs probably work well with any linux distribution out of the box, so it is up to you which one to choose after all. Good luck!
Sorry, forgot to mention - all contemporary Linux distributions are able to install a dual boot feature - so you can keep your Windows 7 setup along with Linux (if you have enough of free space), moreover Windows partition will be accessible from Linux which is handy sometimes.
Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 10 years ago.
Improve this question
From what I have been reading a Linux distribution is little more than a packaging of a kernel with various packages and some limited configuration details, such as which window manager and GUI to use by default (assuming you even want a GUI, blech). In the old days apparently there were some unique advantages to distributions. For example, Red Hat had Red Hat Package Manager (rpm). Of course, nowadays rpm is no longer a unique advantage of Red Hat.
So, why even bother bother with a distribution? Why not just install a kernel and bunch of packages of one's own choosing? What's the complexity?
Basically, a GNU/Linux Distro IS a kernel and a "bunch of packages" (GNU packages) of one's choosing.
People creates distros to perform specific tasks, like server, desktop distros, multimedia oriented distros, etc.
Creating a linux distro can be a really educational task, as you can get to know how a linux system is build from scratch.
I recommend you cheking LFS (Linux From Scratch). Its a project to guide you on assembling your own linux distro from scratch, and believe me, its a great fun and indeed YOU WILL LEARN A LOT.
If you'r intereseted on getting to known how a linux distro works, don't miss this.
The webpage says:
Many wonder why they should go through the hassle of building a Linux system from scratch when they could just download an existing Linux distribution. However, there are several benefits of building LFS. Consider the following:
LFS teaches people how a Linux system works internally
Building LFS teaches you about all that makes Linux tick, how things work together and depend on each other. And most importantly, how to customize it to your own tastes and needs.
Building LFS produces a very compact Linux system When you install a
regular distribution, you often end up installing a lot of programs
that you would probably never use. They're just sitting there taking
up (precious) disk space. It's not hard to get an LFS system installed
under 100 MB. Does that still sound like a lot? A few of us have been
working on creating a very small embedded LFS system. We installed a
system that was just enough to run the Apache web server; total disk
space usage was approximately 8 MB. With further stripping, that can
be brought down to 5 MB or less. Try that with a regular distribution.
LFS is extremely flexible Building LFS could be compared to a finished
house. LFS will give you the skeleton of a house, but it's up to you
to install plumbing, electrical outlets, kitchen, bath, wallpaper,
etc. You have the ability to turn it into whatever type of system you
need it to be, customized completely for you.
LFS offers you added security You will compile the entire system from
source, thus allowing you to audit everything, if you wish to do so,
and apply all the security patches you want or need to apply. You
don't have to wait for someone else to provide a new binary package
that (hopefully) fixes a security hole. Often, you never truly know
whether a security hole is fixed or not unless you do it yourself.
Of course there are other tools to create a linux distro based on your HD installation, maybe for backuping purposes.
Linux Live
And lot of other scripts to get you started, just google for them.
Of course, all of them are like automatically tools oriented for the user, so don't expect to learn a lot from them.
There are lots, thousends of linux distros out there, so obviously is a waste of time to try to make the "ideal" linux distro and compite with ubuntu, mint, etc.
I still recommend you to check out Linux From Scratch, just as a weekend educative project . Trust me, you will learn a lot.
It covers also embedded linux distro creating, to target ARM processors and so.
If you're on the embedded world, Yocto Project worths a look.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
Does any one know of a good, free, GUI SVN client for Linux?
KDESVN A feature-rich client with great history and revision views, annotated code views showing who changed each line of code and when it was changed, and 3D graphical views of branching and merging among trees. Written in C++ with Qt, but using KDE libraries (which are somewhat troublesome to get on Windows).
Unfortunately, the developer of KDESVN stopped the development and is shutting down its track website in summer 2012 (EDIT: he resumed development of maintenance releases in June 2012).
RabbitVCS A Python extension to integrate Subversion functionality into the Nautilus File Manager, basically as a clone of the TortoiseSVN project on Windows. —Wikipedia
RapidSVN is a pretty decent multi-platform client.
SmartSVN is very useful. It is shareware, but after 30 days you still can use limited edition and it still remains effective.
Seen a bunch. Officially declare: command line is waaay more effective, and naturally integrates with other GNU utilities. Learn the command line! :) It's free, visual, and very good. And it's simpler than it seems.
If you consider vim to be visual, then you can get the vcscommand plugin.
(source: vim.org)
I've used Subcommander, which worked quite well, although nowadays I usually use Subclipse from within Eclipse along with the command-line.
And then there's Emacs ;-) Has a number of "visual" clients, or rather, a number of solutions for integrating SVN (and git, hg, bzr, cvs even...).
SVN Workbench is a nice multi-platform tool you should consider. It's written in Python and here's the official homepage: http://pysvn.tigris.org/docs/WorkBench.html
It's available for Linux, Mac and Windows and it's also present in the Ubuntu official repository.
After following through the list of items, I was disappointed with the quality of the solutions available on Linux.
I discovered through more digging on the net that konquorer had built in some very nice subversion integrations several years ago and I'm quite impressed with the quality.
Note that konqueror requires kde, kdesvn and kompare.
The solution still no where near TortoiseSVN for windows but its still very useful for many usecases and a relief for us Windows to *nix desktop converts.
My current distribution is OpenSuse 13 with KDE.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 3 years ago.
Improve this question
I'm going to get a low-end old (CHEAP!) computer to run non-stop as a little server for Subversion, Mercurial, Trac and maybe a little other things. It's 99% for myself - performance isn't a concern.
It'll probably have a 1 GHz P3/P4/Celeron, 256 MB SDRAM, 30 GB IDE HDD or something like that, any video card so I can hook up a monitor.
I could get about setting Windows Server on it, but I feel that's too much of an overkill. All I need is to access my code from my laptop, desktop, maybe remotely, same for a wiki, bug tracker, etc. so I feel that a light Linux distribution will be more than enough.
I want to have a GUI, preferably with Xfce, but I don't mind IceVM or any other light GUI - it doesn't have to be pretty, I just don't like CLI as a Windows user.
However, the advantage of Windows would be that I already have tons of experience setting it up and can directly use Remote Desktop to get to it and AFAIK I have access to Home Server that "just works" - unless you can suggest me a distro made for home servers.
So the question is: what Linux distribution do you think is best for my needs? Or should I just strap Windows Home Server on it?
I would suggest Ubuntu. Setting up/installing applications is just a breeze with apt-get.
Having used Debian for nearly seven years, I think it will suit your task very well. Besides, I find it much more convenient to manage than Red Hat based distributions (such as Scientific Linux, Fedora or CentOS).
EDIT: Ubuntu (which another poster has suggested) is essentially an advanced Debian customization towards desktop use. Ubuntu heavily relies on Python scripting and generally consumes more resources than Debian. I believe that original Debian fits the job you described better.
It doesn't sound like you have demanding requirements at all, so I'd probably go with something easy to set up. I believe Ubuntu is pretty good in this regard.
You might also want to look into VNC, which is a bit like a free, cross-platform Remote Desktop.
CentOS - a free version of RedHat Enterprise Linux which is the most common server Linux distribution.
I have been using Debian for very similar purposes. This too has a gui application install manager.(however, not everything I 've installed was available through the manager, then just used the command line)
I've also been using red hat at work for host development machine. I might consider Fedora for a home server, as there appears to be lots of support on the web for red hat/fedora.
BTW I use windows for most things, and just vnc on to the linux machine.