created: Aug 27, 2011

GitHub does not care if you created the repo there or not... after all, it's still plain 'ol git in the backend. That being said, you can easily change the push origin of an existing repository and you will have all of the history and information you are used to.

  1. create a repository on the GitHub website
  2. check out the existing repository that you want to import into GitHub
  3. change the push location
  4. push to the new location

First, go to GitHub and create a blank repository. Then, tell git what you want to do.

  1. $ git clone <some repo>
  2. $ cd <some repo>
  3. $ git remote -v
  4. origin    olduser@oldhost.com:OldRepoName.git (fetch)
  5. origin    olduser@oldhost.com:OldRepoName.git (push)
  6. $ git remote rm origin
  7. $ git remote add origin git@github.com:YourUserName/NewRepoName.git
  8. $ git push -u origin master

Now, you should be able to use git like you normally do... only now you're pushing to GitHub!

   


  created: Jul 17, 2011

I keep running across this problem and lots of people saying it simply can't be done (because they try to escape the dash or various other tricks that you would think would work simply don't...). The solution is simple: surround the database name with backticks. Use SHIFT and ~ to create the backtick symbol.

Now you should be able to use the database name how ever you would like.

  1. mysql> CREATE DATABASE foo-bar;
  2. ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-bar' at line 1
  3. mysql> CREATE DATABASE `foo-bar`;
  4. mysql> DROP DATABASE `foo-bar`;
   


  created: Jun 12, 2011

It happens.

  1. $ sudo su -
  2. # /etc/init.d/mysql stop
  3. # sudo mysqld --skip-grant-tables &
  4. # mysql -u root mysql
  5. mysql>
  6. mysql> FLUSH PRIVILEGES;
  7. mysql> exit
   


  created: Mar 24, 2011

I can not stand icons cluttering up my view and transparent terminals. This is the first thing I do on all my GNOME boxes.

  1. Run gconf-editor from the terminal or go to the GNOME menu bar -> Applications -> System Tools -> Configuration Editor

Disable just those icons:

  1. navigate to /apps/nautilus/desktop
  2. uncheck computer_icon_visible
  3. uncheck home_icon_visible
  4. uncheck network_icon_visible
  5. uncheck trash_icon_visible
  6. uncheck

Disable all desktop icons:

  1. navigate to /apps/nautilus/preferences
  2. uncheck show desktop
   


  created: Dec 28, 2010

Making a bit-by-bit backup of a disk is great when you want to transfer all harddrive data from one disk to another or simply make an exact copy of another disk without worrying around filesystem trickery or permission annoyances. A bit-by-bit backup is also able to extract all of the partition information so that when the backup is restored, the disk partitions should even be identical.

dd is a utility that comes with nearly any Linux/Unix derivative. This tool allows for copying the entire disk to a file, known as an image. Note that dd makes an image of the entire disk. Meaning all bits, even the bits with no data. So if you have a 1TB disk with 4GB of data, the image that dd will create will be 1TB.

Make sure the disk getting imaged is NOT mounted. Check out 'df -h' to see what is mounted. If the image you need is mounted, like the operating system disk would be, boot up a Linux livecd of some sort and do your backup from that.

Create Image

Without Compression
  1. # dd if=/dev/sdX of=/save/path/sdX.img conv=sync,noerror bs=64k
With gzip Compression
  1. # dd if=/dev/sdX conv=sync,noerror bs=64k | gzip -c > /save/path/sdX.img.gz

Restore Image

Restoring from Raw Image
  1. # dd if=/save/path/sdX.gz of=/dev/sdX
Restoring from gzip Archive
  1. # gzip -dc /save/path/sdX.gz | dd of=/dev/sdX

Extra Information

If you would like to see the progress of the transfer, use the pv utility. It works pretty much like cat as far as output goes, but also displays the file size transferred, progress bar, time remaining, etc. I have discussed it previously in http://digitalfoo.net/posts/2010/06/Progress_Bars_for_piped_Transfers_Using_pv/. You effectively use pv for the input datastream rather than specifying the if= argument to dd.

  1. # pv /dev/sdX | dd of=/save/path/sdX.img conv=sync,noerror bs=64k
or
  1. # pv /dev/sdX | dd conv=sync,noerror bs=64k | gzip -c > sdX.img.gz
   


Read more...   created: Dec 27, 2010

Coming soon to a browser near you... Click through to see what I have so far...

   


Read more...   created: Dec 17, 2010

I needed to get familiar with the Xlib C library and (ugh!) libpng. I put this code together to basically learn how to capture mouse and keyboard events and act accordingly. I wrote a small program to allow the user to draw rectangle outlines on the root window (the application has no background...).

Lines are drawn by saving an origin that corresponds to where the user first clicked to start drawing the shape (ButtonPress) and calculating the width and height based off where the cursor gets dragged to (MouseMotion). Instead of specifying a specific line color, I am simply XOR'ing the pixels that make up the line segments of the rectangles being drawn. This makes the line segments easy to see when drawn on the screen.

Xlib does not really have a refresh or update method like most drawing toolkits. This can cause a situation where items get drawn to the screen but never disappear... even after the program exits. To remedy this when drawing new rectangles, redraw the previous rectangle when drawing a new rectangle. Doing this will re-XOR the screen back to the original pixels.

   


  created: Dec 09, 2010

I used this to convert PDF images to JPEG images to display them in a slideshow on a application I was working on. It turned out to be pretty useful, though it can be a bit time consuming.

From the man page:
The convert program is a member of the ImageMagick suite of tools. Use it to convert between image formats as well as resize an image, blur, crop, despeckle, dither, draw on, flip, join, re-sample, and much more.

Read the man page for convert (after you install ImageMagick) to learn about a lot of extra arguments you can specify.

-density 150
horizontal and vertical density of the image

-quality 70
% of compression; If it's a photo, use 90-100.

-resize 500x
resize full size PDF image to widthXheight pixels. I didn't specify a height here, so all images just get resized to 500px wide.

Notice the last argument here: foobar.jpg. This will be the basename for the images that get created. In this instance, foo-1.jpg, foo-2.jpg, foo-2.jpg, etc, etc will be generated.

  1. $ convert -density 150 -quality 70 -resize 500x filename.pdf foo.jpg
   


  created: Nov 15, 2010

I accidently deleted the projects.list file that is used by Gitosis. To create it, simply list the directories located in the git repositories directory along with the owner's name. In my case, it was super easy because I own all the repositories.

  1. $ cd /path/to/gitosis
  2. $ touch projects.list
  3. $ for DIR in `ls /path/to/git/repositories`; do echo "$DIR Lyle+Scott" >> projects.list; done;

Replace Lyle+Scott with the project owner's name. Use the plus (+) sign for a space.

   


  created: Oct 02, 2010

One day, I was copying in data from a CS program of mine and I couldn't figure out why the XY Scatter Plot was so messed up. It turns out that some of my columns I was graphing were being represented as strings and not numbers... even though I has pasted numbers into all the cells. For some reason this is still a pain to fix in Oo, but fortunately there is an easy fix.

This step is optional. Value Highlighting allows you to easily see which cells are being represented as numeric data and which cells are not.

  1. View → Value Highlighting

Now just format the cells to hold a Number. This step actually doesn't give you a number, but rather a value indicating that the cell holds a string. You will see the value prefixed with a ' (single quote) when you select it. Now use regular expressions to change all of those values to the numeric data type.

  1. highlight the cells that you want converted
  2. Format → Cells...
    1. Category → Number → OK
  3. Edit → Find & Replace...
    1. More Options
      1. check Current selection only
      2. check Regular Expressions
    2. Search for: .*
    3. Replace with: &
    4. Replace or Replace/All as necessary
   


  created: Jul 29, 2010

The following allows you to forward (NAT) traffic from an internal interface to an external interface (and back again ;]). In other words, creating a Gateway for a LAN (internal network).

Debian Based (apt-get)

  1. # apt-get install iptables
  2. # vi /etc/network/if-up.d/iptables

RedHat (rpm) Based

  1. # yum install iptables
  2. # vi /etc/sysconfig/iptables
  1. #!/bin/sh
  2.  
  3. PATH=/usr/sbin:/sbin:/bin:/usr/bin
  4.  
  5. # user defined
  6. WAN="eth0"
  7. LAN="eth1"
  8.  
  9. # delete existing rules
  10. iptables -F
  11. iptables -t nat -F
  12. iptables -t mangle -F
  13. iptables -X
  14.  
  15. # always accept loopback traffic
  16. iptables -A INPUT -i lo -j ACCEPT
  17.  
  18. # allow established connections, and those not coming from the outside
  19. iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  20. iptables -A INPUT -m state --state NEW ! -i $LAN -j ACCEPT
  21. iptables -A FORWARD -i $LAN -o $WAN -m state --state ESTABLISHED,RELATED -j ACCEPT
  22.  
  23. # allow outgoing connections from the LAN side
  24. iptables -A FORWARD -i $WAN -o $LAN -j ACCEPT
  25.  
  26. # masquerade out LAN interface
  27. iptables -t nat -A POSTROUTING -o $LAN -j MASQUERADE
  28.  
  29. # do not forward from wan to lan
  30. iptables -A FORWARD -i $WAN -o $LAN -j REJECT
  31.  
  32. # enable forwarding packets from interface to interface
  33. echo 1 > /proc/sys/net/ipv4/ip_forward

Debian Based (apt-get)

  1. # chmod +x /etc/network/if-up.d/iptables
  2. # sh /etc/network/if-up.d/iptables

RedHat (rpm) Based

  1. # service iptables restart

Note that this config does not give the ability to provide DHCP or DNS services to LAN clients.

   


Read more...   modified: Jul 07, 2010     created: Jul 07, 2009

BackupPC is an awesome program for backing up your data in an efficient manner. It provides you with an easy to use web interface and some very complete documentation. Read more about it at the BackupPC SourceForge page.

For some reason, the FreeBSD ports tree still does not contain BackupPC! This guide details the configuration steps to get BackupPC running with an Apache (lighttpd also supported, though) web interface on a FreeBSD host.

   


Read more...   modified: Jul 04, 2010     created: Aug 01, 2009

Upgrading a FreeBSD system is not all that hard. The FreeBSD Handbook obviously has a more verbose look at the whole process, but the following is basically what you will need to do on most systems.

If csup is new to you, man csup for more information. It is a C rewrite of cvsup.

   


  created: Jul 01, 2010

You can easily tar up a Linux box and extract the files on a Linux partition (some version of ext). This can be great for making an image of a dying hard-drive or putting a hard-drive in another box, mounting it, and then making a backup (great if you need to mount read-only).

The following creates an archive, gzips the archive for greater compression, verbosely prints to the screen what is being backed up, preserves all permissions, and stores it in a file "device" /path/to/archive.tar.gz.

History lesson: most implementations of tar still default to using a tape device as output for the file stream!

  1. # tar -pczvf /path/to/archive.tar.gz \
  2. > --directory=/ \
  3. > --exclude=proc --exclude=sys --exclude=dev/pts \
  4. > .

To decompress the archive to the current working directory:

  1. # tar -pxzvf archive.tar.gz
   


  created: Jun 29, 2010
chromium logo

Use update instead of install chromium-browser if you already have it installed. This will update the previously installed version.

  1. $ sudo add-apt-repository ppa:chromium-daily/ppa
  2. $ sudo apt-get update
  3. $ sudo apt-get -y install chromium-browser
   


  created: Jun 26, 2010

I stumbled across pv the other day and found it interesting. It is not so much a utility as eye-candy, but useful non-the-less.

from the man page: pv allows a user to see the progress of data through a pipeline, by giving information such as time elapsed, percentage completed (with progress bar), current throughput rate, total data transferred, and ETA.

First, install pv with what ever package manager you use.

  • # cd /usr/ports/sysutils/pv && make install clean
  • # apt-get install pv
  • # yum install pv

Using pv is analogous to using cat, only with a progress bar and some extra goodies!

  1. # pv file.iso | dd of=/dev/cd0 bs=64k
  1. (server)
  2. # pv file.iso > nc -l 4444
  3. (client)
  4. # nc host 444 > file.iso
   


Read more...   modified: Jun 26, 2010     created: May 01, 2009

NanoBSD is an awesome set of scripts contained in the FreeBSD source tree that enables you to easily prepare and install a custom FreeBSD system for an embedded device. It is also highly optimized for Compact Flash media, providing a Read-Only file system and memory disks for the heavily written mount points, namely /etc and /var, to protect against wear-leveling.

I have provided a number of config files for a NanoBSD system that provides various services to get you started on an overlay of custom files that are geared towards making an AP (access point) out of an ALIX2C2 board from http://pcengines.ch (purchased at NetGate [US]), although these files require minor tweaks if you are using another ALIX board or even completely different hardware (mainly just network device names!).

   


  created: Jun 26, 2010

Simply press s immediately after boot time (while RAM is counting up).

  1. Boot: 1 PC Engines ALIX.2 v0.99
  2. 640 KB Base Memory
  3. 261120 KB Extended Memory
  4.  
  5. 01F0 Master 848A SanDisk SDCFB-1024
  6. Phys C/H/S 1986/16/63 Log C/H/S 993/32/63
  7.  
  8. BIOS setup:
  9.  
  10. *9* 9600 baud (2) 19200 baud (3) 38400 baud (5) 57600 baud (1) 115200 baud
  11. *C* CHS mode (L) LBA mode (W) HDD wait (V) HDD slave (U) UDMA enable
  12. (M) MFGPT workaround
  13. (P) late PCI init
  14. *R* Serial console enable
  15. (E) PXE boot enable
  16. (X) Xmodem upload
  17. (Q) Quit
   


  created: Jun 25, 2010
  1. # mkdir /mnt/nanobsd
  2. # mount /dev/da0s1a /mnt/nanobsd
  3. # mkdir /mnt/nanobsd/usr/ports
  4. # mount -t nullfs /usr/ports /mnt/nanobsd/usr/ports
  5. # mount /dev/da0s3 /mnt/nanobsd/cfg
  6. # chroot /mnt/nanobsd
  1. # cd /usr/ports/foo/bar
  2. # make install clean
  3. # mkdir /cfg/local
  4. # cp -R /usr/local/etc/* /cfg/local
  1. # exit
  2. # umount /mnt/nanobsd/usr/ports
  3. # umount /mnt/nanobsd/cfg
  4. # umount /mnt/nanobsd
   


  modified: Jun 24, 2010     created: Dec 05, 2009

I always seem to forget this command. The following mounts the UFS2 FreeBSD filesystem to /mnt/fbsd directory on a Linux box. Notice the read-only permission. Unfortunately, (as of this writing) Linux does not have write support for UFS2. Please let me know if I am in error.

Change /dev/sda3 to your disk device!

  1. # mkdir /mnt/fbsd
  2. # mount -t ufs -o ro,ufstype=ufs2 /dev/sda3 /mnt/fbsd
   


  created: Jun 22, 2010

For when you have a brain lapse...

  • 2400
  • 4800
  • 9600
  • 19200
  • 38400
  • 57600
  • 115200
   


  created: May 28, 2010

You must install the rpm2cpio package on what ever operating system you are running. The following will extract a rpm hierarchy to the current directory.

  1. $ mkdir ~/extracted_rpm
  2. $ cd ~/extracted_rpm
  3. $ rpm2cpio /path/to/FILENAME.rpm | cpio -div
   


Read more...   created: Apr 20, 2010

Under construction...

   


  created: Apr 19, 2010

Never edit /boot/grub/grub.cfg directly! You have to make changes in a special file under /etc/grub.d so that your changes will not get overwritten every time you update kernels, etc.

I am using my disk device name here. Make sure you use the one that fits your system.

  • hd0       hard drive number
  • 3           partition of FreeBSD partition (indexed from 1)
  • a           slice of /boot partition
  1. # vi /etc/grub.d/40_custom
  2. #!/bin/sh
  3. exec tail -n +3 $0
  4.  
  5. menuentry "FreeBSD 8.0-RELEASE" {
  6.     insmod ufs2
  7.     set root=(hd0,3,a)
  8.     chainloader +1
  9. }

Run update-grub2 to merge the changes in /etc/grub.d/40_custom. You should also be able to verify that the new entry will be seen next time grub2 is loaded.

  1. # update-grub2
  2. # cat /boot/grub/grub.cfg | grep FreeBSD

Reboot and give it a try!

   


  created: Apr 18, 2010

First, see what stray packages are on the system so you know what is about to get deleted.

  1. $ dpkg -l | grep ^rc | cut -d ' ' -f3 | less

What just happened there? We listed the packages that are installed with dpkg -l, filtered out results to only show lines starting with rc, then further trimmed the output to the third column which contains only the package names. less just allows us to easily scroll through the output in the terminal.

Now that you have verified what packages are going to be deleted and taken care of any loose ends, you should then be able to append a simple command to purge the packages in question.

  1. # dpkg -l | grep ^rc | cut -d ' ' -f3 | xargs dpkg -P

You can use sudo on the xargs command if you are a user and need priviledges.

xargs is a handy command that allows you to pipe output delimited by tab, space, etc and do an action on each value. In this case, we have a list of packages that we need to purge, so we run dpkg -P one each package name that we extract.

   


Read more...   created: Apr 06, 2010

I was on the hunt for an expect library for PHP and finally found one in PECL, a repository for PHP Extensions. I was surprised this was not a PHP module more easily accessible like php-session, php-mysql, etc... but it works just as well.

   


Read more...   created: Apr 04, 2010

Since Metasploit is so dynamic and still changing frequently with full time employees, it is best to just sync a local file tree to the latest code branch when you plan to use it. You can use the /usr/ports/security/metasploit port, but you will find it lagged far behind the latest SVN tree.

Anyways, we need to install subversion to download the Metasploit Framework.

  1. # cd /usr/ports/devel/subversion
  2. # make install clean distclean

Now make room for Metasploit and download the tree.

  1. $ mkdir ~/.msf3
  2. $ cd ~/.msf3
  3. $ svn co https://www.metasploit.com/svn/framework3/trunk framework

Finally, drag in Ruby and a few supporting modules.

  1. # cd /usr/ports/databases/rubygem-activerecord
  2. # make install clean distclean
  3. # cd /usr/ports/devel/ruby-rreadline
  4. # make install
   


Read more...   created: Apr 01, 2010
tomcat logo

Coming soon...



   


Read more...   created: Mar 29, 2010

First, install the necessary dependencies:

  1. $ sudo apt-get install ruby subversion libyaml-ruby libzlib-ruby libopenssl-ruby libreadline-ruby libiconv-ruby rubygems

Technically, to use the GUI you need to install libgtk2-ruby and libglade2-ruby, but the GUI is now deprecated and will no longer be developed or updated. I encourage you to forget about using it.

It is great to have a database backend to keep up with data from session to session. A simple sqlite3 backend will do for most, but if you need more robustness and performance, MySQL and Postgres are available to you. Simply install the database server and supporting Ruby library for that specific database server.

  1. sudo apt-get install sqlite3 libsqlite3-ruby
  1. sudo apt-get install mysql-server libmysql-ruby
  1. sudo apt-get install postgresql libpgsql-ruby

Now sync the Metasploit subversion tree into a directory of your choice.

  1. $ mkdir ~/.msf3
  2. $ cd ~/.msf3
  3. $ svn co https://www.metasploit.com/svn/framework3/trunk framework

You should now have the latest and greatest Metasploit tree. For now on, you can simply use the command svn update inside the ~/.msf3/framework directory (or where ever else you synced the svn tree to) and it will sync the latest changes in the repository to your existing Metasploit installation.

  1. $ cd ~/.msf3/framework
  2. $ svn update
   


Read more...   created: Mar 13, 2010

This is my small collection of wallpapers that I enjoy looking at during the long hours I spend at various computers. Enjoy.

Valley


FreeBSD


Fantasy Beach


   


Read more...   modified: Dec 25, 2009     created: May 15, 2009
Eclipse Logo atmel logo

A FreeBSD port for the Eclipse AVR add-on has yet to be created and the Eclipse CDT add-on that is contained in even a recent ports tree is too outdated to use with the AVR add-on.

To fix this, I basically started with a naked Eclipse install from ports and installed the extra features manually using Eclipse's update mechanism and each add-on's respective update site.

   


  created: Dec 09, 2009

This uses the new VAP interface setup that comes with FreeBSD 8.0 and newer.

  1. # vi /etc/rc.conf
  2. --- snip --- snip ---
  3. wlans_ath0="wlan0"
  4. ifconfig_wlan0="WPA DHCP"
  1. # vi /etc/wpa_supplicant.conf
  2. network={
  3.     ssid="ssid_goes_here"
  4.     key_mgmt=WPA-PSK
  5.     psk="password_here"
  6. }
  1. # /etc/rc.d/netif restart

Wait a few seconds for your wireless card to associate with the wireless device and see (1) if you are associated and (2) that you have an IP address.

  1. # ifconfig wlan0

If you have multiple access points around and want a certain one over the other, add priority=1 (you change number), to the host's block in /etc/wpa_supplicant.conf. The lower the number, the higher the priority.

Test IP connectivity to the public Internet.

  1. # ping 4.2.2.1

Test DNS resolution against a public hostname.

  1. # cat /etc/resolv.conf
  2. -- list of nameservers from DHCP lease --
  3. # ping www.google.com

If you happen to not have anything there, you can try using the 4.2.2.1 and 4.2.2.2 nameservers.

  1. # vi /etc/resolv.conf
  2. nameserver 4.2.2.1
  3. nameserver 4.2.2.2
   


Read more...   created: Nov 25, 2009

The FreeBSD Handbook covers most FreeBSD installation topics in depth, but the following is exactly the way I install all of my systems. This process is quick and will get you into a system that you can customize to your liking.

   


Read more...   modified: Nov 24, 2009     created: Aug 24, 2009

I have compiled a list of system commands that I felt were frequent enough to mention. The list covers commands that you use to ti interact with the file system and network, use the vi/vim editor, and utilize screen to make life easier.

   


  created: Nov 24, 2009

I have put together a basic reference of chmod permissions. Enjoy!

For a more complete "e;guide"e; to little things like this, check out my full guide to using a shell.

Digit R W X Result
0 - - - no access
1 - - x execute
2 - w - write
3 - w x write & execute
4 r - - read
5 r - x read & execute
6 r w - read & write
7 r w x read, write, & execute

R is read   W is write   X is execute

   


Read more...   created: Nov 20, 2009

git is an awesome reversion-control system (amougst many other things) Coupled with gitosis for easy user/project/groups/access management and gitweb to get a great visualization of a project's repository, it can quicky scale to any project at hand.

   


Read more...   created: Nov 20, 2009

scrotwm is an excellent tiling window manager that I have been doing my development work in lately. I have found it amazingly useful, though the docs on it are pretty scarce. As of this writing, there is still no .deb package for it and it is not in the repository, so I have outlined a quick install.

   


  created: Oct 08, 2009

I was doing some work for the IBM Master the Mainframe 2009 contest and had to write a quickie isPrime() function. After writing it, I was searching for other solutions for a comparison and was surprised at how hard some people made their code! I figured this might come in handy to someone.

This example will only work with input values of -32767 to 32767 due to the (implied) (signed) int data type. To expand the range, just use the other numeric data types where int appears in this code snippet! For example, unsigned int would double the range by using only positive numbers (0 - 65535). Better yet, we can utilize long or unsigned longwhich allows for numbers -2147483647 to 2147483647 and 0 to 4294967295, respectively!

Yes, there is the epic long long, but I neglected to mention it due to it not being in many languages...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/*** returns 1 if input is prime, 0 if not ***/
int is_prime (int num)
{
    int n;
 
    // avoid loop;  0 or 1 are never prime
    if (num == 0 || num == 1)
        return 0;
 
    // loop through numbers 0..(n/2)+1, trying to
    // divide one into the other with no remainder.
    for (n=2; n < (num/2)+1; n++) {
 
        // if we had no remainder during a revision,
        // input number has a divisor... NOT PRIME!
        if ((num % n) == 0)
          return 0;
    }
 
 
    // made it through gauntlet...prime!
    return 1;
}

Nothing groundbreaking, but it does the trick with only a few lines of code!

Also, note that this code was originally written in C, but it is generic enough to apply to nearly any popular language. If you need help adapting it to some other language, contact me and I am sure we can knock it out.

   


Read more...   modified: Oct 02, 2009     created: Jul 07, 2009

Adobe has always denied FreeBSD native flash support, but you can use Linux emulation to get Adobe Flash 10 working on a FreeBSD system with a few simple steps. Although it might have its occasional quirks, Flash works pretty well with anything I have ever thrown at it. It gets better every update!

   


Read more...   created: Sep 07, 2009

I had the need to set up irssi on my University shell account with minimal user access, so I took some notes on what I did. I have found out that a lot of people encounter the missing glib dependency, which is absolutely necessary for irssi to execute properly. Due to the problem's popularity, I included installing glib in this guide.